From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Feng Shu Newsgroups: gmane.emacs.bugs Subject: bug#59793: 29.0.60; subr.elc is not compiled correctly Date: Sat, 03 Dec 2022 15:24:55 +0800 Message-ID: <87lenpne48.fsf@163.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10103"; mail-complaints-to="usenet@ciao.gmane.io" To: 59793@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 03 08:26:30 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p1Mur-0002PM-4d for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 03 Dec 2022 08:26:29 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p1MuT-0000ao-0y; Sat, 03 Dec 2022 02:26:05 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1MuQ-0000ag-QT for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 02:26:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p1MuQ-0003VU-FX for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 02:26:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p1MuQ-0005sA-Ac for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 02:26:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Feng Shu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Dec 2022 07:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59793 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.167005231822560 (code B ref -1); Sat, 03 Dec 2022 07:26:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2022 07:25:18 +0000 Original-Received: from localhost ([127.0.0.1]:51327 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1Mti-0005ro-Ki for submit@debbugs.gnu.org; Sat, 03 Dec 2022 02:25:18 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:36442) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p1Mtg-0005ri-GP for submit@debbugs.gnu.org; Sat, 03 Dec 2022 02:25:16 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p1Mtg-0000Mf-9l for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 02:25:16 -0500 Original-Received: from m12.mail.163.com ([123.126.96.234]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p1MtZ-00025i-LT for bug-gnu-emacs@gnu.org; Sat, 03 Dec 2022 02:25:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-ID:MIME-Version; bh=8MRbi yJsi6Pn9BZmhiPQkI1fwz9GViYBxeIrQyiaLu8=; b=IzClOb6WuJLmyxKVB5P7g JZ6mHkgkDOkgNvofjHzaJ5z1WoxIiNUcLPUY8BPoIHvcP0qkhFX56OX+mhqpN9w8 nGbdaCYPQqU5GCO5rV9LpMuGQVHmoK6eP/3YWDiJNBTU4t0orFuKsuVwNKrb1E6D 50Q26UqcSPqVuxSMq4sR/k= Original-Received: from Tumashu (unknown [218.92.14.78]) by smtp17 (Coremail) with SMTP id NdxpCgCXcA7H+YpjfsYqAg--.19355S2; Sat, 03 Dec 2022 15:24:55 +0800 (CST) X-CM-TRANSID: NdxpCgCXcA7H+YpjfsYqAg--.19355S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxCw4rWrWkGw1rKry7Zw4xJFb_yoW5Xw1Upa sxJas2kF4xtF40gw1UAw1xta48tF48J3s5Gr1UtryxXF45Aa4UZrnFqFy8Kry7AFWkXry5 Wws0kr1UZF1UZw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jezuXUUUUU= X-Originating-IP: [218.92.14.78] X-CM-SenderInfo: 5wxpt2lkx6il2tof0z/xtbBEQjM1FaELyt0KQAAsK Received-SPF: pass client-ip=123.126.96.234; envelope-from=tumashu@163.com; helo=m12.mail.163.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:249814 Archived-At: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: 8bit This week, I faced an issue about emacs-eat: eat-yank not work well: https://codeberg.org/akib/emacs-eat/issues/9 ------------- (defun eat-yank (&optional arg) "Same as `yank', but for Eat. ARG is passed to `yank', which see." (interactive "*P") (when eat--terminal (funcall eat--synchronize-scroll-function) (cl-letf* ((inhibit-read-only t) (insert-for-yank (symbol-function #'insert-for-yank)) ((symbol-function #'insert-for-yank) (lambda (&rest args) (cl-letf (((symbol-function #'insert) (lambda (&rest args) (eat-send-string-as-yank eat--terminal (mapconcat (lambda (arg) (if (stringp arg) arg (string arg))) args ""))))) (apply insert-for-yank args))))) (yank arg)))) --------- After some test with author of emacs-eat, we find that config (require 'eat) (load "subr.el") work, while the below config do not work. (require 'eat) (load "subr.elc") we find that C-x C-e insert-for-yank and insert-for-yank-1 works too. so we think subr.elc is not compiled correctly, I use the below script to compile emacs, do not install and run ~/emacs/emacs29/src/emacs directly ------------------------------------------------ #!/bin/bash cd ${HOME}/emacs/emacs29 make clean git reset --hard git clean -xdf git pull ./autogen.sh ./configure \ --with-x-toolkit=lucid \ --with-json \ make bootstrap && make -------------------------------------------------------- (fn STRING) (defalias 'insert-for-yank #[257 "\211C\300\301\302\303\"\"\210\304\305\306\307\242#\211\262\203*\0\310\242\306O!\210\211\242\304O\240\210\202 \0\210\310\242!\207" [run-hook-wrapped yank-transform-functions make-closure #[257 "\300\300\242!\240\210\301\207" [V0 nil] 4 "\n\n(fn F)"] nil next-single-property-change 0 yank-handler insert-for-yank-1] 7 (#$ . 136200)])#@55 Helper for `insert-for-yank', which see. (fn STRING) (defalias 'insert-for-yank-1 #[257 "\211;\205\n\0\303\304\305#\211A@\206\0`\306\307@\203$\0@!\210\202'\0c\210`\262\307\3108\2047\0\311\"\210\211V\203L\0\312S!\203L\0\313S\314\307$\210 \307=\203V\0\3158\3168\205a\0\3168\211)\207" [inhibit-read-only yank-undo-function this-command get-text-property 0 yank-handler nil t 2 remove-yank-excluded-properties text-properties-at put-text-property rear-nonsticky 3 4] 10 (#$ . 136889)])#@286 Insert before point a substring of BUFFER, without text properties. BUFFER may be a buffer or a buffer name. Arguments START and END are character positions specifying the substring. They default to the values of (point-min) and (point-max) in BUFFER. ------------------------------------------------------- --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=subr.elc Content-Transfer-Encoding: base64 O0VMQxwAAAAKOzs7IENvbXBpbGVkCjs7OyBpbiBFbWFjcyB2ZXJzaW9uIDI5LjAuNjAKOzs7IHdp dGggYWxsIG9wdGltaXphdGlvbnMuCgoKI0AxMzgzIFRlbGwgdGhlIGJ5dGUtY29tcGlsZXIgdGhh dCBmdW5jdGlvbiBGTiBpcyBkZWZpbmVkLCBpbiBGSUxFLgpUaGUgRklMRSBhcmd1bWVudCBpcyBu b3QgdXNlZCBieSB0aGUgYnl0ZS1jb21waWxlciwgYnV0IGJ5IHRoZQpgY2hlY2stZGVjbGFyZScg cGFja2FnZSwgd2hpY2ggY2hlY2tzIHRoYXQgRklMRSBjb250YWlucyBhCmRlZmluaXRpb24gZm9y IEZOLiAgKEZJTEUgY2FuIGJlIG5pbCwgYW5kIHRoYXQgZGlzYWJsZXMgdGhpcwpjaGVjay4pCgpG SUxFIGNhbiBiZSBlaXRoZXIgYSBMaXNwIGZpbGUgKGluIHdoaWNoIGNhc2UgdGhlICIuZWwiCmV4 dGVuc2lvbiBpcyBvcHRpb25hbCksIG9yIGEgQyBmaWxlLiAgQyBmaWxlcyBhcmUgZXhwYW5kZWQK cmVsYXRpdmUgdG8gdGhlIEVtYWNzICJzcmMvIiBkaXJlY3RvcnkuICBMaXNwIGZpbGVzIGFyZQpz ZWFyY2hlZCBmb3IgdXNpbmcgYGxvY2F0ZS1saWJyYXJ5JywgYW5kIGlmIHRoYXQgZmFpbHMgdGhl eSBhcmUKZXhwYW5kZWQgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlIGNvbnRh aW5pbmcgdGhlCmRlY2xhcmF0aW9uLiAgQSBGSUxFIHdpdGggYW4gImV4dDoiIHByZWZpeCBpcyBh biBleHRlcm5hbCBmaWxlLgpgY2hlY2stZGVjbGFyZScgd2lsbCBjaGVjayBzdWNoIGZpbGVzIGlm IHRoZXkgYXJlIGZvdW5kLCBhbmQgc2tpcAp0aGVtIHdpdGhvdXQgZXJyb3IgaWYgdGhleSBhcmUg bm90LgoKT3B0aW9uYWwgQVJHTElTVCBzcGVjaWZpZXMgRk4ncyBhcmd1bWVudHMsIG9yIGlzIHQg dG8gbm90IHNwZWNpZnkKRk4ncyBhcmd1bWVudHMuICBBbiBvbWl0dGVkIEFSR0xJU1QgZGVmYXVs dHMgdG8gdCwgbm90IG5pbDogYSBuaWwKQVJHTElTVCBzcGVjaWZpZXMgYW4gZW1wdHkgYXJndW1l bnQgbGlzdCwgYW5kIGFuIGV4cGxpY2l0IHQKQVJHTElTVCBpcyBhIHBsYWNlaG9sZGVyIHRoYXQg YWxsb3dzIHN1cHBseWluZyBhIGxhdGVyIGFyZy4KCk9wdGlvbmFsIEZJTEVPTkxZIG5vbi1uaWwg bWVhbnMgdGhhdCBgY2hlY2stZGVjbGFyZScgd2lsbCBjaGVjawpvbmx5IHRoYXQgRklMRSBleGlz dHMsIG5vdCB0aGF0IGl0IGRlZmluZXMgRk4uICBUaGlzIGlzIGludGVuZGVkCmZvciBmdW5jdGlv biBkZWZpbml0aW9ucyB0aGF0IGBjaGVjay1kZWNsYXJlJyBkb2VzIG5vdCByZWNvZ25pemUsCmUu Zy4sIGBkZWZzdHJ1Y3QnLgoKTm90ZSB0aGF0IGZvciB0aGUgcHVycG9zZXMgb2YgYGNoZWNrLWRl Y2xhcmUnLCB0aGlzIHN0YXRlbWVudAptdXN0IGJlIHRoZSBmaXJzdCBub24td2hpdGVzcGFjZSBv biBhIGxpbmUuCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEluZm8gbm9kZSBgKGVsaXNwKURl Y2xhcmluZyBGdW5jdGlvbnMnLgoKKGZuIEZOIEZJTEUgJnJlc3QgQVJHUykfCihkZWZhbGlhcyAn ZGVjbGFyZS1mdW5jdGlvbiAnKG1hY3JvIC4gI1s2NDIgIlwzMDBcMjA3IiBbbmlsXSA0ICgjJCAu IDg4KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwNVwzMDZcIlwy MTBcMzA0XDMwN1wzMTBcIlwyMDciIFtzZXQtYWR2ZXJ0aXNlZC1jYWxsaW5nLWNvbnZlbnRpb24g ZGVjbGFyZS1mdW5jdGlvbiAoZm4gZmlsZSAmb3B0aW9uYWwgYXJnbGlzdCBmaWxlb25seSkgbmls IGRlZmFsaWFzIG5vdCBudWxsIHN4aGFzaCBzeGhhc2gtZXF1YWxdIDQpI0A5MyBFdmFsdWF0ZSBG T1JNLCBleHBlY3RpbmcgaXQgbm90IHRvIHJldHVybi4KSWYgRk9STSBkb2VzIHJldHVybiwgc2ln bmFsIGFuIGVycm9yLgoKKGZuIEZPUk0pHwooZGVmYWxpYXMgJ25vcmV0dXJuICcobWFjcm8gLiAj WzI1NyAiXDMwMAFcMzAxQkJcMjA3IiBbcHJvZzEgKChlcnJvciAiRm9ybSBtYXJrZWQgd2l0aCBg bm9yZXR1cm4nIGRpZCByZXR1cm4iKSldIDQgKCMkIC4gMTc1NyldKSkKKHB1dCAnbm9yZXR1cm4g J2VkZWJ1Zy1mb3JtLXNwZWMgdCkjQDE1NiBFdmFsdWF0ZSBGT1JNLCBleHBlY3RpbmcgYSBjb25z dGFudCByZXR1cm4gdmFsdWUuCklmIEZPUk0gcmV0dXJucyBkaWZmZXJpbmcgdmFsdWVzIHdoZW4g cnVubmluZyB1bmRlciBUZXN0Y292ZXIsClRlc3Rjb3ZlciB3aWxsIHJhaXNlIGFuIGVycm9yLgoK KGZuIEZPUk0pHwooZGVmYWxpYXMgJzF2YWx1ZSAnKG1hY3JvIC4gI1syNTcgIlwyMDciIFtdIDIg KCMkIC4gMjAyMSldKSkKKHB1dCAnMXZhbHVlICdlZGVidWctZm9ybS1zcGVjIHQpI0AzNzcgU2V0 IHRoZSBFZGVidWcgU1BFQyB0byB1c2UgZm9yIHNleHBzIHdoaWNoIGhhdmUgU1lNQk9MIGFzIGhl YWQuCkJvdGggU1lNQk9MIGFuZCBTUEVDIGFyZSB1bmV2YWx1YXRlZC4gIFRoZSBTUEVDIGNhbiBi ZToKMCAoaW5zdHJ1bWVudCBubyBhcmd1bWVudHMpOyB0IChpbnN0cnVtZW50IGFsbCBhcmd1bWVu dHMpOwphIHN5bWJvbCAobmFtaW5nIGEgZnVuY3Rpb24gd2l0aCBhbiBFZGVidWcgc3BlY2lmaWNh dGlvbik7IG9yIGEgbGlzdC4KVGhlIGVsZW1lbnRzIG9mIHRoZSBsaXN0IGRlc2NyaWJlIHRoZSBh cmd1bWVudCB0eXBlczsgc2VlCkluZm8gbm9kZSBgKGVsaXNwKVNwZWNpZmljYXRpb24gTGlzdCcg Zm9yIGRldGFpbHMuCgooZm4gU1lNQk9MIFNQRUMpHwooZGVmYWxpYXMgJ2RlZi1lZGVidWctc3Bl YyAnKG1hY3JvIC4gI1s1MTQgIlwzMDBcMzAxA0RcMzAyXDMwMQRERlwyMDciIFtwdXQgcXVvdGUg J2VkZWJ1Zy1mb3JtLXNwZWNdIDcgKCMkIC4gMjI3NyldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFc MzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBkZWYtZWRlYnVnLXNwZWMgbGlzcC1pbmRl bnQtZnVuY3Rpb24gMV0gNCkjQDEwNSBEZWZpbmUgYSBuZXcgRWRlYnVnIHNwZWMgZWxlbWVudCBO QU1FIGFzIHNob3J0aGFuZCBmb3IgU1BFQy4KVGhlIFNQRUMgaGFzIHRvIGJlIGEgbGlzdC4KCihm biBOQU1FIFNQRUMpHwooZGVmYWxpYXMgJ2RlZi1lZGVidWctZWxlbS1zcGVjICNbNTE0ICJcMzAw XDMwMVwzMDIEIVwiXDIwMw0AXDMwM1wzMDQhXDIxMFwyMTE6XDIwNBcAXDMwM1wzMDUCXCJcMjEw XDMwNgJcMzA3AyNcMjA3IiBbc3RyaW5nLW1hdGNoICJcXGBbJjpdIiBzeW1ib2wtbmFtZSBlcnJv ciAiRWRlYnVnIHNwZWMgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCAnJicgb3IgJzonIiAiRWRlYnVn IHNwZWMgaGFzIHRvIGJlIGEgbGlzdDogJVMiIHB1dCBlZGVidWctZWxlbS1zcGVjXSA2ICgjJCAu IDI4NzMpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9u LXB1dCBkZWYtZWRlYnVnLWVsZW0tc3BlYyBsaXNwLWluZGVudC1mdW5jdGlvbiAxXSA0KSNAODEz IFJldHVybiBhbiBhbm9ueW1vdXMgZnVuY3Rpb24uClVuZGVyIGR5bmFtaWMgYmluZGluZywgYSBj YWxsIG9mIHRoZSBmb3JtIChsYW1iZGEgQVJHUyBET0NTVFJJTkcKSU5URVJBQ1RJVkUgQk9EWSkg aXMgc2VsZi1xdW90aW5nOyB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlCmxhbWJkYSBleHBy ZXNzaW9uIGlzIHRoZSBleHByZXNzaW9uIGl0c2VsZi4gIFVuZGVyIGxleGljYWwKYmluZGluZywg dGhlIHJlc3VsdCBpcyBhIGNsb3N1cmUuICBSZWdhcmRsZXNzLCB0aGUgcmVzdWx0IGlzIGEKZnVu Y3Rpb24sIGkuZS4sIGl0IG1heSBiZSBzdG9yZWQgYXMgdGhlIGZ1bmN0aW9uIHZhbHVlIG9mIGEK c3ltYm9sLCBwYXNzZWQgdG8gYGZ1bmNhbGwnIG9yIGBtYXBjYXInLCBldGMuCgpBUkdTIHNob3Vs ZCB0YWtlIHRoZSBzYW1lIGZvcm0gYXMgYW4gYXJndW1lbnQgbGlzdCBmb3IgYSBgZGVmdW4nLgpE T0NTVFJJTkcgaXMgYW4gb3B0aW9uYWwgZG9jdW1lbnRhdGlvbiBzdHJpbmcuCiBJZiBwcmVzZW50 LCBpdCBzaG91bGQgZGVzY3JpYmUgaG93IHRvIGNhbGwgdGhlIGZ1bmN0aW9uLgogQnV0IGRvY3Vt ZW50YXRpb24gc3RyaW5ncyBhcmUgdXN1YWxseSBub3QgdXNlZnVsIGluIG5hbWVsZXNzIGZ1bmN0 aW9ucy4KSU5URVJBQ1RJVkUgc2hvdWxkIGJlIGEgY2FsbCB0byB0aGUgZnVuY3Rpb24gYGludGVy YWN0aXZlJywgd2hpY2ggc2VlLgpJdCBtYXkgYWxzbyBiZSBvbWl0dGVkLgpCT0RZIHNob3VsZCBi ZSBhIGxpc3Qgb2YgTGlzcCBleHByZXNzaW9ucy4KCihmbiBBUkdTIFtET0NTVFJJTkddIFtJTlRF UkFDVElWRV0gQk9EWSkfCihkZWZhbGlhcyAnbGFtYmRhICcobWFjcm8gLiAjWzEyOCAiXDMwMFwz MDECQkRcMjA3IiBbZnVuY3Rpb24gbGFtYmRhXSA0ICgjJCAuIDMzNjQpXSkpCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwzMDFcMzA0XDMwNSNcMzA2XDMwMVwzMDdcMzEwI1wyMDci IFtmdW5jdGlvbi1wdXQgbGFtYmRhIGRvYy1zdHJpbmctZWx0IDIgbGlzcC1pbmRlbnQtZnVuY3Rp b24gZGVmdW4gcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgKCZkZWZpbmUgbGFtYmRhLWxpc3QgbGFtYmRh LWRvYyBbJm9wdGlvbmFsICgiaW50ZXJhY3RpdmUiIGludGVyYWN0aXZlKV0gZGVmLWJvZHkpXSA2 KSNAMTk3IEV2YWwgRk9STTEsIEZPUk0yIGFuZCBCT0RZIHNlcXVlbnRpYWxseTsgcmV0dXJuIHZh bHVlIGZyb20gRk9STTIuClRoZSB2YWx1ZSBvZiBGT1JNMiBpcyBzYXZlZCBkdXJpbmcgdGhlIGV2 YWx1YXRpb24gb2YgdGhlCnJlbWFpbmluZyBhcmdzLCB3aG9zZSB2YWx1ZXMgYXJlIGRpc2NhcmRl ZC4KCihmbiBGT1JNMSBGT1JNMiAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICdwcm9nMiAnKG1hY3Jv IC4gI1s2NDIgIlwzMDADXDMwMQQEQkJFXDIwNyIgW3Byb2duIHByb2cxXSA4ICgjJCAuIDQ1MTAp XSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBb ZnVuY3Rpb24tcHV0IHByb2cyIGxpc3AtaW5kZW50LWZ1bmN0aW9uIDIgcHV0IGVkZWJ1Zy1mb3Jt LXNwZWMgdF0gNSkjQDUzOCBTZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdmFyaWFibGUgVkFSIHRv IFZBTFVFLgpWQVIsIHRoZSB2YXJpYWJsZSBuYW1lLCBpcyBsaXRlcmFsIChub3QgZXZhbHVhdGVk KTsKVkFMVUUgaXMgYW4gZXhwcmVzc2lvbjogaXQgaXMgZXZhbHVhdGVkIGFuZCBpdHMgdmFsdWUg cmV0dXJuZWQuClRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgdmFyaWFibGUgaXMgc2VlbiBpbiBidWZm ZXJzCnRoYXQgZG8gbm90IGhhdmUgdGhlaXIgb3duIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlLgoK TW9yZSBnZW5lcmFsbHksIHlvdSBjYW4gdXNlIG11bHRpcGxlIHZhcmlhYmxlcyBhbmQgdmFsdWVz LCBhcyBpbgogIChzZXRxLWRlZmF1bHQgVkFSIFZBTFVFIFZBUiBWQUxVRS4uLikKVGhpcyBzZXRz IGVhY2ggVkFSJ3MgZGVmYXVsdCB2YWx1ZSB0byB0aGUgY29ycmVzcG9uZGluZyBWQUxVRS4KVGhl IFZBTFVFIGZvciB0aGUgTnRoIFZBUiBjYW4gcmVmZXIgdG8gdGhlIG5ldyBkZWZhdWx0IHZhbHVl cwpvZiBwcmV2aW91cyBWQVJzLgoKKGZuIFtWQVIgVkFMVUVdLi4uKR8KKGRlZmFsaWFzICdzZXRx LWRlZmF1bHQgJyhtYWNybyAuICNbMTI4ICJcMzAwAVwyMDMcAFwzMDFcMzAyA1wyMTFBXDI2MgVc MjQyRANcMjExQVwyNjIFXDI0MkUBQlwyNjIBXDIwMgEAXDMwMwFcMjM3QlwyMDciIFtuaWwgc2V0 LWRlZmF1bHQgcXVvdGUgcHJvZ25dIDYgKCMkIC4gNDkxOSldKSkKKHB1dCAnc2V0cS1kZWZhdWx0 ICdlZGVidWctZm9ybS1zcGVjICdzZXRxKSNANTU4IE1ha2UgZWFjaCBWQVJJQUJMRSBidWZmZXIt bG9jYWwgYW5kIGFzc2lnbiB0byBpdCB0aGUgY29ycmVzcG9uZGluZyBWQUxVRS4KClRoZSBhcmd1 bWVudHMgYXJlIHZhcmlhYmxlL3ZhbHVlIHBhaXJzICBGb3IgZWFjaCBWQVJJQUJMRSBpbiBhIHBh aXIsCm1ha2UgVkFSSUFCTEUgYnVmZmVyLWxvY2FsIGFuZCBhc3NpZ24gdG8gaXQgdGhlIGNvcnJl c3BvbmRpbmcgVkFMVUUKb2YgdGhlIHBhaXIuICBUaGUgVkFSSUFCTEVzIGFyZSBsaXRlcmFsIHN5 bWJvbHMgYW5kIHNob3VsZCBub3QgYmUgcXVvdGVkLgoKVGhlIFZBTFVFIG9mIHRoZSBOdGggcGFp ciBpcyBub3QgY29tcHV0ZWQgdW50aWwgYWZ0ZXIgdGhlIFZBUklBQkxFCm9mIHRoZSAoTi0xKXRo IHBhaXIgaXMgc2V0OyB0aHVzLCBlYWNoIFZBTFVFIGNhbiB1c2UgdGhlIG5ldyBWQUxVRXMKb2Yg VkFSSUFCTEVzIHNldCBieSBlYXJsaWVyIHBhaXJzLgoKVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUg YHNldHEtbG9jYWwnIGZvcm0gaXMgdGhlIFZBTFVFIG9mIHRoZSBsYXN0CnBhaXIuCgooZm4gW1ZB UklBQkxFIFZBTFVFXS4uLikfCihkZWZhbGlhcyAnc2V0cS1sb2NhbCAnKG1hY3JvIC4gI1sxMjgg IlwzMDABR1wzMDFcIlwzMDJVXDIwNA4AXDMwM1wzMDQhXDIxMFwzMDUBXDIwMzYAAUA5XDIwNB8A XDMwM1wzMDYDQFwiXDIxMFwzMDdcMzEwXDMxMQRAREQDQUBFAUJcMjYyAQFBQVwyNjICXDIwMg8A XDMxMgFcMjM3IVwyMDciIFttb2QgMiAwIGVycm9yICJQQUlSUyBtdXN0IGhhdmUgYW4gZXZlbiBu dW1iZXIgb2YgdmFyaWFibGUvdmFsdWUgbWVtYmVycyIgbmlsICJBdHRlbXB0aW5nIHRvIHNldCBh IG5vbi1zeW1ib2w6ICVzIiBzZXQgbWFrZS1sb2NhbC12YXJpYWJsZSBxdW90ZSBtYWNyb2V4cC1w cm9nbl0gNiAoIyQgLiA1Njc0KV0pKQoocHV0ICdzZXRxLWxvY2FsICdlZGVidWctZm9ybS1zcGVj ICdzZXRxKSNAMjAzIERlZmluZSBWQVIgYXMgYSBidWZmZXItbG9jYWwgdmFyaWFibGUgd2l0aCBk ZWZhdWx0IHZhbHVlIFZBTC4KTGlrZSBgZGVmdmFyJyBidXQgYWRkaXRpb25hbGx5IG1hcmtzIHRo ZSB2YXJpYWJsZSBhcyBiZWluZyBhdXRvbWF0aWNhbGx5CmJ1ZmZlci1sb2NhbCB3aGVyZXZlciBp dCBpcyBzZXQuCgooZm4gVkFSIFZBTCAmb3B0aW9uYWwgRE9DU1RSSU5HKR8KKGRlZmFsaWFzICdk ZWZ2YXItbG9jYWwgJyhtYWNybyAuICNbNzcwICJcMzAwXDMwMQQEBEZcMzAyXDMwMwYGRERFXDIw NyIgW3Byb2duIGRlZnZhciBtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCBxdW90ZV0gOCAoIyQg LiA2NjI1KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwMVwzMDVc MzA2I1wzMDRcMzAxXDMwN1wzMTAjXDMwMFwyMDciIFtwdXQgZGVmdmFyLWxvY2FsIGVkZWJ1Zy1m b3JtLXNwZWMgZGVmdmFyIGZ1bmN0aW9uLXB1dCBkb2Mtc3RyaW5nLWVsdCAzIGxpc3AtaW5kZW50 LWZ1bmN0aW9uIDJdIDUpI0A5NSBSZXR1cm4gbm9uLW5pbCBpZiBTWU1CT0wgaXMgYm91bmQgaW4g QlVGRkVSLgpBbHNvIHNlZSBgbG9jYWwtdmFyaWFibGUtcCcuCgooZm4gU1lNQk9MIEJVRkZFUikf CihkZWZhbGlhcyAnYnVmZmVyLWxvY2FsLWJvdW5kcCAjWzUxNCAiXDMwMDFcZgBcMzAxAgJcIjBc MjEwXDMwMlwyMDdcMjEwXDMwM1wyMDciIFsodm9pZC12YXJpYWJsZSkgYnVmZmVyLWxvY2FsLXZh bHVlIHQgbmlsXSA1ICgjJCAuIDcxNDUpXSkjQDI1NSBMaWtlIGBzZXRxLWxvY2FsJywgYnV0IGFs bG93IHJlc3RvcmluZyB0aGUgcHJldmlvdXMgc3RhdGUgb2YgbG9jYWxzIGxhdGVyLgpUaGlzIG1h Y3JvIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgYnVmZmVyLWxvY2Fs LXJlc3RvcmUtc3RhdGUnCmluIG9yZGVyIHRvIHJlc3RvcmUgdGhlIHN0YXRlIG9mIHRoZSBsb2Nh bCB2YXJpYWJsZXMgc2V0IHZpYSB0aGlzIG1hY3JvLgoKKGZuIFtWQVJJQUJMRSBWQUxVRV0uLi4p HwooZGVmYWxpYXMgJ2J1ZmZlci1sb2NhbC1zZXQtc3RhdGUgJyhtYWNybyAuICNbMTI4ICJcMzAw AUdcMzAxXCJcMzAyVVwyMDQOAFwzMDNcMzA0IVwyMTBcMzA1XDMwNlwzMDcDRERcMzEwA0JFXDIw NyIgW21vZCAyIDAgZXJyb3IgIlBBSVJTIG11c3QgaGF2ZSBhbiBldmVuIG51bWJlciBvZiB2YXJp YWJsZS92YWx1ZSBtZW1iZXJzIiBwcm9nMSBidWZmZXItbG9jYWwtc2V0LXN0YXRlLS1nZXQgcXVv dGUgc2V0cS1sb2NhbF0gNSAoIyQgLiA3Mzg1KV0pKQoocHV0ICdidWZmZXItbG9jYWwtc2V0LXN0 YXRlICdlZGVidWctZm9ybS1zcGVjICdzZXRxKSNAMTQgCgooZm4gUEFJUlMpHwooZGVmYWxpYXMg J2J1ZmZlci1sb2NhbC1zZXQtc3RhdGUtLWdldCAjWzI1NyAiXDMwMAFcMjAzKQABQFwzMDEDQCFc MjA1EgBcMzAyA0AhXDMwMQRAIVwyMDUcAANASkUBQlwyNjIBAUFBXDI2MgJcMjAyAQBcMjExXDIz N1wyMDciIFtuaWwgYm91bmRwIGxvY2FsLXZhcmlhYmxlLXBdIDYgKCMkIC4gNzk1NildKSNAMTQw IFJlc3RvcmUgdmFsdWVzIG9mIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZXMgcmVjb3JkZWQgaW4gU1RB VEVTLgpTVEFURVMgc2hvdWxkIGJlIGFuIG9iamVjdCByZXR1cm5lZCBieSBgYnVmZmVyLWxvY2Fs LXNldC1zdGF0ZScuCgooZm4gU1RBVEVTKR8KKGRlZmFsaWFzICdidWZmZXItbG9jYWwtcmVzdG9y ZS1zdGF0ZSAjWzI1NyAiXDIxMVwyMTFcMjA1LABcMjExQFwyMTFcMjQyAVwyNDNcMjExXDI0MgFc MjQzXDIxMVwyNDIBXDI0MwNcMjAzHwAFAkxcMjY2B1wyMDIlAFwzMDAGBiFcMjY2BwFBXDI2Nlwy MDJcMjAyAQBcMjA3IiBba2lsbC1sb2NhbC12YXJpYWJsZV0gMTEgKCMkIC4gODE1MildKSNAMjA2 IEFkZCBORVdFTFQgdG8gdGhlIGxpc3Qgc3RvcmVkIGluIHRoZSBnZW5lcmFsaXplZCB2YXJpYWJs ZSBQTEFDRS4KVGhpcyBpcyBtb3JhbGx5IGVxdWl2YWxlbnQgdG8gKHNldGYgUExBQ0UgKGNvbnMg TkVXRUxUIFBMQUNFKSksCmV4Y2VwdCB0aGF0IFBMQUNFIGlzIGV2YWx1YXRlZCBvbmx5IG9uY2Ug KGFmdGVyIE5FV0VMVCkuCgooZm4gTkVXRUxUIFBMQUNFKR8KKGRlZmFsaWFzICdwdXNoICcobWFj cm8gLiAjWzUxNCAiXDIxMTlcMjAzDQBcMzAwAVwzMDEEBEVFXDIwN1wzMDJcMzAzIVwyMTBcMzA0 AiFcMjAzGwABXDIwMh4AXDMwNVwzMDYhXDMwNwJcMzEwXDMxMQRcIlwiAQQ9XDIwMywAXDIwN1wz MTICBURDAlwiXDIwNyIgW3NldHEgY29ucyByZXF1aXJlIG1hY3JvZXhwIG1hY3JvZXhwLWNvcHlh YmxlLXAgbWFrZS1zeW1ib2wgIngiIGd2LWdldCBtYWtlLWNsb3N1cmUgI1s1MTQgIlwyMTFcMzAx XDMwMARFIVwyMDciIFtWMCBjb25zXSA2ICJcblxuKGZuIEdFVFRFUiBTRVRURVIpIl0gbWFjcm9l eHAtbGV0Kl0gOCAoIyQgLiA4NDk0KV0pKQoocHV0ICdwdXNoICdlZGVidWctZm9ybS1zcGVjICco Zm9ybSBndi1wbGFjZSkpI0AyMjMgUmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50IG9mIFBMQUNFJ3Mg dmFsdWUsIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdC4KUExBQ0UgbXVzdCBiZSBhIGdlbmVy YWxpemVkIHZhcmlhYmxlIHdob3NlIHZhbHVlIGlzIGEgbGlzdC4KSWYgdGhlIHZhbHVlIGlzIG5p bCwgYHBvcCcgcmV0dXJucyBuaWwgYnV0IGRvZXMgbm90IGFjdHVhbGx5CmNoYW5nZSB0aGUgbGlz dC4KCihmbiBQTEFDRSkfCihkZWZhbGlhcyAncG9wICcobWFjcm8gLiAjWzI1NyAiXDMwMAE5XDIw MxMAXDMwMQJcMzAyBFwzMDMGBkRFRVwyMDIXAFwzMDQCXDMwNVwiRFwyMDciIFtjYXItc2FmZSBw cm9nMSBzZXRxIGNkciBndi1nZXQgI1s1MTQgIlwzMDACIVwyMDNcbgABXDIwMg0AXDMwMVwzMDIh XDMwMwEDXDMwNAREIUUBBD1cMjAzHABcMjA3XDMwNQIFREMCXCJcMjA3IiBbbWFjcm9leHAtY29w eWFibGUtcCBtYWtlLXN5bWJvbCAieCIgcHJvZzEgY2RyIG1hY3JvZXhwLWxldCpdIDggIlxuXG4o Zm4gR0VUVEVSIFNFVFRFUikiXV0gOCAoIyQgLiA5MDg0KV0pKQoocHV0ICdwb3AgJ2VkZWJ1Zy1m b3JtLXNwZWMgJyhndi1wbGFjZSkpI0AxODQgSWYgQ09ORCB5aWVsZHMgbm9uLW5pbCwgZG8gQk9E WSwgZWxzZSByZXR1cm4gbmlsLgpXaGVuIENPTkQgeWllbGRzIG5vbi1uaWwsIGV2YWwgQk9EWSBm b3JtcyBzZXF1ZW50aWFsbHkgYW5kIHJldHVybgp2YWx1ZSBvZiBsYXN0IG9uZSwgb3IgbmlsIGlm IHRoZXJlIGFyZSBub25lLgoKKGZuIENPTkQgJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2hlbiAn KG1hY3JvIC4gI1szODUgIlwzMDACXDMwMQNCRVwyMDciIFtpZiBwcm9nbl0gNiAoIyQgLiA5NjYw KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIg W2Z1bmN0aW9uLXB1dCB3aGVuIGxpc3AtaW5kZW50LWZ1bmN0aW9uIDEgcHV0IGVkZWJ1Zy1mb3Jt LXNwZWMgdF0gNSkjQDE3NiBJZiBDT05EIHlpZWxkcyBuaWwsIGRvIEJPRFksIGVsc2UgcmV0dXJu IG5pbC4KV2hlbiBDT05EIHlpZWxkcyBuaWwsIGV2YWwgQk9EWSBmb3JtcyBzZXF1ZW50aWFsbHkg YW5kIHJldHVybgp2YWx1ZSBvZiBsYXN0IG9uZSwgb3IgbmlsIGlmIHRoZXJlIGFyZSBub25lLgoK KGZuIENPTkQgJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAndW5sZXNzICcobWFjcm8gLiAjWzM4NSAi XDMwMAJcMzAxA0JCQlwyMDciIFtpZiBuaWxdIDYgKCMkIC4gMTAwNDkpXSkpCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHVu bGVzcyBsaXNwLWluZGVudC1mdW5jdGlvbiAxIHB1dCBlZGVidWctZm9ybS1zcGVjIHRdIDUpI0A2 NyBSZXR1cm4gdCBpZiBPQkpFQ1QgaXMgYSBidWlsdC1pbiBwcmltaXRpdmUgZnVuY3Rpb24uCgoo Zm4gT0JKRUNUKR8KKGRlZmFsaWFzICdzdWJyLXByaW1pdGl2ZS1wICNbMjU3ICJcMzAwASFcMjA1 XG4AXDMwMQEhP1wyMDciIFtzdWJycCBzdWJyLW5hdGl2ZS1lbGlzcC1wXSAzICgjJCAuIDEwNDMz KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBb ZnVuY3Rpb24tcHV0IHN1YnItcHJpbWl0aXZlLXAgc3BlZWQgLTEgcHV0IGJ5dGUtb3B0aW1pemVy IGJ5dGUtY29tcGlsZS1pbmxpbmUtZXhwYW5kXSA1KSNAMTQ1IFJldHVybiB0aGUgYm9vbGVhbiBl eGNsdXNpdmUtb3Igb2YgQ09ORDEgYW5kIENPTkQyLgpJZiBvbmx5IG9uZSBvZiB0aGUgYXJndW1l bnRzIGlzIG5vbi1uaWwsIHJldHVybiBpdDsgb3RoZXJ3aXNlCnJldHVybiBuaWwuCgooZm4gQ09O RDEgQ09ORDIpHwooZGVmYWxpYXMgJ3hvciAjWzUxNCAiAVwyMDQFAFwyMDdcMjExP1wyMDULAAFc MjA3IiBbXSAzICgjJCAuIDEwNzUzKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMw MFwzMDFcMzA0XDMwNSNcMzAwXDMwMVwzMDZcMzA3I1wzMTBcMzAxXDMxMVwzMTIjXDIwNyIgW2Z1 bmN0aW9uLXB1dCB4b3IgcHVyZSB0IHNpZGUtZWZmZWN0LWZyZWUgZXJyb3ItZnJlZSBzcGVlZCAt MSBwdXQgYnl0ZS1vcHRpbWl6ZXIgYnl0ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDcpI0AxNjkg TG9vcCBvdmVyIGEgbGlzdC4KRXZhbHVhdGUgQk9EWSB3aXRoIFZBUiBib3VuZCB0byBlYWNoIGNh ciBmcm9tIExJU1QsIGluIHR1cm4uClRoZW4gZXZhbHVhdGUgUkVTVUxUIHRvIGdldCByZXR1cm4g dmFsdWUsIGRlZmF1bHQgbmlsLgoKKGZuIChWQVIgTElTVCBbUkVTVUxUXSkgQk9EWS4uLikfCihk ZWZhbGlhcyAnZG9saXN0ICcobWFjcm8gLiAjWzM4NSAiATpcMjA0XGYAXDMwMFwzMDFcMzAyBERc IlwyMTBcMzAzXDMwNANHXDMwNSNcMjA0HQBcMzAwXDMwNlwzMDcER0RcIlwyMTBcMzEwXDMxMSFc MzEyAQRBQERDXDMxMwNcMzEyBgdAXDMxNAYHRERDXDMxNQYIXDMxNgYJXDMxNwYLREVDXCJCQkUF QUFCQkJcMjA3IiBbc2lnbmFsIHdyb25nLXR5cGUtYXJndW1lbnQgY29uc3AgPD0gMiAzIHdyb25n LW51bWJlci1vZi1hcmd1bWVudHMgKDIgLiAzKSBtYWtlLXN5bWJvbCAidGFpbCIgbGV0IHdoaWxl IGNhciBhcHBlbmQgc2V0cSBjZHJdIDE1ICgjJCAuIDExMTcyKV0pKQooYnl0ZS1jb2RlICJcMzAw XDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1dCBkb2xpc3Qg bGlzcC1pbmRlbnQtZnVuY3Rpb24gMSBwdXQgZWRlYnVnLWZvcm0tc3BlYyAoKHN5bWJvbHAgZm9y bSAmb3B0aW9uYWwgZm9ybSkgYm9keSldIDUpI0AzNDEgTG9vcCBhIGNlcnRhaW4gbnVtYmVyIG9m IHRpbWVzLgpFdmFsdWF0ZSBCT0RZIHdpdGggVkFSIGJvdW5kIHRvIHN1Y2Nlc3NpdmUgaW50ZWdl cnMgcnVubmluZyBmcm9tIDAsCmluY2x1c2l2ZSwgdG8gQ09VTlQsIGV4Y2x1c2l2ZS4KCkZpbmFs bHkgUkVTVUxUIGlzIGV2YWx1YXRlZCB0byBnZXQgdGhlIHJldHVybiB2YWx1ZSAobmlsIGlmClJF U1VMVCBpcyBvbWl0dGVkKS4gIFVzaW5nIFJFU1VMVCBpcyBkZXByZWNhdGVkLCBhbmQgbWF5IHJl c3VsdAppbiBjb21waWxhdGlvbiB3YXJuaW5ncyBhYm91dCB1bnVzZWQgdmFyaWFibGVzLgoKKGZu IChWQVIgQ09VTlQgW1JFU1VMVF0pIEJPRFkuLi4pHwooZGVmYWxpYXMgJ2RvdGltZXMgJyhtYWNy byAuICNbMzg1ICIBQAJBQFwzMDBcMzAxIVwzMDBcMzAyIVwzMDMCBEQCXDMwNEJEXDMwNVwzMDYE BgZFXDMwMwYIBgZEQwZcbkJCXDMwNwYGXDMxMAYIREVGBghBQVwyMDVBAFwzMDMGBwVEQwZcbkFB QkJDQkJCXDIwNyIgW21ha2Utc3ltYm9sICJ1cHBlci1ib3VuZCIgImNvdW50ZXIiIGxldCAoMCkg d2hpbGUgPCBzZXRxIDErXSAxNSAoIyQgLiAxMTgzMildKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFc MzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgZG90aW1lcyBsaXNw LWluZGVudC1mdW5jdGlvbiAxIHB1dCBlZGVidWctZm9ybS1zcGVjIGRvbGlzdF0gNSkjQDQ3NyBE byBub3QgZXZhbHVhdGUgYW55IGFyZ3VtZW50cywgYW5kIHJldHVybiBuaWwuCklmIGEgYGRlY2xh cmUnIGZvcm0gYXBwZWFycyBhcyB0aGUgZmlyc3QgZm9ybSBpbiB0aGUgYm9keSBvZiBhCmBkZWZ1 bicgb3IgYGRlZm1hY3JvJyBmb3JtLCBTUEVDUyBzcGVjaWZpZXMgdmFyaW91cyBhZGRpdGlvbmFs CmluZm9ybWF0aW9uIGFib3V0IHRoZSBmdW5jdGlvbiBvciBtYWNybzsgdGhlc2UgZ28gaW50byBl ZmZlY3QKZHVyaW5nIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBgZGVmdW4nIG9yIGBkZWZtYWNybycg Zm9ybS4KClRoZSBwb3NzaWJsZSB2YWx1ZXMgb2YgU1BFQ1MgYXJlIHNwZWNpZmllZCBieQpgZGVm dW4tZGVjbGFyYXRpb25zLWFsaXN0JyBhbmQgYG1hY3JvLWRlY2xhcmF0aW9ucy1hbGlzdCcuCgpG b3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGluZm8gbm9kZSBgKGVsaXNwKURlY2xhcmUgRm9ybScu CgooZm4gJnJlc3QgU1BFQ1MpHwooZGVmYWxpYXMgJ2RlY2xhcmUgJyhtYWNybyAuICNbMTI4ICJc MzAwAUJcMzAxXDMwMlwzMDMDXCJcMzA0XDMwNQREXDMwNkJCXDMwN1wzMTAkXDIwNyIgW2RlY2xh cmUgbWFjcm9leHAtd2Fybi1hbmQtcmV0dXJuIGZvcm1hdC1tZXNzYWdlICJTdHJheSBgZGVjbGFy ZScgZm9ybTogJVMiIHByb2duIHF1b3RlIChuaWwpIG5pbCBjb21waWxlLW9ubHldIDcgKCMkIC4g MTI1MzkpXSkpI0AyMDAgRXhlY3V0ZSBCT0RZOyBpZiBhbiBlcnJvciBvY2N1cnMsIHJldHVybiBu aWwuCk90aGVyd2lzZSwgcmV0dXJuIHJlc3VsdCBvZiBsYXN0IGZvcm0gaW4gQk9EWS4KU2VlIGFs c28gYHdpdGgtZGVtb3RlZC1lcnJvcnMnIHRoYXQgZG9lcyBzb21ldGhpbmcgc2ltaWxhcgp3aXRo b3V0IHNpbGVuY2luZyBhbGwgZXJyb3JzLgoKKGZuICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ2ln bm9yZS1lcnJvcnMgJyhtYWNybyAuICNbMTI4ICJcMzAwXDMwMVwzMDIDQlwzMDNCQkJcMjA3IiBb Y29uZGl0aW9uLWNhc2UgbmlsIHByb2duICgoZXJyb3IgbmlsKSldIDUgKCMkIC4gMTMyMzkpXSkp CihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDIxMFwzMDRcMzAxXDMwNVwzMDYjXDMwMFwy MDciIFtwdXQgaWdub3JlLWVycm9ycyBlZGVidWctZm9ybS1zcGVjIHQgZnVuY3Rpb24tcHV0IGxp c3AtaW5kZW50LWZ1bmN0aW9uIDBdIDQpI0AxODMgRXhlY3V0ZSBCT0RZOyBpZiB0aGUgZXJyb3Ig Q09ORElUSU9OIG9jY3VycywgcmV0dXJuIG5pbC4KT3RoZXJ3aXNlLCByZXR1cm4gcmVzdWx0IG9m IGxhc3QgZm9ybSBpbiBCT0RZLgoKQ09ORElUSU9OIGNhbiBhbHNvIGJlIGEgbGlzdCBvZiBlcnJv ciBjb25kaXRpb25zLgoKKGZuIENPTkRJVElPTiAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICdpZ25v cmUtZXJyb3IgJyhtYWNybyAuICNbMzg1ICJcMzAwXDMwMVwzMDIDQgRcMzAzQkZcMjA3IiBbY29u ZGl0aW9uLWNhc2UgbmlsIHByb2duIChuaWwpXSA3ICgjJCAuIDEzNzEwKV0pKQooYnl0ZS1jb2Rl ICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwMVwzMDVcMzA2I1wzMDBcMjA3IiBbcHV0IGln bm9yZS1lcnJvciBlZGVidWctZm9ybS1zcGVjIHQgZnVuY3Rpb24tcHV0IGxpc3AtaW5kZW50LWZ1 bmN0aW9uIDFdIDQpI0A3NSBOdW1iZXIgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIG5hbWUgb2YgdGhl IG5leHQgc3ltYm9sIGNyZWF0ZWQgYnkgYGdlbnN5bScuHwooZGVmdmFyIGdlbnN5bS1jb3VudGVy IDAgKCMkIC4gMTQxNTMpKSNAMTU1IFJldHVybiBhIG5ldyB1bmludGVybmVkIHN5bWJvbC4KVGhl IG5hbWUgaXMgbWFkZSBieSBhcHBlbmRpbmcgYGdlbnN5bS1jb3VudGVyJyB0byBQUkVGSVguClBS RUZJWCBpcyBhIHN0cmluZywgYW5kIGRlZmF1bHRzIHRvICJnIi4KCihmbiAmb3B0aW9uYWwgUFJF RklYKR8KKGRlZmFsaWFzICdnZW5zeW0gI1syNTYgIghcMjExVBBcMzAxXDMwMlwzMDMEXDIwNlxm AFwzMDQEIyFcMjA3IiBbZ2Vuc3ltLWNvdW50ZXIgbWFrZS1zeW1ib2wgZm9ybWF0ICIlcyVkIiAi ZyJdIDcgKCMkIC4gMTQyNzIpXSkjQDEzNCBEbyBub3RoaW5nIGFuZCByZXR1cm4gbmlsLgpUaGlz IGZ1bmN0aW9uIGFjY2VwdHMgYW55IG51bWJlciBvZiBBUkdVTUVOVFMsIGJ1dCBpZ25vcmVzIHRo ZW0uCkFsc28gc2VlIGBhbHdheXMnLgoKKGZuICZyZXN0IEFSR1VNRU5UUykfCihkZWZhbGlhcyAn aWdub3JlICNbMTI4ICJcMzAwXDIwNyIgW25pbF0gMiAoIyQgLiAxNDU2MSkgbmlsXSkKKGJ5dGUt Y29kZSAiXDMwMFwzMDFcMzAyXDMwMSNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBpZ25vcmUgY29t cGxldGlvbi1wcmVkaWNhdGVdIDQpI0AxMzIgRG8gbm90aGluZyBhbmQgcmV0dXJuIHQuClRoaXMg ZnVuY3Rpb24gYWNjZXB0cyBhbnkgbnVtYmVyIG9mIEFSR1VNRU5UUywgYnV0IGlnbm9yZXMgdGhl bS4KQWxzbyBzZWUgYGlnbm9yZScuCgooZm4gJnJlc3QgQVJHVU1FTlRTKR8KKGRlZmFsaWFzICdh bHdheXMgI1sxMjggIlwzMDBcMjA3IiBbdF0gMiAoIyQgLiAxNDg0NyldKSNANTk1IFNpZ25hbCBh biBlcnJvciwgbWFraW5nIGEgbWVzc2FnZSBieSBwYXNzaW5nIEFSR1MgdG8gYGZvcm1hdC1tZXNz YWdlJy4KRXJyb3JzIGNhdXNlIGVudHJ5IHRvIHRoZSBkZWJ1Z2dlciB3aGVuIGBkZWJ1Zy1vbi1l cnJvcicgaXMgbm9uLW5pbC4KVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBgZGVidWctaWdub3Jl ZC1lcnJvcnMnLgoKVG8gc2lnbmFsIHdpdGggTUVTU0FHRSB3aXRob3V0IGludGVycHJldGluZyBm b3JtYXQgY2hhcmFjdGVycwpsaWtlIGAlJywgYFw9YCcgYW5kIGBcPScnLCB1c2UgKGVycm9yICIl cyIgTUVTU0FHRSkuCkluIEVtYWNzLCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGVycm9yIG1lc3Nh Z2VzIHN0YXJ0IHdpdGggYSBjYXBpdGFsCmxldHRlciBidXQgKmRvIG5vdCogZW5kIHdpdGggYSBw ZXJpb2QuICBQbGVhc2UgZm9sbG93IHRoaXMgY29udmVudGlvbgpmb3IgdGhlIHNha2Ugb2YgY29u c2lzdGVuY3kuCgpUbyBhbHRlciB0aGUgbG9vayBvZiB0aGUgZGlzcGxheWVkIGVycm9yIG1lc3Nh Z2VzLCB5b3UgY2FuIHVzZQp0aGUgYGNvbW1hbmQtZXJyb3ItZnVuY3Rpb24nIHZhcmlhYmxlLgoK KGZuICZyZXN0IEFSR1MpHwooZGVmYWxpYXMgJ2Vycm9yICNbMTI4ICJcMzAwXDMwMVwzMDJcMzAz BFwiQ1wiXDIwNyIgW3NpZ25hbCBlcnJvciBhcHBseSBmb3JtYXQtbWVzc2FnZV0gNiAoIyQgLiAx NTA0MCldKQooc2V0LWFkdmVydGlzZWQtY2FsbGluZy1jb252ZW50aW9uICdlcnJvciAnKHN0cmlu ZyAmcmVzdCBhcmdzKSAiMjMuMSIpI0A4MTIgU2lnbmFsIGEgdXNlciBlcnJvciwgbWFraW5nIGEg bWVzc2FnZSBieSBwYXNzaW5nIEFSR1MgdG8gYGZvcm1hdC1tZXNzYWdlJy4KVGhpcyBpcyBsaWtl IGBlcnJvcicgZXhjZXB0IHRoYXQgYSB1c2VyIGVycm9yIChvciAicGlsb3QgZXJyb3IiKSBjb21l cwpmcm9tIGFuIGluY29ycmVjdCBtYW5pcHVsYXRpb24gYnkgdGhlIHVzZXIsIG5vdCBmcm9tIGFu IGFjdHVhbCBwcm9ibGVtLgpJbiBjb250cmFzdCB3aXRoIG90aGVyIGVycm9ycywgdXNlciBlcnJv cnMgbm9ybWFsbHkgZG8gbm90IGNhdXNlCmVudHJ5IHRvIHRoZSBkZWJ1Z2dlciwgZXZlbiB3aGVu IGBkZWJ1Zy1vbi1lcnJvcicgaXMgbm9uLW5pbC4KVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBg ZGVidWctaWdub3JlZC1lcnJvcnMnLgoKVG8gc2lnbmFsIHdpdGggTUVTU0FHRSB3aXRob3V0IGlu dGVycHJldGluZyBmb3JtYXQgY2hhcmFjdGVycwpsaWtlIGAlJywgYFw9YCcgYW5kIGBcPScnLCB1 c2UgKHVzZXItZXJyb3IgIiVzIiBNRVNTQUdFKS4KSW4gRW1hY3MsIHRoZSBjb252ZW50aW9uIGlz IHRoYXQgZXJyb3IgbWVzc2FnZXMgc3RhcnQgd2l0aCBhIGNhcGl0YWwKbGV0dGVyIGJ1dCAqZG8g bm90KiBlbmQgd2l0aCBhIHBlcmlvZC4gIFBsZWFzZSBmb2xsb3cgdGhpcyBjb252ZW50aW9uCmZv ciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeS4KClRvIGFsdGVyIHRoZSBsb29rIG9mIHRoZSBkaXNw bGF5ZWQgZXJyb3IgbWVzc2FnZXMsIHlvdSBjYW4gdXNlCnRoZSBgY29tbWFuZC1lcnJvci1mdW5j dGlvbicgdmFyaWFibGUuCgooZm4gRk9STUFUICZyZXN0IEFSR1MpHwooZGVmYWxpYXMgJ3VzZXIt ZXJyb3IgI1szODUgIlwzMDBcMzAxXDMwMlwzMDMFBSNDXCJcMjA3IiBbc2lnbmFsIHVzZXItZXJy b3IgYXBwbHkgZm9ybWF0LW1lc3NhZ2VdIDggKCMkIC4gMTU4MTYpXSkjQDI5NCBEZWZpbmUgTkFN RSBhcyBhIG5ldyBlcnJvciBzaWduYWwuCk1FU1NBR0UgaXMgYSBzdHJpbmcgdGhhdCB3aWxsIGJl IG91dHB1dCB0byB0aGUgZWNobyBhcmVhIGlmIHN1Y2ggYW4gZXJyb3IKaXMgc2lnbmFsZWQgd2l0 aG91dCBiZWluZyBjYXVnaHQgYnkgYSBgY29uZGl0aW9uLWNhc2UnLgpQQVJFTlQgaXMgZWl0aGVy IGEgc2lnbmFsIG9yIGEgbGlzdCBvZiBzaWduYWxzIGZyb20gd2hpY2ggaXQgaW5oZXJpdHMuCkRl ZmF1bHRzIHRvIGBlcnJvcicuCgooZm4gTkFNRSBNRVNTQUdFICZvcHRpb25hbCBQQVJFTlQpHwoo ZGVmYWxpYXMgJ2RlZmluZS1lcnJvciAjWzc3MCAiXDIxMVwyMDQHAFwzMDBcMjYyAVwyMTE6XDIw MxYAXDMwMVwzMDJcMzAzXDMwNARcIlwiXDIwMhsAXDIxMQFcMzA1TkJcMzA2BFwzMDVcMzA3XDMx MAYIBgZCISEjXDIxMAJcMjA1MgBcMzA2BFwzMTEFI1wyMDciIFtlcnJvciBhcHBseSBhcHBlbmQg bWFwY2FyICNbMjU3ICJcMjExAVwzMDBOXDIwNgsAXDMwMVwzMDIDXCJCXDIwNyIgW2Vycm9yLWNv bmRpdGlvbnMgZXJyb3IgIlVua25vd24gc2lnbmFsIGAlcyciXSA1ICJcblxuKGZuIFBBUkVOVCki XSBlcnJvci1jb25kaXRpb25zIHB1dCBkZWxldGUtZHVwcyBjb3B5LXNlcXVlbmNlIGVycm9yLW1l c3NhZ2VdIDExICgjJCAuIDE2NzQ4KV0pI0AxNTggUmV0dXJuIG5vbi1uaWwgaWYgT0JKRUNUIHNl ZW1zIHRvIGJlIGEgZnJhbWUgY29uZmlndXJhdGlvbi4KQW55IGxpc3Qgd2hvc2UgY2FyIGlzIGBm cmFtZS1jb25maWd1cmF0aW9uJyBpcyBhc3N1bWVkIHRvIGJlIGEgZnJhbWUKY29uZmlndXJhdGlv bi4KCihmbiBPQkpFQ1QpHwooZGVmYWxpYXMgJ2ZyYW1lLWNvbmZpZ3VyYXRpb24tcCAjWzI1NyAi XDIxMTpcMjA1CQBcMjExQFwzMDA9XDIwNyIgW2ZyYW1lLWNvbmZpZ3VyYXRpb25dIDMgKCMkIC4g MTc0MTUpXSkjQDI5NCBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IGlzIGEgcGFydGlhbCBhcHBsaWNh dGlvbiBvZiBGVU4gdG8gQVJHUy4KQVJHUyBpcyBhIGxpc3Qgb2YgdGhlIGZpcnN0IE4gYXJndW1l bnRzIHRvIHBhc3MgdG8gRlVOLgpUaGUgcmVzdWx0IGlzIGEgbmV3IGZ1bmN0aW9uIHdoaWNoIGRv ZXMgdGhlIHNhbWUgYXMgRlVOLCBleGNlcHQgdGhhdAp0aGUgZmlyc3QgTiBhcmd1bWVudHMgYXJl IGZpeGVkIGF0IHRoZSB2YWx1ZXMgd2l0aCB3aGljaCB0aGlzIGZ1bmN0aW9uCndhcyBjYWxsZWQu CgooZm4gRlVOICZyZXN0IEFSR1MpHwooZGVmYWxpYXMgJ2FwcGx5LXBhcnRpYWxseSAjWzM4NSAi XDMwMFwzMDECBCNcMjA3IiBbbWFrZS1jbG9zdXJlICNbMTI4ICJcMzAyXDMwMVwzMDNcMzAwBFwi XCJcMjA3IiBbVjAgVjEgYXBwbHkgYXBwZW5kXSA2ICJcblxuKGZuICZyZXN0IEFSR1MyKSJdXSA2 ICgjJCAuIDE3Njg0KV0pI0A0MiBSZXR1cm4gdCBpZiBOVU1CRVIgaXMgemVyby4KCihmbiBOVU1C RVIpHwooZGVmYWxpYXMgJ3plcm9wICNbMjU3ICJcMjExXDMwMFVcMjA3IiBbMF0gMyAoIyQgLiAx ODE0NildKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBbZnVuY3Rpb24t cHV0IHplcm9wIGNvbXBpbGVyLW1hY3JvIHplcm9wLS1hbm9uLWNtYWNyb10gNCkjQDE3IAoKKGZu IF8gTlVNQkVSKR8KKGRlZmFsaWFzICd6ZXJvcC0tYW5vbi1jbWFjcm8gI1s1MTQgIlwzMDBcMzAx AkVcMjA3IiBbPSAwXSA1ICgjJCAuIDE4MzQ5KV0pI0A0NiBSZXR1cm4gdCBpZiBPQkpFQ1QgaXMg YSBmaXhudW0uCgooZm4gT0JKRUNUKR8KKGRlZmFsaWFzICdmaXhudW1wICNbMjU3ICJcMjExXDI1 MFwyMDUOAAgBWFwyMDUOAFwyMTEJWFwyMDciIFttb3N0LW5lZ2F0aXZlLWZpeG51bSBtb3N0LXBv c2l0aXZlLWZpeG51bV0gMyAoIyQgLiAxODQ0NildKSNANDYgUmV0dXJuIHQgaWYgT0JKRUNUIGlz IGEgYmlnbnVtLgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnYmlnbnVtcCAjWzI1NyAiXDIxMVwy NTBcMjA1CQBcMzAwASE/XDIwNyIgW2ZpeG51bXBdIDMgKCMkIC4gMTg2MTgpXSkjQDM0NCBSZXR1 cm4gVkFMVUUgd2l0aCBpdHMgYml0cyBzaGlmdGVkIGxlZnQgYnkgQ09VTlQuCklmIENPVU5UIGlz IG5lZ2F0aXZlLCBzaGlmdGluZyBpcyBhY3R1YWxseSB0byB0aGUgcmlnaHQuCkluIHRoaXMgY2Fz ZSwgaWYgVkFMVUUgaXMgYSBuZWdhdGl2ZSBmaXhudW0gdHJlYXQgaXQgYXMgdW5zaWduZWQsCmku ZS4sIHN1YnRyYWN0IDIgKiBgbW9zdC1uZWdhdGl2ZS1maXhudW0nIGZyb20gVkFMVUUgYmVmb3Jl IHNoaWZ0aW5nIGl0LgoKVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0 eS4gIEluIG5ldyBjb2RlLCB1c2UgYGFzaCcKaW5zdGVhZC4KCihmbiBWQUxVRSBDT1VOVCkfCihk ZWZhbGlhcyAnbHNoICNbNTE0ICIBXDMwMldcMjAzJgBcMjExXDMwMldcMjAzJgABCFdcMjAzGQBc MzAzXDMwNAMDRFwiXDIxMFwzMDVcMzA2A1wzMDdcIglcIlwyNjICXDIxMVRcMjYyAVwzMDYCAlwi XDIwNyIgW21vc3QtbmVnYXRpdmUtZml4bnVtIG1vc3QtcG9zaXRpdmUtZml4bnVtIDAgc2lnbmFs IGFyZ3Mtb3V0LW9mLXJhbmdlIGxvZ2FuZCBhc2ggLTFdIDYgKCMkIC4gMTg3NDkpXSkKKGJ5dGUt Y29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBsc2ggY29tcGls ZXItbWFjcm8gbHNoLS1hbm9uLWNtYWNyb10gNCkjQDI1IAoKKGZuIEZPUk0gVkFMVUUgQ09VTlQp HwooZGVmYWxpYXMgJ2xzaC0tYW5vbi1jbWFjcm8gI1s3NzEgIlwzMDBcMzAxBFwzMDJcMzAzBgcl XDIwNyIgW21hY3JvZXhwLXdhcm4tYW5kLXJldHVybiAiYXZvaWQgYGxzaCc7IHVzZSBgYXNoJyBp bnN0ZWFkIiAoc3VzcGljaW91cyBsc2gpIHRdIDkgKCMkIC4gMTk0MTQpXSkjQDE1IAoKKGZuIEZP Uk0gWCkfCihkZWZhbGlhcyAnaW50ZXJuYWwtLWNvbXBpbGVyLW1hY3JvLWNYWHIgI1s1MTQgIgFA XDMwMAEhXDIxMUdcMzAxWlwzMDJcMzAzA1wiXDIwNCoAXDMwNAMhXDIwMyYAAks5XDIwMyYAXDMw NQNLBgZBQgVcIlwyMDdcMzA2XDMwNyFcMjA3XDIxMVwzMTBcMjI0VlwyMDNJAAEBSFwzMTE9XDIw Mz0AXDMxMlwyMDI+AFwzMTMERFwyNjIEXDIxMVNcMjYyAVwyMDIqAANcMjA3IiBbc3ltYm9sLW5h bWUgMiBzdHJpbmctbWF0Y2ggImNbYWRdK3JcXCciIGZib3VuZHAgaW50ZXJuYWwtLWNvbXBpbGVy LW1hY3JvLWNYWHIgZXJyb3IgIkNvbXBpbGVyIG1hY3JvIGZvciBjWFhyIGFwcGxpZWQgdG8gbm9u LWNYWHIgZm9ybSIgMCA5NyBjYXIgY2RyXSA4ICgjJCAuIDE5NjAwKV0pI0A0MSBSZXR1cm4gdGhl IGNhciBvZiB0aGUgY2FyIG9mIFguCgooZm4gWCkfCihkZWZhbGlhcyAnY2FhciAjWzI1NyAiXDIx MUBAXDIwNyIgW10gMiAoIyQgLiAxOTk5NyldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAz I1wzMDBcMjA3IiBbZnVuY3Rpb24tcHV0IGNhYXIgY29tcGlsZXItbWFjcm8gaW50ZXJuYWwtLWNv bXBpbGVyLW1hY3JvLWNYWHJdIDQpI0A0MSBSZXR1cm4gdGhlIGNhciBvZiB0aGUgY2RyIG9mIFgu CgooZm4gWCkfCihkZWZhbGlhcyAnY2FkciAjWzI1NyAiXDIxMUFAXDIwNyIgW10gMiAoIyQgLiAy MDIwNCldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBbZnVuY3Rpb24t cHV0IGNhZHIgY29tcGlsZXItbWFjcm8gaW50ZXJuYWwtLWNvbXBpbGVyLW1hY3JvLWNYWHJdIDQp I0A0MSBSZXR1cm4gdGhlIGNkciBvZiB0aGUgY2FyIG9mIFguCgooZm4gWCkfCihkZWZhbGlhcyAn Y2RhciAjWzI1NyAiXDIxMUBBXDIwNyIgW10gMiAoIyQgLiAyMDQxMSldKQooYnl0ZS1jb2RlICJc MzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBbZnVuY3Rpb24tcHV0IGNkYXIgY29tcGlsZXItbWFj cm8gaW50ZXJuYWwtLWNvbXBpbGVyLW1hY3JvLWNYWHJdIDQpI0A0MSBSZXR1cm4gdGhlIGNkciBv ZiB0aGUgY2RyIG9mIFguCgooZm4gWCkfCihkZWZhbGlhcyAnY2RkciAjWzI1NyAiXDIxMUFBXDIw NyIgW10gMiAoIyQgLiAyMDYxOCldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBc MjA3IiBbZnVuY3Rpb24tcHV0IGNkZHIgY29tcGlsZXItbWFjcm8gaW50ZXJuYWwtLWNvbXBpbGVy LW1hY3JvLWNYWHJdIDQpI0A1OCBSZXR1cm4gdGhlIGBjYXInIG9mIHRoZSBgY2FyJyBvZiB0aGUg YGNhcicgb2YgWC4KCihmbiBYKR8KKGRlZmFsaWFzICdjYWFhciAjWzI1NyAiXDIxMUBAQFwyMDci IFtdIDIgKCMkIC4gMjA4MjUpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIw NyIgW2Z1bmN0aW9uLXB1dCBjYWFhciBjb21waWxlci1tYWNybyBpbnRlcm5hbC0tY29tcGlsZXIt bWFjcm8tY1hYcl0gNCkjQDU4IFJldHVybiB0aGUgYGNhcicgb2YgdGhlIGBjYXInIG9mIHRoZSBg Y2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhYWRyICNbMjU3ICJcMjExQUBAXDIwNyIg W10gMiAoIyQgLiAyMTA1MildKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3 IiBbZnVuY3Rpb24tcHV0IGNhYWRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1t YWNyby1jWFhyXSA0KSNANTggUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBj YXInIG9mIFguCgooZm4gWCkfCihkZWZhbGlhcyAnY2FkYXIgI1syNTcgIlwyMTFAQUBcMjA3IiBb XSAyICgjJCAuIDIxMjc5KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDci IFtmdW5jdGlvbi1wdXQgY2FkYXIgY29tcGlsZXItbWFjcm8gaW50ZXJuYWwtLWNvbXBpbGVyLW1h Y3JvLWNYWHJdIDQpI0A1OCBSZXR1cm4gdGhlIGBjYXInIG9mIHRoZSBgY2RyJyBvZiB0aGUgYGNk cicgb2YgWC4KCihmbiBYKR8KKGRlZmFsaWFzICdjYWRkciAjWzI1NyAiXDIxMUFBQFwyMDciIFtd IDIgKCMkIC4gMjE1MDYpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIg W2Z1bmN0aW9uLXB1dCBjYWRkciBjb21waWxlci1tYWNybyBpbnRlcm5hbC0tY29tcGlsZXItbWFj cm8tY1hYcl0gNCkjQDU4IFJldHVybiB0aGUgYGNkcicgb2YgdGhlIGBjYXInIG9mIHRoZSBgY2Fy JyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkYWFyICNbMjU3ICJcMjExQEBBXDIwNyIgW10g MiAoIyQgLiAyMTczMyldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBb ZnVuY3Rpb24tcHV0IGNkYWFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNy by1jWFhyXSA0KSNANTggUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjZHIn IG9mIFguCgooZm4gWCkfCihkZWZhbGlhcyAnY2RhZHIgI1syNTcgIlwyMTFBQEFcMjA3IiBbXSAy ICgjJCAuIDIxOTYwKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtm dW5jdGlvbi1wdXQgY2RhZHIgY29tcGlsZXItbWFjcm8gaW50ZXJuYWwtLWNvbXBpbGVyLW1hY3Jv LWNYWHJdIDQpI0A1OCBSZXR1cm4gdGhlIGBjZHInIG9mIHRoZSBgY2RyJyBvZiB0aGUgYGNhcicg b2YgWC4KCihmbiBYKR8KKGRlZmFsaWFzICdjZGRhciAjWzI1NyAiXDIxMUBBQVwyMDciIFtdIDIg KCMkIC4gMjIxODcpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1 bmN0aW9uLXB1dCBjZGRhciBjb21waWxlci1tYWNybyBpbnRlcm5hbC0tY29tcGlsZXItbWFjcm8t Y1hYcl0gNCkjQDU4IFJldHVybiB0aGUgYGNkcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2RyJyBv ZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkZGRyICNbMjU3ICJcMjExQUFBXDIwNyIgW10gMiAo IyQgLiAyMjQxNCldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBbZnVu Y3Rpb24tcHV0IGNkZGRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1j WFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjYXInIG9m IHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhYWFhciAjWzI1NyAiXDIxMUBA QEBcMjA3IiBbXSAyICgjJCAuIDIyNjQxKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMj XDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2FhYWFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1j b21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNhcicg b2YgdGhlIGBjYXInIG9mIHRoZSBgY2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhYWFk ciAjWzI1NyAiXDIxMUFAQEBcMjA3IiBbXSAyICgjJCAuIDIyODg0KV0pCihieXRlLWNvZGUgIlwz MDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2FhYWRyIGNvbXBpbGVyLW1h Y3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2Fy JyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgpHwoo ZGVmYWxpYXMgJ2NhYWRhciAjWzI1NyAiXDIxMUBBQEBcMjA3IiBbXSAyICgjJCAuIDIzMTI3KV0p CihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2Fh ZGFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEg UmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2RyJyBv ZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhYWRkciAjWzI1NyAiXDIxMUFBQEBcMjA3IiBbXSAy ICgjJCAuIDIzMzcwKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtm dW5jdGlvbi1wdXQgY2FhZGRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNy by1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBjYXIn IG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhZGFhciAjWzI1NyAiXDIx MUBAQUBcMjA3IiBbXSAyICgjJCAuIDIzNjEzKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwz MDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2FkYWFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFs LS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNk cicgb2YgdGhlIGBjYXInIG9mIHRoZSBgY2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2Nh ZGFkciAjWzI1NyAiXDIxMUFAQUBcMjA3IiBbXSAyICgjJCAuIDIzODU2KV0pCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2FkYWRyIGNvbXBpbGVy LW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBg Y2FyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgp HwooZGVmYWxpYXMgJ2NhZGRhciAjWzI1NyAiXDIxMUBBQUBcMjA3IiBbXSAyICgjJCAuIDI0MDk5 KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQg Y2FkZGFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNA NzEgUmV0dXJuIHRoZSBgY2FyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2Ry JyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NhZGRkciAjWzI1NyAiXDIxMUFBQUBcMjA3IiBb XSAyICgjJCAuIDI0MzQyKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDci IFtmdW5jdGlvbi1wdXQgY2FkZGRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1t YWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBj YXInIG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkYWFhciAjWzI1NyAi XDIxMUBAQEFcMjA3IiBbXSAyICgjJCAuIDI0NTg1KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMw MlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2RhYWFyIGNvbXBpbGVyLW1hY3JvIGludGVy bmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUg YGNhcicgb2YgdGhlIGBjYXInIG9mIHRoZSBgY2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMg J2NkYWFkciAjWzI1NyAiXDIxMUFAQEFcMjA3IiBbXSAyICgjJCAuIDI0ODI4KV0pCihieXRlLWNv ZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2RhYWRyIGNvbXBp bGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRo ZSBgY2RyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZu IFgpHwooZGVmYWxpYXMgJ2NkYWRhciAjWzI1NyAiXDIxMUBBQEFcMjA3IiBbXSAyICgjJCAuIDI1 MDcxKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1w dXQgY2RhZGFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0 KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUgYGNhcicgb2YgdGhlIGBjZHInIG9mIHRoZSBg Y2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkYWRkciAjWzI1NyAiXDIxMUFBQEFcMjA3 IiBbXSAyICgjJCAuIDI1MzE0KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwy MDciIFtmdW5jdGlvbi1wdXQgY2RhZGRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxl ci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUgYGNkcicgb2YgdGhl IGBjYXInIG9mIHRoZSBgY2FyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkZGFhciAjWzI1 NyAiXDIxMUBAQUFcMjA3IiBbXSAyICgjJCAuIDI1NTU3KV0pCihieXRlLWNvZGUgIlwzMDBcMzAx XDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2RkYWFyIGNvbXBpbGVyLW1hY3JvIGlu dGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0 aGUgYGNkcicgb2YgdGhlIGBjYXInIG9mIHRoZSBgY2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxp YXMgJ2NkZGFkciAjWzI1NyAiXDIxMUFAQUFcMjA3IiBbXSAyICgjJCAuIDI1ODAwKV0pCihieXRl LWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgY2RkYWRyIGNv bXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhyXSA0KSNANzEgUmV0dXJu IHRoZSBgY2RyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBjZHInIG9mIHRoZSBgY2FyJyBvZiBYLgoK KGZuIFgpHwooZGVmYWxpYXMgJ2NkZGRhciAjWzI1NyAiXDIxMUBBQUFcMjA3IiBbXSAyICgjJCAu IDI2MDQzKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlv bi1wdXQgY2RkZGFyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21waWxlci1tYWNyby1jWFhy XSA0KSNANzEgUmV0dXJuIHRoZSBgY2RyJyBvZiB0aGUgYGNkcicgb2YgdGhlIGBjZHInIG9mIHRo ZSBgY2RyJyBvZiBYLgoKKGZuIFgpHwooZGVmYWxpYXMgJ2NkZGRkciAjWzI1NyAiXDIxMUFBQUFc MjA3IiBbXSAyICgjJCAuIDI2Mjg2KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMw MFwyMDciIFtmdW5jdGlvbi1wdXQgY2RkZGRyIGNvbXBpbGVyLW1hY3JvIGludGVybmFsLS1jb21w aWxlci1tYWNyby1jWFhyXSA0KSNAMjE5IFJldHVybiB0aGUgbGFzdCBsaW5rIG9mIExJU1QuICBJ dHMgY2FyIGlzIHRoZSBsYXN0IGVsZW1lbnQuCklmIExJU1QgaXMgbmlsLCByZXR1cm4gbmlsLgpJ ZiBOIGlzIG5vbi1uaWwsIHJldHVybiB0aGUgTnRoLXRvLWxhc3QgbGluayBvZiBMSVNULgpJZiBO IGlzIGJpZ2dlciB0aGFuIHRoZSBsZW5ndGggb2YgTElTVCwgcmV0dXJuIExJU1QuCgooZm4gTElT VCAmb3B0aW9uYWwgTikfCihkZWZhbGlhcyAnbGFzdCAjWzUxMyAiXDIxMVwyMDMbAFwyMTFcMzAw WVwyMDUlAFwzMDECIQEBV1wyMDMZAFwyMTECWgNcMjMzXDIwNwJcMjA3AVwyMDUlAFwzMDECIVMC XDIzM1wyMDciIFswIHNhZmUtbGVuZ3RoXSA1ICgjJCAuIDI2NTMwKV0pCihieXRlLWNvZGUgIlwz MDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgbGFzdCBzaWRlLWVmZmVjdC1m cmVlIHRdIDQpI0AxOTEgUmV0dXJuIGEgY29weSBvZiBMSVNUIHdpdGggdGhlIGxhc3QgTiBlbGVt ZW50cyByZW1vdmVkLgpJZiBOIGlzIG9taXR0ZWQgb3IgbmlsLCByZXR1cm4gYSBjb3B5IG9mIExJ U1Qgd2l0aG91dCBpdHMgbGFzdCBlbGVtZW50LgpJZiBOIGlzIHplcm8gb3IgbmVnYXRpdmUsIHJl dHVybiBMSVNULgoKKGZuIExJU1QgJm9wdGlvbmFsIE4pHwooZGVmYWxpYXMgJ2J1dGxhc3QgI1s1 MTMgIlwyMTFcMjA0BwBcMzAwXDI2MgFcMjExXDMwMVhcMjAzDwABXDIwN1wzMDICRwJaA1wiXDIw NyIgWzEgMCB0YWtlXSA1ICgjJCAuIDI2OTc2KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwz MDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgYnV0bGFzdCBzaWRlLWVmZmVjdC1mcmVlIHRdIDQp I0AxMTYgTW9kaWZ5IExJU1QgdG8gcmVtb3ZlIHRoZSBsYXN0IE4gZWxlbWVudHMuCklmIE4gaXMg b21pdHRlZCBvciBuaWwsIHJlbW92ZSB0aGUgbGFzdCBlbGVtZW50LgoKKGZuIExJU1QgJm9wdGlv bmFsIE4pHwooZGVmYWxpYXMgJ25idXRsYXN0ICNbNTEzICIBRwFcMjA0CQBcMzAwXDI2MgIBAVdc MjA1HwABXDMwMVZcMjAzHgBcMjExUwJaA1wyMzNcMzAyXDI0MVwyMTACXDIwNyIgWzEgMCBuaWxd IDUgKCMkIC4gMjczNjYpXSkjQDI1NiBEZXN0cnVjdGl2ZWx5IHJlbW92ZSBgZXF1YWwnIGR1cGxp Y2F0ZXMgZnJvbSBMSVNULgpTdG9yZSB0aGUgcmVzdWx0IGluIExJU1QgYW5kIHJldHVybiBpdC4g IExJU1QgbXVzdCBiZSBhIHByb3BlciBsaXN0LgpPZiBzZXZlcmFsIGBlcXVhbCcgb2NjdXJyZW5j ZXMgb2YgYW4gZWxlbWVudCBpbiBMSVNULCB0aGUgZmlyc3QKb25lIGlzIGtlcHQuICBTZWUgYHNl cS11bmlxJyBmb3Igbm9uLWRlc3RydWN0aXZlIG9wZXJhdGlvbi4KCihmbiBMSVNUKR8KKGRlZmFs aWFzICdkZWxldGUtZHVwcyAjWzI1NyAiXDIxMUdcMjExXDMwMFZcMjAzQgBcMzAxXDMwMlwzMDNc MzA0BCQCXDMwNVwzMDYFQFwzMDcFI1wyMTABQVwyMTFcMjYyAlwyMDM/AFwyMTFAXDMxMAEFXCJc MjAzMQACAkFcMjQxXDI2NgJcMjAyFwBcMzA2AVwzMDcGBiNcMjEwAVwyNjIDXDIxMFwyMDIXAFwy NjYEXDIwNwFcMjExXDIwM1cAXDIxMVwzMTECQANBXCJcMjQxXDIxMFwyMTFBXDI2MgFcMjAyQwBc MjY2AlwyMDciIFsxMDAgbWFrZS1oYXNoLXRhYmxlIDp0ZXN0IGVxdWFsIDpzaXplIG5pbCBwdXRo YXNoIHQgZ2V0aGFzaCBkZWxldGVdIDEwICgjJCAuIDI3NjExKV0pI0AxNjkgRGVzdHJ1Y3RpdmVs eSByZW1vdmUgYGVxdWFsJyBjb25zZWN1dGl2ZSBkdXBsaWNhdGVzIGZyb20gTElTVC4KRmlyc3Qg YW5kIGxhc3QgZWxlbWVudHMgYXJlIGNvbnNpZGVyZWQgY29uc2VjdXRpdmUgaWYgQ0lSQ1VMQVIg aXMKbm9uLW5pbC4KCihmbiBMSVNUICZvcHRpb25hbCBDSVJDVUxBUikfCihkZWZhbGlhcyAnZGVs ZXRlLWNvbnNlY3V0aXZlLWR1cHMgI1s1MTMgIgFcMzAwAUFcMjAzIwABQAJBQFwyMzJcMjAzGQAB XDIxMUFBXDI0MVwyMTBcMjAyAgABXDI2MgEBQVwyNjICXDIwMgIAAlwyMDM3AFwyMTFcMjAzNwAB QARAXDIzMlwyMDM3AFwyMTFcMzAwXDI0MVwyMTBcMjY2AgFcMjA3IiBbbmlsXSA2ICgjJCAuIDI4 MjAzKV0pI0AxMzA3IFJldHVybiBhIHNlcXVlbmNlIG9mIG51bWJlcnMgZnJvbSBGUk9NIHRvIFRP IChib3RoIGluY2x1c2l2ZSkgYXMgYSBsaXN0LgpJTkMgaXMgdGhlIGluY3JlbWVudCB1c2VkIGJl dHdlZW4gbnVtYmVycyBpbiB0aGUgc2VxdWVuY2UgYW5kIGRlZmF1bHRzIHRvIDEuClNvLCB0aGUg TnRoIGVsZW1lbnQgb2YgdGhlIGxpc3QgaXMgKCsgRlJPTSAoKiBOIElOQykpIHdoZXJlIE4gY291 bnRzIGZyb20KemVyby4gIFRPIGlzIGluY2x1ZGVkIG9ubHkgaWYgdGhlcmUgaXMgYW4gTiBmb3Ig d2hpY2ggVE8gPSBGUk9NICsgTiAqIElOQy4KSWYgVE8gaXMgbmlsIG9yIG51bWVyaWNhbGx5IGVx dWFsIHRvIEZST00sIHJldHVybiAoRlJPTSkuCklmIElOQyBpcyBwb3NpdGl2ZSBhbmQgVE8gaXMg bGVzcyB0aGFuIEZST00sIG9yIElOQyBpcyBuZWdhdGl2ZQphbmQgVE8gaXMgbGFyZ2VyIHRoYW4g RlJPTSwgcmV0dXJuIG5pbC4KSWYgSU5DIGlzIHplcm8gYW5kIFRPIGlzIG5laXRoZXIgbmlsIG5v ciBudW1lcmljYWxseSBlcXVhbCB0bwpGUk9NLCBzaWduYWwgYW4gZXJyb3IuCgpUaGlzIGZ1bmN0 aW9uIGlzIHByaW1hcmlseSBkZXNpZ25lZCBmb3IgaW50ZWdlciBhcmd1bWVudHMuCk5ldmVydGhl bGVzcywgRlJPTSwgVE8gYW5kIElOQyBjYW4gYmUgaW50ZWdlciBvciBmbG9hdC4gIEhvd2V2ZXIs CmZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgaXMgaW5leGFjdC4gIEZvciBpbnN0YW5jZSwgZGVw ZW5kaW5nIG9uCnRoZSBtYWNoaW5lLCBpdCBtYXkgcXVpdGUgd2VsbCBoYXBwZW4gdGhhdAoobnVt YmVyLXNlcXVlbmNlIDAuNCAwLjYgMC4yKSByZXR1cm5zIHRoZSBvbmUgZWxlbWVudCBsaXN0ICgw LjQpLAp3aGVyZWFzIChudW1iZXItc2VxdWVuY2UgMC40IDAuOCAwLjIpIHJldHVybnMgYSBsaXN0 IHdpdGggdGhyZWUKZWxlbWVudHMuICBUaHVzLCBpZiBzb21lIG9mIHRoZSBhcmd1bWVudHMgYXJl IGZsb2F0cyBhbmQgb25lIHdhbnRzCnRvIG1ha2Ugc3VyZSB0aGF0IFRPIGlzIGluY2x1ZGVkLCBv bmUgbWF5IGhhdmUgdG8gZXhwbGljaXRseSB3cml0ZQpUTyBhcyAoKyBGUk9NICgqIE4gSU5DKSkg b3IgdXNlIGEgdmFyaWFibGUgd2hvc2UgdmFsdWUgd2FzCmNvbXB1dGVkIHdpdGggdGhpcyBleGFj dCBleHByZXNzaW9uLiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiwKb2YgY291cnNlLCBhbHNvIHJl cGxhY2UgVE8gd2l0aCBhIHNsaWdodGx5IGxhcmdlciB2YWx1ZQoob3IgYSBzbGlnaHRseSBtb3Jl IG5lZ2F0aXZlIHZhbHVlIGlmIElOQyBpcyBuZWdhdGl2ZSkuCgooZm4gRlJPTSAmb3B0aW9uYWwg VE8gSU5DKR8KKGRlZmFsaWFzICdudW1iZXItc2VxdWVuY2UgI1s3NjkgIgFcMjAzXG4AAgJVXDIw Mw0AAkNcMjA3XDIxMVwyMDQUAFwzMDBcMjYyAVwyMTFcMzAxVVwyMDMeAFwzMDJcMzAzIVwyMTBc MzA0XDMwMQQDXDMwMVZcMjAzQABcMjExBVhcMjAzWQBcMjExA0JcMjYyAwFUXDI2MgIFAgVfXFxc MjYyAVwyMDInAFwyMTEFWVwyMDNZAFwyMTEDQlwyNjIDAVRcMjYyAgUCBV9cXFwyNjIBXDIwMkAA AlwyMzdcMjA3IiBbMSAwIGVycm9yICJUaGUgaW5jcmVtZW50IGNhbiBub3QgYmUgemVybyIgbmls XSA5ICgjJCAuIDI4NTcwKV0pI0AyNTIgTWFrZSBhIGNvcHkgb2YgVFJFRS4KSWYgVFJFRSBpcyBh IGNvbnMgY2VsbCwgdGhpcyByZWN1cnNpdmVseSBjb3BpZXMgYm90aCBpdHMgY2FyIGFuZCBpdHMg Y2RyLgpDb250cmFzdCB0byBgY29weS1zZXF1ZW5jZScsIHdoaWNoIGNvcGllcyBvbmx5IGFsb25n IHRoZSBjZHJzLiAgV2l0aCBzZWNvbmQKYXJndW1lbnQgVkVDUCwgdGhpcyBjb3BpZXMgdmVjdG9y cyBhcyB3ZWxsIGFzIGNvbnNlcy4KCihmbiBUUkVFICZvcHRpb25hbCBWRUNQKR8KKGRlZmFsaWFz ICdjb3B5LXRyZWUgI1s1MTMgIgE6XDIwM0cAXDMwMAI6XDIwMzEAAkADQDpcMjA0HgACXDIwMyUA XDMwMQRAIVwyMDMlAFwzMDIEQARcIlwyNjIBXDIxMQJCXDI2NlwyMDICQVwyNjIDXDIwMgYAXDIx MVwyMzcCXDIwM0QAXDMwMQQhXDIwM0QAXDMwMgQEXCJcMjAyRQADXDI0NFwyMDdcMjExXDIwM3EA XDMwMQIhXDIwM3EAXDMwMwIhXDIxMVwyNjIDR1wyMTFTXDIxMVwyNjICXDMwNFlcMjAzbwACAVwz MDIFBEgFXCJJXDIxMFwyMDJYAAJcMjA3AVwyMDciIFtuaWwgdmVjdG9ycCBjb3B5LXRyZWUgY29w eS1zZXF1ZW5jZSAwXSA4ICgjJCAuIDMwMTc3KV0pI0A1MTEgRmluZCBvYmplY3QgS0VZIGluIGEg cHNldWRvLWFsaXN0IEFMSVNULgpBTElTVCBpcyBhIGxpc3Qgb2YgY29uc2VzIG9yIG9iamVjdHMu ICBFYWNoIGVsZW1lbnQKIChvciB0aGUgZWxlbWVudCdzIGNhciwgaWYgaXQgaXMgYSBjb25zKSBp cyBjb21wYXJlZCB3aXRoIEtFWSBieQogY2FsbGluZyBURVNULCB3aXRoIHR3byBhcmd1bWVudHM6 IChpKSB0aGUgZWxlbWVudCBvciBpdHMgY2FyLAogYW5kIChpaSkgS0VZLgpJZiB0aGF0IGlzIG5v bi1uaWwsIHRoZSBlbGVtZW50IG1hdGNoZXM7IHRoZW4gYGFzc29jLWRlZmF1bHQnCiByZXR1cm5z IHRoZSBlbGVtZW50J3MgY2RyLCBpZiBpdCBpcyBhIGNvbnMsIG9yIERFRkFVTFQgaWYgdGhlCiBl bGVtZW50IGlzIG5vdCBhIGNvbnMuCgpJZiBubyBlbGVtZW50IG1hdGNoZXMsIHRoZSB2YWx1ZSBp cyBuaWwuCklmIFRFU1QgaXMgb21pdHRlZCBvciBuaWwsIGBlcXVhbCcgaXMgdXNlZC4KCihmbiBL RVkgQUxJU1QgJm9wdGlvbmFsIFRFU1QgREVGQVVMVCkfCihkZWZhbGlhcyAnYXNzb2MtZGVmYXVs dCAjWzEwMjYgIlwzMDADXDMwMAFcMjAzOwACXDIwNDsAAUAFXDIwNhIAXDMwMQE6XDIwMxwAAUBc MjAyHQABBglcIlwyMDMzAFwzMDJcMjYyBFwyMTE6XDIwMzAAXDIxMUFcMjAyMQAEXDI2MgJcMjEw AUFcMjYyAlwyMDIDAFwyMDciIFtuaWwgZXF1YWwgdF0gMTEgKCMkIC4gMzA3NTkpXSkjQDI1OCBM aWtlIGBtZW1iZXInLCBidXQgaWdub3JlIGRpZmZlcmVuY2VzIGluIGNhc2UgYW5kIHRleHQgcmVw cmVzZW50YXRpb24uCkVMVCBtdXN0IGJlIGEgc3RyaW5nLiAgVXBwZXItY2FzZSBhbmQgbG93ZXIt Y2FzZSBsZXR0ZXJzIGFyZSB0cmVhdGVkIGFzIGVxdWFsLgpVbmlieXRlIHN0cmluZ3MgYXJlIGNv bnZlcnRlZCB0byBtdWx0aWJ5dGUgZm9yIGNvbXBhcmlzb24uCk5vbi1zdHJpbmdzIGluIExJU1Qg YXJlIGlnbm9yZWQuCgooZm4gRUxUIExJU1QpHwooZGVmYWxpYXMgJ21lbWJlci1pZ25vcmUtY2Fz ZSAjWzUxNCAiXDIxMVwyMDMlAFwyMTFAO1wyMDMeAAEBQFwzMDACXDMwMVwzMDIEXDMwMVwzMDJc MzAzJgdcMzAzPVwyNjZcMjAyXDIwNCUAXDIxMUFcMjYyAVwyMDIAAFwyMDciIFtjb21wYXJlLXN0 cmluZ3MgMCBuaWwgdF0gMTIgKCMkIC4gMzE0NjMpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAy XDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBtZW1iZXItaWdub3JlLWNhc2Ugc2lkZS1lZmZl Y3QtZnJlZSB0XSA0KSNAMjA1IERlbGV0ZSBmcm9tIEFMSVNUIGFsbCBlbGVtZW50cyB3aG9zZSBj YXIgaXMgS0VZLgpDb21wYXJlIGtleXMgd2l0aCBURVNULiAgRGVmYXVsdHMgdG8gYGVxdWFsJy4K UmV0dXJuIHRoZSBtb2RpZmllZCBhbGlzdC4KRWxlbWVudHMgb2YgQUxJU1QgdGhhdCBhcmUgbm90 IGNvbnNlcyBhcmUgaWdub3JlZC4KCihmbiBLRVkgQUxJU1QgJm9wdGlvbmFsIFRFU1QpHwooZGVm YWxpYXMgJ2Fzc29jLWRlbGV0ZS1hbGwgI1s3NzAgIlwyMTFcMjA0BwBcMzAwXDI2MgEBQDpcMjAz HQBcMjExAkBABFwiXDIwMx0AAUFcMjYyAlwyMDIHAAFcMzAxAUFcMjExXDI2MgJcMjAzRQBcMjEx QDpcMjAzPwACAUBABgZcIlwyMDM/AAEBQVwyNDFcMjEwXDIwMh8AXDIxMVwyNjICXDIwMh8AXDI2 NgIBXDIwNyIgW2VxdWFsIG5pbF0gOCAoIyQgLiAzMTk5NildKSNAMTUyIERlbGV0ZSBmcm9tIEFM SVNUIGFsbCBlbGVtZW50cyB3aG9zZSBjYXIgaXMgYGVxJyB0byBLRVkuClJldHVybiB0aGUgbW9k aWZpZWQgYWxpc3QuCkVsZW1lbnRzIG9mIEFMSVNUIHRoYXQgYXJlIG5vdCBjb25zZXMgYXJlIGln bm9yZWQuCgooZm4gS0VZIEFMSVNUKR8KKGRlZmFsaWFzICdhc3NxLWRlbGV0ZS1hbGwgI1s1MTQg IlwzMDACAlwzMDEjXDIwNyIgW2Fzc29jLWRlbGV0ZS1hbGwgZXFdIDYgKCMkIC4gMzI0MTkpXSkj QDE1NiBEZWxldGUgZnJvbSBBTElTVCBhbGwgZWxlbWVudHMgd2hvc2UgY2RyIGlzIGBlcScgdG8g VkFMVUUuClJldHVybiB0aGUgbW9kaWZpZWQgYWxpc3QuCkVsZW1lbnRzIG9mIEFMSVNUIHRoYXQg YXJlIG5vdCBjb25zZXMgYXJlIGlnbm9yZWQuCgooZm4gVkFMVUUgQUxJU1QpHwooZGVmYWxpYXMg J3Jhc3NxLWRlbGV0ZS1hbGwgI1s1MTQgIlwyMTFAOlwyMDMVAFwyMTFAQQI9XDIwMxUAXDIxMUFc MjYyAVwyMDIAAFwyMTFcMzAwAUFcMjExXDI2MgJcMjAzOwBcMjExQDpcMjAzNQBcMjExQEEEPVwy MDM1AAEBQVwyNDFcMjEwXDIwMhcAXDIxMVwyNjICXDIwMhcAXDI2NgJcMjA3IiBbbmlsXSA2ICgj JCAuIDMyNjY2KV0pI0A5NjUgRmluZCB0aGUgZmlyc3QgZWxlbWVudCBvZiBBTElTVCB3aG9zZSBg Y2FyJyBlcXVhbHMgS0VZIGFuZCByZXR1cm4gaXRzIGBjZHInLgpJZiBLRVkgaXMgbm90IGZvdW5k IGluIEFMSVNULCByZXR1cm4gREVGQVVMVC4KRXF1YWxpdHkgd2l0aCBLRVkgaXMgdGVzdGVkIGJ5 IFRFU1RGTiwgZGVmYXVsdGluZyB0byBgZXEnLgoKWW91IGNhbiB1c2UgYGFsaXN0LWdldCcgaW4g InBsYWNlIGV4cHJlc3Npb25zIjsgaS5lLiwgYXMgYQpnZW5lcmFsaXplZCB2YXJpYWJsZS4gIERv aW5nIHRoaXMgd2lsbCBtb2RpZnkgYW4gZXhpc3RpbmcKYXNzb2NpYXRpb24gKG1vcmUgcHJlY2lz ZWx5LCB0aGUgZmlyc3Qgb25lIGlmIG11bHRpcGxlIGV4aXN0KSwgb3IKYWRkIGEgbmV3IGVsZW1l bnQgdG8gdGhlIGJlZ2lubmluZyBvZiBBTElTVCwgZGVzdHJ1Y3RpdmVseQptb2RpZnlpbmcgdGhl IGxpc3Qgc3RvcmVkIGluIEFMSVNULgoKRXhhbXBsZToKCiAgIChzZXRxIGZvbyBcPScoKGEgLiAw KSkpCiAgIChzZXRmIChhbGlzdC1nZXQgXD0nYSBmb28pIDEKICAgICAgICAgKGFsaXN0LWdldCBc PSdiIGZvbykgMikKCiAgIGZvbyA9PiAoKGIgLiAyKSAoYSAuIDEpKQoKCldoZW4gdXNpbmcgaXQg dG8gc2V0IGEgdmFsdWUsIG9wdGlvbmFsIGFyZ3VtZW50IFJFTU9WRSBub24tbmlsCm1lYW5zIHRv IHJlbW92ZSBLRVkgZnJvbSBBTElTVCBpZiB0aGUgbmV3IHZhbHVlIGlzIGBlcWwnIHRvCkRFRkFV TFQgKG1vcmUgcHJlY2lzZWx5IHRoZSBmaXJzdCBmb3VuZCBhc3NvY2lhdGlvbiB3aWxsIGJlCmRl bGV0ZWQgZnJvbSB0aGUgYWxpc3QpLgoKRXhhbXBsZToKCiAgKHNldHEgZm9vIFw9JygoYSAuIDEp IChiIC4gMikpKQogIChzZXRmIChhbGlzdC1nZXQgXD0nYiBmb28gbmlsIFw9J3JlbW92ZSkgbmls KQoKICBmb28gPT4gKChhIC4gMSkpCgooZm4gS0VZIEFMSVNUICZvcHRpb25hbCBERUZBVUxUIFJF TU9WRSBURVNURk4pHwooZGVmYWxpYXMgJ2FsaXN0LWdldCAjWzEyODIgIlwyMTFcMjA0XG4ABARc MjM2XDIwMg8AXDMwMAUFAyNcMjExXDIwMxYAXDIxMUFcMjA3A1wyMDciIFthc3NvY10gOSAoIyQg LiAzMzAyMSldKSNAMjQyIFJldHVybiBhIGNvcHkgb2YgU0VRIHdpdGggYWxsIG9jY3VycmVuY2Vz IG9mIEVMVCByZW1vdmVkLgpTRVEgbXVzdCBiZSBhIGxpc3QsIHZlY3Rvciwgb3Igc3RyaW5nLiAg VGhlIGNvbXBhcmlzb24gaXMgZG9uZSB3aXRoIGBlcXVhbCcuCkNvbnRyYXJ5IHRvIGBkZWxldGUn LCB0aGlzIGRvZXMgbm90IHVzZSBzaWRlLWVmZmVjdHMsIGFuZCB0aGUgYXJndW1lbnQKU0VRIGlz IG5vdCBtb2RpZmllZC4KCihmbiBFTFQgU0VRKR8KKGRlZmFsaWFzICdyZW1vdmUgI1s1MTQgIlwy MTE8XDIwNFxuAFwzMDACAlwiXDIwN1wzMDACXDMwMQMhXCJcMjA3IiBbZGVsZXRlIGNvcHktc2Vx dWVuY2VdIDYgKCMkIC4gMzQxMDIpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAw XDIwNyIgW2Z1bmN0aW9uLXB1dCByZW1vdmUgc2lkZS1lZmZlY3QtZnJlZSB0XSA0KSNAMTkxIFJl dHVybiBMSVNUIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIEVMVCByZW1vdmVkLgpUaGUgY29tcGFy aXNvbiBpcyBkb25lIHdpdGggYGVxJy4gIENvbnRyYXJ5IHRvIGBkZWxxJywgdGhpcyBkb2VzIG5v dCB1c2UKc2lkZS1lZmZlY3RzLCBhbmQgdGhlIGFyZ3VtZW50IExJU1QgaXMgbm90IG1vZGlmaWVk LgoKKGZuIEVMVCBMSVNUKR8KKGRlZmFsaWFzICdyZW1xICNbNTE0ICIBAUA9XDIwMw8AXDIxMUFc MjExXDI2MgJcMjA0AAABAT5cMjAzHABcMzAwAlwzMDEDIVwiXDIwN1wyMDciIFtkZWxxIGNvcHkt c2VxdWVuY2VdIDYgKCMkIC4gMzQ1NDApXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNc MzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCByZW1xIHNpZGUtZWZmZWN0LWZyZWUgdF0gNCkjQDQxMiBD b252ZXJ0IEtFWVMgdG8gdGhlIGludGVybmFsIEVtYWNzIGtleSByZXByZXNlbnRhdGlvbi4KS0VZ UyBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCByZXR1cm5lZCBieSBjb21tYW5kcyBz dWNoCmFzIFxbZGVzY3JpYmUta2V5XSAoYGRlc2NyaWJlLWtleScpLgoKVGhpcyBpcyB0aGUgc2Ft ZSBmb3JtYXQgdXNlZCBmb3Igc2F2aW5nIGtleWJvYXJkIG1hY3JvcyAoc2VlCmBlZG1hY3JvLW1v ZGUnKS4KCkhlcmUncyBzb21lIGV4YW1wbGUga2V5IHNlcXVlbmNlczoKCiAgICAiZiIKICAgICJD LWMgQy1jIgogICAgIkgtPGxlZnQ+IgogICAgIk0tUkVUIgogICAgIkMtTS08cmV0dXJuPiIKCkZv ciBhbiBhcHByb3hpbWF0ZSBpbnZlcnNlIG9mIHRoaXMsIHNlZSBga2V5LWRlc2NyaXB0aW9uJy4K CihmbiBLRVlTKR8KKGRlZmFsaWFzICdrYmQgI1syNTcgIlwzMDABIVwyMTFHXDMwMVlcMjAzSgBc MjExXDMwMkhcMzAzPVwyMDNKAFwyMTFcMzA0SFwzMDU9XDIwM0oAXDIxMQFHXDMwNlpIXDMwMz1c MjAzSgBcMjExAUdTSFwzMDc9XDIwM0oAXDMxMFwzMTFcMzEyA1wzMTNcIlwyMTFBQVwyNjIBXDIx MVwyMzdcMjYyAVwyMTFBQVwyNjIBXDIxMVwyMzdcMjYyAVwiXDI2MgFcMzEzXDMxNFwzMTUDXCI+ XDIwNFoAXDMxNFwzMTYCXCJcMjYwAVwyMDdcMjA3IiBba2V5LXBhcnNlIDQgMCAyNCAxIDQwIDIg NDEgYXBwbHkgdmVjdG9yIGFwcGVuZCBuaWwgbWFwY2FyICNbMjU3ICJcMjExXDI0N1wyMDUOAFwz MDABWFwyMDUOAFwyMTFcMzAxWFwyMDciIFswIDEyN10gMyAiXG5cbihmbiBDSCkiXSBpZGVudGl0 eV0gNyAoIyQgLiAzNDk0MCldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMzAx XDMwNFwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQga2JkIHB1cmUgdCBzaWRlLWVmZmVjdC1m cmVlXSA1KSNANTAgQmVlcCB0byB0ZWxsIHRoZSB1c2VyIHRoaXMgYmluZGluZyBpcyB1bmRlZmlu ZWQuHwooZGVmYWxpYXMgJ3VuZGVmaW5lZCAjWzAgIlwzMDQgXDIxMAhcMjAzEgBcMzA1XDMwNlwz MDdcMzEwICFcIlwyMTBcMjAyGgBcMzExXDMwNlwzMDdcMzEwICFcIlwyMTBcMzEyIFwyMTBcMzEz XDMxNAkhPlwyMDUmAFxuXDIxMRNcMjA3IiBbZGVmaW5pbmcta2JkLW1hY3JvIGxhc3QtY29tbWFu ZC1ldmVudCBjdXJyZW50LXByZWZpeC1hcmcgcHJlZml4LWFyZyBkaW5nIGVycm9yICIlcyBpcyB1 bmRlZmluZWQiIGtleS1kZXNjcmlwdGlvbiB0aGlzLXNpbmdsZS1jb21tYW5kLWtleXMgbWVzc2Fn ZSBmb3JjZS1tb2RlLWxpbmUtdXBkYXRlIGRvd24gZXZlbnQtbW9kaWZpZXJzXSA0ICgjJCAuIDM1 ODY1KSBuaWxdKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYj XDIwNyIgW2Z1bmN0aW9uLXB1dCB1bmRlZmluZWQgY29tcGxldGlvbi1wcmVkaWNhdGUgaWdub3Jl IHB1dCBzdXBwcmVzcy1rZXltYXAgdF0gNSkjQDI0NyBNYWtlIE1BUCBvdmVycmlkZSBhbGwgbm9y bWFsbHkgc2VsZi1pbnNlcnRpbmcga2V5cyB0byBiZSB1bmRlZmluZWQuCk5vcm1hbGx5LCBhcyBh biBleGNlcHRpb24sIGRpZ2l0cyBhbmQgbWludXMtc2lnbiBhcmUgc2V0IHRvIG1ha2UgcHJlZml4 IGFyZ3MsCmJ1dCBvcHRpb25hbCBzZWNvbmQgYXJnIE5PRElHSVRTIG5vbi1uaWwgdHJlYXRzIHRo ZW0gbGlrZSBvdGhlciBjaGFycy4KCihmbiBNQVAgJm9wdGlvbmFsIE5PRElHSVRTKR8KKGRlZmFs aWFzICdzdXBwcmVzcy1rZXltYXAgI1s1MTMgIlwzMDACXDMwMVwzMDIjXDIxMFwyMTFcMjA2KwBc MzAzXDMwMANcMzA0XDMwNSNcMjEwXDMwNlwyNjIBXDIxMVwzMDdYXDIwNSkAXDMwMANcMzEwAyFc MzExI1wyMTBcMjExVFwyNjIBXDIwMhQAXDI2MgFcMjA3IiBbZGVmaW5lLWtleSBbcmVtYXAgc2Vs Zi1pbnNlcnQtY29tbWFuZF0gdW5kZWZpbmVkIG5pbCAiLSIgbmVnYXRpdmUtYXJndW1lbnQgNDgg NTcgY2hhci10by1zdHJpbmcgZGlnaXQtYXJndW1lbnRdIDcgKCMkIC4gMzYzOTgpXSkjQDU1NyBD b25zdHJ1Y3QgYSBuZXcga2V5bWFwIGNvbXBvc2VkIG9mIE1BUFMgYW5kIGluaGVyaXRpbmcgZnJv bSBQQVJFTlQuCldoZW4gbG9va2luZyB1cCBhIGtleSBpbiB0aGUgcmV0dXJuZWQgbWFwLCB0aGUg a2V5IGlzIGxvb2tlZCBpbiBlYWNoCmtleW1hcCBvZiBNQVBTIGluIHR1cm4gdW50aWwgYSBiaW5k aW5nIGlzIGZvdW5kLgpJZiBubyBiaW5kaW5nIGlzIGZvdW5kIGluIE1BUFMsIHRoZSBsb29rdXAg Y29udGludWVzIGluIFBBUkVOVCwgaWYgbm9uLW5pbC4KQXMgYWx3YXlzIHdpdGgga2V5bWFwIGlu aGVyaXRhbmNlLCBhIG5pbCBiaW5kaW5nIGluIE1BUFMgb3ZlcnJpZGVzCmFueSBjb3JyZXNwb25k aW5nIGJpbmRpbmcgaW4gUEFSRU5ULCBidXQgaXQgZG9lcyBub3Qgb3ZlcnJpZGUgY29ycmVzcG9u ZGluZwpiaW5kaW5ncyBpbiBvdGhlciBrZXltYXBzIG9mIE1BUFMuCk1BUFMgY2FuIGJlIGEgbGlz dCBvZiBrZXltYXBzIG9yIGEgc2luZ2xlIGtleW1hcC4KUEFSRU5UIGlmIG5vbi1uaWwgc2hvdWxk IGJlIGEga2V5bWFwLgoKKGZuIE1BUFMgJm9wdGlvbmFsIFBBUkVOVCkfCihkZWZhbGlhcyAnbWFr ZS1jb21wb3NlZC1rZXltYXAgI1s1MTMgIlwzMDBcMzAxXDMwMgQhXDIwMw0AA0NcMjAyDgADA1wi QlwyMDciIFtrZXltYXAgYXBwZW5kIGtleW1hcHBdIDYgKCMkIC4gMzY5MzUpXSkjQDc4NCBBZGQg YmluZGluZyBpbiBLRVlNQVAgZm9yIEtFWSA9PiBERUZJTklUSU9OLCByaWdodCBhZnRlciBBRlRF UidzIGJpbmRpbmcuClRoaXMgaXMgYSBsZWdhY3kgZnVuY3Rpb247IHNlZSBga2V5bWFwLXNldC1h ZnRlcicgZm9yIHRoZQpyZWNvbW1lbmRlZCBmdW5jdGlvbiB0byB1c2UgaW5zdGVhZC4KClRoaXMg aXMgbGlrZSBgZGVmaW5lLWtleScgZXhjZXB0IHRoYXQgdGhlIGJpbmRpbmcgZm9yIEtFWSBpcyBw bGFjZWQKanVzdCBhZnRlciB0aGUgYmluZGluZyBmb3IgdGhlIGV2ZW50IEFGVEVSLCBpbnN0ZWFk IG9mIGF0IHRoZSBiZWdpbm5pbmcKb2YgdGhlIG1hcC4gIE5vdGUgdGhhdCBBRlRFUiBtdXN0IGJl IGFuIGV2ZW50IHR5cGUgKGxpa2UgS0VZKSwgTk9UIGEgY29tbWFuZAoobGlrZSBERUZJTklUSU9O KS4KCklmIEFGVEVSIGlzIHQgb3Igb21pdHRlZCwgdGhlIG5ldyBiaW5kaW5nIGdvZXMgYXQgdGhl IGVuZCBvZiB0aGUga2V5bWFwLgpBRlRFUiBzaG91bGQgYmUgYSBzaW5nbGUgZXZlbnQgdHlwZS0t YSBzeW1ib2wgb3IgYSBjaGFyYWN0ZXIsIG5vdCBhIHNlcXVlbmNlLgoKQmluZGluZ3MgYXJlIGFs d2F5cyBhZGRlZCBiZWZvcmUgYW55IGluaGVyaXRlZCBtYXAuCgpUaGUgb3JkZXIgb2YgYmluZGlu Z3MgaW4gYSBrZXltYXAgbWF0dGVycyBvbmx5IHdoZW4gaXQgaXMgdXNlZCBhcwphIG1lbnUsIHNv IHRoaXMgZnVuY3Rpb24gaXMgbm90IHVzZWZ1bCBmb3Igbm9uLW1lbnUga2V5bWFwcy4KCihmbiBL RVlNQVAgS0VZIERFRklOSVRJT04gJm9wdGlvbmFsIEFGVEVSKR8KKGRlZmFsaWFzICdkZWZpbmUt a2V5LWFmdGVyICNbMTAyNyAiXDIxMVwyMDQHAFwzMDBcMjYyAVwzMDEEIVwyMDQVAFwzMDJcMzAz XDMwMQYGRFwiXDIxMAJHXDMwNFhcMjAzXCIAAlwzMDVIXDIwMjYAXDMwNgRcMzA3XDMxMFwzMTFc MzEyXDMxMwYJXCIhXCJcIlwyNjIEAlwyMTFHU0hcMjYyAwNcMzE0XDIxMQE/XDIwNVwyMzYAAlwy MDVcMjM2AAJBQFwyNDIGBj1cMjAzVAACXDIxMUFBXDI0MVwyMTBcMzAxA0AhXDIwM18AAkBcMjYy AwJAXDI0MgQ9XDIwM20AA1wzMDA9XDIwM3oAAkFAXDMxNT1cMjA0egACQVwyMDRcMjI3AAJBQFwz MTU9XDIwM1wyMDUAXDMwMFwyNjICXDIxMVwyMDRcMjI0AAIGBgYGQgRBQlwyNDFcMjEwXDMwMFwy NjIBAkFcMjYyA1wyMDI7AFwyMDciIFt0IGtleW1hcHAgc2lnbmFsIHdyb25nLXR5cGUtYXJndW1l bnQgMSAwIGxvb2t1cC1rZXkgYXBwbHkgdmVjdG9yIGJ1dGxhc3QgbWFwY2FyIGlkZW50aXR5IG5p bCBrZXltYXBdIDEyICgjJCAuIDM3NjE2KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMj XDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgZGVmaW5lLWtleS1hZnRlciBsaXNwLWluZGVudC1mdW5j dGlvbiBkZWZ1bl0gNCkjQDU4NiBEZWZpbmUgQ09NTUFORCBhcyBhIHByZWZpeCBjb21tYW5kLiAg Q09NTUFORCBzaG91bGQgYmUgYSBzeW1ib2wuCkEgbmV3IHNwYXJzZSBrZXltYXAgaXMgc3RvcmVk IGFzIENPTU1BTkQncyBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBpdHMKdmFsdWUuClRoaXMgcHJl cGFyZXMgQ09NTUFORCBmb3IgdXNlIGFzIGEgcHJlZml4IGtleSdzIGJpbmRpbmcuCklmIGEgc2Vj b25kIG9wdGlvbmFsIGFyZ3VtZW50IE1BUFZBUiBpcyBnaXZlbiwgaXQgc2hvdWxkIGJlIGEgc3lt Ym9sLgpUaGUgbWFwIGlzIHRoZW4gc3RvcmVkIGFzIE1BUFZBUidzIHZhbHVlIGluc3RlYWQgb2Yg YXMgQ09NTUFORCdzCnZhbHVlOyBidXQgQ09NTUFORCBpcyBzdGlsbCBkZWZpbmVkIGFzIGEgZnVu Y3Rpb24uClRoZSB0aGlyZCBvcHRpb25hbCBhcmd1bWVudCBOQU1FLCBpZiBnaXZlbiwgc3VwcGxp ZXMgYSBtZW51IG5hbWUKc3RyaW5nIGZvciB0aGUgbWFwLiAgVGhpcyBpcyByZXF1aXJlZCB0byB1 c2UgdGhlIGtleW1hcCBhcyBhIG1lbnUuClRoaXMgZnVuY3Rpb24gcmV0dXJucyBDT01NQU5ELgoK KGZuIENPTU1BTkQgJm9wdGlvbmFsIE1BUFZBUiBOQU1FKR8KKGRlZmFsaWFzICdkZWZpbmUtcHJl Zml4LWNvbW1hbmQgI1s3NjkgIlwzMDABIQMBTVwyMTACXDIwNlxmAAMBTFwyMTADXDIwNyIgW21h a2Utc3BhcnNlLWtleW1hcF0gNiAoIyQgLiAzOTAwOCldKSNAMTE1IEltcGxlbWVudCBgbWFwLWtl eW1hcCcgd2l0aCBzb3J0aW5nLgpEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb247IGl0IGlzIGZvciBp bnRlcm5hbCB1c2Ugb25seS4KCihmbiBGVU5DVElPTiBLRVlNQVApHwooZGVmYWxpYXMgJ21hcC1r ZXltYXAtc29ydGVkICNbNTE0ICJcMzAwQ1wzMDFcMzAyXDMwMwNcIgNcIlwyMTBcMjExXDMwNAJc MjQyXDMwNVwiXDI0MFwyMTBcMjExXDI0MlwyMTFcMjA1KABcMjExQAQBQAJBXCJcMjEwAUFcMjY2 XDIwMlwyMDIUAFwyMDciIFtuaWwgbWFwLWtleW1hcCBtYWtlLWNsb3N1cmUgI1s1MTQgIlwzMDAC AkJcMzAwXDI0MkJcMjQwXDIwNyIgW1YwXSA1ICJcblxuKGZuIEEgQikiXSBzb3J0ICNbNTE0ICIB QFwyNjICXDIxMUBcMjYyAQFcMjUwXDIwMxgAXDIxMVwyNTBcMjAzFgABAVdcMjA3XDMwMFwyMDdc MjExXDI1MFwyMDMfAFwzMDBcMjA3AQFcMjMxXDIwNyIgW3RdIDQgIlxuXG4oZm4gQSBCKSJdXSA4 ICgjJCAuIDM5NzEyKV0pI0A1MSBSZXR1cm4gdGhlIGJpbmRpbmcgcGFydCBvZiBhIG1lbnUtaXRl bS4KCihmbiBWQUwpHwooZGVmYWxpYXMgJ2tleW1hcC0tbWVudS1pdGVtLWJpbmRpbmcgI1syNTcg IlwyMTE6XDIwNAYAXDIwN1wyMTFAXDMwMD1cMjAzIQBcMzAxAThcMzAyAlwyMzNcMzAzAVwzMDRc IlwyMTFcMjAzHwBcMjExAyFcMjA3AlwyMDdcMjExQTpcMjAzMgBcMjExQUA7XDIwMzIAXDIxMUFB XDIwN1wyMTFAO1wyMDM7AFwyMTFBXDIwN1wyMDciIFttZW51LWl0ZW0gMiAzIHBsaXN0LWdldCA6 ZmlsdGVyXSA2ICgjJCAuIDQwMjA1KV0pI0A4OSBCdWlsZCBhIG1lbnUtaXRlbSBsaWtlIElURU0g YnV0IHdpdGggaXRzIGJpbmRpbmcgY2hhbmdlZCB0byBCSU5ESU5HLgoKKGZuIElURU0gQklORElO RykfCihkZWZhbGlhcyAna2V5bWFwLS1tZW51LWl0ZW0td2l0aC1iaW5kaW5nICNbNTE0ICIBOlwy MDQGAFwyMDcBQFwzMDA9XDIwMy0AXDMwMQIhXDI2MgIBQUFcMjExAlwyNDBcMjEwXDMwMgFBXDMw M1wiXDIwMyoAXDIxMVwzMDQCQVwzMDNcMzA1I1wyNDFcMjEwXDIxMAFcMjA3AUE6XDIwM0MAAUFA O1wyMDNDAAFAAkFAAkJCXDIwNwFAAUJcMjA3IiBbbWVudS1pdGVtIGNvcHktc2VxdWVuY2UgcGxp c3QtZ2V0IDpmaWx0ZXIgcGxpc3QtcHV0IG5pbF0gOCAoIyQgLiA0MDQ5OSldKSNANDcgTWVyZ2Ug YmluZGluZ3MgVkFMMSBhbmQgVkFMMi4KCihmbiBWQUwxIFZBTDIpHwooZGVmYWxpYXMgJ2tleW1h cC0tbWVyZ2UtYmluZGluZ3MgI1s1MTQgIlwzMDACIVwzMDACIVwzMDECIVwyMDMSAFwzMDEBIVwy MDQUAANcMjA3XDMwMgICRVwzMDEFIVwyMDMpAFwzMDEEIT9cMjA1KgADXDIwMioABFwzMDMBA1wi XDIwNyIgW2tleW1hcC0tbWVudS1pdGVtLWJpbmRpbmcga2V5bWFwcCBrZXltYXAga2V5bWFwLS1t ZW51LWl0ZW0td2l0aC1iaW5kaW5nXSA5ICgjJCAuIDQwODYzKV0pI0AyNjkgUmV0dXJuIGEgc2lt cGxlciBlcXVpdmFsZW50IGtleW1hcC4KVGhpcyByZXNvbHZlcyBpbmhlcml0YW5jZSBhbmQgcmVk ZWZpbml0aW9ucy4gIFRoZSByZXR1cm5lZCBrZXltYXAKc2hvdWxkIGJlaGF2ZSBpZGVudGljYWxs eSB0byBhIGNvcHkgb2YgS0VZTUFQIHcuci50IGBsb29rdXAta2V5JwphbmQgdXNlIGluIGFjdGl2 ZSBrZXltYXBzIGFuZCBtZW51cy4KU3Via2V5bWFwcyBtYXkgYmUgbW9kaWZpZWQgYnV0IGFyZSBu b3QgY2Fub25pY2FsaXplZC4KCihmbiBNQVApHwooZGVmYWxpYXMgJ2tleW1hcC1jYW5vbmljYWxp emUgI1syNTcgIlwzMDBDXDMwMENcMzAxAyFcMzAyBCFcMjAzGwBcMzAzXDMwNFwzMDUEBgYjBVwi XDI2MgRcMjAyBwABXDI0MlwyMDMkAFwzMDZcMjAyJQBcMzA3ASFcMjYyBAFcMjQyXDIxMVwyMDND AFwyMTFAXDMxMAYGXDMxMQNAIQNBI1wyMTABQVwyNjZcMjAyXDIwMisAXDIxMAJcMjQyA1wzMDBc MjQwXDIxMFwyMTFcMjAzXDIwMQBcMjExQFwyMTFAXDIxMQYGXDI0MlwyMzYGBgFcMjA0YQADXDIw MnMABgdcMzEyAwZcblwyNDJcIlwyNDBcMjEwAlwzMTMFQQRBXCJCBghcMjQyQlwyNDBcMjY2AwFB XDI2NlwyMDJcMjAySgBcMjEwAwNcMjQyXDI0NFwyMDciIFtuaWwga2V5bWFwLXByb21wdCBrZXlt YXBwIG1hcC1rZXltYXAgbWFrZS1jbG9zdXJlICNbNTE0ICIBOlwyMDMrAAFAAkFTVVwyMDNcIgBc MzAxAkACQlwzMDFcMjQyQlwyNDBcMjEwXDMwMQJBAkJcMzAxXDI0MkJcMjQwXDIwN1wzMDACAkJc MzAwXDI0MkJcMjQwXDIwN1wzMDECAkJcMzAxXDI0MkJcMjQwXDIwNyIgW1YwIFYxXSA1ICJcblxu KGZuIEtFWSBJVEVNKSJdIG1ha2Uta2V5bWFwIG1ha2Utc3BhcnNlLWtleW1hcCBkZWZpbmUta2V5 IHZlY3RvciBkZWxxIGtleW1hcC0tbWVyZ2UtYmluZGluZ3NdIDEzICgjJCAuIDQxMTQyKV0pCihw dXQgJ2tleWJvYXJkLXRyYW5zbGF0ZS10YWJsZSAnY2hhci10YWJsZS1leHRyYS1zbG90cyAwKSNA MjYzIFRyYW5zbGF0ZSBjaGFyYWN0ZXIgRlJPTSB0byBUTyBvbiB0aGUgY3VycmVudCB0ZXJtaW5h bC4KVGhpcyBpcyBhIGxlZ2FjeSBmdW5jdGlvbjsgc2VlIGBrZXktdHJhbnNsYXRlJyBmb3IgdGhl CnJlY29tbWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkLgoKVGhpcyBmdW5jdGlvbiBjcmVh dGVzIGEgYGtleWJvYXJkLXRyYW5zbGF0ZS10YWJsZScgaWYgbmVjZXNzYXJ5CmFuZCB0aGVuIG1v ZGlmaWVzIG9uZSBlbnRyeSBpbiBpdC4KCihmbiBGUk9NIFRPKR8KKGRlZmFsaWFzICdrZXlib2Fy ZC10cmFuc2xhdGUgI1s1MTQgIlwzMDEIIVwyMDQLAFwzMDJcMzAwXDMwM1wiEAgCAklcMjA3IiBb a2V5Ym9hcmQtdHJhbnNsYXRlLXRhYmxlIGNoYXItdGFibGUtcCBtYWtlLWNoYXItdGFibGUgbmls XSA1ICgjJCAuIDQyMTI3KV0pI0A2MjAgR2l2ZSBLRVkgYSBnbG9iYWwgYmluZGluZyBhcyBDT01N QU5ELgpUaGlzIGlzIGEgbGVnYWN5IGZ1bmN0aW9uOyBzZWUgYGtleW1hcC1nbG9iYWwtc2V0JyBm b3IgdGhlCnJlY29tbWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkLgoKQ09NTUFORCBpcyB0 aGUgY29tbWFuZCBkZWZpbml0aW9uIHRvIHVzZTsgdXN1YWxseSBpdCBpcwphIHN5bWJvbCBuYW1p bmcgYW4gaW50ZXJhY3RpdmVseS1jYWxsYWJsZSBmdW5jdGlvbi4KS0VZIGlzIGEga2V5IHNlcXVl bmNlOyBub25pbnRlcmFjdGl2ZWx5LCBpdCBpcyBhIHN0cmluZyBvciB2ZWN0b3IKb2YgY2hhcmFj dGVycyBvciBldmVudCB0eXBlcywgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIHdpdGggY29kZXMK YWJvdmUgMTI3IChzdWNoIGFzIElTTyBMYXRpbi0xKSBjYW4gYmUgaW5jbHVkZWQgaWYgeW91IHVz ZSBhIHZlY3Rvci4KCk5vdGUgdGhhdCBpZiBLRVkgaGFzIGEgbG9jYWwgYmluZGluZyBpbiB0aGUg Y3VycmVudCBidWZmZXIsCnRoYXQgbG9jYWwgYmluZGluZyB3aWxsIGNvbnRpbnVlIHRvIHNoYWRv dyBhbnkgZ2xvYmFsIGJpbmRpbmcKdGhhdCB5b3UgbWFrZSB3aXRoIHRoaXMgZnVuY3Rpb24uCgoo Zm4gS0VZIENPTU1BTkQpHwooZGVmYWxpYXMgJ2dsb2JhbC1zZXQta2V5ICNbNTE0ICJcMzAwAiFc MjA0EgABO1wyMDQSAFwzMDFcMzAyXDMwMwREXCJcMjEwXDMwNFwzMDUgAwMjXDIwNyIgW3ZlY3Rv cnAgc2lnbmFsIHdyb25nLXR5cGUtYXJndW1lbnQgYXJyYXlwIGRlZmluZS1rZXkgY3VycmVudC1n bG9iYWwtbWFwXSA2ICgjJCAuIDQyNTQ2KSAoYnl0ZS1jb2RlICJcMzAxGFwzMDJcMzAzXDMwMVwz MDQjXDIxMVwzMDVcMzA2XDMwN1wzMTAFIVwiISlEXDIwNyIgW21lbnUtcHJvbXB0aW5nIG5pbCBy ZWFkLWtleS1zZXF1ZW5jZSAiU2V0IGtleSBnbG9iYWxseTogIiB0IHJlYWQtY29tbWFuZCBmb3Jt YXQgIlNldCBrZXkgJXMgdG8gY29tbWFuZDogIiBrZXktZGVzY3JpcHRpb25dIDcpXSkjQDU5MSBH aXZlIEtFWSBhIGxvY2FsIGJpbmRpbmcgYXMgQ09NTUFORC4KVGhpcyBpcyBhIGxlZ2FjeSBmdW5j dGlvbjsgc2VlIGBrZXltYXAtbG9jYWwtc2V0JyBmb3IgdGhlCnJlY29tbWVuZGVkIGZ1bmN0aW9u IHRvIHVzZSBpbnN0ZWFkLgoKQ09NTUFORCBpcyB0aGUgY29tbWFuZCBkZWZpbml0aW9uIHRvIHVz ZTsgdXN1YWxseSBpdCBpcwphIHN5bWJvbCBuYW1pbmcgYW4gaW50ZXJhY3RpdmVseS1jYWxsYWJs ZSBmdW5jdGlvbi4KS0VZIGlzIGEga2V5IHNlcXVlbmNlOyBub25pbnRlcmFjdGl2ZWx5LCBpdCBp cyBhIHN0cmluZyBvciB2ZWN0b3IKb2YgY2hhcmFjdGVycyBvciBldmVudCB0eXBlcywgYW5kIG5v bi1BU0NJSSBjaGFyYWN0ZXJzIHdpdGggY29kZXMKYWJvdmUgMTI3IChzdWNoIGFzIElTTyBMYXRp bi0xKSBjYW4gYmUgaW5jbHVkZWQgaWYgeW91IHVzZSBhIHZlY3Rvci4KClRoZSBiaW5kaW5nIGdv ZXMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbG9jYWwgbWFwLCB3aGljaCBpbiBtb3N0CmNhc2Vz IGlzIHNoYXJlZCB3aXRoIGFsbCBvdGhlciBidWZmZXJzIGluIHRoZSBzYW1lIG1ham9yIG1vZGUu CgooZm4gS0VZIENPTU1BTkQpHwooZGVmYWxpYXMgJ2xvY2FsLXNldC1rZXkgI1s1MTQgIlwzMDAg XDIxMVwyMDQOAFwzMDFcMzAyIFwyMTFcMjYyAyFcMjEwXDMwMwMhXDIwNCAAAjtcMjA0IABcMzA0 XDMwNVwzMDYFRFwiXDIxMFwzMDcBBAQjXDIwNyIgW2N1cnJlbnQtbG9jYWwtbWFwIHVzZS1sb2Nh bC1tYXAgbWFrZS1zcGFyc2Uta2V5bWFwIHZlY3RvcnAgc2lnbmFsIHdyb25nLXR5cGUtYXJndW1l bnQgYXJyYXlwIGRlZmluZS1rZXldIDcgKCMkIC4gNDM1NDcpICJLU2V0IGtleSBsb2NhbGx5OiBc bkNTZXQga2V5ICVzIGxvY2FsbHkgdG8gY29tbWFuZDogIl0pI0AyMDUgUmVtb3ZlIGdsb2JhbCBi aW5kaW5nIG9mIEtFWS4KVGhpcyBpcyBhIGxlZ2FjeSBmdW5jdGlvbjsgc2VlIGBrZXltYXAtZ2xv YmFsLXVuc2V0JyBmb3IgdGhlCnJlY29tbWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkLgoK S0VZIGlzIGEgc3RyaW5nIG9yIHZlY3RvciByZXByZXNlbnRpbmcgYSBzZXF1ZW5jZSBvZiBrZXlz dHJva2VzLgoKKGZuIEtFWSkfCihkZWZhbGlhcyAnZ2xvYmFsLXVuc2V0LWtleSAjWzI1NyAiXDMw MAFcMzAxXCJcMjA3IiBbZ2xvYmFsLXNldC1rZXkgbmlsXSA0ICgjJCAuIDQ0NDQ1KSAia1Vuc2V0 IGtleSBnbG9iYWxseTogIl0pI0AyMDMgUmVtb3ZlIGxvY2FsIGJpbmRpbmcgb2YgS0VZLgpUaGlz IGlzIGEgbGVnYWN5IGZ1bmN0aW9uOyBzZWUgYGtleW1hcC1sb2NhbC11bnNldCcgZm9yIHRoZQpy ZWNvbW1lbmRlZCBmdW5jdGlvbiB0byB1c2UgaW5zdGVhZC4KCktFWSBpcyBhIHN0cmluZyBvciB2 ZWN0b3IgcmVwcmVzZW50aW5nIGEgc2VxdWVuY2Ugb2Yga2V5c3Ryb2tlcy4KCihmbiBLRVkpHwoo ZGVmYWxpYXMgJ2xvY2FsLXVuc2V0LWtleSAjWzI1NyAiXDMwMCBcMjAzXG4AXDMwMQFcMzAyXCJc MjEwXDMwMlwyMDciIFtjdXJyZW50LWxvY2FsLW1hcCBsb2NhbC1zZXQta2V5IG5pbF0gNCAoIyQg LiA0NDc2OSkgImtVbnNldCBrZXkgbG9jYWxseTogIl0pI0A0NTkgUmV0dXJuIHRoZSBiaW5kaW5n IGZvciBjb21tYW5kIEtFWVMgaW4gY3VycmVudCBsb2NhbCBrZXltYXAgb25seS4KVGhpcyBpcyBh IGxlZ2FjeSBmdW5jdGlvbjsgc2VlIGBrZXltYXAtbG9jYWwtbG9va3VwJyBmb3IgdGhlCnJlY29t bWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkLgoKS0VZUyBpcyBhIHN0cmluZyBvciB2ZWN0 b3IsIGEgc2VxdWVuY2Ugb2Yga2V5c3Ryb2tlcy4KVGhlIGJpbmRpbmcgaXMgcHJvYmFibHkgYSBz eW1ib2wgd2l0aCBhIGZ1bmN0aW9uIGRlZmluaXRpb24uCgpJZiBvcHRpb25hbCBhcmd1bWVudCBB Q0NFUFQtREVGQVVMVCBpcyBub24tbmlsLCByZWNvZ25pemUgZGVmYXVsdApiaW5kaW5nczsgc2Vl IHRoZSBkZXNjcmlwdGlvbiBvZiBgbG9va3VwLWtleScgZm9yIG1vcmUgZGV0YWlscwphYm91dCB0 aGlzLgoKKGZuIEtFWVMgJm9wdGlvbmFsIEFDQ0VQVC1ERUZBVUxUKR8KKGRlZmFsaWFzICdsb2Nh bC1rZXktYmluZGluZyAjWzUxMyAiXDMwMCBcMjExXDIwNQsAXDMwMQEEBCNcMjA3IiBbY3VycmVu dC1sb2NhbC1tYXAgbG9va3VwLWtleV0gNyAoIyQgLiA0NTEyNildKSNANTQyIFJldHVybiB0aGUg YmluZGluZyBmb3IgY29tbWFuZCBLRVlTIGluIGN1cnJlbnQgZ2xvYmFsIGtleW1hcCBvbmx5LgpU aGlzIGlzIGEgbGVnYWN5IGZ1bmN0aW9uOyBzZWUgYGtleW1hcC1nbG9iYWwtbG9va3VwJyBmb3Ig dGhlCnJlY29tbWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0ZWFkLgoKS0VZUyBpcyBhIHN0cmlu ZyBvciB2ZWN0b3IsIGEgc2VxdWVuY2Ugb2Yga2V5c3Ryb2tlcy4KVGhlIGJpbmRpbmcgaXMgcHJv YmFibHkgYSBzeW1ib2wgd2l0aCBhIGZ1bmN0aW9uIGRlZmluaXRpb24uClRoaXMgZnVuY3Rpb24n cyByZXR1cm4gdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBgbG9va3VwLWtleScKKHdo aWNoIHNlZSkuCgpJZiBvcHRpb25hbCBhcmd1bWVudCBBQ0NFUFQtREVGQVVMVCBpcyBub24tbmls LCByZWNvZ25pemUgZGVmYXVsdApiaW5kaW5nczsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBgbG9v a3VwLWtleScgZm9yIG1vcmUgZGV0YWlscwphYm91dCB0aGlzLgoKKGZuIEtFWVMgJm9wdGlvbmFs IEFDQ0VQVC1ERUZBVUxUKR8KKGRlZmFsaWFzICdnbG9iYWwta2V5LWJpbmRpbmcgI1s1MTMgIlwz MDBcMzAxIAMDI1wyMDciIFtsb29rdXAta2V5IGN1cnJlbnQtZ2xvYmFsLW1hcF0gNiAoIyQgLiA0 NTcwMyldKSNANDkgVXNlZCBpbnRlcm5hbGx5IGJ5IGBzdWJzdGl0dXRlLWtleS1kZWZpbml0aW9u Jy4fCihkZWZ2YXIga2V5LXN1YnN0aXR1dGlvbi1pbi1wcm9ncmVzcyBuaWwgKCMkIC4gNDYzNTMp KSNANTkxIFJlcGxhY2UgT0xEREVGIHdpdGggTkVXREVGIGZvciBhbnkga2V5cyBpbiBLRVlNQVAg bm93IGRlZmluZWQgYXMgT0xEREVGLgpUaGlzIGlzIGEgbGVnYWN5IGZ1bmN0aW9uOyBzZWUgYGtl eW1hcC1zdWJzdGl0dXRlJyBmb3IgdGhlCnJlY29tbWVuZGVkIGZ1bmN0aW9uIHRvIHVzZSBpbnN0 ZWFkLgoKSW4gb3RoZXIgd29yZHMsIE9MRERFRiBpcyByZXBsYWNlZCB3aXRoIE5FV0RFRiB3aGVy ZXZlciBpdCBhcHBlYXJzLgpBbHRlcm5hdGl2ZWx5LCBpZiBvcHRpb25hbCBmb3VydGggYXJndW1l bnQgT0xETUFQIGlzIHNwZWNpZmllZCwgd2UgcmVkZWZpbmUKaW4gS0VZTUFQIGFzIE5FV0RFRiB0 aG9zZSBrZXlzIHRoYXQgYXJlIGRlZmluZWQgYXMgT0xEREVGIGluIE9MRE1BUC4KCklmIHlvdSBk b24ndCBzcGVjaWZ5IE9MRE1BUCwgeW91IGNhbiB1c3VhbGx5IGdldCB0aGUgc2FtZSByZXN1bHRz CmluIGEgY2xlYW5lciB3YXkgd2l0aCBjb21tYW5kIHJlbWFwcGluZywgbGlrZSB0aGlzOgogIChk ZWZpbmUta2V5IEtFWU1BUCBbcmVtYXAgT0xEREVGXSBORVdERUYpCgooZm4gT0xEREVGIE5FV0RF RiBLRVlNQVAgJm9wdGlvbmFsIE9MRE1BUCkfCihkZWZhbGlhcyAnc3Vic3RpdHV0ZS1rZXktZGVm aW5pdGlvbiAjWzEyODMgIlwyMTFDXDIxMVwyNDJcMjA0CwBcMjExXDMwMVwyNDBcMjEwAlwyMDYQ AANcMzAyAlwyNDJcMzAzXCIBCEIYXDMwNFwzMDVcMzA2AwYGBlxuBlxmBg4mBgNcIilcMjA3IiBb a2V5LXN1YnN0aXR1dGlvbi1pbi1wcm9ncmVzcyAiIiB2Y29uY2F0IFtuaWxdIG1hcC1rZXltYXAg bWFrZS1jbG9zdXJlICNbNTE0ICJcMzAwXDMwMVwyNDJHA0lcMjEwXDMwNQFcMzA0XDMwM1wzMDBc MzAyJVwyMDciIFtWMCBWMSBWMiBWMyBWNCBzdWJzdGl0dXRlLWtleS1kZWZpbml0aW9uLWtleV0g OCAiXG5cbihmbiBDSEFSIERFRk4pIl1dIDE2ICgjJCAuIDQ2NDYyKV0pI0A0MSAKCihmbiBERUZO IE9MRERFRiBORVdERUYgUFJFRklYIEtFWU1BUCkfCihkZWZhbGlhcyAnc3Vic3RpdHV0ZS1rZXkt ZGVmaW5pdGlvbi1rZXkgI1sxMjg1ICJcMzAxXDIxMVwyMTEGB1wyNDJcMzAyPVwyMDMYAAYHXDI2 MgFcMzAzBgg4XDI2MghcMjAyOQAGB1wyNDI7XDIwMy0ABgdcMjExQVwyNjIJXDI0MgJCXDI2MgJc MjAyGAAGB1wyNDI6XDIwMzkABgdBXDI2MggGBwYHPVwyMDRWAAYHO1wyMDROAFwzMDQGCCFcMjAz dQAGBwYHXDIzMlwyMDN1AFwzMDUEBgYDXDIwM24AXDMwNgQhXDIxMUFBBlxuXDI0MFwyMTBcMjEx XDI2MgFcMjAycwAEXDIzNwYJXDI0NCNcMjA3XDMwNwYIIVwyMDZ+AAYHXDI2MgNcMzEwAyFcMjA1 XDI2MQBcMzExBAYGXCJcMjExP1wyMDZcMjMxAFwzMTIBIVwyMDZcMjMxAFwzMTABIVwyNjIBXDIw NVwyNjEAAgg+P1wyMDVcMjYxAFwzMTMGBwYHBgYGBgYJJVwyMDciIFtrZXktc3Vic3RpdHV0aW9u LWluLXByb2dyZXNzIG5pbCBtZW51LWl0ZW0gMiB2ZWN0b3JwIGRlZmluZS1rZXkgY29weS1zZXF1 ZW5jZSBpbmRpcmVjdC1mdW5jdGlvbiBrZXltYXBwIGxvb2t1cC1rZXkgbmF0bnVtcCBzdWJzdGl0 dXRlLWtleS1kZWZpbml0aW9uXSAxNCAoIyQgLiA0NzQxNCldKSNAMTE3IERlZmF1bHQga2V5bWFw IGZvciBFU0MgKG1ldGEpIGNvbW1hbmRzLgpUaGUgbm9ybWFsIGdsb2JhbCBkZWZpbml0aW9uIG9m IHRoZSBjaGFyYWN0ZXIgRVNDIGluZGlyZWN0cyB0byB0aGlzIGtleW1hcC4fCihkZWZ2YXIgZXNj LW1hcCAoYnl0ZS1jb2RlICJcMzAwIFwzMDEBXDMwMlwzMDMjXDIxMFwzMDEBXDMwNFwzMDUjXDIx MFwzMDEBXDMwNlwzMDcjXDIxMFwzMDEBXDMxMFwzMTEjXDIxMFwzMDEBXDMxMlwzMTMjXDIxMFwy MDciIFttYWtlLWtleW1hcCBkZWZpbmUta2V5ICJ1IiB1cGNhc2Utd29yZCAibCIgZG93bmNhc2Ut d29yZCAiYyIgY2FwaXRhbGl6ZS13b3JkICJ4IiBleGVjdXRlLWV4dGVuZGVkLWNvbW1hbmQgIlgi IGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZC1mb3ItYnVmZmVyXSA1KSAoIyQgLiA0ODAzNykpCihi eXRlLWNvZGUgIlwzMDEITVwyMTBcMzAyXDMwMVwzMDBcMzAzI1wyMDciIFtlc2MtbWFwIEVTQy1w cmVmaXggbWFrZS1vYnNvbGV0ZSAiMjguMSJdIDQpI0AzNCBLZXltYXAgZm9yIHN1YmNvbW1hbmRz IG9mIEMteCA0Lh8KKGRlZnZhciBjdGwteC00LW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSAoIyQg LiA0ODU0MikpCihkZWZhbGlhcyAnY3RsLXgtNC1wcmVmaXggY3RsLXgtNC1tYXApI0AyOCBLZXlt YXAgZm9yIGZyYW1lIGNvbW1hbmRzLh8KKGRlZnZhciBjdGwteC01LW1hcCAobWFrZS1zcGFyc2Ut a2V5bWFwKSAoIyQgLiA0ODY3NCkpCihkZWZhbGlhcyAnY3RsLXgtNS1wcmVmaXggY3RsLXgtNS1t YXApI0AzOCBLZXltYXAgZm9yIHRhYi1iYXIgcmVsYXRlZCBjb21tYW5kcy4fCihkZWZ2YXIgdGFi LXByZWZpeC1tYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkgKCMkIC4gNDg4MDApKSNAMTEwIERlZmF1 bHQga2V5bWFwIGZvciBDLXggY29tbWFuZHMuClRoZSBub3JtYWwgZ2xvYmFsIGRlZmluaXRpb24g b2YgdGhlIGNoYXJhY3RlciBDLXggaW5kaXJlY3RzIHRvIHRoaXMga2V5bWFwLh8KKGRlZnZhciBj dGwteC1tYXAgKGJ5dGUtY29kZSAiXDMwMSBcMzAyAVwzMDNcMzA0I1wyMTBcMzAyAVwzMDVcMzA2 I1wyMTBcMzAyAVwzMDcII1wyMTBcMzAyAVwzMTBcMzExI1wyMTBcMzAyAVwzMTJcMzEzI1wyMTBc MzAyAVwzMTRcMzE1I1wyMTBcMzE2XDMxNVwzMTdcMzIwI1wyMTBcMzAyAVwzMjFcMzIyI1wyMTBc MzE2XDMyMlwzMTdcMzIwI1wyMTBcMzAyAVwzMjNcMzI0I1wyMTBcMzAyAVwzMjVcMzI2I1wyMTBc MjA3IiBbdGFiLXByZWZpeC1tYXAgbWFrZS1rZXltYXAgZGVmaW5lLWtleSAiNCIgY3RsLXgtNC1w cmVmaXggIjUiIGN0bC14LTUtcHJlZml4ICJ0IiAiYiIgc3dpdGNoLXRvLWJ1ZmZlciAiayIga2ls bC1idWZmZXIgIhUiIHVwY2FzZS1yZWdpb24gcHV0IGRpc2FibGVkIHQgIlxmIiBkb3duY2FzZS1y ZWdpb24gIjwiIHNjcm9sbC1sZWZ0ICI+IiBzY3JvbGwtcmlnaHRdIDUpICgjJCAuIDQ4OTAxKSkK KGJ5dGUtY29kZSAiXDMwMQhNXDIxMFwzMDJcMzAxXDMwMFwzMDMjXDIwNyIgW2N0bC14LW1hcCBD b250cm9sLVgtcHJlZml4IG1ha2Utb2Jzb2xldGUgIjI4LjEiXSA0KSNAMTc5IERlZmF1bHQgZ2xv YmFsIGtleW1hcCBtYXBwaW5nIEVtYWNzIGtleWJvYXJkIGlucHV0IGludG8gY29tbWFuZHMuClRo ZSB2YWx1ZSBpcyBhIGtleW1hcCB0aGF0IGlzIHVzdWFsbHkgKGJ1dCBub3QgbmVjZXNzYXJpbHkp IEVtYWNzJ3MKZ2xvYmFsIG1hcC4KClNlZSBhbHNvIGBjdXJyZW50LWdsb2JhbC1tYXAnLh8KKGRl ZnZhciBnbG9iYWwtbWFwIChieXRlLWNvZGUgIlwzMDEgXDMwMgFcMzAzXDMwNCNcMjEwXDMwMgFc MzA1XDMwNiNcMjEwXDMwMgFcMzA3XDMxMCNcMjEwXDMxMVwzMTJcMzEzXCJcMzE0XDIxMQMDXDMx NVwzMTYkXDIxMAhcMzE3PVwyMDMtAFwyMTEDA1wzMjBcMzIxJFwyMTBcMjExAwNcMzIxXDMyMiRc MjY2A1wzMDIBXDMyM1wzMjQjXDIxMFwzMDIBXDMyNVwzMjYjXDIxMFwzMDIBXDMyN1wzMzAjXDIx MFwzMDIBXDMzMVwzMzIjXDIxMFwzMDIBXDMzM1wzMzQjXDIxMFwzMDIBXDMzNVwzMzQjXDIxMFwz MDIBXDMzNlwzMzcjXDIxMFwzMDIBXDM0MFwzNDEjXDIxMFwzMDIBXDM0MlwzNDMjXDIxMFwzMDIB XDM0NFwzNDUjXDIxMFwzMDIBXDM0NlwzNDcjXDIxMFwyMDciIFtzeXN0ZW0tdHlwZSBtYWtlLWtl eW1hcCBkZWZpbmUta2V5ICIbIiBFU0MtcHJlZml4ICIYIiBDb250cm9sLVgtcHJlZml4ICIJIiBz ZWxmLWluc2VydC1jb21tYW5kIG1ha2UtdmVjdG9yIDEgbmlsICNbMTAyOCAiAQFXXDIwNRgAAlwz MDADSVwyMTBcMzAxBARcMzAyI1wyMTABVFwyNjICXDIwMgAAXDIwNyIgWzAgZGVmaW5lLWtleSBz ZWxmLWluc2VydC1jb21tYW5kXSA4ICJcblxuKGZuIE1BUCBWRUMxIEZST00gVE8pIl0gMzIgMTI3 IG1zLWRvcyAxMjggMTYwIDI1NiAiASIgYmVnaW5uaW5nLW9mLWxpbmUgIgIiIGJhY2t3YXJkLWNo YXIgIgUiIGVuZC1vZi1saW5lICIGIiBmb3J3YXJkLWNoYXIgIhoiIHN1c3BlbmQtZW1hY3MgIhga IiAiFiIgc2Nyb2xsLXVwLWNvbW1hbmQgIlwzNjYiIHNjcm9sbC1kb3duLWNvbW1hbmQgIlwyMjYi IHNjcm9sbC1vdGhlci13aW5kb3cgIlwyMDMiIGV4aXQtcmVjdXJzaXZlLWVkaXQgIh0iIGFib3J0 LXJlY3Vyc2l2ZS1lZGl0XSA4KSAoIyQgLiA0OTU3OSkpCih1c2UtZ2xvYmFsLW1hcCBnbG9iYWwt bWFwKQooZGVmY29uc3QgbGlzdGlmeS1rZXktc2VxdWVuY2UtMSAxMzQyMTc4NTYpI0A1NSBDb252 ZXJ0IGEga2V5IHNlcXVlbmNlIHRvIGEgbGlzdCBvZiBldmVudHMuCgooZm4gS0VZKR8KKGRlZmFs aWFzICdsaXN0aWZ5LWtleS1zZXF1ZW5jZSAjWzI1NyAiXDMwMAEhXDIwMwsAXDMwMQFcMzAyXCJc MjA3XDMwM1wzMDQCXCJcMjA3IiBbdmVjdG9ycCBhcHBlbmQgbmlsIG1hcGNhciAjWzI1NyAiXDIx MVwzMDFWXDIwMwsAXDMwMgEIXCJcMjA3XDIwNyIgW2xpc3RpZnkta2V5LXNlcXVlbmNlLTEgMTI3 IGxvZ3hvcl0gNCAiXG5cbihmbiBDKSJdXSA0ICgjJCAuIDUwNzI2KV0pI0A3NCBSZXR1cm4gbm9u LW5pbCBpZiBPQkpFQ1QgaXMgYW4gaW5wdXQgZXZlbnQgb3IgZXZlbnQgb2JqZWN0LgoKKGZuIE9C SkVDVCkfCihkZWZhbGlhcyAnZXZlbnRwICNbMjU3ICJcMjExXDI1MFwyMDYfAFwyMTE6XDIwMxIA XDIxMUBcMjExXDI2MgJcMjAyEwBcMjExXDIwNR8AXDIxMTlcMjA1HwBcMzAwASE/XDIwNyIgW2tl eXdvcmRwXSAzICgjJCAuIDUxMDA1KV0pI0A0NDIgUmV0dXJuIGEgbGlzdCBvZiBzeW1ib2xzIHJl cHJlc2VudGluZyB0aGUgbW9kaWZpZXIga2V5cyBpbiBldmVudCBFVkVOVC4KVGhlIGVsZW1lbnRz IG9mIHRoZSBsaXN0IG1heSBpbmNsdWRlIGBtZXRhJywgYGNvbnRyb2wnLApgc2hpZnQnLCBgaHlw ZXInLCBgc3VwZXInLCBgYWx0JywgYGNsaWNrJywgYGRvdWJsZScsIGB0cmlwbGUnLCBgZHJhZycs CmFuZCBgZG93bicuCkVWRU5UIG1heSBiZSBhbiBldmVudCBvciBhbiBldmVudCB0eXBlLiAgSWYg RVZFTlQgaXMgYSBzeW1ib2wKdGhhdCBoYXMgbmV2ZXIgYmVlbiB1c2VkIGluIGFuIGV2ZW50IHRo YXQgaGFzIGJlZW4gcmVhZCBhcyBpbnB1dAppbiB0aGUgY3VycmVudCBFbWFjcyBzZXNzaW9uLCB0 aGVuIHRoaXMgZnVuY3Rpb24gbWF5IGZhaWwgdG8gaW5jbHVkZQp0aGUgYGNsaWNrJyBtb2RpZmll ci4KCihmbiBFVkVOVCkfCihkZWZhbGlhcyAnZXZlbnQtbW9kaWZpZXJzICNbMjU3ICJcMjExATxc MjAzXG4AAUBcMjYyAVwyMTE5XDIwMxQAXDMwMAEhQVwyMDdcMzAxXDMwMgJcMzAzXCJcMzAyA1wz MDRcIlwzMDVVXDIwNCYAXDMwNkNcMjYyAlwzMDIDXDMwN1wiXDMwNVVcMjAzNQBcMjExXDMxMFdc MjAzOgBcMzExAkJcMjYyAlwzMDIDXDMxMlwiXDMwNVVcMjAzSgBcMjExAVwyMjdVXDIwNE8AXDMx MwJCXDI2MgJcMzAyA1wzMTRcIlwzMDVVXDIwNF0AXDMxNQJCXDI2MgJcMzAyA1wzMTZcIlwzMDVV XDIwNGsAXDMxNwJCXDI2MgJcMzAyA1wzMjBcIlwzMDVVXDIwNHkAXDMyMQJCXDI2MgIBXDIwNyIg W2ludGVybmFsLWV2ZW50LXN5bWJvbC1wYXJzZS1tb2RpZmllcnMgbmlsIGxvZ2FuZCAtMjY0MjQx MTUzIDEzNDIxNzcyOCAwIG1ldGEgNjcxMDg4NjQgMzIgY29udHJvbCAzMzU1NDQzMiBzaGlmdCAx Njc3NzIxNiBoeXBlciA4Mzg4NjA4IHN1cGVyIDQxOTQzMDQgYWx0XSA3ICgjJCAuIDUxMjE2KV0p I0AzMzUgUmV0dXJuIHRoZSBiYXNpYyB0eXBlIG9mIHRoZSBnaXZlbiBldmVudCAoYWxsIG1vZGlm aWVycyByZW1vdmVkKS4KVGhlIHZhbHVlIGlzIGEgcHJpbnRpbmcgY2hhcmFjdGVyIChub3QgdXBw ZXIgY2FzZSkgb3IgYSBzeW1ib2wuCkVWRU5UIG1heSBiZSBhbiBldmVudCBvciBhbiBldmVudCB0 eXBlLiAgSWYgRVZFTlQgaXMgYSBzeW1ib2wKdGhhdCBoYXMgbmV2ZXIgYmVlbiB1c2VkIGluIGFu IGV2ZW50IHRoYXQgaGFzIGJlZW4gcmVhZCBhcyBpbnB1dAppbiB0aGUgY3VycmVudCBFbWFjcyBz ZXNzaW9uLCB0aGVuIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBuaWwuCgooZm4gRVZFTlQpHwoo ZGVmYWxpYXMgJ2V2ZW50LWJhc2ljLXR5cGUgI1syNTcgIlwyMTE6XDIwMwkAXDIxMUBcMjYyAVwy MTE5XDIwMxMAXDIxMVwzMDBOQFwyMDdcMzAxAVwzMDJcIlwyMTFcMzAzV1wyMDMkAFwzMDQBXDMw NVwiXDIwMiUAXDIxMVwzMDYxLQBcMjExXDIyNzBcMjA3XDIxMFwyMDciIFtldmVudC1zeW1ib2wt ZWxlbWVudHMgbG9nYW5kIDQxOTQzMDMgMzIgbG9naW9yIDY0IChlcnJvcildIDUgKCMkIC4gNTIx NjEpXSkjQDY2IFJldHVybiBub24tbmlsIGlmIE9CSkVDVCBpcyBhIG1vdXNlIG1vdmVtZW50IGV2 ZW50LgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnbW91c2UtbW92ZW1lbnQtcCAjWzI1NyAiXDIx MVwyNDJcMzAwPVwyMDciIFttb3VzZS1tb3ZlbWVudF0gMyAoIyQgLiA1MjczNSldKQooYnl0ZS1j b2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1 dCBtb3VzZS1tb3ZlbWVudC1wIHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNvbXBp bGUtaW5saW5lLWV4cGFuZF0gNSkjQDYzIFJldHVybiBub24tbmlsIGlmIE9CSkVDVCBpcyBhIG1v dXNlIGNsaWNrIGV2ZW50LgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnbW91c2UtZXZlbnQtcCAj WzI1NyAiXDMwMAEhXDMwMT5cMjA3IiBbZXZlbnQtYmFzaWMtdHlwZSAobW91c2UtMSBtb3VzZS0y IG1vdXNlLTMgbW91c2UtbW92ZW1lbnQpXSAzICgjJCAuIDUzMDM1KV0pCihkZWZhbGlhcyAnZXZl bnQtLXBvc24tYXQtcG9pbnQgI1swICJcMzAwIFwzMDEBIVwyMTFcMjA0EABcMzAyIAJcMzAzXDMw NEZcMjA3XDMwNQFcMjMzXDIxMQNcMjQwXDI2NgJcMjA3IiBbd2luZG93LXBvaW50IHBvc24tYXQt cG9pbnQgc2VsZWN0ZWQtd2luZG93ICgwIC4gMCkgMCA1XSA2XSkjQDEwODkgUmV0dXJuIHRoZSBz dGFydGluZyBwb3NpdGlvbiBvZiBFVkVOVC4KRVZFTlQgc2hvdWxkIGJlIGEgbW91c2UgY2xpY2ss IGRyYWcsIG9yIGtleSBwcmVzcyBldmVudC4gIElmCkVWRU5UIGlzIG5pbCwgdGhlIHZhbHVlIG9m IGBwb3NuLWF0LXBvaW50JyBpcyB1c2VkIGluc3RlYWQuCgpUaGUgZm9sbG93aW5nIGFjY2Vzc29y IGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBhY2Nlc3MgdGhlIGVsZW1lbnRzCm9mIHRoZSBwb3NpdGlv bjoKCmBwb3NuLXdpbmRvdyc6IFRoZSB3aW5kb3cgb2YgdGhlIGV2ZW50IGVuZCwgb3IgaXRzIGZy YW1lIGlmIHRoZQpldmVudCBlbmQgcG9pbnQgYmVsb25ncyB0byBubyB3aW5kb3cuCmBwb3NuLWFy ZWEnOiBBIHN5bWJvbCBpZGVudGlmeWluZyB0aGUgYXJlYSB0aGUgZXZlbnQgb2NjdXJyZWQgaW4s Cm9yIG5pbCBpZiB0aGUgZXZlbnQgb2NjdXJyZWQgaW4gdGhlIHRleHQgYXJlYS4KYHBvc24tcG9p bnQnOiBUaGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBldmVudC4KYHBvc24teC15JzogVGhlIHBp eGVsLWJhc2VkIGNvb3JkaW5hdGVzIG9mIHRoZSBldmVudC4KYHBvc24tY29sLXJvdyc6IFRoZSBl c3RpbWF0ZWQgY29sdW1uIGFuZCByb3cgY29ycmVzcG9uZGluZyB0byB0aGUKcG9zaXRpb24gb2Yg dGhlIGV2ZW50LgpgcG9zbi1hY3R1YWwtY29sLXJvdyc6IFRoZSBhY3R1YWwgY29sdW1uIGFuZCBy b3cgY29ycmVzcG9uZGluZyB0byB0aGUKcG9zaXRpb24gb2YgdGhlIGV2ZW50LgpgcG9zbi1zdHJp bmcnOiBUaGUgc3RyaW5nIG9iamVjdCBvZiB0aGUgZXZlbnQsIHdoaWNoIGlzIGVpdGhlcgpuaWwg b3IgKFNUUklORyAuIFBPU0lUSU9OKScuCmBwb3NuLWltYWdlJzogVGhlIGltYWdlIG9iamVjdCBv ZiB0aGUgZXZlbnQsIGlmIGFueS4KYHBvc24tb2JqZWN0JzogVGhlIGltYWdlIG9yIHN0cmluZyBv YmplY3Qgb2YgdGhlIGV2ZW50LCBpZiBhbnkuCmBwb3NuLXRpbWVzdGFtcCc6IFRoZSB0aW1lIHRo ZSBldmVudCBvY2N1cnJlZCwgaW4gbWlsbGlzZWNvbmRzLgoKRm9yIG1vcmUgaW5mb3JtYXRpb24s IHNlZSBJbmZvIG5vZGUgYChlbGlzcClDbGljayBFdmVudHMnLgoKKGZuIEVWRU5UKR8KKGRlZmFs aWFzICdldmVudC1zdGFydCAjWzI1NyAiXDIxMTpcMjAzCwBcMjExQUBcMjA2DQBcMzAwIFwyMDci IFtldmVudC0tcG9zbi1hdC1wb2ludF0gMiAoIyQgLiA1MzM5NyldKSNAMTYxIFJldHVybiB0aGUg ZW5kaW5nIHBvc2l0aW9uIG9mIEVWRU5ULgpFVkVOVCBzaG91bGQgYmUgYSBjbGljaywgZHJhZywg b3Iga2V5IHByZXNzIGV2ZW50LgoKU2VlIGBldmVudC1zdGFydCcgZm9yIGEgZGVzY3JpcHRpb24g b2YgdGhlIHZhbHVlIHJldHVybmVkLgoKKGZuIEVWRU5UKR8KKGRlZmFsaWFzICdldmVudC1lbmQg I1syNTcgIlwyMTE6XDIwMxYAXDMwMAE4OlwyMDMQAFwzMDBcMjAyEQBcMzAxAThcMjA2GABcMzAy IFwyMDciIFsyIDEgZXZlbnQtLXBvc24tYXQtcG9pbnRdIDMgKCMkIC4gNTQ1OTUpXSkjQDExNSBS ZXR1cm4gdGhlIG11bHRpLWNsaWNrIGNvdW50IG9mIEVWRU5ULCBhIGNsaWNrIG9yIGRyYWcgZXZl bnQuClRoZSByZXR1cm4gdmFsdWUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLgoKKGZuIEVWRU5UKR8K KGRlZmFsaWFzICdldmVudC1jbGljay1jb3VudCAjWzI1NyAiXDIxMTpcMjAzEABcMzAwAThcMjUw XDIwMxAAXDMwMAE4XDIwN1wzMDFcMjA3IiBbMiAxXSAzICgjJCAuIDU0ODkwKV0pCihieXRlLWNv ZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0 IGV2ZW50LWNsaWNrLWNvdW50IHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNvbXBp bGUtaW5saW5lLWV4cGFuZF0gNSkjQDEwNSBSZXR1cm4gdGhlIGxpbmUgY291bnQgb2YgRVZFTlQs IGEgbW91c2V3aGVlbCBldmVudC4KVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVn ZXIuCgooZm4gRVZFTlQpHwooZGVmYWxpYXMgJ2V2ZW50LWxpbmUtY291bnQgI1syNTcgIlwyMTE6 XDIwMxAAXDMwMAE4XDI1MFwyMDMQAFwzMDABOFwyMDdcMzAxXDIwNyIgWzMgMV0gMyAoIyQgLiA1 NTI1OSldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIw NyIgW2Z1bmN0aW9uLXB1dCBldmVudC1saW5lLWNvdW50IHNwZWVkIC0xIHB1dCBieXRlLW9wdGlt aXplciBieXRlLWNvbXBpbGUtaW5saW5lLWV4cGFuZF0gNSkjQDI0NSBSZXR1cm4gbm9uLW5pbCBp ZiBPQkogYXBwZWFycyB0byBiZSBhIHZhbGlkIGBwb3NuJyBvYmplY3Qgc3BlY2lmeWluZyBhIHdp bmRvdy4KQSBgcG9zbicgb2JqZWN0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHN1Y2ggYXMg YGV2ZW50LXN0YXJ0Jy4KSWYgT0JKIGlzIGEgdmFsaWQgYHBvc24nIG9iamVjdCwgYnV0IHNwZWNp ZmllcyBhIGZyYW1lIHJhdGhlcgp0aGFuIGEgd2luZG93LCByZXR1cm4gbmlsLgoKKGZuIE9CSikf CihkZWZhbGlhcyAncG9zbnAgI1syNTcgIlwzMDABXDI0MiFcMjA1IQBcMjExQVwyMTFcMjYyAlwy NDI6P1wyMDUhAFwyMTFBXDIxMVwyNjICXDI0MlwyNDJcMjUwXDIwNSEAXDIxMUFcMjQyXDI1MFwy MDciIFt3aW5kb3dwXSAzICgjJCAuIDU1NjE2KV0pI0AyMzQgUmV0dXJuIHRoZSB3aW5kb3cgaW4g UE9TSVRJT04uCklmIFBPU0lUSU9OIGlzIG91dHNpZGUgdGhlIGZyYW1lIHdoZXJlIHRoZSBldmVu dCB3YXMgaW5pdGlhdGVkLApyZXR1cm4gdGhhdCBmcmFtZSBpbnN0ZWFkLiAgUE9TSVRJT04gc2hv dWxkIGJlIGEgbGlzdCBvZiB0aGUgZm9ybQpyZXR1cm5lZCBieSB0aGUgYGV2ZW50LXN0YXJ0JyBh bmQgYGV2ZW50LWVuZCcgZnVuY3Rpb25zLgoKKGZuIFBPU0lUSU9OKR8KKGRlZmFsaWFzICdwb3Nu LXdpbmRvdyAjWzI1NyAiXDIxMUBcMjA3IiBbXSAyICgjJCAuIDU2MDEwKV0pCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHBv c24td2luZG93IHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNvbXBpbGUtaW5saW5l LWV4cGFuZF0gNSkjQDE4MiBSZXR1cm4gdGhlIHdpbmRvdyBhcmVhIHJlY29yZGVkIGluIFBPU0lU SU9OLCBvciBuaWwgZm9yIHRoZSB0ZXh0IGFyZWEuClBPU0lUSU9OIHNob3VsZCBiZSBhIGxpc3Qg b2YgdGhlIGZvcm0gcmV0dXJuZWQgYnkgdGhlIGBldmVudC1zdGFydCcKYW5kIGBldmVudC1lbmQn IGZ1bmN0aW9ucy4KCihmbiBQT1NJVElPTikfCihkZWZhbGlhcyAncG9zbi1hcmVhICNbMjU3ICJc MjExQUA6XDIwMw4AXDIxMUFAQFwyMDIRAFwyMTFBQFwyMTE5XDIwNRcAXDIxMVwyMDciIFtdIDMg KCMkIC4gNTY0NDcpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVc MzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgcG9zbi1hcmVhIHNwZWVkIC0xIHB1dCBieXRlLW9wdGlt aXplciBieXRlLWNvbXBpbGUtaW5saW5lLWV4cGFuZF0gNSkjQDI1MCBSZXR1cm4gdGhlIGJ1ZmZl ciBsb2NhdGlvbiBpbiBQT1NJVElPTi4KUE9TSVRJT04gc2hvdWxkIGJlIGEgbGlzdCBvZiB0aGUg Zm9ybSByZXR1cm5lZCBieSB0aGUgYGV2ZW50LXN0YXJ0JwphbmQgYGV2ZW50LWVuZCcgZnVuY3Rp b25zLgpSZXR1cm5zIG5pbCBpZiBQT1NJVElPTiBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFueSBi dWZmZXIgbG9jYXRpb24gKGUuZy4KYSBjbGljayBvbiBhIHNjcm9sbCBiYXIpLgoKKGZuIFBPU0lU SU9OKR8KKGRlZmFsaWFzICdwb3NuLXBvaW50ICNbMjU3ICJcMzAwAThcMjA2FgBcMjExQUBcMjEx XDI0MlwyMDYUAFwyMTFcMjUwXDIwNRQAXDIxMVwyNjIBXDIwNyIgWzVdIDMgKCMkIC4gNTY4NzAp XSkjQDgxIE1vdmUgcG9pbnQgdG8gUE9TSVRJT04uClNlbGVjdCB0aGUgY29ycmVzcG9uZGluZyB3 aW5kb3cgYXMgd2VsbC4KCihmbiBQT1NJVElPTikfCihkZWZhbGlhcyAncG9zbi1zZXQtcG9pbnQg I1syNTcgIlwzMDABXDIxMUBcMjYyASFcMjAzJwBcMzAxXDMwMgJcMjExQFwyNjIBISFcMjA0GgBc MzAzXDMwNCFcMjEwXDMwNVwzMDICXDIxMUBcMjYyASEhXDIxMFwyMDI9AFwzMDEBXDIxMUBcMjYy ASFcMjA0NQBcMzAzXDMwNCFcMjEwXDMwNQFcMjExQFwyNjIBIVwyMTBcMzA2ASFcMjQ3XDIwNUgA XDMwNgEhYlwyMDciIFtmcmFtZXAgd2luZG93cCBmcmFtZS1zZWxlY3RlZC13aW5kb3cgZXJyb3Ig IlBvc2l0aW9uIG5vdCBpbiB0ZXh0IGFyZWEgb2Ygd2luZG93IiBzZWxlY3Qtd2luZG93IHBvc24t cG9pbnRdIDUgKCMkIC4gNTcyMzUpXSkjQDIxNiBSZXR1cm4gdGhlIHggYW5kIHkgY29vcmRpbmF0 ZXMgaW4gUE9TSVRJT04uClRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBmb3JtIChYIC4gWSksIHdo ZXJlIFggYW5kIFkgYXJlIGdpdmVuIGluCnBpeGVscy4gIFBPU0lUSU9OIHNob3VsZCBiZSBhIGxp c3Qgb2YgdGhlIGZvcm0gcmV0dXJuZWQgYnkKYGV2ZW50LXN0YXJ0JyBhbmQgYGV2ZW50LWVuZCcu CgooZm4gUE9TSVRJT04pHwooZGVmYWxpYXMgJ3Bvc24teC15ICNbMjU3ICJcMzAwAThcMjA3IiBb Ml0gMyAoIyQgLiA1NzY1NildKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAx XDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1dCBwb3NuLXgteSBzcGVlZCAtMSBwdXQgYnl0ZS1v cHRpbWl6ZXIgYnl0ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDUpI0A2OTQgUmV0dXJuIHRoZSBu b21pbmFsIGNvbHVtbiBhbmQgcm93IGluIFBPU0lUSU9OLCBtZWFzdXJlZCBpbiBjaGFyYWN0ZXJz LgpUaGUgY29sdW1uIGFuZCByb3cgdmFsdWVzIGFyZSBhcHByb3hpbWF0aW9ucyBjYWxjdWxhdGVk IGZyb20gdGhlIHgKYW5kIHkgY29vcmRpbmF0ZXMgaW4gUE9TSVRJT04gYW5kIHRoZSBmcmFtZSdz IGRlZmF1bHQgY2hhcmFjdGVyIHdpZHRoCmFuZCBkZWZhdWx0IGxpbmUgaGVpZ2h0LCBpbmNsdWRp bmcgc3BhY2luZy4KCklmIFVTRS1XSU5ET1cgaXMgbm9uLW5pbCwgdXNlIHRoZSB0eXBpY2FsIHdp ZHRoIG9mIGEgY2hhcmFjdGVyIGluCnRoZSB3aW5kb3cgaW5kaWNhdGVkIGJ5IFBPU0lUSU9OIGlu c3RlYWQgb2YgdGhlIGZyYW1lLiAgKFRoaXMKbWFrZXMgYSBkaWZmZXJlbmNlIGlzIGEgd2luZG93 IGhhcyBhIHpvb20gbGV2ZWwuKQoKRm9yIGEgc2Nyb2xsLWJhciBldmVudCwgdGhlIHJlc3VsdCBj b2x1bW4gaXMgMCwgYW5kIHRoZSByb3cKY29ycmVzcG9uZHMgdG8gdGhlIHZlcnRpY2FsIHBvc2l0 aW9uIG9mIHRoZSBjbGljayBpbiB0aGUgc2Nyb2xsIGJhci4KClBPU0lUSU9OIHNob3VsZCBiZSBh IGxpc3Qgb2YgdGhlIGZvcm0gcmV0dXJuZWQgYnkgdGhlIGBldmVudC1zdGFydCcKYW5kIGBldmVu dC1lbmQnIGZ1bmN0aW9ucy4KCihmbiBQT1NJVElPTiAmb3B0aW9uYWwgVVNFLVdJTkRPVykfCihk ZWZhbGlhcyAncG9zbi1jb2wtcm93ICNbNTEzICIBXDMwMQE4XDI2MgECXDIxMUBcMjYyAVwzMDIB IVwyMDMVAFwyMTFcMjAyGABcMzAzASFcMzA0AiFcMjA1HwABBVwyMTFBQDpcMjAzLgBcMjExQUBA XDIwMjEAXDIxMUFAXDIxMTlcMjA1NwBcMjExXDI2NlwyMDIDXDIwND8AXDMwNVwyMDdcMjExXDMw NlwyNjdcMjAyWQBcMzA3XDMxMAYGXDMxMQUhU1wiQlwyMDdcMzEwBVwzMTIEIVwiXDMwN0JcMjA3 BVwyMDNrAARAXDMxMwMhXDI0NQVBXDMxNAQhXDI0NUJcMjA3XDMxNQMhXDIwNVwyMDIAclwzMTZc MzE3BCEhcVwyMTAIKVwyMDZcMjAyAFwzMjADXDMwMFwiXDMyMQEhXDIwM1wyMjUAXDMyMgFcMzIz BgYhXyFcMjYyAVwyMDJcMjM0AFwyMTFcMjA0XDIzNABcMzA3XDI2MgEFQFwzMjQFIVwyNDUGBkFc MzIzBgYhA1xcXDI0NUJcMjA3IiBbbGluZS1zcGFjaW5nIDIgZnJhbWVwIHdpbmRvdy1mcmFtZSB3 aW5kb3dwICgwIC4gMCkgI3MoaGFzaC10YWJsZSBzaXplIDIgdGVzdCBlcSByZWhhc2gtc2l6ZSAx LjUgcmVoYXNoLXRocmVzaG9sZCAwLjgxMjUgcHVyZWNvcHkgdCBkYXRhICh2ZXJ0aWNhbC1zY3Jv bGwtYmFyIDY5IGhvcml6b250YWwtc2Nyb2xsLWJhciA4MCkpIDAgc2Nyb2xsLWJhci1zY2FsZSB3 aW5kb3ctaGVpZ2h0IHdpbmRvdy13aWR0aCB3aW5kb3ctZm9udC13aWR0aCB3aW5kb3ctZm9udC1o ZWlnaHQgZGlzcGxheS1ncmFwaGljLXAgd2luZG93LWJ1ZmZlciBmcmFtZS1zZWxlY3RlZC13aW5k b3cgZnJhbWUtcGFyYW1ldGVyIGZsb2F0cCB0cnVuY2F0ZSBmcmFtZS1jaGFyLWhlaWdodCBmcmFt ZS1jaGFyLXdpZHRoXSAxMiAoIyQgLiA1ODA3MSldKSNANTQzIFJldHVybiB0aGUgd2luZG93IHJv dyBudW1iZXIgaW4gUE9TSVRJT04gYW5kIGNoYXJhY3RlciBudW1iZXIgaW4gdGhhdCByb3cuCgpS ZXR1cm4gbmlsIGlmIFBPU0lUSU9OIGRvZXMgbm90IGNvbnRhaW4gdGhlIGFjdHVhbCBwb3NpdGlv bjsgaW4gdGhhdCBjYXNlCmBwb3NuLWNvbC1yb3cnIGNhbiBiZSB1c2VkIHRvIGdldCBhcHByb3hp bWF0ZSB2YWx1ZXMuClBPU0lUSU9OIHNob3VsZCBiZSBhIGxpc3Qgb2YgdGhlIGZvcm0gcmV0dXJu ZWQgYnkgdGhlIGBldmVudC1zdGFydCcKYW5kIGBldmVudC1lbmQnIGZ1bmN0aW9ucy4KClRoaXMg ZnVuY3Rpb24gZG9lcyBub3QgYWNjb3VudCBmb3IgdGhlIHdpZHRoIG9uIGRpc3BsYXksIGxpa2Ug dGhlCm51bWJlciBvZiB2aXN1YWwgY29sdW1ucyB0YWtlbiBieSBhIFRBQiBvciBpbWFnZS4gIElm IHlvdSBuZWVkCnRoZSBjb29yZGluYXRlcyBvZiBQT1NJVElPTiBpbiBjaGFyYWN0ZXIgdW5pdHMs IHlvdSBzaG91bGQgdXNlCmBwb3NuLWNvbC1yb3cnLCBub3QgdGhpcyBmdW5jdGlvbi4KCihmbiBQ T1NJVElPTikfCihkZWZhbGlhcyAncG9zbi1hY3R1YWwtY29sLXJvdyAjWzI1NyAiXDMwMAE4XDIw NyIgWzZdIDMgKCMkIC4gNTk2MDIpXSkjQDE0NSBSZXR1cm4gdGhlIHRpbWVzdGFtcCBvZiBQT1NJ VElPTi4KUE9TSVRJT04gc2hvdWxkIGJlIGEgbGlzdCBvZiB0aGUgZm9ybSByZXR1cm5lZCBieSB0 aGUgYGV2ZW50LXN0YXJ0JwphbmQgYGV2ZW50LWVuZCcgZnVuY3Rpb25zLgoKKGZuIFBPU0lUSU9O KR8KKGRlZmFsaWFzICdwb3NuLXRpbWVzdGFtcCAjWzI1NyAiXDMwMAE4XDIwNyIgWzNdIDMgKCMk IC4gNjAyMjEpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2 I1wyMDciIFtmdW5jdGlvbi1wdXQgcG9zbi10aW1lc3RhbXAgc3BlZWQgLTEgcHV0IGJ5dGUtb3B0 aW1pemVyIGJ5dGUtY29tcGlsZS1pbmxpbmUtZXhwYW5kXSA1KSNAMjEyIFJldHVybiB0aGUgc3Ry aW5nIG9iamVjdCBvZiBQT1NJVElPTi4KVmFsdWUgaXMgYSBjb25zIChTVFJJTkcgLiBTVFJJTkct UE9TKSwgb3IgbmlsIGlmIG5vdCBhIHN0cmluZy4KUE9TSVRJT04gc2hvdWxkIGJlIGEgbGlzdCBv ZiB0aGUgZm9ybSByZXR1cm5lZCBieSB0aGUgYGV2ZW50LXN0YXJ0JwphbmQgYGV2ZW50LWVuZCcg ZnVuY3Rpb25zLgoKKGZuIFBPU0lUSU9OKR8KKGRlZmFsaWFzICdwb3NuLXN0cmluZyAjWzI1NyAi XDMwMAE4XDIxMTpcMjA1CQBcMjExXDIwNyIgWzRdIDMgKCMkIC4gNjA1NzcpXSkjQDIwMSBSZXR1 cm4gdGhlIGltYWdlIG9iamVjdCBvZiBQT1NJVElPTi4KVmFsdWUgaXMgYSBsaXN0IChpbWFnZSAu Li4pLCBvciBuaWwgaWYgbm90IGFuIGltYWdlLgpQT1NJVElPTiBzaG91bGQgYmUgYSBsaXN0IG9m IHRoZSBmb3JtIHJldHVybmVkIGJ5IHRoZSBgZXZlbnQtc3RhcnQnCmFuZCBgZXZlbnQtZW5kJyBm dW5jdGlvbnMuCgooZm4gUE9TSVRJT04pHwooZGVmYWxpYXMgJ3Bvc24taW1hZ2UgI1syNTcgIlwz MDABOFwyMDciIFs3XSAzICgjJCAuIDYwODcyKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwz MDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHBvc24taW1hZ2Ugc3BlZWQg LTEgcHV0IGJ5dGUtb3B0aW1pemVyIGJ5dGUtY29tcGlsZS1pbmxpbmUtZXhwYW5kXSA1KSNAMjk1 IFJldHVybiB0aGUgb2JqZWN0IChpbWFnZSBvciBzdHJpbmcpIG9mIFBPU0lUSU9OLgpWYWx1ZSBp cyBhIGxpc3QgKGltYWdlIC4uLikgZm9yIGFuIGltYWdlIG9iamVjdCwgYSBjb25zIGNlbGwKKFNU UklORyAuIFNUUklORy1QT1MpIGZvciBhIHN0cmluZyBvYmplY3QsIGFuZCBuaWwgZm9yIGEgYnVm ZmVyIHBvc2l0aW9uLgpQT1NJVElPTiBzaG91bGQgYmUgYSBsaXN0IG9mIHRoZSBmb3JtIHJldHVy bmVkIGJ5IHRoZSBgZXZlbnQtc3RhcnQnCmFuZCBgZXZlbnQtZW5kJyBmdW5jdGlvbnMuCgooZm4g UE9TSVRJT04pHwooZGVmYWxpYXMgJ3Bvc24tb2JqZWN0ICNbMjU3ICJcMjExXDMwMAE4XDI2MgFc MjA2XGYAXDMwMQEhXDIwNyIgWzcgcG9zbi1zdHJpbmddIDQgKCMkIC4gNjEyNzYpXSkKKGJ5dGUt Y29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1w dXQgcG9zbi1vYmplY3Qgc3BlZWQgLTEgcHV0IGJ5dGUtb3B0aW1pemVyIGJ5dGUtY29tcGlsZS1p bmxpbmUtZXhwYW5kXSA1KSNAMzQxIFJldHVybiB0aGUgeCBhbmQgeSBjb29yZGluYXRlcyByZWxh dGl2ZSB0byB0aGUgZ2x5cGggb2Ygb2JqZWN0IG9mIFBPU0lUSU9OLgpUaGUgcmV0dXJuIHZhbHVl IGhhcyB0aGUgZm9ybSAoRFggLiBEWSksIHdoZXJlIERYIGFuZCBEWSBhcmUKZ2l2ZW4gaW4gcGl4 ZWxzLCBhbmQgdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZgp0aGUg Y2xpY2tlZCBnbHlwaCBvZiBvYmplY3QgYXQgUE9TSVRJT04uICBQT1NJVElPTiBzaG91bGQgYmUg YQpsaXN0IG9mIHRoZSBmb3JtIHJldHVybmVkIGJ5IGBldmVudC1zdGFydCcgYW5kIGBldmVudC1l bmQnLgoKKGZuIFBPU0lUSU9OKR8KKGRlZmFsaWFzICdwb3NuLW9iamVjdC14LXkgI1syNTcgIlwz MDABOFwyMDciIFs4XSAzICgjJCAuIDYxODEwKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwz MDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHBvc24tb2JqZWN0LXgteSBz cGVlZCAtMSBwdXQgYnl0ZS1vcHRpbWl6ZXIgYnl0ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDUp I0AyMDcgUmV0dXJuIHRoZSBwaXhlbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBvYmplY3Qgb2Yg UE9TSVRJT04uClRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBmb3JtIChXSURUSCAuIEhFSUdIVCku ICBQT1NJVElPTiBzaG91bGQKYmUgYSBsaXN0IG9mIHRoZSBmb3JtIHJldHVybmVkIGJ5IGBldmVu dC1zdGFydCcgYW5kIGBldmVudC1lbmQnLgoKKGZuIFBPU0lUSU9OKR8KKGRlZmFsaWFzICdwb3Nu LW9iamVjdC13aWR0aC1oZWlnaHQgI1syNTcgIlwzMDABOFwyMDciIFs5XSAzICgjJCAuIDYyMzY0 KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBb ZnVuY3Rpb24tcHV0IHBvc24tb2JqZWN0LXdpZHRoLWhlaWdodCBzcGVlZCAtMSBwdXQgYnl0ZS1v cHRpbWl6ZXIgYnl0ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDUpI0A2MCBTdG9yZSBWQUxVRSBp biB0aGUgb2Jzb2xldGUgYHZhbHVlcycgdmFyaWFibGUuCgooZm4gVkFMVUUpHwooZGVmYWxpYXMg J3ZhbHVlcy0tc3RvcmUtdmFsdWUgI1syNTcgIlwyMTEIQhBcMjA3IiBbdmFsdWVzXSAzICgjJCAu IDYyODAxKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDIxMFwzMDBcMzA0XDMwMlwz MDMjXDIxMFwzMDBcMzA1XDMwNlwzMDcjXDIxMFwzMDBcMzEwXDMwNlwzMDcjXDIxMFwzMDBcMzEx XDMxMlwzMDcjXDIxMFwzMDBcMzEzXDMxMlwzMDcjXDIwNyIgW21ha2Utb2Jzb2xldGUgaW52b2Nh dGlvbi1kaXJlY3RvcnkgInVzZSB0aGUgdmFyaWFibGUgb2YgdGhlIHNhbWUgbmFtZS4iICIyNy4x IiBpbnZvY2F0aW9uLW5hbWUgc3RyaW5nLWFzLXVuaWJ5dGUgInVzZSBgZW5jb2RlLWNvZGluZy1z dHJpbmcnLiIgIjI2LjEiIHN0cmluZy1tYWtlLXVuaWJ5dGUgc3RyaW5nLWFzLW11bHRpYnl0ZSAi dXNlIGBkZWNvZGUtY29kaW5nLXN0cmluZycuIiBzdHJpbmctbWFrZS1tdWx0aWJ5dGVdIDQpI0A1 MCBSZXR1cm4gKGxvZyBYIDEwKSwgdGhlIGxvZyBiYXNlIDEwIG9mIFguCgooZm4gWCkfCihkZWZh bGlhcyAnbG9nMTAgI1syNTcgIlwzMDABXDMwMVwiXDIwNyIgW2xvZyAxMF0gNCAoIyQgLiA2MzMy OSldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwNVwzMDZcMzA3I1wy MTBcMzA0XDMxMFwzMTFcMzEyI1wyMTBcMzA0XDMxM1wzMTRcMzE1I1wyMTBcMzA0XDMxNlwzMTdc MzIwI1wyMTBcMzA0XDMyMVwzMjJcMzIzI1wyMTBcMzA0XDMyNFwzMjVcMzIzI1wyMTBcMzA0XDMy NlwzMjdcMzMwI1wyMTBcMzMxXDMzMlwzMzNcMzE1I1wyMTBcMzMxXDMzNFwzMzVcMzM2I1wyMTBc MzMxXDMzN1wzMzVcMzQwI1wyMTBcMzMxXDM0MVwzNDJcMzMwI1wyMTBcMzAwXDM0M1wzMzVcMzIz I1wyMTBcMzMxXDM0NFwzNDVcMzQ2I1wyMTBcMzMxXDM0N1wzMzVcMzA3I1wyMTBcMzMxXDM1MFwz MzVcMzUxI1wyMTBcMzUyXDM1M1wzNTRcIlwyMTBcMzUyXDM1NVwzNTZcMzM1I1wyMTBcMzU3XDIx MVwyMDNcMjE1AFwyMTFAXDM1NQFOXDIwM1wyMDYAXDM1NgFOXDIwNFwyMDYAXDM2MFwzNTYCXDM1 NQROI1wyMTABQVwyNjZcMjAyXDIwMmwAXDIxMFwzMzFcMzU1XDM1NlwzNDAjXDIxMFwzMzFcMzYx XDM2MlwzMjMjXDIxMFwzNjNcMzY0XDM2NVwzMzUjXDIxMFwzMDBcMzY0XDM2NVwzMzAjXDIwNyIg W21ha2Utb2Jzb2xldGUgbG9nMTAgbG9nICIyNC40IiBzZXQtYWR2ZXJ0aXNlZC1jYWxsaW5nLWNv bnZlbnRpb24gYWxsLWNvbXBsZXRpb25zIChzdHJpbmcgY29sbGVjdGlvbiAmb3B0aW9uYWwgcHJl ZGljYXRlKSAiMjMuMSIgdW5pbnRlcm4gKG5hbWUgb2JhcnJheSkgIjIzLjMiIGluZGlyZWN0LWZ1 bmN0aW9uIChvYmplY3QpICIyNS4xIiByZWRpcmVjdC1mcmFtZS1mb2N1cyAoZnJhbWUgZm9jdXMt ZnJhbWUpICIyNC4zIiBsaWJ4bWwtcGFyc2UteG1sLXJlZ2lvbiAoc3RhcnQgZW5kICZvcHRpb25h bCBiYXNlLXVybCkgIjI3LjEiIGxpYnhtbC1wYXJzZS1odG1sLXJlZ2lvbiAoc3RhcnQgZW5kICZv cHRpb25hbCBiYXNlLXVybCkgdGltZS1jb252ZXJ0ICh0aW1lIGZvcm0pICIyOS4xIiBtYWtlLW9i c29sZXRlLXZhcmlhYmxlIGluaGliaXQtcG9pbnQtbW90aW9uLWhvb2tzICJ1c2UgYGN1cnNvci1p bnRhbmdpYmxlLW1vZGUnIG9yIGBjdXJzb3Itc2Vuc29yLW1vZGUnIGluc3RlYWQiIHJlZGlzcGxh eS1kb250LXBhdXNlIG5pbCAiMjQuNSIgb3BlcmF0aW5nLXN5c3RlbS1yZWxlYXNlICIyOC4xIiBp bmhpYml0LWNoYW5naW5nLW1hdGNoLWRhdGEgc2F2ZS1tYXRjaC1kYXRhIHJ1bi13aW5kb3ctY29u ZmlndXJhdGlvbi1jaGFuZ2UtaG9vayBjb21tYW5kLWRlYnVnLXN0YXR1cyAiZXhwZWN0IGl0IHRv IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4iICIyNS4yIiB0cmFuc2xhdGlvbi10YWJs ZS1mb3ItaW5wdXQgeC1ndGstdXNlLXdpbmRvdy1tb3ZlICIyNi4xIiBkZWZ2YXJhbGlhcyBtZXNz YWdlcy1idWZmZXItbWF4LWxpbmVzIG1lc3NhZ2UtbG9nLW1heCBpbmhpYml0LW51bC1ieXRlLWRl dGVjdGlvbiBpbmhpYml0LW51bGwtYnl0ZS1kZXRlY3Rpb24gKHNhdmVkLXZhbHVlIHNhdmVkLXZh cmlhYmxlLWNvbW1lbnQpIHB1dCBsb2FkLWRhbmdlcm91cy1saWJyYXJpZXMgIm5vIGxvbmdlciB1 c2VkLiIgZGVmYWxpYXMgY29tcGFyZS13aW5kb3ctY29uZmlndXJhdGlvbnMgd2luZG93LWNvbmZp Z3VyYXRpb24tZXF1YWwtcF0gNykjQDMyNSBGb3JtZXIgbGltaXQgb24gc3BlY2JpbmRpbmdzLCBu b3cgd2l0aG91dCBlZmZlY3QuClRoaXMgdmFyaWFibGUgdXNlZCB0byBsaW1pdCB0aGUgc2l6ZSBv ZiB0aGUgc3BlY3BkbCBzdGFjayB3aGljaCwKYW1vbmcgb3RoZXIgdGhpbmdzLCBob2xkcyBkeW5h bWljIHZhcmlhYmxlIGJpbmRpbmdzIGFuZCBgdW53aW5kLXByb3RlY3QnCmFjdGl2YXRpb25zLiAg VG8gcHJldmVudCBydW5hd2F5IHJlY3Vyc2lvbiwgdXNlIGBtYXgtbGlzcC1ldmFsLWRlcHRoJwpp bnN0ZWFkOyBpdCB3aWxsIGluZGlyZWN0bHkgbGltaXQgdGhlIHNwZWNwZGwgc3RhY2sgc2l6ZSBh cyB3ZWxsLh8KKGRlZnZhciBtYXgtc3BlY3BkbC1zaXplIDI1MDAgKCMkIC4gNjUwNjMpKQooYnl0 ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzAwXDMwNFwzMDVcMzAzI1wyMTBcMzA2XDMw N1wzMTBcIlwyMTBcMzA2XDMxMVwzMTJcIlwyMTBcMzA2XDMxM1wzMTRcIlwyMTBcMzA2XDMxNVwz MTZcIlwyMTBcMzA2XDMxN1wzMjBcIlwyMTBcMzA2XDMyMVwzMjJcIlwyMTBcMzA2XDMyM1wzMjRc IlwyMTBcMzA2XDMyNVwzMjZcIlwyMTBcMzA2XDMyN1wzMzBcIlwyMTBcMzA2XDMzMVwzMzJcIlwy MTBcMzA2XDMzM1wzMzRcIlwyMTBcMzA2XDMzNVwzMzZLXCJcMjEwXDMwNlwzMzdcMzQwS1wiXDIx MFwzMDZcMzQxXDM0MlwiXDIxMFwzMDZcMzQzXDM0NFwiXDIxMFwzMDZcMzQ1XDM0NlwiXDIxMFwz MDZcMzQ3XDM1MFwiXDIxMFwzMDZcMzUxXDM1MlwiXDIxMFwzNTNcMzUxXDM1NFwzMDMjXDIxMFwz MDZcMzU1XDM1NlwiXDIxMFwzNTNcMzU1XDM1N1wzMDMjXDIxMFwzMDZcMzYwXDM2MVwzMDIjXDIx MFwzNTNcMzYwXDM2MVwzNjIjXDIxMFwzNjNcMzY0XDM2NVwzMDJcMzY2JFwyMTBcMzYzXDM2N1wz NjVcMzAyXDM2NiRcMjA3IiBbbWFrZS1vYnNvbGV0ZS12YXJpYWJsZSBtYXgtc3BlY3BkbC1zaXpl IG5pbCAiMjkuMSIgbmF0aXZlLWNvbXAtZGVmZXJyZWQtY29tcGlsYXRpb24gaW5oaWJpdC1hdXRv bWF0aWMtbmF0aXZlLWNvbXBpbGF0aW9uIGRlZmFsaWFzIHNlbmQtc3RyaW5nIHByb2Nlc3Mtc2Vu ZC1zdHJpbmcgc2VuZC1yZWdpb24gcHJvY2Vzcy1zZW5kLXJlZ2lvbiBzdHJpbmc9IHN0cmluZy1l cXVhbCBzdHJpbmc8IHN0cmluZy1sZXNzcCBzdHJpbmc+IHN0cmluZy1ncmVhdGVycCBtb3ZlLW1h cmtlciBzZXQtbWFya2VyIHJwbGFjYSBzZXRjYXIgcnBsYWNkIHNldGNkciBiZWVwIGRpbmcgaW5k ZW50LXRvLWNvbHVtbiBpbmRlbnQtdG8gYmFja3dhcmQtZGVsZXRlLWNoYXIgZGVsZXRlLWJhY2t3 YXJkLWNoYXIgc2VhcmNoLWZvcndhcmQtcmVnZXhwIHJlLXNlYXJjaC1mb3J3YXJkIHNlYXJjaC1i YWNrd2FyZC1yZWdleHAgcmUtc2VhcmNoLWJhY2t3YXJkIGludC10by1zdHJpbmcgbnVtYmVyLXRv LXN0cmluZyBzdG9yZS1tYXRjaC1kYXRhIHNldC1tYXRjaC1kYXRhIGNobW9kIHNldC1maWxlLW1v ZGVzIG1rZGlyIG1ha2UtZGlyZWN0b3J5IHBvaW50LWF0LWVvbCBsaW5lLWVuZC1wb3NpdGlvbiBt YWtlLW9ic29sZXRlICJ1c2UgYGxpbmUtZW5kLXBvc2l0aW9uJyBvciBgcG9zLWVvbCcgaW5zdGVh ZC4iIHBvaW50LWF0LWJvbCBsaW5lLWJlZ2lubmluZy1wb3NpdGlvbiAidXNlIGBsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbicgb3IgYHBvcy1ib2wnIGluc3RlYWQuIiB1c2VyLW9yaWdpbmFsLWxvZ2lu LW5hbWUgdXNlci1sb2dpbi1uYW1lICIyOC4xIiBhdXRvbG9hZCBtYWtlLWRpcmVjdG9yeS1hdXRv bG9hZHMgImF1dG9sb2FkIiB0IHVwZGF0ZS1kaXJlY3RvcnktYXV0b2xvYWRzXSA1KSNAMTQ2MiBB ZGQgdG8gdGhlIHZhbHVlIG9mIEhPT0sgdGhlIGZ1bmN0aW9uIEZVTkNUSU9OLgpGVU5DVElPTiBp cyBub3QgYWRkZWQgaWYgYWxyZWFkeSBwcmVzZW50LgoKVGhlIHBsYWNlIHdoZXJlIHRoZSBmdW5j dGlvbiBpcyBhZGRlZCBkZXBlbmRzIG9uIHRoZSBERVBUSApwYXJhbWV0ZXIuICBERVBUSCBkZWZh dWx0cyB0byAwLiAgQnkgY29udmVudGlvbiwgaXQgc2hvdWxkIGJlCmEgbnVtYmVyIGJldHdlZW4g LTEwMCBhbmQgMTAwIHdoZXJlIDEwMCBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbgpzaG91bGQgYmUg YXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCB3aGVyZWFzIC0xMDAgbWVhbnMgdGhhdAp0aGUg ZnVuY3Rpb24gc2hvdWxkIGFsd2F5cyBjb21lIGZpcnN0LgpTaW5jZSBub3RoaW5nIGlzICJhbHdh eXMiIHRydWUsIGRvbid0IHVzZSAxMDAgbm9yIC0xMDAuCldoZW4gdHdvIGZ1bmN0aW9ucyBoYXZl IHRoZSBzYW1lIGRlcHRoLCB0aGUgbmV3IG9uZSBnZXRzIGFkZGVkIGFmdGVyIHRoZQpvbGQgb25l IGlmIGRlcHRoIGlzIHN0cmljdGx5IHBvc2l0aXZlIGFuZCBiZWZvcmUgb3RoZXJ3aXNlLgoKRm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYSBzeW1ib2wgb3RoZXIgdGhhbiBuaWwg aXMKaW50ZXJwcmV0ZWQgYXMgYSBERVBUSCBvZiA5MC4KClRoZSBvcHRpb25hbCBmb3VydGggYXJn dW1lbnQsIExPQ0FMLCBpZiBub24tbmlsLCBzYXlzIHRvIG1vZGlmeQp0aGUgaG9vaydzIGJ1ZmZl ci1sb2NhbCB2YWx1ZSByYXRoZXIgdGhhbiBpdHMgZ2xvYmFsIHZhbHVlLgpUaGlzIG1ha2VzIHRo ZSBob29rIGJ1ZmZlci1sb2NhbCwgYW5kIGl0IG1ha2VzIHQgYSBtZW1iZXIgb2YgdGhlCmJ1ZmZl ci1sb2NhbCB2YWx1ZS4gIFRoYXQgYWN0cyBhcyBhIGZsYWcgdG8gcnVuIHRoZSBob29rCmZ1bmN0 aW9ucyBvZiB0aGUgZ2xvYmFsIHZhbHVlIGFzIHdlbGwgYXMgaW4gdGhlIGxvY2FsIHZhbHVlLgoK SE9PSyBzaG91bGQgYmUgYSBzeW1ib2wuICBJZiBIT09LIGlzIHZvaWQsIGl0IGlzIGZpcnN0IHNl dCB0bwpuaWwuICBJZiBIT09LJ3MgdmFsdWUgaXMgYSBzaW5nbGUgZnVuY3Rpb24sIGl0IGlzIGNo YW5nZWQgdG8gYQpsaXN0IG9mIGZ1bmN0aW9ucy4KCkZVTkNUSU9OIG1heSBiZSBhbnkgdmFsaWQg ZnVuY3Rpb24sIGJ1dCBpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSBhCmZ1bmN0aW9uIHN5bWJvbCBh bmQgbm90IGEgbGFtYmRhIGZvcm0uICBVc2luZyBhIHN5bWJvbCB3aWxsCmVuc3VyZSB0aGF0IHRo ZSBmdW5jdGlvbiBpcyBub3QgcmUtYWRkZWQgaWYgdGhlIGZ1bmN0aW9uIGlzCmVkaXRlZCwgYW5k IHVzaW5nIGxhbWJkYSBmb3JtcyBtYXkgYWxzbyBoYXZlIGEgbmVnYXRpdmUKcGVyZm9ybWFuY2Ug aW1wYWN0IHdoZW4gcnVubmluZyBgYWRkLWhvb2snIGFuZCBgcmVtb3ZlLWhvb2snLgoKKGZuIEhP T0sgRlVOQ1RJT04gJm9wdGlvbmFsIERFUFRIIExPQ0FMKR8KKGRlZmFsaWFzICdhZGQtaG9vayAj WzEwMjYgIlwzMDAEIVwyMDRcbgADXDMwMUxcMjEwXDMwMgQhXDIwNBUAXDMwMwRcMzAxXCJcMjEw AVwyNDdcMjA0JQABXDIwM1wiAFwzMDRcMjAyIwBcMzA1XDI2MgJcMjExXDIwMzkAXDMwNgQhXDIw NE8AXDMwNwQhXDMxMENMXDIxMFwyMDJPAFwzMDYEIVwyMDNPAANKOlwyMDNMAFwzMTAESj5cMjA0 TwBcMzEwXDI2MgFcMjExXDIwM1gAA0pcMjAyWwBcMzExBCFcMjExPFwyMDNmAFwzMTIBIVwyMDNq AFwyMTFDXDI2MgEDAVwyMzVcMjA0FwEEXDMxM04DXDMwNVVcMjA0XDMyNwBcMjExXDIwNFwyMTUA XDMxNFwzMTUhXDI2MgFcMjExXDMwMUxcMjEwXDMxNgYGXDMxMwMjXDIxMAJcMjAzXDIyNQBcMzA3 ASFcMjEwAlwyMDNcMjUwAFwyMTFcMzE3XDMyMAJcIlwzMTdcMzIxA1wiQlwyNjIBXDIwMlwyNjQA XDIxMVwzMTdcMzIyAlwiXDMxN1wzMjMDXCJCXDI2MgEFAUAgXDIzNlwyMTFcMjAzXDMwNgBcMjEx BgZcMjQxXDI2NgNcMjAyXDMyNwABQQYHBgdCXDIxMVwyNjIDA0AgQiFcMjY2A1wzMDUEV1wyMDNc MzQ2AFwzMjQCBgZDXCJcMjAyXDM1MQAEAkJcMjYyAlwyMTFcMjAzFgECXDIwM1wzNzAAXDIxMUpc MjAyXDM3MwBcMzExASFcMjExXDIwMxUBXDMyNVwzMDUGBldcMjAzCwEDXDIwMg4BXDMyNgQhXDMx N1wzMjcEXCJcIlwyNjIDXDIxMFwyMTABXDIwMzYBAzlcMjAzMgEDXDMzME5cMjAzMgEEXDMzMU5c MjA0MgFcMzE2BVwzMzFcMzMwI1wyMTAEAUxcMjA3XDMwMwUCXCJcMjA3IiBbYm91bmRwIG5pbCBk ZWZhdWx0LWJvdW5kcCBzZXQtZGVmYXVsdCA5MCAwIGxvY2FsLXZhcmlhYmxlLWlmLXNldC1wIG1h a2UtbG9jYWwtdmFyaWFibGUgdCBkZWZhdWx0LXZhbHVlIGZ1bmN0aW9ucCBob29rLS1kZXB0aC1h bGlzdCBtYWtlLXN5bWJvbCAiZGVwdGgtYWxpc3QiIHB1dCBtYWtlLWNsb3N1cmUgI1swICJcMzAw SlwyMDciIFtWMF0gMV0gI1syNTcgIlwzMDABTFwyMDciIFtWMF0gMyAiXG5cbihmbiBWMTEwMSki XSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBkZWZhdWx0LXZhbHVlXSAyXSAjWzI1NyAiXDMwMVwz MDACXCJcMjA3IiBbVjAgc2V0LWRlZmF1bHRdIDQgIlxuXG4oZm4gVjExMDEpIl0gYXBwZW5kIHNv cnQgY29weS1zZXF1ZW5jZSAjWzUxNCAiXDMwMQJcMzAwXDMwMlwzMDNcMzA0JVwzMDECXDMwMFwz MDJcMzAzXDMwNCVXXDIwNyIgW1YwIGFsaXN0LWdldCAwIG5pbCBlcV0gOSAiXG5cbihmbiBGMSBG MikiXSBwZXJtYW5lbnQtbG9jYWwtaG9vayBwZXJtYW5lbnQtbG9jYWxdIDEyICgjJCAuIDY2ODYw KV0pI0A2MzggUmVtb3ZlIGZyb20gdGhlIHZhbHVlIG9mIEhPT0sgdGhlIGZ1bmN0aW9uIEZVTkNU SU9OLgpIT09LIHNob3VsZCBiZSBhIHN5bWJvbCwgYW5kIEZVTkNUSU9OIG1heSBiZSBhbnkgdmFs aWQgZnVuY3Rpb24uICBJZgpGVU5DVElPTiBpc24ndCB0aGUgdmFsdWUgb2YgSE9PSywgb3IsIGlm IEZVTkNUSU9OIGRvZXNuJ3QgYXBwZWFyIGluIHRoZQpsaXN0IG9mIGhvb2tzIHRvIHJ1biBpbiBI T09LLCB0aGVuIG5vdGhpbmcgaXMgZG9uZS4gIFNlZSBgYWRkLWhvb2snLgoKVGhlIG9wdGlvbmFs IHRoaXJkIGFyZ3VtZW50LCBMT0NBTCwgaWYgbm9uLW5pbCwgc2F5cyB0byBtb2RpZnkKdGhlIGhv b2sncyBidWZmZXItbG9jYWwgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQgdmFsdWUuCgpJ bnRlcmFjdGl2ZWx5LCBwcm9tcHQgZm9yIHRoZSB2YXJpb3VzIGFyZ3VtZW50cyAoc2tpcHBpbmcg bG9jYWwKdW5sZXNzIEhPT0sgaGFzIGJvdGggbG9jYWwgYW5kIGdsb2JhbCBmdW5jdGlvbnMpLiAg SWYgbXVsdGlwbGUKZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gdW5kZXIg YHByaW5jJywgdGhlIGZpcnN0Cm9uZSB3aWxsIGJlIHJlbW92ZWQuCgooZm4gSE9PSyBGVU5DVElP TiAmb3B0aW9uYWwgTE9DQUwpHwooZGVmYWxpYXMgJ3JlbW92ZS1ob29rICNbNzcwICJcMzAwAyFc MjA0XG4AAlwzMDFMXDIxMFwzMDIDIVwyMDQVAFwzMDMDXDMwMVwiXDIxMFwyMTFcMjA1HQBcMzA0 AyE/P1wyMDVcMjc2AFwzMDQDIVwyMDM3AAJKOlwyMDM0AFwzMDUDSj5cMjA0NwBcMzA1XDI2MgFc MjExXDIwM0AAAkpcMjAyQwBcMzA2AyFcMzAxATxcMjAzUAABQFwzMDc9XDIwM18AAQRcMjMyXDIw M28AAVwyNjIBXDMwMVwyNjICXDIwMm8AAwJcMjM1QFwyMTFcMjYyAlwyMDNvAFwzMTABA1wiXDI2 MgJcMjExXDIwM1wyNDYABFwzMTFOXDIxMVwyMDVcMjA2AANcMjAzXDIwMwBcMjExSlwyMDJcMjA2 AFwzMDYBIQIBXDIzNlwyMTFcMjAzXDI0NAAFXDIwM1wyMzQAAlwzMTACBFwiTFwyNjYEXDIwMlwy NDYAXDMwMwNcMzEwAwVcIlwiXDIxMFwyNjYDAlwyMDRcMjU3AFwzMDMFA1wiXDIwNwFcMzEyXDIz MlwyMDNcMjcxAFwzMTMFIVwyMDcEAkxcMjY2XDIwMlwyMDciIFtib3VuZHAgbmlsIGRlZmF1bHQt Ym91bmRwIHNldC1kZWZhdWx0IGxvY2FsLXZhcmlhYmxlLXAgdCBkZWZhdWx0LXZhbHVlIGxhbWJk YSByZW1xIGhvb2stLWRlcHRoLWFsaXN0ICh0KSBraWxsLWxvY2FsLXZhcmlhYmxlXSAxMyAoIyQg LiA2OTYwNikgKGJ5dGUtY29kZSAiXDMwMSA5XDIwNVxuAFwzMDJcMzAxICFcMzAzXDMwNFwzMDVc MzA2BFwiCFwzMDdcMzEwXDMxMVwyMTEGCCYHIVwzMTIBIVwyMDUyAFwyMTFKXDIwNTIAXDMxMwEh P1wyMDYyAFwzMTRcMzE1XDMxNgNcIiFcMzE3XDMyMAJcMjAzPQADSlwyMDJAAFwzMTMEIVwiXDMy MVwzMDRcMzE1XDMyMgVcMjAzTQBcMzIzXDIwMk4AXDMyNFwiA1wzMTFcMzEwXDMxMVwzMjUmBgJc MzExXDIxMVwzMjYlAwEERVwyMDciIFtvYmFycmF5IHZhcmlhYmxlLWF0LXBvaW50IHN5bWJvbC1u YW1lIGludGVybiBjb21wbGV0aW5nLXJlYWQgZm9ybWF0LXByb21wdCAiSG9vayB2YXJpYWJsZSIg Ym91bmRwIHQgbmlsIGxvY2FsLXZhcmlhYmxlLXAgZGVmYXVsdC12YWx1ZSB5LW9yLW4tcCBmb3Jt YXQgIiVzIGhhcyBhIGJ1ZmZlci1sb2NhbCBiaW5kaW5nLCB1c2UgdGhhdD8gIiBtYXBjYXIgI1sy NTcgIlwzMDFcMzAyXDMwM1wiGFwzMDRcMjE2CBhcMzA1ASEpXDIxMHIIcVwyMTBcMzA2ICsBQlwy MDciIFtzdGFuZGFyZC1vdXRwdXQgZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpzdHJpbmctb3V0cHV0 KiIgdCAjWzAgIlwzMDEIIVwyMDciIFtzdGFuZGFyZC1vdXRwdXQga2lsbC1idWZmZXJdIDJdIHBy aW4xIGJ1ZmZlci1zdHJpbmddIDQgIlxuXG4oZm4gWCkiXSBhbGlzdC1nZXQgIiVzIGhvb2sgdG8g cmVtb3ZlOiAiICJCdWZmZXItbG9jYWwiICJHbG9iYWwiIHNldC12YXJpYWJsZS12YWx1ZS1oaXN0 b3J5IHN0cmluZz1dIDEyKV0pI0AzNTMgQmluZCB2YXJpYWJsZXMgYWNjb3JkaW5nIHRvIEJJTkRF UlMgdGhlbiBldmFsIEJPRFkuClRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBmb3JtIGluIEJPRFkgaXMg cmV0dXJuZWQuCkVhY2ggZWxlbWVudCBvZiBCSU5ERVJTIGlzIGEgbGlzdCAoU1lNQk9MIFZBTFVF Rk9STSkgdGhhdCBiaW5kcwpTWU1CT0wgdG8gdGhlIHZhbHVlIG9mIFZBTFVFRk9STS4KClRoZSBt YWluIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIG1hY3JvIGFuZCBgbGV0Jy9gbGV0KicgaXMgdGhh dAphbGwgc3ltYm9scyBhcmUgYm91bmQgYmVmb3JlIGFueSBvZiB0aGUgVkFMVUVGT1JNcyBhcmUg ZXZhbGxlZC4KCihmbiBCSU5ERVJTICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ2xldHJlYyAnKG1h Y3JvIC4gI1szODUgIlwzMDFcMzAyAwhcIlwyMDQjAAJcMjAzIwBcMzAyA1wyMTFAQUBcIlwyMDQj AAJcMjExQVwyNjIEXDI0MgFCXDI2MgFcMjAyCAACXDIwNC0AXDMwMwIhXDIwMjwAXDMwNFwzMDVc MzA2BVwiXDMwN1wzMDVcMzEwBgdcIgVcIkJCAVwyMDRBAFwyMDdcMjExOVwyMDNYAAFBXDIwNFgA XDIxMQJAQD1cMjAzWAABQEFAXDIwN1wzMTECXDIzNwJFXDIwNyIgW21hY3JvZXhwYW5kLWFsbC1l bnZpcm9ubWVudCBuaWwgbWFjcm9leHAtLWZncmVwIG1hY3JvZXhwLXByb2duIGxldCBtYXBjYXIg Y2FyIGFwcGVuZCAjWzI1NyAiXDMwMAFCXDIwNyIgW3NldHFdIDMgIlxuXG4oZm4gQklOREVSKSJd IGxldCpdIDkgKCMkIC4gNzE2MTYpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDIx MFwzMDRcMzAxXDMwNVwzMDYjXDMwMFwyMDciIFtwdXQgbGV0cmVjIGVkZWJ1Zy1mb3JtLXNwZWMg bGV0IGZ1bmN0aW9uLXB1dCBsaXNwLWluZGVudC1mdW5jdGlvbiAxXSA0KSNANjQgTGlrZSBgbGV0 JyBidXQgdXNpbmcgZHluYW1pYyBzY29waW5nLgoKKGZuIEJJTkRFUlMgJnJlc3QgQk9EWSkfCihk ZWZhbGlhcyAnZGxldCAnKG1hY3JvIC4gI1szODUgIlwzMDBcMzAxXDMwMlwzMDNcMzA0BgZcIlwz MDAGBgYGQkJDXCJCQlwyMDciIFtsZXQgKF8pIGFwcGVuZCBtYXBjYXIgI1syNTcgIlwzMDABOlwy MDMLAAFAXDIwMlxmAAFEXDIwNyIgW2RlZnZhcl0gMyAiXG5cbihmbiBCSU5ERVIpIl1dIDkgKCMk IC4gNzI0OTUpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMw NiNcMjA3IiBbZnVuY3Rpb24tcHV0IGRsZXQgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMSBwdXQgZWRl YnVnLWZvcm0tc3BlYyBsZXRdIDUpI0AxMTYxIFJ1biBCT0RZLCB1c2luZyB3cmFwcGVyIGZ1bmN0 aW9ucyBmcm9tIEhPT0sgd2l0aCBhZGRpdGlvbmFsIEFSR1MuCkhPT0sgaXMgYW4gYWJub3JtYWwg aG9vay4gIEVhY2ggaG9vayBmdW5jdGlvbiBpbiBIT09LICJ3cmFwcyIKYXJvdW5kIHRoZSBwcmVj ZWRpbmcgb25lcywgbGlrZSBhIHNldCBvZiBuZXN0ZWQgYGFyb3VuZCcgYWR2aWNlcy4KCkVhY2gg aG9vayBmdW5jdGlvbiBzaG91bGQgYWNjZXB0IGFuIGFyZ3VtZW50IGxpc3QgY29uc2lzdGluZyBv ZiBhCmZ1bmN0aW9uIEZVTiwgZm9sbG93ZWQgYnkgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlu IEFSR1MuCgpUaGUgZmlyc3QgaG9vayBmdW5jdGlvbiBpbiBIT09LIGlzIHBhc3NlZCBhIEZVTiB0 aGF0LCBpZiBpdCBpcyBjYWxsZWQKd2l0aCBhcmd1bWVudHMgQVJHUywgcGVyZm9ybXMgQk9EWSAo aS5lLiwgdGhlIGRlZmF1bHQgb3BlcmF0aW9uKS4KVGhlIEZVTiBwYXNzZWQgdG8gZWFjaCBzdWNj ZXNzaXZlIGhvb2sgZnVuY3Rpb24gaXMgZGVmaW5lZCBiYXNlZApvbiB0aGUgcHJlY2VkaW5nIGhv b2sgZnVuY3Rpb25zOyBpZiBjYWxsZWQgd2l0aCBhcmd1bWVudHMgQVJHUywKaXQgZG9lcyB3aGF0 IHRoZSBgd2l0aC13cmFwcGVyLWhvb2snIGNhbGwgd291bGQgZG8gaWYgdGhlCnByZWNlZGluZyBo b29rIGZ1bmN0aW9ucyB3ZXJlIHRoZSBvbmx5IG9uZXMgcHJlc2VudCBpbiBIT09LLgoKRWFjaCBo b29rIGZ1bmN0aW9uIG1heSBjYWxsIGl0cyBGVU4gYXJndW1lbnQgYXMgbWFueSB0aW1lcyBhcyBp dCB3aXNoZXMsCmluY2x1ZGluZyBuZXZlci4gIEluIHRoYXQgY2FzZSwgc3VjaCBhIGhvb2sgZnVu Y3Rpb24gYWN0cyB0byByZXBsYWNlCnRoZSBkZWZhdWx0IGRlZmluaXRpb24gYWx0b2dldGhlciwg YW5kIGFueSBwcmVjZWRpbmcgaG9vayBmdW5jdGlvbnMuCk9mIGNvdXJzZSwgYSBzdWJzZXF1ZW50 IGhvb2sgZnVuY3Rpb24gbWF5IGRvIHRoZSBzYW1lIHRoaW5nLgoKRWFjaCBob29rIGZ1bmN0aW9u IGRlZmluaXRpb24gaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIEZVTiBwYXNzZWQKdG8gdGhlIG5l eHQgaG9vayBmdW5jdGlvbiwgaWYgYW55LiAgVGhlIGxhc3QgKG9yICJvdXRlcm1vc3QiKQpGVU4g aXMgdGhlbiBjYWxsZWQgb25jZS4KCihmbiBIT09LIEFSR1MgJnJlc3QgQk9EWSkfCihkZWZhbGlh cyAnd2l0aC13cmFwcGVyLWhvb2sgJyhtYWNybyAuICNbNjQyICJcMzAwAwMDQkJCXDIwNyIgW3N1 YnItLXdpdGgtd3JhcHBlci1ob29rLW5vLXdhcm5pbmdzXSA3ICgjJCAuIDcyODc0KV0pKQooYnl0 ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIxMFwzMDdcMzAxXDMx MFwzMTEjXDIwNyIgW2Z1bmN0aW9uLXB1dCB3aXRoLXdyYXBwZXItaG9vayBsaXNwLWluZGVudC1m dW5jdGlvbiAyIHB1dCBlZGVidWctZm9ybS1zcGVjIChmb3JtIHNleHAgYm9keSkgbWFrZS1vYnNv bGV0ZSAidXNlIGEgPGZvbz4tZnVuY3Rpb24gdmFyaWFibGUgbW9kaWZpZWQgYnkgYGFkZC1mdW5j dGlvbicuIiAiMjQuNCJdIDUpI0A5MSBMaWtlICh3aXRoLXdyYXBwZXItaG9vayBIT09LIEFSR1Mg Qk9EWSksIGJ1dCB3aXRob3V0IHdhcm5pbmdzLgoKKGZuIEhPT0sgQVJHUyAmcmVzdCBCT0RZKR8K KGRlZmFsaWFzICdzdWJyLS13aXRoLXdyYXBwZXItaG9vay1uby13YXJuaW5ncyAnKG1hY3JvIC4g I1s2NDIgIlwzMDBcMzAxIVwzMDBcMzAyIVwzMDBcMzAzIVwzMDBcMzA0IVwzMDUBXDMwNgYGBgYG BkVcMzA3XDMxMAYJRFwzMDdcMzExXDMxMlwzMTMGDURFXDMxNAYJXDMxNQYNXDMxNgYQREVcMzE3 Bg1cMjU3BVwzMjBcMzEzBg5EXDMyMVwzMDYGEAYQXDMyMgYRRlwzMTQGDwYTBhMGE1wyNTcFRVwz MTYGEUQGEEYGDUZGXDMyMFwzMDYGDgYOQkIGXG5FRkVEQ1wzMTQDBlxuXDIxMTlcMjA1fwBcMzA3 XDMyM1wzMjQGDkREXDMyNVwzMjQGD0RERVwzMjYGXGZCXDI1NwVFXDIwNyIgW21ha2Utc3ltYm9s ICJmdW5zIiAiZ2xvYmFsIiAiYXJncyIgInJ1bnJlc3RvZmhvb2siIGxldHJlYyBsYW1iZGEgaWYg Y29uc3AgZXEgdCBjYXIgZnVuY2FsbCBhcHBlbmQgY2RyIG5pbCBhcHBseSBhcHBseS1wYXJ0aWFs bHkgJnJlc3QgbG9jYWwtdmFyaWFibGUtcCBxdW90ZSBkZWZhdWx0LXZhbHVlIGxpc3RdIDI2ICgj JCAuIDc0NDA4KV0pKQoocHV0ICdzdWJyLS13aXRoLXdyYXBwZXItaG9vay1uby13YXJuaW5ncyAn ZWRlYnVnLWZvcm0tc3BlYyAnKGZvcm0gc2V4cCBkZWYtYm9keSkpI0A5NTcgQWRkIEVMRU1FTlQg dG8gdGhlIHZhbHVlIG9mIExJU1QtVkFSIGlmIGl0IGlzbid0IHRoZXJlIHlldC4KVGhlIHRlc3Qg Zm9yIHByZXNlbmNlIG9mIEVMRU1FTlQgaXMgZG9uZSB3aXRoIGBlcXVhbCcsIG9yIHdpdGgKQ09N UEFSRS1GTiBpZiB0aGF0J3Mgbm9uLW5pbC4KSWYgRUxFTUVOVCBpcyBhZGRlZCwgaXQgaXMgYWRk ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCwKdW5sZXNzIHRoZSBvcHRpb25hbCBhcmd1 bWVudCBBUFBFTkQgaXMgbm9uLW5pbCwgaW4gd2hpY2ggY2FzZQpFTEVNRU5UIGlzIGFkZGVkIGF0 IHRoZSBlbmQuCkxJU1QtVkFSIHNob3VsZCBub3QgcmVmZXIgdG8gYSBsZXhpY2FsIHZhcmlhYmxl LgoKVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgbmV3IHZhbHVlIG9mIExJU1QtVkFSLgoKVGhpcyBp cyBoYW5keSB0byBhZGQgc29tZSBlbGVtZW50cyB0byBjb25maWd1cmF0aW9uIHZhcmlhYmxlcywK YnV0IHBsZWFzZSBkbyBub3QgYWJ1c2UgaXQgaW4gRWxpc3AgY29kZSwgd2hlcmUgeW91IGFyZSB1 c3VhbGx5CmJldHRlciBvZmYgdXNpbmcgYHB1c2gnIG9yIGBjbC1wdXNobmV3Jy4KCklmIHlvdSB3 YW50IHRvIHVzZSBgYWRkLXRvLWxpc3QnIG9uIGEgdmFyaWFibGUgdGhhdCBpcyBub3QKZGVmaW5l ZCB1bnRpbCBhIGNlcnRhaW4gcGFja2FnZSBpcyBsb2FkZWQsIHlvdSBzaG91bGQgcHV0IHRoZQpj YWxsIHRvIGBhZGQtdG8tbGlzdCcgaW50byBhIGhvb2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHJ1 biBvbmx5CmFmdGVyIGxvYWRpbmcgdGhlIHBhY2thZ2UuICBgZXZhbC1hZnRlci1sb2FkJyBwcm92 aWRlcyBvbmUgd2F5IHRvCmRvIHRoaXMuICBJbiBzb21lIGNhc2VzIG90aGVyIGhvb2tzLCBzdWNo IGFzIG1ham9yIG1vZGUgaG9va3MsCmNhbiBkbyB0aGUgam9iLgoKKGZuIExJU1QtVkFSIEVMRU1F TlQgJm9wdGlvbmFsIEFQUEVORCBDT01QQVJFLUZOKR8KKGRlZmFsaWFzICdhZGQtdG8tbGlzdCAj WzEwMjYgIlwyMTFcMzAwXDI2N1wyMDIcAAIESlwyMzVcMjAyNAACBEo+XDIwMjQAXDMwMQMFSlwi XDIwMjQAA0pcMjExXDIwMzEAAQQCQFwiXDIwNDEAXDIxMUFcMjYyAVwyMDIeAFwyMTFcMjYyAVwy MDM6AANKXDIwNwMCXDIwM0gAXDMwMgVKBUNcIlwyMDJMAAMFSkJMXDIwNyIgWyNzKGhhc2gtdGFi bGUgc2l6ZSAzIHRlc3QgZXEgcmVoYXNoLXNpemUgMS41IHJlaGFzaC10aHJlc2hvbGQgMC44MTI1 IHB1cmVjb3B5IHQgZGF0YSAobmlsIDYgZXEgMTMgZXFsIDIwKSkgbWVtcWwgYXBwZW5kXSA4ICgj JCAuIDc1MTE0KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5j dGlvbi1wdXQgYWRkLXRvLWxpc3QgY29tcGlsZXItbWFjcm8gYWRkLXRvLWxpc3QtLWFub24tY21h Y3JvXSA0KSNANTcgCgooZm4gRVhQIExJU1QtVkFSIEVMRU1FTlQgJm9wdGlvbmFsIEFQUEVORCBD T01QQVJFLUZOKR8KKGRlZmFsaWFzICdhZGQtdG8tbGlzdC0tYW5vbi1jbWFjcm8gI1sxMjgzICID XDI0MlwzMDE9XDIwMxUAXDMwMgRBQCFcMjA0FQBcMzAzAiFcMjA0FwAEXDIwNwNBQFwzMDQDCFwi XDMwNVwzMDYDXCJcMzA3XDMxMAIFI1wzMTEGByFcMjAzMwAGBlwyMDI2AFwzMTJcMzEzIVwzMTQG BlwyMDNMAFwzMTVcMzE2IVwyMTBcMzE3AgYHXDMyMAZcblwyNTcFXDIwMlEAXDMyMQIGB0UGBgYG XDIwM2cAXDMyMgYIXDMyMwZcblwzMjQGCERFRVwyMDJsAFwzMjUEBglFRgEGCT1cMjAzegBcMjEx XDI2NlwyMDJcMjAyXDIwNABcMzI2AgZcbkRDAlwiXDI2NlwyMDJcMzI3IFwyMDRcMjEyAFwyMDdc MzMwXDMzMVwzMDEEREQCRVwyMDciIFtsZXhpY2FsLWJpbmRpbmcgcXVvdGUgc3BlY2lhbC12YXJp YWJsZS1wIG1hY3JvZXhwLWNvbnN0LXAgZXZhbCBmb3JtYXQtbWVzc2FnZSAiYGFkZC10by1saXN0 JyBjYW4ndCB1c2UgbGV4aWNhbCB2YXIgYCVzJzsgdXNlIGBwdXNoJyBvciBgY2wtcHVzaG5ldyci IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcblwyMzZcMjA1XG4AXDMwM1wzMDBcMzA0XCJcMjA3IiBb VjAgVjEgYnl0ZS1jb21waWxlLS1sZXhpY2FsLWVudmlyb25tZW50IGJ5dGUtY29tcGlsZS1yZXBv cnQtZXJyb3IgOmZpbGxdIDNdIG1hY3JvZXhwLWNvcHlhYmxlLXAgbWFrZS1zeW1ib2wgIngiIGlm IHJlcXVpcmUgY2wtbGliIGNsLW1lbWJlciA6dGVzdCBtZW1iZXIgc2V0cSBhcHBlbmQgbGlzdCBw dXNoIG1hY3JvZXhwLWxldCogbWFjcm9leHAtY29tcGlsaW5nLXAgcHJvZ24gbWFjcm9leHAtLWZ1 bmNhbGwtaWYtY29tcGlsZWRdIDE5ICgjJCAuIDc2NTA2KV0pI0A2NjggQWRkIEVMRU1FTlQgdG8g dGhlIHZhbHVlIG9mIExJU1QtVkFSIGlmIGl0IGlzbid0IHRoZXJlIHlldC4KVGhlIHRlc3QgZm9y IHByZXNlbmNlIG9mIEVMRU1FTlQgaXMgZG9uZSB3aXRoIGBlcScuCgpUaGUgdmFsdWUgb2YgTElT VC1WQVIgaXMga2VwdCBvcmRlcmVkIGJhc2VkIG9uIHRoZSBPUkRFUgpwYXJhbWV0ZXIuCgpJZiB0 aGUgdGhpcmQgb3B0aW9uYWwgYXJndW1lbnQgT1JERVIgaXMgYSBudW1iZXIgKGludGVnZXIgb3IK ZmxvYXQpLCBzZXQgdGhlIGVsZW1lbnQncyBsaXN0IG9yZGVyIHRvIHRoZSBnaXZlbiB2YWx1ZS4g IElmCk9SREVSIGlzIG5pbCBvciBvbWl0dGVkLCBkbyBub3QgY2hhbmdlIHRoZSBudW1lcmljIG9y ZGVyIG9mCkVMRU1FTlQuICBJZiBPUkRFUiBoYXMgYW55IG90aGVyIHZhbHVlLCByZW1vdmUgdGhl IG51bWVyaWMgb3JkZXIKb2YgRUxFTUVOVCBpZiBpdCBoYXMgb25lLgoKVGhlIGxpc3Qgb3JkZXIg Zm9yIGVhY2ggZWxlbWVudCBpcyBzdG9yZWQgaW4gTElTVC1WQVIncwpgbGlzdC1vcmRlcicgcHJv cGVydHkuCkxJU1QtVkFSIGNhbm5vdCByZWZlciB0byBhIGxleGljYWwgdmFyaWFibGUuCgpUaGUg cmV0dXJuIHZhbHVlIGlzIHRoZSBuZXcgdmFsdWUgb2YgTElTVC1WQVIuCgooZm4gTElTVC1WQVIg RUxFTUVOVCAmb3B0aW9uYWwgT1JERVIpHwooZGVmYWxpYXMgJ2FkZC10by1vcmRlcmVkLWxpc3Qg I1s3NzAgIgJcMzAwTkNcMjExXDI0MlwyMDQWAFwzMDEEXDMwMANcMzAyXDMwM1wzMDRcMzA1XDMw NiRcMjQwI1wyMTABXDIwMyYAXDMwNwMDXDI0N1wyMDVcIgADA1wyNDIjXDIxMAIESj5cMjA0NAAD AwVKQkxcMjEwA1wzMTAFSlwzMTFcMzEyBVwiXCJMXDIwNyIgW2xpc3Qtb3JkZXIgcHV0IG1ha2Ut aGFzaC10YWJsZSA6d2Vha25lc3Mga2V5IDp0ZXN0IGVxIHB1dGhhc2ggc29ydCBtYWtlLWNsb3N1 cmUgI1s1MTQgIlwzMDECXDMwMFwyNDJcIlwzMDECXDMwMFwyNDJcIgFcMjAzFgBcMjExXDIwMxYA AQFXXDIwNwFcMjA3IiBbVjAgZ2V0aGFzaF0gNiAiXG5cbihmbiBBIEIpIl1dIDEzICgjJCAuIDc3 MzkxKV0pI0A3MzMgQWRkIE5FV0VMVCB0byB0aGUgaGlzdG9yeSBsaXN0IHN0b3JlZCBpbiB0aGUg dmFyaWFibGUgSElTVE9SWS1WQVIuClJldHVybiB0aGUgbmV3IGhpc3RvcnkgbGlzdC4KSWYgTUFY RUxUIGlzIG5vbi1uaWwsIGl0IHNwZWNpZmllcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIGhp c3RvcnkuCk90aGVyd2lzZSwgdGhlIG1heGltdW0gaGlzdG9yeSBsZW5ndGggaXMgdGhlIHZhbHVl IG9mIHRoZSBgaGlzdG9yeS1sZW5ndGgnCnByb3BlcnR5IG9uIHN5bWJvbCBISVNUT1JZLVZBUiwg aWYgc2V0LCBvciB0aGUgdmFsdWUgb2YgdGhlIGBoaXN0b3J5LWxlbmd0aCcKdmFyaWFibGUuICBU aGUgcG9zc2libGUgdmFsdWVzIG9mIG1heGltdW0gbGVuZ3RoIGhhdmUgdGhlIHNhbWUgbWVhbmlu ZyBhcwp0aGUgdmFsdWVzIG9mIGBoaXN0b3J5LWxlbmd0aCcuClJlbW92ZSBkdXBsaWNhdGVzIG9m IE5FV0VMVCBpZiBgaGlzdG9yeS1kZWxldGUtZHVwbGljYXRlcycgaXMgbm9uLW5pbC4KSWYgb3B0 aW9uYWwgZm91cnRoIGFyZyBLRUVQLUFMTCBpcyBub24tbmlsLCBhZGQgTkVXRUxUIHRvIGhpc3Rv cnkgZXZlbgppZiBpdCBpcyBlbXB0eSBvciBkdXBsaWNhdGVzIHRoZSBtb3N0IHJlY2VudCBlbnRy eSBpbiB0aGUgaGlzdG9yeS4KSElTVE9SWS1WQVIgY2Fubm90IHJlZmVyIHRvIGEgbGV4aWNhbCB2 YXJpYWJsZS4KCihmbiBISVNUT1JZLVZBUiBORVdFTFQgJm9wdGlvbmFsIE1BWEVMVCBLRUVQLUFM TCkfCihkZWZhbGlhcyAnYWRkLXRvLWhpc3RvcnkgI1sxMDI2ICIBXDIwNA0AA1wzMDBOXDIwNgsA CFwyNjICA0pcMzAyATxcMjA1YwACXDIwNCUABDtcMjAzJQAER1wzMDNWXDIwNWMAAlwyMDQxAAFA BVwyMzI/XDIwNWMACVwyMDM7AFwzMDQFA1wiXDI2MgIEAkJcMjYyAgNcMjUwXDIwM2AAXDMwMwRZ XDIwM1EAXDMwMlwyNjICXDIwMmAAA1MCXDIzM1wyNjIBXDIxMTpcMjAzYABcMjExXDMwMlwyNDFc MjEwBQJMXDIwNyIgW2hpc3RvcnktbGVuZ3RoIGhpc3RvcnktZGVsZXRlLWR1cGxpY2F0ZXMgbmls IDAgZGVsZXRlXSA5ICgjJCAuIDc4NDQ0KV0pI0A2MiBJZiBub24tbmlsLCBgcnVuLW1vZGUtaG9v a3MnIHNob3VsZCBkZWxheSBydW5uaW5nIHRoZSBob29rcy4fCihkZWZ2YXIgZGVsYXktbW9kZS1o b29rcyBuaWwgKCMkIC4gNzk0OTApKSNANDcgTGlzdCBvZiBkZWxheWVkIG1vZGUgaG9va3Mgd2Fp dGluZyB0byBiZSBydW4uHwooZGVmdmFyIGRlbGF5ZWQtbW9kZS1ob29rcyBuaWwgKCMkIC4gNzk1 OTkpKQooYnl0ZS1jb2RlICJcMzAwXDMwMSFcMjEwXDMwMlwzMDNcMzA0XDMwNSNcMjA3IiBbbWFr ZS12YXJpYWJsZS1idWZmZXItbG9jYWwgZGVsYXllZC1tb2RlLWhvb2tzIHB1dCBkZWxheS1tb2Rl LWhvb2tzIHBlcm1hbmVudC1sb2NhbCB0XSA0KSNAOTkgTGlzdCBvZiBkZWxheWVkIDphZnRlci1o b29rIGZvcm1zIHdhaXRpbmcgdG8gYmUgcnVuLgpUaGVzZSBmb3JtcyBjb21lIGZyb20gYGRlZmlu ZS1kZXJpdmVkLW1vZGUnLh8KKGRlZnZhciBkZWxheWVkLWFmdGVyLWhvb2stZnVuY3Rpb25zIG5p bCAoIyQgLiA3OTgzMykpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnZGVsYXllZC1hZnRl ci1ob29rLWZ1bmN0aW9ucykjQDY1IE5vcm1hbCBob29rIHJ1biBpbiBtYWpvciBtb2RlIGZ1bmN0 aW9ucywgYmVmb3JlIHRoZSBtb2RlIGhvb2tzLh8KKGRlZnZhciBjaGFuZ2UtbWFqb3ItbW9kZS1h ZnRlci1ib2R5LWhvb2sgbmlsICgjJCAuIDgwMDUwKSkjQDU4IE5vcm1hbCBob29rIHJ1biBhdCB0 aGUgdmVyeSBlbmQgb2YgbWFqb3IgbW9kZSBmdW5jdGlvbnMuHwooZGVmdmFyIGFmdGVyLWNoYW5n ZS1tYWpvci1tb2RlLWhvb2sgbmlsICgjJCAuIDgwMTc5KSkjQDY4NCBSdW4gbW9kZSBob29rcyBg ZGVsYXllZC1tb2RlLWhvb2tzJyBhbmQgSE9PS1MsIG9yIGRlbGF5IEhPT0tTLgpDYWxsIGBoYWNr LWxvY2FsLXZhcmlhYmxlcycgdG8gc2V0IHVwIGZpbGUgbG9jYWwgYW5kIGRpcmVjdG9yeSBsb2Nh bAp2YXJpYWJsZXMuCgpJZiB0aGUgdmFyaWFibGUgYGRlbGF5LW1vZGUtaG9va3MnIGlzIG5vbi1u aWwsIGRvZXMgbm90IGRvIGFueXRoaW5nLApqdXN0IGFkZHMgdGhlIEhPT0tTIHRvIHRoZSBsaXN0 IGBkZWxheWVkLW1vZGUtaG9va3MnLgpPdGhlcndpc2UsIHJ1bnMgaG9va3MgaW4gdGhlIHNlcXVl bmNlOiBgY2hhbmdlLW1ham9yLW1vZGUtYWZ0ZXItYm9keS1ob29rJywKYGRlbGF5ZWQtbW9kZS1o b29rcycgKGluIHJldmVyc2Ugb3JkZXIpLCBIT09LUywgdGhlbiBydW5zCmBoYWNrLWxvY2FsLXZh cmlhYmxlcycsIHJ1bnMgdGhlIGhvb2sgYGFmdGVyLWNoYW5nZS1tYWpvci1tb2RlLWhvb2snLCBh bmQKZmluYWxseSBldmFsdWF0ZXMgdGhlIGZ1bmN0aW9ucyBpbiBgZGVsYXllZC1hZnRlci1ob29r LWZ1bmN0aW9ucycgKHNlZQpgZGVmaW5lLWRlcml2ZWQtbW9kZScpLgoKTWFqb3IgbW9kZSBmdW5j dGlvbnMgc2hvdWxkIHVzZSB0aGlzIGluc3RlYWQgb2YgYHJ1bi1ob29rcycgd2hlbgpydW5uaW5n IHRoZWlyIEZPTy1tb2RlLWhvb2suCgooZm4gJnJlc3QgSE9PS1MpHwooZGVmYWxpYXMgJ3J1bi1t b2RlLWhvb2tzICNbMTI4ICIIXDIwMxcAXDIxMVwyMTFcMjA1FgBcMjExQFwyMTEJQhEBQVwyNjZc MjAyXDIwMgUAXDIwNwlcMjM3AVwyNDRcMjYyAVwzMDVcMzAyIVwyMDMzAFxuXDIwMzMAXDMwNlwz MDMhXDIwNDMAXDMwN1wzMDMhXDIxMFwzMTATXDMxMRFcMzEyXDMxM1wzMTQDQlwiXDIxMFwzMTUg XDIwM1MAXDMxNjFNAFwzMTdcMzIwITBcMjEwXDIwMlMAXDMyMVwzMjICXCJcMjY2AlwzMTNcMzIz IVwyMTBcZlwyMzdcMzExFFwyMTFcMjA1awBcMjExQFwyMTEgXDIxMAFBXDI2NlwyMDJcMjAyWwBc MjA3IiBbZGVsYXktbW9kZS1ob29rcyBkZWxheWVkLW1vZGUtaG9va3Mgc3ludGF4LXByb3BlcnRp emUtZnVuY3Rpb24gcGFyc2Utc2V4cC1sb29rdXAtcHJvcGVydGllcyBkZWxheWVkLWFmdGVyLWhv b2stZnVuY3Rpb25zIGJvdW5kcCBsb2NhbC12YXJpYWJsZS1wIG1ha2UtbG9jYWwtdmFyaWFibGUg dCBuaWwgYXBwbHkgcnVuLWhvb2tzIGNoYW5nZS1tYWpvci1tb2RlLWFmdGVyLWJvZHktaG9vayBi dWZmZXItZmlsZS1uYW1lIChkZWJ1ZyBlcnJvcikgaGFjay1sb2NhbC12YXJpYWJsZXMgbm8tbW9k ZSBtZXNzYWdlICJGaWxlIGxvY2FsLXZhcmlhYmxlcyBlcnJvcjogJXMiIGFmdGVyLWNoYW5nZS1t YWpvci1tb2RlLWhvb2tdIDUgKCMkIC4gODAyOTcpXSkjQDIzNiBFeGVjdXRlIEJPRFksIGJ1dCBk ZWxheSBhbnkgYHJ1bi1tb2RlLWhvb2tzJy4KVGhlc2UgaG9va3Mgd2lsbCBiZSBleGVjdXRlZCBi eSB0aGUgZmlyc3QgZm9sbG93aW5nIGNhbGwgdG8KYHJ1bi1tb2RlLWhvb2tzJyB0aGF0IG9jY3Vy cyBvdXRzaWRlIGFueSBgZGVsYXktbW9kZS1ob29rcycgZm9ybS4KQWZmZWN0cyBvbmx5IGhvb2tz IHJ1biBpbiB0aGUgY3VycmVudCBidWZmZXIuCgooZm4gJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAn ZGVsYXktbW9kZS1ob29rcyAnKG1hY3JvIC4gI1sxMjggIlwzMDBcMzAxXDMwMlwzMDMEQkJFXDIw NyIgW3Byb2duIChtYWtlLWxvY2FsLXZhcmlhYmxlICdkZWxheS1tb2RlLWhvb2tzKSBsZXQgKChk ZWxheS1tb2RlLWhvb2tzIHQpKV0gNiAoIyQgLiA4MTY2MildKSkKKGJ5dGUtY29kZSAiXDMwMFwz MDFcMzAyXDMwMyNcMjEwXDMwNFwzMDFcMzA1XDMwNiNcMzAwXDIwNyIgW3B1dCBkZWxheS1tb2Rl LWhvb2tzIGVkZWJ1Zy1mb3JtLXNwZWMgdCBmdW5jdGlvbi1wdXQgbGlzcC1pbmRlbnQtZnVuY3Rp b24gMF0gNCkjQDcyIENoZWNrIGFuZCBidWlsZCBhIHNpbmdsZSBCSU5ESU5HIHdpdGggUFJFVi1W QVIuCgooZm4gQklORElORyBQUkVWLVZBUikfCihkZWZhbGlhcyAnaW50ZXJuYWwtLWJ1aWxkLWJp bmRpbmcgI1s1MTQgIgE5XDIwMwsAAVwyMTFEXDIwMhoAAUFcMjA0GQBcMzAwXDMwMSECQERcMjAy GgABXDI2MgIBR1wzMDJWXDIwMyoAXDMwM1wzMDRcMzA1BEJcIlwyMTABQFwyMTFcMzA2AwVBQEVE XDIwNyIgW21ha2Utc3ltYm9sICJzIiAyIHNpZ25hbCBlcnJvciAiYGxldCcgYmluZGluZ3MgY2Fu IGhhdmUgb25seSBvbmUgdmFsdWUtZm9ybSIgYW5kXSA3ICgjJCAuIDgyMjA3KV0pI0A3MCBDaGVj ayBhbmQgYnVpbGQgY29uZGl0aW9uYWwgdmFsdWUgZm9ybXMgZm9yIEJJTkRJTkdTLgoKKGZuIEJJ TkRJTkdTKR8KKGRlZmFsaWFzICdpbnRlcm5hbC0tYnVpbGQtYmluZGluZ3MgI1syNTcgIlwzMDBD XDMwMVwzMDJcMzAzA1wiA1wiXDIwNyIgW3QgbWFwY2FyIG1ha2UtY2xvc3VyZSAjWzI1NyAiXDMw MQFcMzAwXDI0MlwiXDMwMAFAXDI0MFwyMTBcMjA3IiBbVjAgaW50ZXJuYWwtLWJ1aWxkLWJpbmRp bmddIDQgIlxuXG4oZm4gQklORElORykiXV0gNiAoIyQgLiA4MjUzMildKSNAMTg3IEJpbmQgdmFy aWFibGVzIGFjY29yZGluZyB0byBWQVJMSVNUIGFuZCBldmFsdWF0ZSBUSEVOIG9yIEVMU0UuClRo aXMgaXMgbGlrZSBgaWYtbGV0JyBidXQgZG9lc24ndCBoYW5kbGUgYSBWQVJMSVNUIG9mIHRoZSBm b3JtCihTWU1CT0wgU09NRVRISU5HKSBzcGVjaWFsbHkuCgooZm4gVkFSTElTVCBUSEVOICZyZXN0 IEVMU0UpHwooZGVmYWxpYXMgJ2lmLWxldCogJyhtYWNybyAuICNbNjQyICICXDIwMxkAXDMwMFwz MDEEIVwyMTFcMjYyBVwzMDJcMzAzBgYhQEAFBUJCQkVcMjA3XDMwMFwzMDQDRVwyMDciIFtsZXQq IGludGVybmFsLS1idWlsZC1iaW5kaW5ncyBpZiBsYXN0IG5pbF0gOSAoIyQgLiA4MjgxMyldKSkK KGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5j dGlvbi1wdXQgaWYtbGV0KiBsaXNwLWluZGVudC1mdW5jdGlvbiAyIHB1dCBlZGVidWctZm9ybS1z cGVjICgoJnJlc3QgWyZvciBzeW1ib2xwIChzeW1ib2xwIGZvcm0pIChmb3JtKV0pIGJvZHkpXSA1 KSNAMTkwIEJpbmQgdmFyaWFibGVzIGFjY29yZGluZyB0byBWQVJMSVNUIGFuZCBjb25kaXRpb25h bGx5IGV2YWx1YXRlIEJPRFkuClRoaXMgaXMgbGlrZSBgd2hlbi1sZXQnIGJ1dCBkb2Vzbid0IGhh bmRsZSBhIFZBUkxJU1Qgb2YgdGhlIGZvcm0KKFNZTUJPTCBTT01FVEhJTkcpIHNwZWNpYWxseS4K CihmbiBWQVJMSVNUICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ3doZW4tbGV0KiAnKG1hY3JvIC4g I1szODUgIlwzMDACXDMwMQMhRVwyMDciIFtpZi1sZXQqIG1hY3JvZXhwLXByb2duXSA2ICgjJCAu IDgzMzQxKV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYj XDIwNyIgW2Z1bmN0aW9uLXB1dCB3aGVuLWxldCogbGlzcC1pbmRlbnQtZnVuY3Rpb24gMSBwdXQg ZWRlYnVnLWZvcm0tc3BlYyBpZi1sZXQqXSA1KSNAMTk5IEJpbmQgdmFyaWFibGVzIGFjY29yZGlu ZyB0byBWQVJMSVNUIGFuZCBjb25kaXRpb25hbGx5IGV2YWx1YXRlIEJPRFkuCkxpa2UgYHdoZW4t bGV0KicsIGV4Y2VwdCBpZiBCT0RZIGlzIGVtcHR5IGFuZCBhbGwgdGhlIGJpbmRpbmdzCmFyZSBu b24tbmlsLCB0aGVuIHRoZSByZXN1bHQgaXMgbm9uLW5pbC4KCihmbiBWQVJMSVNUICZyZXN0IEJP RFkpHwooZGVmYWxpYXMgJ2FuZC1sZXQqICcobWFjcm8gLiAjWzM4NSAiXDMwMAJcMjAzIABcMzAx XDMwMgQhXDIxMVwyNjIFXDMwM1wzMDQGBiFAQFwyMTFcMjYyBQVcMjA2HAAEQ0JCRVwyMDdcMzAx XDMwMANcMjA2JwBcMzA1QkJcMjA3IiBbbmlsIGxldCogaW50ZXJuYWwtLWJ1aWxkLWJpbmRpbmdz IHdoZW4gbGFzdCAodCldIDggKCMkIC4gODM3NjcpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMw MlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IGFuZC1sZXQqIGxpc3At aW5kZW50LWZ1bmN0aW9uIDEgcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgaWYtbGV0Kl0gNSkjQDc3OCBC aW5kIHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gU1BFQyBhbmQgZXZhbHVhdGUgVEhFTiBvciBFTFNF LgpFdmFsdWF0ZSBlYWNoIGJpbmRpbmcgaW4gdHVybiwgYXMgaW4gYGxldConLCBzdG9wcGluZyBp ZiBhCmJpbmRpbmcgdmFsdWUgaXMgbmlsLiAgSWYgYWxsIGFyZSBub24tbmlsIHJldHVybiB0aGUg dmFsdWUgb2YKVEhFTiwgb3RoZXJ3aXNlIHRoZSBsYXN0IGZvcm0gaW4gRUxTRS4KCkVhY2ggZWxl bWVudCBvZiBTUEVDIGlzIGEgbGlzdCAoU1lNQk9MIFZBTFVFRk9STSkgdGhhdCBiaW5kcwpTWU1C T0wgdG8gdGhlIHZhbHVlIG9mIFZBTFVFRk9STS4gIEFuIGVsZW1lbnQgY2FuIGFkZGl0aW9uYWxs eSBiZQpvZiB0aGUgZm9ybSAoVkFMVUVGT1JNKSwgd2hpY2ggaXMgZXZhbHVhdGVkIGFuZCBjaGVj a2VkIGZvciBuaWw7CmkuZS4gU1lNQk9MIGNhbiBiZSBvbWl0dGVkIGlmIG9ubHkgdGhlIHRlc3Qg cmVzdWx0IGlzIG9mCmludGVyZXN0LiAgSXQgY2FuIGFsc28gYmUgb2YgdGhlIGZvcm0gU1lNQk9M LCB0aGVuIHRoZSBiaW5kaW5nIG9mClNZTUJPTCBpcyBjaGVja2VkIGZvciBuaWwuCgpBcyBhIHNw ZWNpYWwgY2FzZSwgaW50ZXJwcmV0cyBhIFNQRUMgb2YgdGhlIGZvcm0gKFNZTUJPTCBTT01FVEhJ TkcpCmxpa2UgKChTWU1CT0wgU09NRVRISU5HKSkuICBUaGlzIGV4aXN0cyBmb3IgYmFja3dhcmQg Y29tcGF0aWJpbGl0eQp3aXRoIGFuIG9sZCBzeW50YXggdGhhdCBhY2NlcHRlZCBvbmx5IG9uZSBi aW5kaW5nLgoKKGZuIFNQRUMgVEhFTiAmcmVzdCBFTFNFKR8KKGRlZmFsaWFzICdpZi1sZXQgJyht YWNybyAuICNbNjQyICICR1wzMDBYXDIwMxEAAkA8XDIwNBEAAkNcMjYyA1wzMDEDA1wzMDIEIUZc MjA3IiBbMiBpZi1sZXQqIG1hY3JvZXhwLXByb2duXSA4ICgjJCAuIDg0MzAyKV0pKQooYnl0ZS1j b2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1 dCBpZi1sZXQgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMiBwdXQgZWRlYnVnLWZvcm0tc3BlYyAoWyZv ciAoc3ltYm9scCBmb3JtKSAoJnJlc3QgWyZvciBzeW1ib2xwIChzeW1ib2xwIGZvcm0pIChmb3Jt KV0pXSBib2R5KV0gNSkjQDI3MSBCaW5kIHZhcmlhYmxlcyBhY2NvcmRpbmcgdG8gU1BFQyBhbmQg Y29uZGl0aW9uYWxseSBldmFsdWF0ZSBCT0RZLgpFdmFsdWF0ZSBlYWNoIGJpbmRpbmcgaW4gdHVy biwgc3RvcHBpbmcgaWYgYSBiaW5kaW5nIHZhbHVlIGlzIG5pbC4KSWYgYWxsIGFyZSBub24tbmls LCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBsYXN0IGZvcm0gaW4gQk9EWS4KClRoZSB2YXJpYWJs ZSBsaXN0IFNQRUMgaXMgdGhlIHNhbWUgYXMgaW4gYGlmLWxldCcuCgooZm4gU1BFQyAmcmVzdCBC T0RZKR8KKGRlZmFsaWFzICd3aGVuLWxldCAnKG1hY3JvIC4gI1szODUgIlwzMDACXDMwMQMhRVwy MDciIFtpZi1sZXQgbWFjcm9leHAtcHJvZ25dIDYgKCMkIC4gODU0MDYpXSkpCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHdo ZW4tbGV0IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDEgcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgaWYtbGV0 XSA1KSNAMjU5IEJpbmQgdmFyaWFibGVzIGFjY29yZGluZyB0byBTUEVDIGFuZCBjb25kaXRpb25h bGx5IGV2YWx1YXRlIEJPRFkuCkV2YWx1YXRlIGVhY2ggYmluZGluZyBpbiB0dXJuLCBzdG9wcGlu ZyBpZiBhIGJpbmRpbmcgdmFsdWUgaXMgbmlsLgpJZiBhbGwgYmluZGluZ3MgYXJlIG5vbi1uaWws IGV2YWwgQk9EWSBhbmQgcmVwZWF0LgoKVGhlIHZhcmlhYmxlIGxpc3QgU1BFQyBpcyB0aGUgc2Ft ZSBhcyBpbiBgaWYtbGV0Jy4KCihmbiBTUEVDICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ3doaWxl LWxldCAnKG1hY3JvIC4gI1szODUgIlwzMDBcMzAxIVwzMDJcMzAzAkRcMzA0XDMwNVwzMDYGB1wz MDcGCEJcMzEwXDMwMwYJRFwzMTFCQkZFRVwyMDciIFtnZW5zeW0gImRvbmUiIGNhdGNoIHF1b3Rl IHdoaWxlIHQgaWYtbGV0KiBwcm9nbiB0aHJvdyAobmlsKV0gMTMgKCMkIC4gODU5MDkpXSkpCihi eXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rp b24tcHV0IHdoaWxlLWxldCBsaXNwLWluZGVudC1mdW5jdGlvbiAxIHB1dCBlZGVidWctZm9ybS1z cGVjIGlmLWxldF0gNSkjQDIwNiBOb24tbmlsIGlmIE1PREUgaXMgZGVyaXZlZCBmcm9tIG9uZSBv ZiBNT0RFUy4KVXNlcyB0aGUgYGRlcml2ZWQtbW9kZS1wYXJlbnQnIHByb3BlcnR5IG9mIHRoZSBz eW1ib2wgdG8gdHJhY2UgYmFja3dhcmRzLgpJZiB5b3UganVzdCB3YW50IHRvIGNoZWNrIGBtYWpv ci1tb2RlJywgdXNlIGBkZXJpdmVkLW1vZGUtcCcuCgooZm4gTU9ERSAmcmVzdCBNT0RFUykfCihk ZWZhbGlhcyAncHJvdmlkZWQtbW9kZS1kZXJpdmVkLXAgI1szODUgIgFLXDIxMVwyMDMOAFwyMTE5 XDIwMw4AXDIxMVwyNjIDXDIxMAEBPlwyMDQwAAFcMzAwTlwyMTFLXDIxMVwyMDMnAFwyMTE5XDIw MycAXDIxMVwyMDIoAAFcMjExXDI2MgVcMjY2XDIwMlwyMDQPAAFcMjA3IiBbZGVyaXZlZC1tb2Rl LXBhcmVudF0gNiAoIyQgLiA4NjQ4OSldKSNAMTU3IE5vbi1uaWwgaWYgdGhlIGN1cnJlbnQgbWFq b3IgbW9kZSBpcyBkZXJpdmVkIGZyb20gb25lIG9mIE1PREVTLgpVc2VzIHRoZSBgZGVyaXZlZC1t b2RlLXBhcmVudCcgcHJvcGVydHkgb2YgdGhlIHN5bWJvbCB0byB0cmFjZSBiYWNrd2FyZHMuCgoo Zm4gJnJlc3QgTU9ERVMpHwooZGVmYWxpYXMgJ2Rlcml2ZWQtbW9kZS1wICNbMTI4ICJcMzAxXDMw MggDI1wyMDciIFttYWpvci1tb2RlIGFwcGx5IHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1wXSA1ICgj JCAuIDg2ODk5KV0pCihkZWZ2YXIgbWFqb3ItbW9kZS0tc3VzcGVuZGVkIG5pbCBuaWwpCihieXRl LWNvZGUgIlwzMDBcMzAxIVwyMTBcMzAyXDMwMVwzMDNcMzA0I1wyMDciIFttYWtlLXZhcmlhYmxl LWJ1ZmZlci1sb2NhbCBtYWpvci1tb2RlLS1zdXNwZW5kZWQgcHV0IHBlcm1hbmVudC1sb2NhbCB0 XSA0KSNANDIgRXhpdCBjdXJyZW50IG1ham9yIG1vZGUsIHJlbWVtYmVyaW5nIGl0Lh8KKGRlZmFs aWFzICdtYWpvci1tb2RlLXN1c3BlbmQgI1swICIIXDIwNlxmAAlcMzAyPT9cMjA1XGYACVwzMDMg XDIxMFwzMDRcMzAwIVwyMTBcMjExXDIxMRBcMjA3IiBbbWFqb3ItbW9kZS0tc3VzcGVuZGVkIG1h am9yLW1vZGUgZnVuZGFtZW50YWwtbW9kZSBraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMgbWFrZS1s b2NhbC12YXJpYWJsZV0gMyAoIyQgLiA4NzMzMyldKSNAMjExIFJlc3RvcmUgbWFqb3IgbW9kZSBl YXJsaWVyIHN1c3BlbmRlZCB3aXRoIGBtYWpvci1tb2RlLXN1c3BlbmQnLgpJZiB0aGVyZSB3YXMg bm8gZWFybGllciBzdXNwZW5kZWQgbWFqb3IgbW9kZSwgdGhlbiBmYWxsYmFjayB0byBgbm9ybWFs LW1vZGUnLAp0aG91Z2ggdHJ5aW5nIHRvIGF2b2lkIEFWT0lERUQtTU9ERVMuCgooZm4gJm9wdGlv bmFsIEFWT0lERUQtTU9ERVMpHwooZGVmYWxpYXMgJ21ham9yLW1vZGUtcmVzdG9yZSAjWzI1NiAi CFwyMDMLAAhcMzAzXDMwMCFcMjEwIFwyMDdcMzA0CSEBXDIxMVwyMDNcIgBcMjExQFwzMDUBBFwi XDI2MgMBQVwyNjZcMjAyXDIwMg8AXDIxMFwyMTFcMjYyAVwzMDRcbiECXDIxMVwyMDM9AFwyMTFA XDMwNQEEXCJcMjYyAwFBXDI2NlwyMDJcMjAyKgBcMjEwXDIxMVwyNjIBGhlcMzA2ICpcMjA3IiBb bWFqb3ItbW9kZS0tc3VzcGVuZGVkIGF1dG8tbW9kZS1hbGlzdCBtYWdpYy1mYWxsYmFjay1tb2Rl LWFsaXN0IGtpbGwtbG9jYWwtdmFyaWFibGUgY29weS1zZXF1ZW5jZSByYXNzcS1kZWxldGUtYWxs IG5vcm1hbC1tb2RlXSA4ICgjJCAuIDg3NTg5KV0pI0AzNSBMaXN0IG9mIGFsbCBtaW5vciBtb2Rl IGZ1bmN0aW9ucy4fCihkZWZ2YXIgbWlub3ItbW9kZS1saXN0ICcoYXV0by1zYXZlLW1vZGUgYXV0 by1maWxsLW1vZGUgYWJicmV2LW1vZGUgb3ZlcndyaXRlLW1vZGUgdmlldy1tb2RlIGhzLW1pbm9y LW1vZGUpICgjJCAuIDg4MTU3KSkjQDEwMDEgUmVnaXN0ZXIgYSBuZXcgbWlub3IgbW9kZS4KClRo aXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHkgLS0gdXNlIGBkZWZpbmUtbWlu b3ItbW9kZScKaW5zdGVhZCAod2hpY2ggd2lsbCB0aGVuIGNhbGwgdGhpcyBmdW5jdGlvbikuCgpU T0dHTEUgaXMgYSBzeW1ib2wgdGhhdCBpcyB0aGUgbmFtZSBvZiBhIGJ1ZmZlci1sb2NhbCB2YXJp YWJsZSB0aGF0CmlzIHRvZ2dsZWQgb24gb3Igb2ZmIHRvIHNheSB3aGV0aGVyIHRoZSBtaW5vciBt b2RlIGlzIGFjdGl2ZSBvciBub3QuCgpOQU1FIHNwZWNpZmllcyB3aGF0IHdpbGwgYXBwZWFyIGlu IHRoZSBtb2RlIGxpbmUgd2hlbiB0aGUgbWlub3IgbW9kZQppcyBhY3RpdmUuICBOQU1FIHNob3Vs ZCBiZSBlaXRoZXIgYSBzdHJpbmcgc3RhcnRpbmcgd2l0aCBhIHNwYWNlLCBvciBhCnN5bWJvbCB3 aG9zZSB2YWx1ZSBpcyBzdWNoIGEgc3RyaW5nLgoKT3B0aW9uYWwgS0VZTUFQIGlzIHRoZSBrZXlt YXAgZm9yIHRoZSBtaW5vciBtb2RlIHRoYXQgd2lsbCBiZSBhZGRlZAp0byBgbWlub3ItbW9kZS1t YXAtYWxpc3QnLgoKT3B0aW9uYWwgQUZURVIgc3BlY2lmaWVzIHRoYXQgVE9HR0xFIHNob3VsZCBi ZSBhZGRlZCBhZnRlciBBRlRFUgppbiBgbWlub3ItbW9kZS1hbGlzdCcuCgpPcHRpb25hbCBUT0dH TEUtRlVOIGlzIGFuIGludGVyYWN0aXZlIGZ1bmN0aW9uIHRvIHRvZ2dsZSB0aGUgbW9kZS4KSXQg ZGVmYXVsdHMgdG8gKGFuZCBzaG91bGQgYnkgY29udmVudGlvbiBiZSkgVE9HR0xFLgoKSWYgVE9H R0xFIGhhcyBhIG5vbi1uaWwgYDppbmNsdWRlZCcgcHJvcGVydHksIGFuIGVudHJ5IGZvciB0aGUg bW9kZSBpcwppbmNsdWRlZCBpbiB0aGUgbW9kZS1saW5lIG1pbm9yIG1vZGUgbWVudS4KSWYgVE9H R0xFIGhhcyBhIGA6bWVudS10YWcnLCB0aGF0IGlzIHVzZWQgZm9yIHRoZSBtZW51IGl0ZW0ncyBs YWJlbC4KCihmbiBUT0dHTEUgTkFNRSAmb3B0aW9uYWwgS0VZTUFQIEFGVEVSIFRPR0dMRS1GVU4p HwooZGVmYWxpYXMgJ2FkZC1taW5vci1tb2RlICNbMTI4MiAiBAg+XDIwNFxuAAQIQhBcMjExXDIw NBEABFwyNjIBXDIxMQU9XDIwNB0AXDMwNQVcMzA2AyNcMjEwA1wyMDNzAAQJXDIzNlwyMTFcMjAz MQBcMjExBUNcMjQxXDI2NgJcMjAycwAJXDMwNwFcMjAzUABcMjExXDIwNFAABAJAQD1cMjAzSQAB XDI2MgFcMjAyMwABQVwyNjICXDIwMjMAXDIxMVwyMDNpAFwyMTFBAVwzMDdcMjQxXDIxMAEGCQYJ RENcMjQ0AVwyNDRcMjY2BVwyMDJzAAYHBgdECUIRXDI2NgMEXDMxME5cMjAzXDI3NwBcMzExXG5c MzEyBgchXDMxMwYIXDMxNE5cMjA2XDIyNgAGBztcMjAzXDIyMgAGB1wyMDJcMjI2AFwzMTUGCSEG CDlcMjA1XDIzNwAGCEpcMjExGztcMjA1XDI2MwBcMzE2XDMxNwtcIlwyMDVcMjYzAFwzMjBcMzIx XDMyMgtcIlwzMjNRKVAFXDMyNFwzMjUGXGZCXDI1NwUjXDIxMAJcMjA1FwEEXGZcMjM2XDIxMVwy MDNcMzIwAFwyMTEEXDI0MVwyMDIVAVxmXDMwNwFcMjAzXDM1NwBcMjExXDIwNFwzNTcABAJAQD1c MjAzXDM1MAABXDI2MgFcMjAyXDMyMgABQVwyNjICXDIwMlwzMjIAXDIxMVwyMDNcbgFcMjExQQFc MzA3XDI0MVwyMTABBgkGCEJDXDI0NAFcMjQ0XDI2MgFcMjY2XDIwMlwyMDIVAQYHBgZCXGZCXDIx MRRcMjY2XDIwMlwyNjIBXDIwNyIgW21pbm9yLW1vZGUtbGlzdCBtaW5vci1tb2RlLWFsaXN0IG1v ZGUtbGluZS1tb2RlLW1lbnUgbW9kZS1uYW1lIG1pbm9yLW1vZGUtbWFwLWFsaXN0IHB1dCA6bWlu b3ItbW9kZS1mdW5jdGlvbiBuaWwgOmluY2x1ZGVkIGRlZmluZS1rZXkgdmVjdG9yIG1lbnUtaXRl bSA6bWVudS10YWcgc3ltYm9sLW5hbWUgc3RyaW5nLW1hdGNoICJbXiBdKyIgIiAoIiBtYXRjaC1z dHJpbmcgMCAiKSIgOmJ1dHRvbiA6dG9nZ2xlXSAxNSAoIyQgLiA4ODMyMCldKSNANDggTm9uLW5p bCBpZiBPQkpFQ1QgaXMgYW4gYXV0b2xvYWQuCgooZm4gT0JKRUNUKR8KKGRlZmFsaWFzICdhdXRv bG9hZHAgI1syNTcgIlwyMTFcMjQyXDMwMD1cMjA3IiBbYXV0b2xvYWRdIDMgKCMkIC4gOTAyMjUp XSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtm dW5jdGlvbi1wdXQgYXV0b2xvYWRwIHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNv bXBpbGUtaW5saW5lLWV4cGFuZF0gNSkjQDExNiBEZWZpbmUgdGhlIHByb3BlcnR5IFBST1Agb2Yg U1lNQk9MIHRvIGJlIFZBTC4KVGhpcyBpcyB0byBgcHV0JyB3aGF0IGBkZWZhbGlhcycgaXMgdG8g YGZzZXQnLgoKKGZuIFNZTUJPTCBQUk9QIFZBTCkfCihkZWZhbGlhcyAnZGVmaW5lLXN5bWJvbC1w cm9wICNbNzcxICJcMzAxCFwyMzZcMjExXDIwNA8AXDMwMUNcMjYyAVwyMTEIQhACAVwyMzZcMjEx XDIwNCEAA0NcMjYyAQEBA0FCXDI0MVwyMTAEAUFcMjM1XDIwNC8AXDIxMQUCQUJcMjQxXDIxMFwy NjYCXDMwMgMDAyNcMjA3IiBbY3VycmVudC1sb2FkLWxpc3QgZGVmaW5lLXN5bWJvbC1wcm9wcyBw dXRdIDggKCMkIC4gOTA0ODgpXSkjQDE1MyBMb2NhdGUgYSBuYXRpdmVseS1jb21waWxlZCBFTE4t RklMRSBieSBzZWFyY2hpbmcgaXRzIGxvYWQgcGF0aC4KVGhpcyBmdW5jdGlvbiBsb29rcyBpbiBk aXJlY3RvcmllcyBuYW1lZCBieSBgbmF0aXZlLWNvbXAtZWxuLWxvYWQtcGF0aCcuCgooZm4gRUxO LUZJTEUpHwooZGVmYWxpYXMgJ2xvY2F0ZS1lbG4tZmlsZSAjWzI1NyAiXDMwMghcMzAzA1EJXCJc MjA2EwBcMzAyCFwzMDQDUVwzMDUJIVwiXDIwNyIgW2NvbXAtbmF0aXZlLXZlcnNpb24tZGlyIG5h dGl2ZS1jb21wLWVsbi1sb2FkLXBhdGggbG9jYXRlLWZpbGUtaW50ZXJuYWwgIi8iICIvcHJlbG9h ZGVkLyIgbGFzdF0gNSAoIyQgLiA5MDgyNyldKSNAMTA5NCBSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IGZpbGUgdGhhdCBkZWZpbmVkIFNZTUJPTC4KVGhlIHZhbHVlIGlzIG5vcm1hbGx5IGFuIGFic29s dXRlIGZpbGUgbmFtZS4gIEl0IGNhbiBhbHNvIGJlIG5pbCwKaWYgdGhlIGRlZmluaXRpb24gaXMg bm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgZmlsZS4gIElmIFNZTUJPTApzcGVjaWZpZXMgYW4gYXV0 b2xvYWRlZCBmdW5jdGlvbiwgdGhlIHZhbHVlIGNhbiBiZSBhIHJlbGF0aXZlCmZpbGUgbmFtZSB3 aXRob3V0IGV4dGVuc2lvbi4KCklmIFRZUEUgaXMgbmlsLCB0aGVuIGFueSBraW5kIG9mIFNZTUJP TCdzIGRlZmluaXRpb24gaXMgYWNjZXB0YWJsZS4KSWYgVFlQRSBpcyBgZGVmdW4nLCBgZGVmdmFy Jywgb3IgYGRlZmZhY2UnLCB0aGF0IHNwZWNpZmllcyBmdW5jdGlvbgpkZWZpbml0aW9uLCB2YXJp YWJsZSBkZWZpbml0aW9uLCBvciBmYWNlIGRlZmluaXRpb24gb25seS4KT3RoZXJ3aXNlIFRZUEUg aXMgYXNzdW1lZCB0byBiZSBhIHN5bWJvbCBwcm9wZXJ0eS4KCklmIE5BVElWRS1QIGlzIG5vbi1u aWwsIGFuZCBTWU1CT0wgd2FzIGxvYWRlZCBmcm9tIGEgLmVsbiBmaWxlLAp0aGlzIGZ1bmN0aW9u IHdpbGwgcmV0dXJuIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUgb2YgdGhhdCAuZWxuIGZpbGUsCmlm IGZvdW5kLiAgTm90ZSB0aGF0IGlmIHRoZSAuZWxuIGZpbGUgaXMgb2xkZXIgdGhhbiBpdHMgc291 cmNlIC5lbApmaWxlLCBFbWFjcyB3b24ndCBsb2FkIHN1Y2ggYW4gb3V0ZGF0ZWQgLmVsbiBmaWxl LCBhbmQgdGhpcyBmdW5jdGlvbgp3aWxsIG5vdCByZXR1cm4gaXQuICBJZiB0aGUgLmVsbiBmaWxl IGNvdWxkbid0IGJlIGZvdW5kLCBvciBpcwpvdXRkYXRlZCwgdGhlIGZ1bmN0aW9uIHJldHVybnMg dGhlIGNvcnJlc3BvbmRpbmcgLmVsYyBvciAuZWwgZmlsZQppbnN0ZWFkLgoKVGhpcyBmdW5jdGlv biBvbmx5IHdvcmtzIGZvciBzeW1ib2xzIGRlZmluZWQgaW4gTGlzcCBmaWxlcy4gIEZvcgpzeW1i b2xzIHRoYXQgYXJlIGRlZmluZWQgaW4gQyBmaWxlcywgdXNlIGBoZWxwLUMtZmlsZS1uYW1lJwpp bnN0ZWFkLgoKKGZuIFNZTUJPTCAmb3B0aW9uYWwgVFlQRSBOQVRJVkUtUCkfCihkZWZhbGlhcyAn c3ltYm9sLWZpbGUgI1s3NjkgIgFcMjAzXG4AAVwzMDE9XDIwMx8AAjlcMjAzHwACS1wyMTFcMjQy XDMwMj1cMjYyAVwyMDMfAAJLQUBcMjA3XDIxMVwyMDNHAAFcMjAzLQABXDMwMT1cMjAzRwACOVwy MDNHAFwzMDMgXDIwM0cAXDMwNANLIVwyMDNHAFwzMDVcMzA2XDMwNwVLISEhXDIwN1wzMTAyXDI1 MQAIXDIxMVwyMDVcMjQ2AFwyMTFAXDIxMVwyNDIBXDI0MwVcMjAzfgAFXDMxMT1cMjAzZwAGBgFc MjM1XDIwMlwyMjUABQYHQgFcMjM1XDIwNFwyMzAABgZcMzEyBgdcMzEyXDMxMwVcIlwiPlwyMDJc MjI1AAYGAVwyMzVcMjA0XDIzMABcMzE0BgcCXCJcMjExXDIwNVwyMjMAXDIxMUBcMzE1PT9cMjYy AVwyMDNcMjM1AFwzMTZcMzEwA1wiXDIxMFwyNjYCAUFcMjY2XDIwMlwyMDJMAFwyNjIBMFwyMTFc MjAzXDM3NQABXDIwM1wzNzUAXDMwMyBcMjAzXDM3NQBcMzE3ASFcMzIwXDMyMSFcMjA1XDMwNwBc MzIxIFwyMDVcMzA3AFwyMTFcMzIyUAFcMzIzUAFcMjAzXDMyNABcMzI0AiFcMjA0XDM0NABcMzI0 ASFcMjAzXDM0MQBcMjExXDIxMVwyNjIDXDIwNFwzNDQAXDMyNVwyNjICATtcMjA1XDM3MABcMzI2 XDMyNwMhIVwzMzABBFwiXDIwNVwzNjYAXDIxMVwyNjIBXDI2NlwyMDNcMjA2XDM3NgBcMjExXDIw NyIgW2xvYWQtaGlzdG9yeSBkZWZ1biBhdXRvbG9hZCBuYXRpdmUtY29tcC1hdmFpbGFibGUtcCBz dWJyLW5hdGl2ZS1lbGlzcC1wIGV4cGFuZC1maWxlLW5hbWUgbmF0aXZlLWNvbXAtdW5pdC1maWxl IHN1YnItbmF0aXZlLWNvbXAtdW5pdCBmb3VuZCBkZWZ2YXIgYWxpc3QtZ2V0IGRlZmluZS1zeW1i b2wtcHJvcHMgcmFzc3EgcmVxdWlyZSB0aHJvdyBmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gZmJv dW5kcCB6bGliLWF2YWlsYWJsZS1wICIuZWwuZ3oiICIuZWwiIGZpbGUtZXhpc3RzLXAgbmlsIGxv Y2F0ZS1lbG4tZmlsZSBjb21wLWVsLXRvLWVsbi1yZWwtZmlsZW5hbWUgZmlsZS1uZXdlci10aGFu LWZpbGUtcF0gMTMgKCMkIC4gOTExNzgpXSkjQDgyMyBTaG93IHRoZSBwcmVjaXNlIGZpbGUgbmFt ZSBvZiBFbWFjcyBsaWJyYXJ5IExJQlJBUlkuCkxJQlJBUlkgc2hvdWxkIGJlIGEgcmVsYXRpdmUg ZmlsZSBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBhIHN0cmluZy4KSXQgY2FuIG9taXQgdGhlIHN1ZmZp eCAoYS5rLmEuIGZpbGUtbmFtZSBleHRlbnNpb24pIGlmIE5PU1VGRklYIGlzCm5pbCAod2hpY2gg aXMgdGhlIGRlZmF1bHQsIHNlZSBiZWxvdykuClRoaXMgY29tbWFuZCBzZWFyY2hlcyB0aGUgZGly ZWN0b3JpZXMgaW4gYGxvYWQtcGF0aCcgbGlrZSBgXFtsb2FkLWxpYnJhcnldJwp0byBmaW5kIHRo ZSBmaWxlIHRoYXQgYFxbbG9hZC1saWJyYXJ5XSBSRVQgTElCUkFSWSBSRVQnIHdvdWxkIGxvYWQu Ck9wdGlvbmFsIHNlY29uZCBhcmcgTk9TVUZGSVggbm9uLW5pbCBtZWFucyBkb24ndCBhZGQgc3Vm Zml4ZXMgYGxvYWQtc3VmZml4ZXMnCnRvIHRoZSBzcGVjaWZpZWQgbmFtZSBMSUJSQVJZLgoKSWYg dGhlIG9wdGlvbmFsIHRoaXJkIGFyZyBQQVRIIGlzIHNwZWNpZmllZCwgdGhhdCBsaXN0IG9mIGRp cmVjdG9yaWVzCmlzIHVzZWQgaW5zdGVhZCBvZiBgbG9hZC1wYXRoJy4KCldoZW4gY2FsbGVkIGZy b20gYSBwcm9ncmFtLCB0aGUgZmlsZSBuYW1lIGlzIG5vcm1hbGx5IHJldHVybmVkIGFzIGEKc3Ry aW5nLiAgV2hlbiBydW4gaW50ZXJhY3RpdmVseSwgdGhlIGFyZ3VtZW50IElOVEVSQUNUSVZFLUNB TEwgaXMgdCwKYW5kIHRoZSBmaWxlIG5hbWUgaXMgZGlzcGxheWVkIGluIHRoZSBlY2hvIGFyZWEu CgooZm4gTElCUkFSWSAmb3B0aW9uYWwgTk9TVUZGSVggUEFUSCBJTlRFUkFDVElWRS1DQUxMKR8K KGRlZmFsaWFzICdsb2NhdGUtbGlicmFyeSAjWzEwMjUgIlwzMDIEA1wyMDYHAAhcMzAzBgY/XDIw NRAAXDMwNCAJXCIjAVwyMDMpAFwyMTFcMjAzIwBcMzA1XDMwNlwzMDcDIVwiXDIxMFwyMDdcMzA1 XDMxMAYGXCJcMjEwXDIwNyIgW2xvYWQtcGF0aCBsb2FkLWZpbGUtcmVwLXN1ZmZpeGVzIGxvY2F0 ZS1maWxlIGFwcGVuZCBnZXQtbG9hZC1zdWZmaXhlcyBtZXNzYWdlICJMaWJyYXJ5IGlzIGZpbGUg JXMiIGFiYnJldmlhdGUtZmlsZS1uYW1lICJObyBsaWJyYXJ5ICVzIGluIHNlYXJjaCBwYXRoIl0g MTAgKCMkIC4gOTMyODQpIChieXRlLWNvZGUgIlwzMDAgXDMwMVwyMTFcMzAyRlwyMDciIFtyZWFk LWxpYnJhcnktbmFtZSBuaWwgdF0gNCldKSNAMTA3MSBTdGFydCBhIHByb2dyYW0gaW4gYSBzdWJw cm9jZXNzLiAgUmV0dXJuIHRoZSBwcm9jZXNzIG9iamVjdCBmb3IgaXQuCk5BTUUgaXMgbmFtZSBm b3IgcHJvY2Vzcy4gIEl0IGlzIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeSB0byBtYWtlIGl0IHVuaXF1 ZS4KQlVGRkVSIGlzIHRoZSBidWZmZXIgKG9yIGJ1ZmZlciBuYW1lKSB0byBhc3NvY2lhdGUgd2l0 aCB0aGUgcHJvY2Vzcy4KClByb2Nlc3Mgb3V0cHV0IChib3RoIHN0YW5kYXJkIG91dHB1dCBhbmQg c3RhbmRhcmQgZXJyb3Igc3RyZWFtcykKZ29lcyBhdCBlbmQgb2YgQlVGRkVSLCB1bmxlc3MgeW91 IHNwZWNpZnkgYSBmaWx0ZXIgZnVuY3Rpb24gdG8KaGFuZGxlIHRoZSBvdXRwdXQuICBCVUZGRVIg bWF5IGFsc28gYmUgbmlsLCBtZWFuaW5nIHRoYXQgdGhpcwpwcm9jZXNzIGlzIG5vdCBhc3NvY2lh dGVkIHdpdGggYW55IGJ1ZmZlci4KClBST0dSQU0gaXMgdGhlIHByb2dyYW0gZmlsZSBuYW1lLiAg SXQgaXMgc2VhcmNoZWQgZm9yIGluIGBleGVjLXBhdGgnCih3aGljaCBzZWUpLiAgSWYgbmlsLCBq dXN0IGFzc29jaWF0ZSBhIHB0eSB3aXRoIHRoZSBidWZmZXIuICBSZW1haW5pbmcKYXJndW1lbnRz IFBST0dSQU0tQVJHUyBhcmUgc3RyaW5ncyB0byBnaXZlIHByb2dyYW0gYXMgYXJndW1lbnRzLgoK SWYgeW91IHdhbnQgdG8gc2VwYXJhdGUgc3RhbmRhcmQgb3V0cHV0IGZyb20gc3RhbmRhcmQgZXJy b3IsIHVzZQpgbWFrZS1wcm9jZXNzJyBvciBpbnZva2UgdGhlIGNvbW1hbmQgdGhyb3VnaCBhIHNo ZWxsIGFuZCByZWRpcmVjdApvbmUgb2YgdGhlbSB1c2luZyB0aGUgc2hlbGwgc3ludGF4LgoKVGhl IHByb2Nlc3MgcnVucyBpbiBgZGVmYXVsdC1kaXJlY3RvcnknIGlmIHRoYXQgaXMgbG9jYWwgKGFz CmRldGVybWluZWQgYnkgYHVuaGFuZGxlZC1maWxlLW5hbWUtZGlyZWN0b3J5JyksIG9yICJ+Igpv dGhlcndpc2UuICBJZiB5b3Ugd2FudCB0byBydW4gYSBwcm9jZXNzIGluIGEgcmVtb3RlIGRpcmVj dG9yeQp1c2UgYHN0YXJ0LWZpbGUtcHJvY2VzcycuCgooZm4gTkFNRSBCVUZGRVIgUFJPR1JBTSAm cmVzdCBQUk9HUkFNLUFSR1MpHwooZGVmYWxpYXMgJ3N0YXJ0LXByb2Nlc3MgI1s4OTkgIlwzMDBc MzAxIVwyMDRcbgBcMzAyXDMwMyFcMjEwXDMwNFwzMDFcMzA1XDMwNgYHXDMwNwYIRgVcMjA1HwBc MzEwBgYGBkJEXCJcIlwyMDciIFtmYm91bmRwIG1ha2UtcHJvY2VzcyBlcnJvciAiRW1hY3Mgd2Fz IGNvbXBpbGVkIHdpdGhvdXQgc3VicHJvY2VzcyBzdXBwb3J0IiBhcHBseSBhcHBlbmQgOm5hbWUg OmJ1ZmZlciA6Y29tbWFuZF0gMTEgKCMkIC4gOTQ0ODEpXSkjQDM2OSBFeGVjdXRlIFBST0dSQU0g d2l0aCBBUkdTLCByZXR1cm5pbmcgaXRzIG91dHB1dCBhcyBhIGxpc3Qgb2YgbGluZXMuCklmIFNU QVRVUy1IQU5ETEVSIGlzIG5vbi1uaWwsIGl0IG11c3QgYmUgYSBmdW5jdGlvbiB3aXRoIG9uZQph cmd1bWVudCwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhl CnByb2dyYW0gYmVmb3JlIHRoZSBvdXRwdXQgaXMgY29sbGVjdGVkLiAgSWYgU1RBVFVTLUhBTkRM RVIgaXMKbmlsLCBhbiBlcnJvciBpcyBzaWduYWxlZCBpZiB0aGUgcHJvZ3JhbSByZXR1cm5zIHdp dGggYSBub24temVybwpleGl0IHN0YXR1cy4KCihmbiBQUk9HUkFNIFNUQVRVUy1IQU5ETEVSICZy ZXN0IEFSR1MpHwooZGVmYWxpYXMgJ3Byb2Nlc3MtbGluZXMtaGFuZGxpbmctc3RhdHVzICNbNjQy ICJcMzAwXDMwMVwzMDJcInJcMjExcVwyMTBcMzAzXDMwNAJcIlwyMTZcMzA1XDMwNgVcMzA3cFwz MDcGByYGA1wyMDNcIgADASFcMjEwXDIwMi8AXDIxMVwzMTA9XDIwNC8AXDMxMVwzMTIGBgMjXDIx MGViXDIxMFwzMDdtXDIwNEcAXDMxM1wzMTQgXDMxNSBcIgFCXDI2MgFcMzE2eVwyMTBcMjAyMwBc MjExXDIzNypcMjA3IiBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICp0ZW1wKiIgdCBtYWtlLWNsb3N1 cmUgI1swICJcMzAxXDMwMCFcMjA1CQBcMzAyXDMwMCFcMjA3IiBbVjAgYnVmZmVyLW5hbWUga2ls bC1idWZmZXJdIDJdIGFwcGx5IGNhbGwtcHJvY2VzcyBuaWwgMCBlcnJvciAiJXMgZXhpdGVkIHdp dGggc3RhdHVzICVzIiBidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbGluZS1iZWdpbm5p bmctcG9zaXRpb24gbGluZS1lbmQtcG9zaXRpb24gMV0gMTEgKCMkIC4gOTU4MDEpXSkjQDIwMiBF eGVjdXRlIFBST0dSQU0gd2l0aCBBUkdTLCByZXR1cm5pbmcgaXRzIG91dHB1dCBhcyBhIGxpc3Qg b2YgbGluZXMuClNpZ25hbCBhbiBlcnJvciBpZiB0aGUgcHJvZ3JhbSByZXR1cm5zIHdpdGggYSBu b24temVybyBleGl0IHN0YXR1cy4KQWxzbyBzZWUgYHByb2Nlc3MtbGluZXMtaWdub3JlLXN0YXR1 cycuCgooZm4gUFJPR1JBTSAmcmVzdCBBUkdTKR8KKGRlZmFsaWFzICdwcm9jZXNzLWxpbmVzICNb Mzg1ICJcMzAwXDMwMQNcMzAyBCRcMjA3IiBbYXBwbHkgcHJvY2Vzcy1saW5lcy1oYW5kbGluZy1z dGF0dXMgbmlsXSA3ICgjJCAuIDk2NjcxKV0pI0AxNjMgRXhlY3V0ZSBQUk9HUkFNIHdpdGggQVJH UywgcmV0dXJuaW5nIGl0cyBvdXRwdXQgYXMgYSBsaXN0IG9mIGxpbmVzLgpUaGUgZXhpdCBzdGF0 dXMgb2YgdGhlIHByb2dyYW0gaXMgaWdub3JlZC4KQWxzbyBzZWUgYHByb2Nlc3MtbGluZXMnLgoK KGZuIFBST0dSQU0gJnJlc3QgQVJHUykfCihkZWZhbGlhcyAncHJvY2Vzcy1saW5lcy1pZ25vcmUt c3RhdHVzICNbMzg1ICJcMzAwXDMwMQNcMzAyBCRcMjA3IiBbYXBwbHkgcHJvY2Vzcy1saW5lcy1o YW5kbGluZy1zdGF0dXMgaWdub3JlXSA3ICgjJCAuIDk2OTkwKV0pI0AxODcgUmV0dXJuIG5vbi1u aWwgaWYgUFJPQ0VTUyBpcyBhbGl2ZS4KQSBwcm9jZXNzIGlzIGNvbnNpZGVyZWQgYWxpdmUgaWYg aXRzIHN0YXR1cyBpcyBgcnVuJywgYG9wZW4nLApgbGlzdGVuJywgYGNvbm5lY3QnIG9yIGBzdG9w Jy4gIFZhbHVlIGlzIG5pbCBpZiBQUk9DRVNTIGlzIG5vdCBhCnByb2Nlc3MuCgooZm4gUFJPQ0VT UykfCihkZWZhbGlhcyAncHJvY2Vzcy1saXZlLXAgI1syNTcgIlwzMDABIVwyMDULAFwzMDEBIVwz MDI+XDIwNyIgW3Byb2Nlc3NwIHByb2Nlc3Mtc3RhdHVzIChydW4gb3BlbiBsaXN0ZW4gY29ubmVj dCBzdG9wKV0gMyAoIyQgLiA5NzI4NyldKSNANTcgQXNrIGJlZm9yZSBraWxsaW5nIGEgYnVmZmVy IHRoYXQgaGFzIGEgcnVubmluZyBwcm9jZXNzLh8KKGRlZmFsaWFzICdwcm9jZXNzLWtpbGwtYnVm ZmVyLXF1ZXJ5LWZ1bmN0aW9uICNbMCAiXDMwMHAhXDIxMT9cMjA2IABcMzAxASFcMzAyPj9cMjA2 IABcMzAzASE/XDIwNiAAXDMwNFwzMDVcMzA2XDMwN3AhXCIhXDIwNyIgW2dldC1idWZmZXItcHJv Y2VzcyBwcm9jZXNzLXN0YXR1cyAocnVuIHN0b3Agb3BlbiBsaXN0ZW4pIHByb2Nlc3MtcXVlcnkt b24tZXhpdC1mbGFnIHllcy1vci1uby1wIGZvcm1hdCAiQnVmZmVyICVTIGhhcyBhIHJ1bm5pbmcg cHJvY2Vzczsga2lsbCBpdD8gIiBidWZmZXItbmFtZV0gNiAoIyQgLiA5NzYxNCldKQooYWRkLWhv b2sgJ2tpbGwtYnVmZmVyLXF1ZXJ5LWZ1bmN0aW9ucyAncHJvY2Vzcy1raWxsLWJ1ZmZlci1xdWVy eS1mdW5jdGlvbikjQDE0NyBSZXR1cm4gdGhlIHZhbHVlIG9mIFBST0NFU1MnIFBST1BOQU1FIHBy b3BlcnR5LgpUaGlzIGlzIHRoZSBsYXN0IHZhbHVlIHN0b3JlZCB3aXRoIGAocHJvY2Vzcy1wdXQg UFJPQ0VTUyBQUk9QTkFNRSBWQUxVRSknLgoKKGZuIFBST0NFU1MgUFJPUE5BTUUpHwooZGVmYWxp YXMgJ3Byb2Nlc3MtZ2V0ICNbNTE0ICJcMzAwXDMwMQMhAlwiXDIwNyIgW3BsaXN0LWdldCBwcm9j ZXNzLXBsaXN0XSA1ICgjJCAuIDk4MDU3KV0pI0AxMzMgQ2hhbmdlIFBST0NFU1MnIFBST1BOQU1F IHByb3BlcnR5IHRvIFZBTFVFLgpJdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggYChwcm9jZXNzLWdl dCBQUk9DRVNTIFBST1BOQU1FKScuCgooZm4gUFJPQ0VTUyBQUk9QTkFNRSBWQUxVRSkfCihkZWZh bGlhcyAncHJvY2Vzcy1wdXQgI1s3NzEgIlwzMDADXDMwMVwzMDIGBiEFBSNcIlwyMDciIFtzZXQt cHJvY2Vzcy1wbGlzdCBwbGlzdC1wdXQgcHJvY2Vzcy1wbGlzdF0gOSAoIyQgLiA5ODMwMSldKSNA NjggUmV0dXJuIGFuIGVzdGltYXRlIG9mIEVtYWNzIHZpcnR1YWwgbWVtb3J5IHVzYWdlLCBkaXZp ZGVkIGJ5IDEwMjQuHwooZGVmYWxpYXMgJ21lbW9yeS1saW1pdCAjWzAgIggZXDMwMlwzMDNcMzA0 ICFcMjM2QVwyMDYNAFwzMDUpXDIwNyIgW3RlbXBvcmFyeS1maWxlLWRpcmVjdG9yeSBkZWZhdWx0 LWRpcmVjdG9yeSB2c2l6ZSBwcm9jZXNzLWF0dHJpYnV0ZXMgZW1hY3MtcGlkIDBdIDMgKCMkIC4g OTg1NTYpXSkjQDMyIFVzZWQgaW50ZXJuYWxseSBieSBgcmVhZC1rZXknLh8KKGRlZmNvbnN0IHJl YWQta2V5LWVtcHR5LW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSAoIyQgLiA5ODc5NCkpI0AzMiBV c2VkIGludGVybmFsbHkgYnkgYHJlYWQta2V5Jy4fCihkZWZjb25zdCByZWFkLWtleS1mdWxsLW1h cCAoYnl0ZS1jb2RlICJcMzAwIFwzMDEBXDMwMlwzMDMjXDIxMFwzMDEBXDMwNFwzMDUjXDIxMFwy MDciIFttYWtlLXNwYXJzZS1rZXltYXAgZGVmaW5lLWtleSBbdF0gaWdub3JlIFsyN10gbmlsXSA1 KSAoIyQgLiA5ODg5NCkpCihkZWZ2YXIgcmVhZC1rZXktZGVsYXkgMC4wMSkjQDg3OSBSZWFkIGEg a2V5IGZyb20gdGhlIGtleWJvYXJkLgpDb250cmFyeSB0byBgcmVhZC1ldmVudCcgdGhpcyB3aWxs IG5vdCByZXR1cm4gYSByYXcgZXZlbnQgYnV0IGluc3RlYWQgd2lsbApvYmV5IHRoZSBpbnB1dCBk ZWNvZGluZyBhbmQgdHJhbnNsYXRpb25zIHVzdWFsbHkgZG9uZSBieSBgcmVhZC1rZXktc2VxdWVu Y2UnLgpTbyBlc2NhcGUgc2VxdWVuY2VzIGFuZCBrZXlib2FyZCBlbmNvZGluZyBhcmUgdGFrZW4g aW50byBhY2NvdW50LgpXaGVuIHRoZXJlJ3MgYW4gYW1iaWd1aXR5IGJlY2F1c2UgdGhlIGtleSBs b29rcyBsaWtlIHRoZSBwcmVmaXggb2YKc29tZSBzb3J0IG9mIGVzY2FwZSBzZXF1ZW5jZSwgdGhl IGFtYmlndWl0eSBpcyByZXNvbHZlZCB2aWEgYHJlYWQta2V5LWRlbGF5Jy4KCklmIHRoZSBvcHRp b25hbCBhcmd1bWVudCBQUk9NUFQgaXMgbm9uLW5pbCwgZGlzcGxheSB0aGF0IGFzIGEKcHJvbXB0 LgoKSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IERJU0FCTEUtRkFMTEJBQ0tTIGlzIG5vbi1uaWws IGFsbAp1bmJvdW5kIGZhbGxiYWNrcyB1c3VhbGx5IGRvbmUgYnkgYHJlYWQta2V5LXNlcXVlbmNl JyBhcmUKZGlzYWJsZWQgc3VjaCBhcyBkaXNjYXJkaW5nIG1vdXNlIGRvd24gZXZlbnRzLiAgVGhp cyBpcyBnZW5lcmFsbHkKd2hhdCB5b3Ugd2FudCBhcyBgcmVhZC1rZXknIHRlbXBvcmFyaWx5IHJl bW92ZXMgYWxsIGJpbmRpbmdzCndoaWxlIGNhbGxpbmcgYHJlYWQta2V5LXNlcXVlbmNlJy4gIElm IG5pbCBvciB1bnNwZWNpZmllZCwgdGhlCm9ubHkgdW5ib3VuZCBmYWxsYmFjayBkaXNhYmxlZCBp cyBkb3duY2FzaW5nIG9mIHRoZSBsYXN0IGV2ZW50LgoKKGZuICZvcHRpb25hbCBQUk9NUFQgRElT QUJMRS1GQUxMQkFDS1MpHwooZGVmYWxpYXMgJ3JlYWQta2V5ICNbNTEyICJcMzA2AVwyMDMJAAhc MjAyXG4ACVwzMDdcMzEwIFwzMTFcblwzMTJcMzEzIwIbAxwEHVwzMTRcMzE1AgQjXDIxNlwzMTZc MzE3IFwzMjABXDMyMVwzMjIOHlwzMjNcIiNcMjEwXDMyMAFcMzI0XDMyNQ4eXDIzNkFcMjA2OwBc MzIyDh5cMzI2XCIjXDIxMFwzMjABXDMyN1wzMzAOHlwyMzZBXDIwNk0AXDMyMg4eXDMzMVwiI1wy MTBcMjExXDI2MgEhXDIxMFwzMzIyXwBcMzMzBgdcMzA2XDMxMiMwXDIxMVwzMDdIAUdcMzM0Vlwy MDN3AFwyMTFcMzM1PlwyMDN3AAFcMzM0SFwyNjZcMjAyXDIwMnoAXDIxMVwyNjZcMjAyLFwyMDci IFtyZWFkLWtleS1mdWxsLW1hcCByZWFkLWtleS1lbXB0eS1tYXAgcmVhZC1rZXktZGVsYXkgZWNo by1rZXlzdHJva2VzIG92ZXJyaWRpbmctbG9jYWwtbWFwIG92ZXJyaWRpbmctdGVybWluYWwtbG9j YWwtbWFwIG5pbCAwIGN1cnJlbnQtZ2xvYmFsLW1hcCBydW4td2l0aC1pZGxlLXRpbWVyIHQgI1sw ICJcMzAwIFwyMTFHXDMwMVU/XDIwNQ4AXDMwMlwzMDMCXCJcMjA3IiBbdGhpcy1jb21tYW5kLWtl eXMtdmVjdG9yIDAgdGhyb3cgcmVhZC1rZXldIDRdIG1ha2UtY2xvc3VyZSAjWzAgIlwzMDJcMzAw IVwyMTBcMzAzXDMwNCFcMjEwXDMwNVwzMDEhXDIwNyIgW1YwIFYxIGNhbmNlbC10aW1lciBtZXNz YWdlIG5pbCB1c2UtZ2xvYmFsLW1hcF0gMl0gdXNlLWdsb2JhbC1tYXAgbWFrZS1zcGFyc2Uta2V5 bWFwIGRlZmluZS1rZXkgW21lbnUtYmFyXSBsb29rdXAta2V5IFttZW51LWJhcl0gW3RhYi1iYXJd IHRhYi1iYXIgW3RhYi1iYXJdIFt0b29sLWJhcl0gdG9vbC1iYXIgW3Rvb2wtYmFyXSByZWFkLWtl eSByZWFkLWtleS1zZXF1ZW5jZS12ZWN0b3IgMSAobW9kZS1saW5lIGhlYWRlci1saW5lIGxlZnQt ZnJpbmdlIHJpZ2h0LWZyaW5nZSkgZ2xvYmFsLW1hcF0gMTUgKCMkIC4gOTkxMTYpXSkjQDE2OSBS ZWFkIGFuIGV2ZW50IHRoYXQgbWlnaHQgYmUgYSBtb3VzZSBldmVudC4KClRoaXMgZnVuY3Rpb24g ZXhpc3RzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGluIGNvZGUgcGFja2FnZWQKd2l0aCBF bWFjcy4gIERvIG5vdCBjYWxsIGl0IGRpcmVjdGx5IGluIHlvdXIgb3duIHBhY2thZ2VzLh8KKGRl ZmFsaWFzICdyZWFkLS1wb3RlbnRpYWwtbW91c2UtZXZlbnQgI1swICIIXDIwMwkAXDMwMVwzMDJc MzAzXCJcMjA3XDMwNCBcMjA3IiBbeHRlcm0tbW91c2UtbW9kZSByZWFkLWtleSBuaWwgdCByZWFk LWV2ZW50XSAzICgjJCAuIDEwMDk0NildKSNAMzggS2V5bWFwIHVzZWQgd2hpbGUgcmVhZGluZyBw YXNzd29yZHMuHwooZGVmdmFyIHJlYWQtcGFzc3dkLW1hcCAoYnl0ZS1jb2RlICJcMzAxIFwzMDIB CFwiXDIxMFwzMDMBXDMwNFwzMDUjXDIxMFwyMDciIFttaW5pYnVmZmVyLWxvY2FsLW1hcCBtYWtl LXNwYXJzZS1rZXltYXAgc2V0LWtleW1hcC1wYXJlbnQgZGVmaW5lLWtleSAiFSIgZGVsZXRlLW1p bmlidWZmZXItY29udGVudHNdIDUpICgjJCAuIDEwMTI2MikpCihkZWZhbGlhcyAncmVhZC1wYXNz d29yZC0taGlkZS1wYXNzd29yZCAjWzAgIlwzMDEgXDMwMiABWlRcMzAzXDIxMQJXXDIwNScAXDMw NAEEXFwCVAVcXFwzMDVcMzA2CFwyMDYdAFwzMDchJFwyMTBcMjExVFwyNjIBXDIwMggAXDIwNyIg W3JlYWQtaGlkZS1jaGFyIG1pbmlidWZmZXItcHJvbXB0LWVuZCBidWZmZXItc2l6ZSAwIHB1dC10 ZXh0LXByb3BlcnR5IGRpc3BsYXkgc3RyaW5nIDQyXSA5XSkjQDQ2OCBSZWFkIGEgcGFzc3dvcmQs IHByb21wdGluZyB3aXRoIFBST01QVCwgYW5kIHJldHVybiBpdC4KSWYgb3B0aW9uYWwgQ09ORklS TSBpcyBub24tbmlsLCByZWFkIHRoZSBwYXNzd29yZCB0d2ljZSB0byBtYWtlIHN1cmUuCk9wdGlv bmFsIERFRkFVTFQgaXMgYSBkZWZhdWx0IHBhc3N3b3JkIHRvIHVzZSBpbnN0ZWFkIG9mIGVtcHR5 IGlucHV0LgoKVGhpcyBmdW5jdGlvbiBlY2hvZXMgYConIGZvciBlYWNoIGNoYXJhY3RlciB0aGF0 IHRoZSB1c2VyIHR5cGVzLgpZb3UgY291bGQgbGV0LWJpbmQgYHJlYWQtaGlkZS1jaGFyJyB0byBh bm90aGVyIGhpZGluZyBjaGFyYWN0ZXIsIHRob3VnaC4KCk9uY2UgdGhlIGNhbGxlciB1c2VzIHRo ZSBwYXNzd29yZCwgaXQgY2FuIGVyYXNlIHRoZSBwYXNzd29yZApieSBkb2luZyAoY2xlYXItc3Ry aW5nIFNUUklORykuCgooZm4gUFJPTVBUICZvcHRpb25hbCBDT05GSVJNIERFRkFVTFQpHwooZGVm YWxpYXMgJ3JlYWQtcGFzc3dkICNbNzY5ICIBXDIwM1AAXDMwMlwyMTFcMjA0TwBcMzAzBFwzMDIE I1wzMDNcMzA0XDMwMgUjAQFcMjMyXDIwMy8AXDMwNQEhXDIwMykAAQE9XDIwNCkAXDMwNgEhXDIx MAFcMjY2XDIwM1wyMDIFAFwzMDUCIVwyMDM5AFwzMDYCIVwyMTBcMzA1ASFcMjAzQwBcMzA2ASFc MjEwXDMwN1wzMTAhXDIxMFwzMTFcMzEyIVwyNjYDXDIwMgUAXDIwN1wzMDJDXDMxM1wzMTQCXCJc MzE1XDMxNiFcMjExXDMxM1wzMTcDBSNNXDIxMFwzMTNcMzIwAlwiXDIxNlwzMjFcMzIyAlwiXDIx MFwzMTNcMzIzBFwiXDIxNlwzMjQIXDIwNnYAXDMyNRgZXDMyNgYGXDMwMlwzMjQGByQsXDIwNyIg W3JlYWQtaGlkZS1jaGFyIGVuYWJsZS1yZWN1cnNpdmUtbWluaWJ1ZmZlcnMgbmlsIHJlYWQtcGFz c3dkICJDb25maXJtIHBhc3N3b3JkOiAiIGFycmF5cCBjbGVhci1zdHJpbmcgbWVzc2FnZSAiUGFz c3dvcmQgbm90IHJlcGVhdGVkIGFjY3VyYXRlbHk7IHBsZWFzZSBzdGFydCBvdmVyIiBzaXQtZm9y IDEgbWFrZS1jbG9zdXJlICNbMCAiXDMwMHBcMjQwXDIxMFwzMDZcMzAxIVwyMTBcMzA3EVwzMDZc MzAyIVwyMTBcMzEwElwzMDZcMzAzIVwyMTBcMzA3E1wzMTFcZiFcMjEwXDMwNlwzMDUhXDIxMFwz MDcVXDMwNlwzMTIhXDIxMFwzMDcWXG5cMzA2XDMxMyFcMjEwXDMxMBYLXDMxNFwzMTVcMzE2XDMw N1wzMTAkXDIwNyIgW1YwIHBvc3Qtc2VsZi1pbnNlcnQtaG9vayBidWZmZXItdW5kby1saXN0IHNl bGVjdC1hY3RpdmUtcmVnaW9ucyByZWFkLXBhc3N3ZC1tYXAgaW5oaWJpdC1tb2RpZmljYXRpb24t aG9va3MgbWFrZS1sb2NhbC12YXJpYWJsZSBuaWwgdCB1c2UtbG9jYWwtbWFwIHNob3ctcGFyZW4t bW9kZSBpbmhpYml0LS1yZWNvcmQtY2hhciBhZGQtaG9vayBwb3N0LWNvbW1hbmQtaG9vayByZWFk LXBhc3N3b3JkLS1oaWRlLXBhc3N3b3JkXSA1XSBtYWtlLXN5bWJvbCAibWluaWJ1ZmZlci1zZXR1 cCIgI1swICJcMzAyXDMwM1wzMDBcIlwyMTBcMzAxIFwyMDciIFtWMCBWMSByZW1vdmUtaG9vayBt aW5pYnVmZmVyLXNldHVwLWhvb2tdIDNdICNbMCAiXDMwMVwzMDJcMzAwXCJcMjA3IiBbVjAgcmVt b3ZlLWhvb2sgbWluaWJ1ZmZlci1zZXR1cC1ob29rXSAzXSBhZGQtaG9vayBtaW5pYnVmZmVyLXNl dHVwLWhvb2sgI1swICJcMzAxXDMwMFwyNDIhXDIwNRkAclwzMDBcMjQycVwyMTBcMzAyXDMwM1wz MDRcMzA1I1wyMTBcMzA2XDMwNyFcMjEwXDMxMCApXDIwNyIgW1YwIGJ1ZmZlci1saXZlLXAgcmVt b3ZlLWhvb2sgYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyByZWFkLXBhc3N3b3JkLS1oaWRlLXBhc3N3 b3JkIGxvY2FsIGtpbGwtbG9jYWwtdmFyaWFibGUgcG9zdC1zZWxmLWluc2VydC1ob29rIGVyYXNl LWJ1ZmZlcl0gNF0gdCA0MiByZWFkLXN0cmluZ10gMTEgKCMkIC4gMTAxNzI5KV0pI0A1MyBUaGUg ZGVmYXVsdCBoaXN0b3J5IGZvciB0aGUgYHJlYWQtbnVtYmVyJyBmdW5jdGlvbi4fCihkZWZ2YXIg cmVhZC1udW1iZXItaGlzdG9yeSBuaWwgKCMkIC4gMTAzNjIyKSkjQDM4MSBSZWFkIGEgbnVtZXJp YyB2YWx1ZSBpbiB0aGUgbWluaWJ1ZmZlciwgcHJvbXB0aW5nIHdpdGggUFJPTVBULgpERUZBVUxU IHNwZWNpZmllcyBhIGRlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSB1c2VyIGp1c3QgdHlw ZXMgUkVULgpUaGUgdmFsdWUgb2YgREVGQVVMVCBpcyBpbnNlcnRlZCBpbnRvIFBST01QVC4KSElT VCBzcGVjaWZpZXMgYSBoaXN0b3J5IGxpc3QgdmFyaWFibGUuICBTZWUgYHJlYWQtZnJvbS1taW5p YnVmZmVyJwpmb3IgZGV0YWlscyBvZiB0aGUgSElTVCBhcmd1bWVudC4KClRoaXMgZnVuY3Rpb24g aXMgdXNlZCBieSB0aGUgYGludGVyYWN0aXZlJyBjb2RlIGxldHRlciAibiIuCgooZm4gUFJPTVBU ICZvcHRpb25hbCBERUZBVUxUIEhJU1QpHwooZGVmYWxpYXMgJ3JlYWQtbnVtYmVyICNbNzY5ICJc MzAxAjpcMjAzCwACQFwyMDJcZgACXDIxMVwyMDMzAFwzMDJcMzAzBgZcIlwyMDMmAFwzMDRcMzA1 CANcIlwzMDZcMjExBghcMzA3JVwyMDIxAFwzMTBcMzExXDMwNQgEXCIGB1wzMDZcMjExJVwyNjIF XDMxMgVcMzAxXDIxMVwyMTEGB1wyMDY+AFwzMTMGCVwyMDVYAAYJOlwyMDNUAFwzMTRcMzE1XDMx NlwzMDEGDVwiXCJcMjAyWABcMzE1BlxuISYGXDMxNzF6AFwyMTFHXDMyMFVcMjAzaQABXDIwMnEA XDIxMTtcMjA1cQBcMzIxASFcMjExXDI2MgQwXDI2NgJcMjAyfABcMjY2AgFcMjQ3XDIwNFwyMTQA XDMyMlwzMjMhXDIxMFwzMjRcMzA3IVwyMTBcMjAyMwABXDIwNyIgW21pbmlidWZmZXItZGVmYXVs dC1wcm9tcHQtZm9ybWF0IG5pbCBzdHJpbmctbWF0Y2ggIlxcKFxcKTpbIAldKlxcJyIgcmVwbGFj ZS1tYXRjaCBmb3JtYXQgdCAxIHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiWyAJXSpcXCciIHJl YWQtZnJvbS1taW5pYnVmZmVyIHJlYWQtbnVtYmVyLWhpc3RvcnkgbWFwY2FyIG51bWJlci10by1z dHJpbmcgZGVscSAoZXJyb3IpIDAgcmVhZCBtZXNzYWdlICJQbGVhc2UgZW50ZXIgYSBudW1iZXIu IiBzaXQtZm9yXSAxNiAoIyQgLiAxMDM3MjcpXSkjQDQ2MiBQcmVmZXIgYHJlYWQta2V5JyB3aGVu IHJlYWRpbmcgYSBjaGFyYWN0ZXIgYnkgYHJlYWQtY2hhci1jaG9pY2UnLgpPdGhlcndpc2UsIHVz ZSB0aGUgbWluaWJ1ZmZlci4KCldoZW4gdXNpbmcgdGhlIG1pbmlidWZmZXIsIHRoZSB1c2VyIGlz IGxlc3MgY29uc3RyYWluZWQsIGFuZCBjYW4KdXNlIHRoZSBub3JtYWwgY29tbWFuZHMgYXZhaWxh YmxlIGluIHRoZSBtaW5pYnVmZmVyLCBhbmQgY2FuLCBmb3IKaW5zdGFuY2UsIHN3aXRjaCB0byBh bm90aGVyIGJ1ZmZlciwgZG8gdGhpbmdzIHRoZXJlLCBhbmQgdGhlbgpzd2l0Y2ggYmFjayBhZ2Fp biB0byB0aGUgbWluaWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgdGhlCmNoYXJhY3Rlci4gIFRoaXMg aXMgbm90IHBvc3NpYmxlIHdoZW4gdXNpbmcgYHJlYWQta2V5JywgYnV0IHVzaW5nCmByZWFkLWtl eScgbWF5IGJlIGxlc3MgY29uZnVzaW5nIHRvIHNvbWUgdXNlcnMuHwooZGVmdmFyIHJlYWQtY2hh ci1jaG9pY2UtdXNlLXJlYWQta2V5IG5pbCAoIyQgLiAxMDQ3NDQpKSNAMzg0IFJlYWQgYW5kIHJl dHVybiBvbmUgb2YgQ0hBUlMsIHByb21wdGluZyBmb3IgUFJPTVBULgpBbnkgaW5wdXQgdGhhdCBp cyBub3Qgb25lIG9mIENIQVJTIGlzIGlnbm9yZWQuCgpCeSBkZWZhdWx0LCB0aGUgbWluaWJ1ZmZl ciBpcyB1c2VkIHRvIHJlYWQgdGhlIGtleQpub24tbW9kYWxseSAoc2VlIGByZWFkLWNoYXItZnJv bS1taW5pYnVmZmVyJykuICBJZgpgcmVhZC1jaGFyLWNob2ljZS11c2UtcmVhZC1rZXknIGlzIG5v bi1uaWwsIHRoZSBtb2RhbCBgcmVhZC1rZXknCmZ1bmN0aW9uIGlzIHVzZWQgaW5zdGVhZCAoc2Vl IGByZWFkLWNoYXItY2hvaWNlLXdpdGgtcmVhZC1rZXknKS4KCihmbiBQUk9NUFQgQ0hBUlMgJm9w dGlvbmFsIElOSElCSVQtS0VZQk9BUkQtUVVJVCkfCihkZWZhbGlhcyAncmVhZC1jaGFyLWNob2lj ZSAjWzc3MCAiCFwyMDQJAFwzMDEDA1wiXDIwN1wzMDIDAwMjXDIwNyIgW3JlYWQtY2hhci1jaG9p Y2UtdXNlLXJlYWQta2V5IHJlYWQtY2hhci1mcm9tLW1pbmlidWZmZXIgcmVhZC1jaGFyLWNob2lj ZS13aXRoLXJlYWQta2V5XSA3ICgjJCAuIDEwNTI2OCldKSNANDQwIFJlYWQgYW5kIHJldHVybiBv bmUgb2YgQ0hBUlMsIHByb21wdGluZyBmb3IgUFJPTVBULgpBbnkgaW5wdXQgdGhhdCBpcyBub3Qg b25lIG9mIENIQVJTIGlzIGlnbm9yZWQuCgpJZiBvcHRpb25hbCBhcmd1bWVudCBJTkhJQklULUtF WUJPQVJELVFVSVQgaXMgbm9uLW5pbCwgaWdub3JlCmBrZXlib2FyZC1xdWl0JyBldmVudHMgd2hp bGUgd2FpdGluZyBmb3IgYSB2YWxpZCBpbnB1dC4KCklmIHlvdSBiaW5kIHRoZSB2YXJpYWJsZSBg aGVscC1mb3JtJyB0byBhIG5vbi1uaWwgdmFsdWUKd2hpbGUgY2FsbGluZyB0aGlzIGZ1bmN0aW9u LCB0aGVuIHByZXNzaW5nIGBoZWxwLWNoYXInCmNhdXNlcyBpdCB0byBldmFsdWF0ZSBgaGVscC1m b3JtJyBhbmQgZGlzcGxheSB0aGUgcmVzdWx0LgoKKGZuIFBST01QVCBDSEFSUyAmb3B0aW9uYWwg SU5ISUJJVC1LRVlCT0FSRC1RVUlUKR8KKGRlZmFsaWFzICdyZWFkLWNoYXItY2hvaWNlLXdpdGgt cmVhZC1rZXkgI1s3NzAgIgE6XDIwNAkAXDMwNVwzMDYhXDIxMFwzMDdcMjExXDIxMVwzMTAIXDMw NwEYAhlcMzExIFwzMTJcMzEzAlwiXDIxNgVcMjA0XDI0MwBcMzE0XDMxNVwzMTYGXGYjXDIwNC8A XDMxNwZcblwzMTZcMzIwI1wyNjJcbgYHGlwzMjEGXG4hKVwyNjIHBFwyMDNJAFwzMjJcMzIzXDMy NCEhXDIwM0kAXDMyNVwzMjQhXDIxMAYGXDI0N1wyMDMaAAtcMjAzYgAGBlxmPVwyMDNiAFwzMTBc MjYyBVwzMjYgXDIwNBoABgYGCT5cMjAzcABcMzEwXDI2MgZcMjAyGgAIXDIwM1wyMDAABgZcMzI3 VVwyMDNcMjAwAFwzMDcQXDIwMhoABgdcMjA0GgABXDIwNFwyMjYABgZcMzMwPVwyMDNcMjI2AFwz MTBcMjYyAlwyMDIaAAYGXDMzMT5cMjAzGgBcMzMyIFwyMTBcMjAyGgArXDI2NgRcMzMzXDMzNAYH XDMzNQYGISNcMjEwAlwyMDciIFtleGVjdXRpbmcta2JkLW1hY3JvIGN1cnNvci1pbi1lY2hvLWFy ZWEgaW5oaWJpdC1xdWl0IGhlbHAtZm9ybSBoZWxwLWNoYXIgZXJyb3IgIkNhbGxlZCBgcmVhZC1j aGFyLWNob2ljZScgd2l0aG91dCB2YWxpZCBjaGFyIGNob2ljZXMiIG5pbCB0IGN1cnJlbnQtd2lu ZG93LWNvbmZpZ3VyYXRpb24gbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDAhXDIwNyIgW1YwIHNl dC13aW5kb3ctY29uZmlndXJhdGlvbl0gMl0gZ2V0LXRleHQtcHJvcGVydHkgMCBmYWNlIHByb3Bl cnRpemUgbWluaWJ1ZmZlci1wcm9tcHQgcmVhZC1rZXkgYnVmZmVyLWxpdmUtcCBnZXQtYnVmZmVy ICIgKkNoYXIgSGVscCoiIGtpbGwtYnVmZmVyIGhlbHAtZm9ybS1zaG93IC0xIDI3ICg3IDI3KSBr ZXlib2FyZC1xdWl0IG1lc3NhZ2UgIiVzJXMiIGNoYXItdG8tc3RyaW5nXSAxNCAoIyQgLiAxMDU4 MzIpXSkjQDc1NiBSZWRpc3BsYXksIHRoZW4gd2FpdCBmb3IgU0VDT05EUyBzZWNvbmRzLiAgU3Rv cCB3aGVuIGlucHV0IGlzIGF2YWlsYWJsZS4KU0VDT05EUyBtYXkgYmUgYSBmbG9hdGluZy1wb2lu dCB2YWx1ZS4KKE9uIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgd2FpdGlu ZyBmb3IgZnJhY3Rpb25zIG9mIGEKc2Vjb25kLCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIHJv dW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLikKCklmIG9wdGlvbmFsIGFyZyBOT0RJ U1AgaXMgdCwgZG9uJ3QgcmVkaXNwbGF5LCBqdXN0IHdhaXQgZm9yIGlucHV0LgpSZWRpc3BsYXkg ZG9lcyBub3QgaGFwcGVuIGlmIGlucHV0IGlzIGF2YWlsYWJsZSBiZWZvcmUgaXQgc3RhcnRzLgoK VmFsdWUgaXMgdCBpZiB3YWl0ZWQgdGhlIGZ1bGwgdGltZSB3aXRoIG5vIGlucHV0IGFycml2aW5n LCBhbmQgbmlsIG90aGVyd2lzZS4KCkFuIG9ic29sZXRlLCBidXQgc3RpbGwgc3VwcG9ydGVkIGZv cm0gaXMKKHNpdC1mb3IgU0VDT05EUyAmb3B0aW9uYWwgTUlMTElTRUNPTkRTIE5PRElTUCkKd2hl cmUgdGhlIG9wdGlvbmFsIGFyZyBNSUxMSVNFQ09ORFMgc3BlY2lmaWVzIGFuIGFkZGl0aW9uYWwg d2FpdCBwZXJpb2QsCmluIG1pbGxpc2Vjb25kczsgdGhpcyB3YXMgdXNlZnVsIHdoZW4gRW1hY3Mg d2FzIGJ1aWx0IHdpdGhvdXQKZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4KCihmbiBTRUNPTkRTICZv cHRpb25hbCBOT0RJU1AgT0JTT0xFVEUpHwooZGVmYWxpYXMgJ3NpdC1mb3IgI1s3NjkgIgFcMjQ3 XDIwMxIAAlwzMDQDX1xcXDI2MgNcMjExXDI2MgJcMjAyGQBcMjExXDIwMxkAXDIxMVwyNjICCFwy MDMjAFwzMDUDIVwyMTBcMzA2XDIwN1wzMDdcMzA2IVwyMDMrAFwzMTBcMjA3AlwzMTFYXDIwNDUA CVwyMDM8AAFcMjA2WQBcMzEyIFwyMDcBXDIwNEMAXDMxMiBcMjEwXDMxMBpcMzEzXDMxMFwzMDYF IylcMjExP1wyMDZXAFwzMDYBQgtCE1wzMTBcMjYyAVwyMDciIFtub25pbnRlcmFjdGl2ZSBkZWZp bmluZy1rYmQtbWFjcm8gaW5wdXQtbWV0aG9kLWZ1bmN0aW9uIHVucmVhZC1jb21tYW5kLWV2ZW50 cyAwLjAwMSBzbGVlcC1mb3IgdCBpbnB1dC1wZW5kaW5nLXAgbmlsIDAgcmVkaXNwbGF5IHJlYWQt ZXZlbnRdIDcgKCMkIC4gMTA3MTcxKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDIx MFwzMDRcMzAxXDMwNVwzMDYjXDMwMFwyMDciIFtzZXQtYWR2ZXJ0aXNlZC1jYWxsaW5nLWNvbnZl bnRpb24gc2l0LWZvciAoc2Vjb25kcyAmb3B0aW9uYWwgbm9kaXNwKSAiMjIuMSIgZnVuY3Rpb24t cHV0IGNvbXBpbGVyLW1hY3JvIHNpdC1mb3ItLWFub24tY21hY3JvXSA0KSNANDcgCgooZm4gRk9S TSBTRUNPTkRTICZvcHRpb25hbCBOT0RJU1AgT0JTT0xFVEUpHwooZGVmYWxpYXMgJ3NpdC1mb3It LWFub24tY21hY3JvICNbMTAyNiAiAVwyNDdcMjA0CwBcMjExXDIwNAsAA1wyMDdcMzAwXDMwMQVA XDMwMgYGXDMwM1wzMDQGCFwzMDVCQlwzMDZCQkUERVwzMDcjXDIwNyIgW21hY3JvZXhwLXdhcm4t YW5kLXJldHVybiAiT2Jzb2xldGUgY2FsbGluZyBjb252ZW50aW9uIGZvciAnc2l0LWZvciciICsg LyBvciAoMCkgKDEwMDAuMCkgKG9ic29sZXRlIHNpdC1mb3IpXSAxMyAoIyQgLiAxMDg1MTkpXSkj QDEzNyBHZXQgYSBuYXR1cmFsIG51bWJlciBhcmd1bWVudCwgb3B0aW9uYWxseSBwcm9tcHRpbmcg d2l0aCBQUk9NUFQuCklmIHRoZXJlIGlzIGEgbmF0dXJhbCBudW1iZXIgYXQgcG9pbnQsIHVzZSBp dCBhcyBkZWZhdWx0LgoKKGZuIFBST01QVCkfCihkZWZhbGlhcyAnZ290by1jaGFyLS1yZWFkLW5h dG51bS1pbnRlcmFjdGl2ZSAjWzI1NyAiCFwyMDMOAAg6XDIwNA4AXDMwMQghQ1wyMDdcMzAyIFwz MDMBIVwyMDUXAFwyMTFcMzA0AwJgRFwiQ1wyMDciIFtjdXJyZW50LXByZWZpeC1hcmcgcHJlZml4 LW51bWVyaWMtdmFsdWUgbnVtYmVyLWF0LXBvaW50IG5hdG51bXAgcmVhZC1udW1iZXJdIDcgKCMk IC4gMTA4ODE4KV0pI0A2NyBUaGUgZGVmYXVsdCBoaXN0b3J5IGZvciB0aGUgYHJlYWQtY2hhci1m cm9tLW1pbmlidWZmZXInIGZ1bmN0aW9uLh8KKGRlZnZhciByZWFkLWNoYXItaGlzdG9yeSBuaWwg KCMkIC4gMTA5MTcyKSkjQDU0IEtleW1hcCBmb3IgdGhlIGByZWFkLWNoYXItZnJvbS1taW5pYnVm ZmVyJyBmdW5jdGlvbi4fCihkZWZ2YXIgcmVhZC1jaGFyLWZyb20tbWluaWJ1ZmZlci1tYXAgKGJ5 dGUtY29kZSAiXDMwMSBcMzAyAQhcIlwyMTBcMzAzAVwzMDRcMzA1I1wyMTBcMzAzAVwzMDZcMzA3 I1wyMTBcMzAzAVwzMTBcMzExI1wyMTBcMzAzAVwzMTJcMzEzI1wyMTBcMzAzAVwzMTRcMzE1I1wy MTBcMzAzAVwzMTZcMzE3I1wyMTBcMzAzAVwzMjBcMzIxI1wyMTBcMjA3IiBbbWluaWJ1ZmZlci1s b2NhbC1tYXAgbWFrZS1zcGFyc2Uta2V5bWFwIHNldC1rZXltYXAtcGFyZW50IGRlZmluZS1rZXkg W3JlbWFwIHNlbGYtaW5zZXJ0LWNvbW1hbmRdIHJlYWQtY2hhci1mcm9tLW1pbmlidWZmZXItaW5z ZXJ0LWNoYXIgW3JlbWFwIGV4aXQtbWluaWJ1ZmZlcl0gcmVhZC1jaGFyLWZyb20tbWluaWJ1ZmZl ci1pbnNlcnQtb3RoZXIgW3JlbWFwIHJlY2VudGVyLXRvcC1ib3R0b21dIG1pbmlidWZmZXItcmVj ZW50ZXItdG9wLWJvdHRvbSBbcmVtYXAgc2Nyb2xsLXVwLWNvbW1hbmRdIG1pbmlidWZmZXItc2Ny b2xsLXVwLWNvbW1hbmQgW3JlbWFwIHNjcm9sbC1kb3duLWNvbW1hbmRdIG1pbmlidWZmZXItc2Ny b2xsLWRvd24tY29tbWFuZCBbcmVtYXAgc2Nyb2xsLW90aGVyLXdpbmRvd10gbWluaWJ1ZmZlci1z Y3JvbGwtb3RoZXItd2luZG93IFtyZW1hcCBzY3JvbGwtb3RoZXItd2luZG93LWRvd25dIG1pbmli dWZmZXItc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duXSA1KSAoIyQgLiAxMDkyODgpKQooZGVmY29u c3QgcmVhZC1jaGFyLWZyb20tbWluaWJ1ZmZlci1tYXAtaGFzaCAobWFrZS1oYXNoLXRhYmxlIDp0 ZXN0ICdlcXVhbCkpI0AxNDQgSW5zZXJ0IHRoZSBjaGFyYWN0ZXIgeW91IHR5cGUgaW50byB0aGUg bWluaWJ1ZmZlciBhbmQgZXhpdCBtaW5pYnVmZmVyLgpEaXNjYXJkIGFsbCBwcmV2aW91cyBpbnB1 dCBiZWZvcmUgaW5zZXJ0aW5nIGFuZCBleGl0aW5nIHRoZSBtaW5pYnVmZmVyLh8KKGRlZmFsaWFz ICdyZWFkLWNoYXItZnJvbS1taW5pYnVmZmVyLWluc2VydC1jaGFyICNbMCAiXDMwMSBcMjA1DQBc MzAyIFwyMTAIY1wyMTBcMzAzIFwyMDciIFtsYXN0LWNvbW1hbmQtZXZlbnQgbWluaWJ1ZmZlcnAg ZGVsZXRlLW1pbmlidWZmZXItY29udGVudHMgZXhpdC1taW5pYnVmZmVyXSAxICgjJCAuIDExMDE0 MikgbmlsXSkjQDI2NyBSZWplY3QgYSBkaXNhbGxvd2VkIGNoYXJhY3RlciB0eXBlZCBpbnRvIHRo ZSBtaW5pYnVmZmVyLgpUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgdG8gYmUgYm91bmQgdG8ga2V5 cyB0aGF0IHVzZXJzIGFyZSBub3QKYWxsb3dlZCB0byB0eXBlIGludG8gdGhlIG1pbmlidWZmZXIu ICBXaGVuIHRoZSB1c2VyIHR5cGVzIGFueQpzdWNoIGtleSwgdGhpcyBjb21tYW5kIGRpc2NhcmQg YWxsIG1pbmlidWZmZXIgaW5wdXQgYW5kIGRpc3BsYXlzCmFuIGVycm9yIG1lc3NhZ2UuHwooZGVm YWxpYXMgJ3JlYWQtY2hhci1mcm9tLW1pbmlidWZmZXItaW5zZXJ0LW90aGVyICNbMCAiXDMwMCBc MjA1FQBcMzAxIFwyMTBcMzAyIFwyMTBcMzAzIFwyMTBcMzA0XDMwNSFcMjEwXDMwNlwzMDchXDIw NyIgW21pbmlidWZmZXJwIGRlbGV0ZS1taW5pYnVmZmVyLWNvbnRlbnRzIGRpbmcgZGlzY2FyZC1p bnB1dCBtaW5pYnVmZmVyLW1lc3NhZ2UgIldyb25nIGFuc3dlciIgc2l0LWZvciAyXSAyICgjJCAu IDExMDQ4MCkgbmlsXSkjQDgwMyBSZWFkIGEgY2hhcmFjdGVyIGZyb20gdGhlIG1pbmlidWZmZXIs IHByb21wdGluZyBmb3IgaXQgd2l0aCBQUk9NUFQuCkxpa2UgYHJlYWQtY2hhcicsIGJ1dCB1c2Vz IHRoZSBtaW5pYnVmZmVyIHRvIHJlYWQgYW5kIHJldHVybiBhIGNoYXJhY3Rlci4KT3B0aW9uYWwg YXJndW1lbnQgQ0hBUlMsIGlmIG5vbi1uaWwsIHNob3VsZCBiZSBhIGxpc3Qgb2YgY2hhcmFjdGVy czsKdGhlIGZ1bmN0aW9uIHdpbGwgaWdub3JlIGFueSBpbnB1dCB0aGF0IGlzIG5vdCBvbmUgb2Yg Q0hBUlMuCk9wdGlvbmFsIGFyZ3VtZW50IEhJU1RPUlksIGlmIG5vbi1uaWwsIHNob3VsZCBiZSBh IHN5bWJvbCB0aGF0CnNwZWNpZmllcyB0aGUgaGlzdG9yeSBsaXN0IHZhcmlhYmxlIHRvIHVzZSBm b3IgbmF2aWdhdGluZyBpbiBpbnB1dApoaXN0b3J5IHVzaW5nIFxgTS1wJyBhbmQgXGBNLW4nLCB3 aXRoIFxgUkVUJyB0byBzZWxlY3QgYSBjaGFyYWN0ZXIgZnJvbQpoaXN0b3J5LgpJZiB5b3UgYmlu ZCB0aGUgdmFyaWFibGUgYGhlbHAtZm9ybScgdG8gYSBub24tbmlsIHZhbHVlCndoaWxlIGNhbGxp bmcgdGhpcyBmdW5jdGlvbiwgdGhlbiBwcmVzc2luZyBgaGVscC1jaGFyJwpjYXVzZXMgaXQgdG8g ZXZhbHVhdGUgYGhlbHAtZm9ybScgYW5kIGRpc3BsYXkgdGhlIHJlc3VsdC4KVGhlcmUgaXMgbm8g bmVlZCB0byBleHBsaWNpdGx5IGFkZCBgaGVscC1jaGFyJyB0byBDSEFSUzsKYGhlbHAtY2hhcicg aXMgYm91bmQgYXV0b21hdGljYWxseSB0byBgaGVscC1mb3JtLXNob3cnLgoKKGZuIFBST01QVCAm b3B0aW9uYWwgQ0hBUlMgSElTVE9SWSkfCihkZWZhbGlhcyAncmVhZC1jaGFyLWZyb20tbWluaWJ1 ZmZlciAjWzc2OSAiATpcMjAzVQBcMzA1CAkEQkRcblwiXDIwNlYAXDMwNiAIXDMwNwILXCJcMjEw CFwyMDMnAFwzMTACXDMxMQkhXDMxMlwzMTMFXCIjXDIxMANcMjExXDIwMz0AXDIxMUBcMzEwBFwz MTEDIVwzMTQjXDIxMAFBXDI2NlwyMDJcMjAyKABcMjEwXDMxMAJcMzE1XDMxNiNcMjEwXDMxNwgJ BgZCRANcbiNcMjEwAVwyNjZcMjAyXDIwMlYAC1xmHFwzMjAEXDMyMQNcMzIxBgZcMjA2YwBcMzIy JVwyMTFHXDMyM1ZcMjAzcQBcMjExXDMyM1wyMzRcMjAyfQACXDIwM3wAAlwzMjQESkJMXDIxMFwz MjVcMzI2XDMyNwYHXDMzMAQhIylcMjEwXDIwNyIgW2hlbHAtZm9ybSBoZWxwLWNoYXIgcmVhZC1j aGFyLWZyb20tbWluaWJ1ZmZlci1tYXAtaGFzaCByZWFkLWNoYXItZnJvbS1taW5pYnVmZmVyLW1h cCB0aGlzLWNvbW1hbmQgZ2V0aGFzaCBtYWtlLXNwYXJzZS1rZXltYXAgc2V0LWtleW1hcC1wYXJl bnQgZGVmaW5lLWtleSB2ZWN0b3IgbWFrZS1jbG9zdXJlICNbMCAiXDMwMBlcMzAyIClcMjA3IiBb VjAgaGVscC1mb3JtIGhlbHAtZm9ybS1zaG93XSAxIG5pbCBuaWxdIHJlYWQtY2hhci1mcm9tLW1p bmlidWZmZXItaW5zZXJ0LWNoYXIgW3JlbWFwIHNlbGYtaW5zZXJ0LWNvbW1hbmRdIHJlYWQtY2hh ci1mcm9tLW1pbmlidWZmZXItaW5zZXJ0LW90aGVyIHB1dGhhc2ggcmVhZC1mcm9tLW1pbmlidWZm ZXIgbmlsIHQgMCAiDSIgMTMgbWVzc2FnZSAiJXMlcyIgY2hhci10by1zdHJpbmddIDExICgjJCAu IDExMDk5OSldKSNANTEgSGlzdG9yeSBsaXN0IHN5bWJvbCB0byBhZGQgYHktb3Itbi1wJyBhbnN3 ZXJzIHRvLh8KKGRlZnZhciB5LW9yLW4tcC1oaXN0b3J5LXZhcmlhYmxlIG5pbCAoIyQgLiAxMTI1 OTApKSNANjUgS2V5bWFwIHRoYXQgZGVmaW5lcyBhZGRpdGlvbmFsIGJpbmRpbmdzIGZvciBgeS1v ci1uLXAnIGFuc3dlcnMuHwooZGVmdmFyIHktb3Itbi1wLW1hcCAoYnl0ZS1jb2RlICJcMzAxIFwz MDIBCFwiXDIxMFwzMDNcMjExXDIwMx4AXDIxMUBcMzA0A1wzMDVcMzA2BFwiXDMwNyNcMjEwAUFc MjY2XDIwMlwyMDIIAFwyMTBcMzA0AVwzMTBcMzExI1wyMTBcMzEyXDIxMVwyMDM8AFwyMTFAXDMw NANcMzA1XDMwNgRcIlwzMTMjXDIxMAFBXDI2NlwyMDJcMjAyJgBcMjEwXDMwNAFcMzE0XDMxNSNc MjEwXDMwNAFcMzE2XDMxNyNcMjEwXDMwNAFcMzIwXDMyMSNcMjEwXDMwNAFcMzIyXDMyMyNcMjEw XDMwNAFcMzI0XDMyNSNcMjEwXDMwNAFcMzI2XDMxMyNcMjEwXDMyN1wyMTFcMjAzeABcMjExQFwz MDQDXDMwNVwzMDYEXCJcMzMwI1wyMTABQVwyNjZcMjAyXDIwMmIAXDIxMFwzMDQBXDMzMVwzMzAj XDIxMFwyMDciIFttaW5pYnVmZmVyLWxvY2FsLW1hcCBtYWtlLXNwYXJzZS1rZXltYXAgc2V0LWtl eW1hcC1wYXJlbnQgKGFjdCBhY3QtYW5kLXNob3cgYWN0LWFuZC1leGl0IGF1dG9tYXRpYykgZGVm aW5lLWtleSB2ZWN0b3IgcmVtYXAgeS1vci1uLXAtaW5zZXJ0LXkgW3JlbWFwIHNraXBdIHktb3It bi1wLWluc2VydC1uIChiYWNrdXAgdW5kbyB1bmRvLWFsbCBlZGl0IGVkaXQtcmVwbGFjZW1lbnQg ZGVsZXRlLWFuZC1lZGl0IGlnbm9yZSBzZWxmLWluc2VydC1jb21tYW5kKSB5LW9yLW4tcC1pbnNl cnQtb3RoZXIgW3JlbWFwIHJlY2VudGVyXSBtaW5pYnVmZmVyLXJlY2VudGVyLXRvcC1ib3R0b20g W3JlbWFwIHNjcm9sbC11cF0gbWluaWJ1ZmZlci1zY3JvbGwtdXAtY29tbWFuZCBbcmVtYXAgc2Ny b2xsLWRvd25dIG1pbmlidWZmZXItc2Nyb2xsLWRvd24tY29tbWFuZCBbcmVtYXAgc2Nyb2xsLW90 aGVyLXdpbmRvd10gbWluaWJ1ZmZlci1zY3JvbGwtb3RoZXItd2luZG93IFtyZW1hcCBzY3JvbGwt b3RoZXItd2luZG93LWRvd25dIG1pbmlidWZmZXItc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duIFty ZW1hcCBleGl0XSAoZXhpdC1wcmVmaXggcXVpdCkgYWJvcnQtcmVjdXJzaXZlLWVkaXQgW2VzY2Fw ZV1dIDgpICgjJCAuIDExMjY5OCkpI0AxMzQgSW5zZXJ0IHRoZSBhbnN3ZXIgInkiIGFuZCBleGl0 IHRoZSBtaW5pYnVmZmVyIG9mIGB5LW9yLW4tcCcuCkRpc2NhcmQgYWxsIHByZXZpb3VzIGlucHV0 IGJlZm9yZSBpbnNlcnRpbmcgYW5kIGV4aXRpbmcgdGhlIG1pbmlidWZmZXIuHwooZGVmYWxpYXMg J3ktb3Itbi1wLWluc2VydC15ICNbMCAiXDMwMCBcMjA1DQBcMzAxIFwyMTBcMzAyY1wyMTBcMzAz IFwyMDciIFttaW5pYnVmZmVycCBkZWxldGUtbWluaWJ1ZmZlci1jb250ZW50cyAieSIgZXhpdC1t aW5pYnVmZmVyXSAxICgjJCAuIDExMzc5OSkgbmlsXSkjQDEzNCBJbnNlcnQgdGhlIGFuc3dlciAi biIgYW5kIGV4aXQgdGhlIG1pbmlidWZmZXIgb2YgYHktb3Itbi1wJy4KRGlzY2FyZCBhbGwgcHJl dmlvdXMgaW5wdXQgYmVmb3JlIGluc2VydGluZyBhbmQgZXhpdGluZyB0aGUgbWluaWJ1ZmZlci4f CihkZWZhbGlhcyAneS1vci1uLXAtaW5zZXJ0LW4gI1swICJcMzAwIFwyMDUNAFwzMDEgXDIxMFwz MDJjXDIxMFwzMDMgXDIwNyIgW21pbmlidWZmZXJwIGRlbGV0ZS1taW5pYnVmZmVyLWNvbnRlbnRz ICJuIiBleGl0LW1pbmlidWZmZXJdIDEgKCMkIC4gMTE0MDk1KSBuaWxdKSNAMTgwIEhhbmRsZSBp bnNlcnRpbmcgb2Ygb3RoZXIgYW5zd2VycyBpbiB0aGUgbWluaWJ1ZmZlciBvZiBgeS1vci1uLXAn LgpEaXNwbGF5IGFuIGVycm9yIG9uIHRyeWluZyB0byBpbnNlcnQgYSBkaXNhbGxvd2VkIGNoYXJh Y3Rlci4KQWxzbyBkaXNjYXJkIGFsbCBwcmV2aW91cyBpbnB1dCBpbiB0aGUgbWluaWJ1ZmZlci4f CihkZWZhbGlhcyAneS1vci1uLXAtaW5zZXJ0LW90aGVyICNbMCAiXDMwMCBcMjA1FQBcMzAxIFwy MTBcMzAyIFwyMTBcMzAzIFwyMTBcMzA0XDMwNSFcMjEwXDMwNlwzMDchXDIwNyIgW21pbmlidWZm ZXJwIGRlbGV0ZS1taW5pYnVmZmVyLWNvbnRlbnRzIGRpbmcgZGlzY2FyZC1pbnB1dCBtaW5pYnVm ZmVyLW1lc3NhZ2UgIlBsZWFzZSBhbnN3ZXIgeSBvciBuIiBzaXQtZm9yIDJdIDIgKCMkIC4gMTE0 MzkxKSBuaWxdKSNANDY0IFByZWZlciBgcmVhZC1rZXknIHdoZW4gYW5zd2VyaW5nIGEgInkgb3Ig biIgcXVlc3Rpb24gYnkgYHktb3Itbi1wJy4KT3RoZXJ3aXNlLCB1c2UgdGhlIG1pbmlidWZmZXIu CgpXaGVuIHVzaW5nIHRoZSBtaW5pYnVmZmVyLCB0aGUgdXNlciBpcyBsZXNzIGNvbnN0cmFpbmVk LCBhbmQgY2FuCnVzZSB0aGUgbm9ybWFsIGNvbW1hbmRzIGF2YWlsYWJsZSBpbiB0aGUgbWluaWJ1 ZmZlciwgYW5kIGNhbiwgZm9yCmluc3RhbmNlLCBzd2l0Y2ggdG8gYW5vdGhlciBidWZmZXIsIGRv IHRoaW5ncyB0aGVyZSwgYW5kIHRoZW4Kc3dpdGNoIGJhY2sgYWdhaW4gdG8gdGhlIG1pbmlidWZm ZXIgYmVmb3JlIGVudGVyaW5nIHRoZQpjaGFyYWN0ZXIuICBUaGlzIGlzIG5vdCBwb3NzaWJsZSB3 aGVuIHVzaW5nIGByZWFkLWtleScsIGJ1dCB1c2luZwpgcmVhZC1rZXknIG1heSBiZSBsZXNzIGNv bmZ1c2luZyB0byBzb21lIHVzZXJzLh8KKGRlZnZhciB5LW9yLW4tcC11c2UtcmVhZC1rZXkgbmls ICgjJCAuIDExNDgxNCkpI0A2NCBOb24tbmlsIG1lYW5zIHRoZSBjdXJyZW50IGNvbW1hbmQgd2Fz IGludm9rZWQgZnJvbSBhIFRUWSBtZW51Lh8KKGRlZnZhciBmcm9tLS10dHktbWVudS1wIG5pbCAo IyQgLiAxMTUzMzEpKSNANzQgU2F5IHdoZXRoZXIgdGhlIGN1cnJlbnQgY29tbWFuZCBzaG91bGQg cHJvbXB0IHRoZSB1c2VyIHZpYSBhIGRpYWxvZyBib3guHwooZGVmYWxpYXMgJ3VzZS1kaWFsb2ct Ym94LXAgI1swICIIXDIwNQ4ACTxcMjA0DQBcblwyMDUOAAtcMjA3IiBbbGFzdC1pbnB1dC1ldmVu dCBsYXN0LW5vbm1lbnUtZXZlbnQgZnJvbS0tdHR5LW1lbnUtcCB1c2UtZGlhbG9nLWJveF0gMSAo IyQgLiAxMTU0NDMpXSkjQDE1NjEgQXNrIHVzZXIgYSAieSBvciBuIiBxdWVzdGlvbi4KUmV0dXJu IHQgaWYgYW5zd2VyIGlzICJ5IiBhbmQgbmlsIGlmIGl0IGlzICJuIi4KClBST01QVCBpcyB0aGUg c3RyaW5nIHRvIGRpc3BsYXkgdG8gYXNrIHRoZSBxdWVzdGlvbjsgYHktb3Itbi1wJwphZGRzICIg KHkgb3IgbikgIiB0byBpdC4gIEl0IGRvZXMgbm90IG5lZWQgdG8gZW5kIGluIHNwYWNlLCBidXQK aWYgaXQgZG9lcyB1cCB0byBvbmUgc3BhY2Ugd2lsbCBiZSByZW1vdmVkLgoKSWYgeW91IGJpbmQg dGhlIHZhcmlhYmxlIGBoZWxwLWZvcm0nIHRvIGEgbm9uLW5pbCB2YWx1ZQp3aGlsZSBjYWxsaW5n IHRoaXMgZnVuY3Rpb24sIHRoZW4gcHJlc3NpbmcgYGhlbHAtY2hhcicKY2F1c2VzIGl0IHRvIGV2 YWx1YXRlIGBoZWxwLWZvcm0nIGFuZCBkaXNwbGF5IHRoZSByZXN1bHQuClBST01QVCBpcyBhbHNv IHVwZGF0ZWQgdG8gc2hvdyBgaGVscC1jaGFyJyBsaWtlICIoeSwgbiBvciBDLWgpICIsCndoZXJl IGBoZWxwLWNoYXInIGlzIGF1dG9tYXRpY2FsbHkgYm91bmQgdG8gYGhlbHAtZm9ybS1zaG93Jy4K Ck5vIGNvbmZpcm1hdGlvbiBvZiB0aGUgYW5zd2VyIGlzIHJlcXVlc3RlZDsgYSBzaW5nbGUgY2hh cmFjdGVyIGlzCmVub3VnaC4gIFNQQyBhbHNvIG1lYW5zIHllcywgYW5kIERFTCBtZWFucyBuby4K ClRvIGJlIHByZWNpc2UsIHRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyB1c2VyIGlucHV0IGludG8g cmVzcG9uc2VzCmJ5IGNvbnN1bHRpbmcgdGhlIGJpbmRpbmdzIGluIGBxdWVyeS1yZXBsYWNlLW1h cCc7IHNlZSB0aGUKZG9jdW1lbnRhdGlvbiBvZiB0aGF0IHZhcmlhYmxlIGZvciBtb3JlIGluZm9y bWF0aW9uLiAgSW4gdGhpcwpjYXNlLCB0aGUgdXNlZnVsIGJpbmRpbmdzIGFyZSBgYWN0JywgYHNr aXAnLCBgcmVjZW50ZXInLApgc2Nyb2xsLXVwJywgYHNjcm9sbC1kb3duJywgYW5kIGBxdWl0Jy4K QW4gYGFjdCcgcmVzcG9uc2UgbWVhbnMgeWVzLCBhbmQgYSBgc2tpcCcgcmVzcG9uc2UgbWVhbnMg bm8uCkEgYHF1aXQnIHJlc3BvbnNlIG1lYW5zIHRvIGludm9rZSBgYWJvcnQtcmVjdXJzaXZlLWVk aXQnLgpJZiB0aGUgdXNlciBlbnRlcnMgYHJlY2VudGVyJywgYHNjcm9sbC11cCcsIG9yIGBzY3Jv bGwtZG93bicKcmVzcG9uc2VzLCBwZXJmb3JtIHRoZSByZXF1ZXN0ZWQgd2luZG93IHJlY2VudGVy aW5nIG9yIHNjcm9sbGluZwphbmQgYXNrIGFnYWluLgoKVW5kZXIgYSB3aW5kb3dpbmcgc3lzdGVt IGEgZGlhbG9nIGJveCB3aWxsIGJlIHVzZWQgaWYgYGxhc3Qtbm9ubWVudS1ldmVudCcKaXMgbmls IGFuZCBgdXNlLWRpYWxvZy1ib3gnIGlzIG5vbi1uaWwuCgpCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0 aW9uIHVzZXMgdGhlIG1pbmlidWZmZXIgdG8gcmVhZCB0aGUga2V5LgpJZiBgeS1vci1uLXAtdXNl LXJlYWQta2V5JyBpcyBub24tbmlsLCBgcmVhZC1rZXknIGlzIHVzZWQKaW5zdGVhZCAod2hpY2gg bWVhbnMgdGhhdCB0aGUgdXNlciBjYW4ndCBjaGFuZ2UgYnVmZmVycyAoYW5kIHRoZQpsaWtlKSB3 aGlsZSBgeS1vci1uLXAnIGlzIHJ1bm5pbmcpLgoKKGZuIFBST01QVCkfCihkZWZhbGlhcyAneS1v ci1uLXAgI1syNTcgIlwzMDZcMzA3CBgJXDIwM0kAXDIxMQMhXDI2MgMCAlwzMTA+XDIwNEUAXDMx MQEhXDIxMVwzMTJcMjY3XDIwMisAXDMxM1wyNjIEXDIxMFwyMDIOAFwzMTRcMjYyBFwyMTBcMjAy DgBcMjExXDMxNVwyMzVcMjAzPQBcblwyMDM9AFwzMTZcbiFcMjY2AlwyMDIOAFwzMTcFUFwyNjZc MjAyXDIwMg4AXDIxMFwyMDJqAVwzMjAgXDIwM18AXDIxMQNcMzIxXCJcMjYyA1wzMjJcMzIxBFwz MjNCXCJcMjYyAlwyMDJqAQtcMjAzXCIBXDIxMQMhXDI2MgNcMzI0XDMyMRwNXDIwM3YAXDMyNVwz MjZcMzI3ICEhXDIxMFwzMzBcMzMxBAM+XDIwM1wyMDIABVwyMDJcMjA2AFwzMTcGBlBcMzMyXDMz MyMhKVwzMzQOOVwzMzUDIVwzMjEjXDI2MgQDXDMzNlwyNjdcMjAyXDM3NwBcMjY2AlwyMDJqAVwz MDYgXDI2NgNcMjAyFgFcMzM3MVwyNjMAXDM0MCAwXDI2NgNcMjAyFgFcMjY2A1wyMDIWAVwyNjYD XDIwMhYBXDM0MTFcMzExAFwzNDIgMFwyNjYDXDIwMhYBXDI2NgNcMjAyFgFcMjY2A1wyMDIWAVwz NDMxXDMzNwBcMzQ0IDBcMjY2A1wyMDIWAVwyNjYDXDIwMhYBXDI2NgNcMjAyFgFcMzQ1MVwzNjUA XDM0NiAwXDI2NgNcMjAyFgFcMjY2A1wyMDIWAVwyNjYDXDIwMhYBA1wzNDc+XDIwNAsBXDIxMVwz NTA9XDIwMxQBXDM1MVwzNTJcMzUzXCJcMjY2A1wyMDIWAVwyNjYCXDM1NCBcMjEwXDM1NSBcMjEw XDIwMmgAXDIwMmoBXDIxMQMhXDI2MgNcMzIxHjpcblwzNTYOOw45XCJcblwyMDNHAVwzNTcBIVwy NjIBXDM2MAFcMzM1DjwhXDM2MVwzNjIGBlwiI1wyMTBcMjExXDI2MgEOPR49XDM2MwVcMzUzA1wz NTMOPlwyMDZZAVwzMjElXDIxMVwzNjRcMjM1XDIwM2QBXDMxM1wyMDJlAVwzMTQqXDI2MgVcMjY2 AwFcMzEzPQlcMjA0fwFcMzY1XDM2NgUDXDIwM3wBXDM2N1wyMDJ9AVwzNzAjXDIxMClcMjA3IiBb cmVhbC10aGlzLWNvbW1hbmQgbm9uaW50ZXJhY3RpdmUgaGVscC1mb3JtIHktb3Itbi1wLXVzZS1y ZWFkLWtleSBjdXJzb3ItaW4tZWNoby1hcmVhIG1pbmlidWZmZXItYXV0by1yYWlzZSByZWNlbnRl ciAjWzUxMyAiAUcCAVwzMDJVXDIwNBIAAwJTSFwzMDM9XDIwMxYAXDMwNFwyMDIXAFwzMDUDXDIw Mx8AXDMwNFwyMDIxAFwzMDYIXDIwMy8AXDMwN1wzMTBcMzExXDMxMgkhIVwiXDIwMjAAXDMxMyFR XDIwNyIgW2hlbHAtZm9ybSBoZWxwLWNoYXIgMCAzMiAiIiAiICIgc3Vic3RpdHV0ZS1jb21tYW5k LWtleXMgZm9ybWF0ICIoXFxgeScsIFxcYG4nIG9yIFxcYCVzJykgIiBrZXktZGVzY3JpcHRpb24g dmVjdG9yICIoXFxgeScgb3IgXFxgbicpICJdIDExICJcblxuKGZuIFBST01QVCAmb3B0aW9uYWwg RElBTE9HKSJdIChhY3Qgc2tpcCkgcmVhZC1zdHJpbmcgI3MoaGFzaC10YWJsZSBzaXplIDQgdGVz dCBlcXVhbCByZWhhc2gtc2l6ZSAxLjUgcmVoYXNoLXRocmVzaG9sZCAwLjgxMjUgcHVyZWNvcHkg dCBkYXRhICgieSIgMjkgIlkiIDI5ICJuIiAzNiAiTiIgMzYpKSBhY3Qgc2tpcCAoImgiICJIIikg cHJpbnQgIlBsZWFzZSBhbnN3ZXIgeSBvciBuLiAgIiB1c2UtZGlhbG9nLWJveC1wIHQgeC1wb3B1 cC1kaWFsb2cgKCgiWWVzIiAuIGFjdCkgKCJObyIgLiBza2lwKSkgKHJlY2VudGVyIHNjcm9sbC11 cCBzY3JvbGwtZG93biBzY3JvbGwtb3RoZXItd2luZG93IHNjcm9sbC1vdGhlci13aW5kb3ctZG93 bikgcmFpc2UtZnJhbWUgd2luZG93LWZyYW1lIG1pbmlidWZmZXItd2luZG93IHJlYWQta2V5IHBy b3BlcnRpemUgZmFjZSBtaW5pYnVmZmVyLXByb21wdCBsb29rdXAta2V5IHZlY3RvciAjcyhoYXNo LXRhYmxlIHNpemUgNyB0ZXN0IGVxIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAu ODEyNSBwdXJlY29weSB0IGRhdGEgKHNraXAgMTU1IGFjdCAxNTUgcmVjZW50ZXIgMTYwIHNjcm9s bC11cCAxNjcgc2Nyb2xsLWRvd24gMTg5IHNjcm9sbC1vdGhlci13aW5kb3cgMjExIHNjcm9sbC1v dGhlci13aW5kb3ctZG93biAyMzMpKSAoZXJyb3IpIHNjcm9sbC11cC1jb21tYW5kIChlcnJvcikg c2Nyb2xsLWRvd24tY29tbWFuZCAoZXJyb3IpIHNjcm9sbC1vdGhlci13aW5kb3cgKGVycm9yKSBz Y3JvbGwtb3RoZXItd2luZG93LWRvd24gKGV4aXQtcHJlZml4IHF1aXQpIDI3IHNpZ25hbCBxdWl0 IG5pbCBkaW5nIGRpc2NhcmQtaW5wdXQgbWFrZS1jb21wb3NlZC1rZXltYXAgY29weS1rZXltYXAg ZGVmaW5lLWtleSBtYWtlLWNsb3N1cmUgI1swICJcMzAwGVwzMDIgKVwyMDciIFtWMCBoZWxwLWZv cm0gaGVscC1mb3JtLXNob3ddIDEgbmlsIG5pbF0gcmVhZC1mcm9tLW1pbmlidWZmZXIgKCJ5IiAi WSIpIG1lc3NhZ2UgIiVzJWMiIDEyMSAxMTAgcXVlcnktcmVwbGFjZS1tYXAgZW5hYmxlLXJlY3Vy c2l2ZS1taW5pYnVmZmVycyB5LW9yLW4tcC1tYXAgaGVscC1jaGFyIHRoaXMtY29tbWFuZCB5LW9y LW4tcC1oaXN0b3J5LXZhcmlhYmxlXSAxMSAoIyQgLiAxMTU2NzQpXSkjQDM4MSBMaWtlIGBwcm9n bicgYnV0IHBlcmZvcm0gQk9EWSBhcyBhbiBhdG9taWMgY2hhbmdlIGdyb3VwLgpUaGlzIG1lYW5z IHRoYXQgaWYgQk9EWSBleGl0cyBhYm5vcm1hbGx5LAphbGwgb2YgaXRzIGNoYW5nZXMgdG8gdGhl IGN1cnJlbnQgYnVmZmVyIGFyZSB1bmRvbmUuClRoaXMgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGV0 aGVyIHVuZG8gaXMgZW5hYmxlZCBpbiB0aGUgYnVmZmVyLgoKVGhpcyBtZWNoYW5pc20gaXMgdHJh bnNwYXJlbnQgdG8gb3JkaW5hcnkgdXNlIG9mIHVuZG87CmlmIHVuZG8gaXMgZW5hYmxlZCBpbiB0 aGUgYnVmZmVyIGFuZCBCT0RZIHN1Y2NlZWRzLCB0aGUKdXNlciBjYW4gdW5kbyB0aGUgY2hhbmdl IG5vcm1hbGx5LgoKKGZuICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ2F0b21pYy1jaGFuZ2UtZ3Jv dXAgJyhtYWNybyAuICNbMTI4ICJcMzAwXDMwMSFcMzAwXDMwMiFcMzAzAlwzMDRCXDMwNVwzMDZc MzA3BVwzMTBCXDI1NwVcMzExXDMxMlwzMTMGBkRcMzE0XDMxNQYJIVwzMTYGCFwzMTdCQkVFXDMy MAVcMzIxBghEXDMyMgYJREZFRVwyMDciIFttYWtlLXN5bWJvbCAiLS1jaGFuZ2UtZ3JvdXAtaGFu ZGxlLS0iICItLWNoYW5nZS1ncm91cC1zdWNjZXNzLS0iIGxldCAoKHByZXBhcmUtY2hhbmdlLWdy b3VwKSkgKHVuZG8tb3V0ZXItbGltaXQgbmlsKSAodW5kby1saW1pdCBtb3N0LXBvc2l0aXZlLWZp eG51bSkgKHVuZG8tc3Ryb25nLWxpbWl0IG1vc3QtcG9zaXRpdmUtZml4bnVtKSAobmlsKSB1bndp bmQtcHJvdGVjdCBwcm9nbiBhY3RpdmF0ZS1jaGFuZ2UtZ3JvdXAgcHJvZzEgbWFjcm9leHAtcHJv Z24gc2V0cSAodCkgaWYgYWNjZXB0LWNoYW5nZS1ncm91cCBjYW5jZWwtY2hhbmdlLWdyb3VwXSAx MyAoIyQgLiAxMTk2OTApXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFc MzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IGF0b21pYy1jaGFuZ2UtZ3JvdXAgbGlzcC1pbmRl bnQtZnVuY3Rpb24gMCBwdXQgZWRlYnVnLWZvcm0tc3BlYyB0XSA1KSNAMTkzIExpa2UgYHByb2du JyBidXQgcGVyZm9ybSBCT0RZIHdpdGggYW1hbGdhbWF0ZWQgdW5kbyBiYXJyaWVycy4KClRoaXMg YWxsb3dzIG11bHRpcGxlIG9wZXJhdGlvbnMgdG8gYmUgdW5kb25lIGluIGEgc2luZ2xlIHN0ZXAu CldoZW4gdW5kbyBpcyBkaXNhYmxlZCB0aGlzIGJlaGF2ZXMgbGlrZSBgcHJvZ24nLgoKKGZuICZy ZXN0IEJPRFkpHwooZGVmYWxpYXMgJ3dpdGgtdW5kby1hbWFsZ2FtYXRlICcobWFjcm8gLiAjWzEy OCAiXDMwMFwzMDEhXDMwMgFcMzAzQlwzMDRCXDMwNVwzMDZcMzA3BUQGBkJCXDMwNlwzMTAGBkRc MzExBgdERUVFXDIwNyIgW21ha2Utc3ltYm9sICItLWNoYW5nZS1ncm91cC1oYW5kbGUtLSIgbGV0 ICgocHJlcGFyZS1jaGFuZ2UtZ3JvdXApKSAoKHVuZG8tb3V0ZXItbGltaXQgbmlsKSAodW5kby1s aW1pdCBtb3N0LXBvc2l0aXZlLWZpeG51bSkgKHVuZG8tc3Ryb25nLWxpbWl0IG1vc3QtcG9zaXRp dmUtZml4bnVtKSkgdW53aW5kLXByb3RlY3QgcHJvZ24gYWN0aXZhdGUtY2hhbmdlLWdyb3VwIGFj Y2VwdC1jaGFuZ2UtZ3JvdXAgdW5kby1hbWFsZ2FtYXRlLWNoYW5nZS1ncm91cF0gMTAgKCMkIC4g MTIwNzE1KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYj XDIwNyIgW2Z1bmN0aW9uLXB1dCB3aXRoLXVuZG8tYW1hbGdhbWF0ZSBsaXNwLWluZGVudC1mdW5j dGlvbiAwIHB1dCBlZGVidWctZm9ybS1zcGVjIHRdIDUpI0AxMzA5IFJldHVybiBhIGhhbmRsZSBm b3IgdGhlIGN1cnJlbnQgYnVmZmVyJ3Mgc3RhdGUsIGZvciBhIGNoYW5nZSBncm91cC4KSWYgeW91 IHNwZWNpZnkgQlVGRkVSLCBtYWtlIGEgaGFuZGxlIGZvciBCVUZGRVIncyBzdGF0ZSBpbnN0ZWFk LgoKUGFzcyB0aGUgaGFuZGxlIHRvIGBhY3RpdmF0ZS1jaGFuZ2UtZ3JvdXAnIGFmdGVyd2FyZCB0 byBpbml0aWF0ZQp0aGUgYWN0dWFsIGNoYW5nZXMgb2YgdGhlIGNoYW5nZSBncm91cC4KClRvIGZp bmlzaCB0aGUgY2hhbmdlIGdyb3VwLCBjYWxsIGVpdGhlciBgYWNjZXB0LWNoYW5nZS1ncm91cCcg b3IKYGNhbmNlbC1jaGFuZ2UtZ3JvdXAnIHBhc3NpbmcgdGhlIHNhbWUgaGFuZGxlIGFzIGFyZ3Vt ZW50LiAgQ2FsbApgYWNjZXB0LWNoYW5nZS1ncm91cCcgdG8gYWNjZXB0IHRoZSBjaGFuZ2VzIGlu IHRoZSBncm91cCBhcyBmaW5hbDsKY2FsbCBgY2FuY2VsLWNoYW5nZS1ncm91cCcgdG8gdW5kbyB0 aGVtIGFsbC4gIFlvdSBzaG91bGQgdXNlCmB1bndpbmQtcHJvdGVjdCcgdG8gbWFrZSBzdXJlIHRo ZSBncm91cCBpcyBhbHdheXMgZmluaXNoZWQuICBUaGUgY2FsbAp0byBgYWN0aXZhdGUtY2hhbmdl LWdyb3VwJyBzaG91bGQgYmUgaW5zaWRlIHRoZSBgdW53aW5kLXByb3RlY3QnLgpPbmNlIHlvdSBm aW5pc2ggdGhlIGdyb3VwLCBkb24ndCB1c2UgdGhlIGhhbmRsZSBhZ2Fpbi0tZG9uJ3QgdHJ5IHRv CmZpbmlzaCB0aGUgc2FtZSBncm91cCB0d2ljZS4gIEZvciBhIHNpbXBsZSBleGFtcGxlIG9mIGNv cnJlY3QgdXNlLCBzZWUKdGhlIHNvdXJjZSBjb2RlIG9mIGBhdG9taWMtY2hhbmdlLWdyb3VwJy4K ClRoZSBoYW5kbGUgcmVjb3JkcyBvbmx5IHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAgVG8gbWFrZSBh IG11bHRpYnVmZmVyCmNoYW5nZSBncm91cCwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UgZm9yIGVh Y2ggYnVmZmVyIHlvdSB3YW50IHRvCmNvdmVyLCB0aGVuIHVzZSBgbmNvbmMnIHRvIGNvbWJpbmUg dGhlIHJldHVybmVkIHZhbHVlcywgbGlrZSB0aGlzOgoKICAobmNvbmMgKHByZXBhcmUtY2hhbmdl LWdyb3VwIGJ1ZmZlci0xKQogICAgICAgICAocHJlcGFyZS1jaGFuZ2UtZ3JvdXAgYnVmZmVyLTIp KQoKWW91IGNhbiB0aGVuIGFjdGl2YXRlIHRoYXQgbXVsdGlidWZmZXIgY2hhbmdlIGdyb3VwIHdp dGggYSBzaW5nbGUKY2FsbCB0byBgYWN0aXZhdGUtY2hhbmdlLWdyb3VwJyBhbmQgZmluaXNoIGl0 IHdpdGggYSBzaW5nbGUgY2FsbAp0byBgYWNjZXB0LWNoYW5nZS1ncm91cCcgb3IgYGNhbmNlbC1j aGFuZ2UtZ3JvdXAnLgoKKGZuICZvcHRpb25hbCBCVUZGRVIpHwooZGVmYWxpYXMgJ3ByZXBhcmUt Y2hhbmdlLWdyb3VwICNbMjU2ICJcMjExXDIwMw4AXDIxMXIBcVwyMTAIKUJDXDIwN3AIQkNcMjA3 IiBbYnVmZmVyLXVuZG8tbGlzdF0gMyAoIyQgLiAxMjE0NTApXSkjQDg0IEFjdGl2YXRlIGEgY2hh bmdlIGdyb3VwIG1hZGUgd2l0aCBgcHJlcGFyZS1jaGFuZ2UtZ3JvdXAnICh3aGljaCBzZWUpLgoK KGZuIEhBTkRMRSkfCihkZWZhbGlhcyAnYWN0aXZhdGUtY2hhbmdlLWdyb3VwICNbMjU3ICJcMjEx XDIxMVwyMDUwAFwyMTFAclwyMTFAcVwyMTAIXDMwMT1cMjAzFwBcMzAyEFwyMDIoAAhAXDI0Mlwy NDdcMjAzKAAIQEAIQEBCCEIQKQFBXDI2NlwyMDJcMjAyAQBcMjA3IiBbYnVmZmVyLXVuZG8tbGlz dCB0IG5pbF0gNSAoIyQgLiAxMjI4NzgpXSkjQDE0OCBGaW5pc2ggYSBjaGFuZ2UgZ3JvdXAgbWFk ZSB3aXRoIGBwcmVwYXJlLWNoYW5nZS1ncm91cCcgKHdoaWNoIHNlZSkuClRoaXMgZmluaXNoZXMg dGhlIGNoYW5nZSBncm91cCBieSBhY2NlcHRpbmcgaXRzIGNoYW5nZXMgYXMgZmluYWwuCgooZm4g SEFORExFKR8KKGRlZmFsaWFzICdhY2NlcHQtY2hhbmdlLWdyb3VwICNbMjU3ICJcMjExXDIxMVwy MDUdAFwyMTFAclwyMTFAcVwyMTBcMjExQVwzMDE9XDIwMxUAXDMwMRApAUFcMjY2XDIwMlwyMDIB AFwyMDciIFtidWZmZXItdW5kby1saXN0IHRdIDUgKCMkIC4gMTIzMTUyKV0pI0AxNDYgRmluaXNo IGEgY2hhbmdlIGdyb3VwIG1hZGUgd2l0aCBgcHJlcGFyZS1jaGFuZ2UtZ3JvdXAnICh3aGljaCBz ZWUpLgpUaGlzIGZpbmlzaGVzIHRoZSBjaGFuZ2UgZ3JvdXAgYnkgcmV2ZXJ0aW5nIGFsbCBvZiBp dHMgY2hhbmdlcy4KCihmbiBIQU5ETEUpHwooZGVmYWxpYXMgJ2NhbmNlbC1jaGFuZ2UtZ3JvdXAg I1syNTcgIlwyMTFcMjExXDIwNWUAXDIxMUBDclwyMTFcMjQyQHFcMjEwXDIxMQFcMjQyQVwyNDBc MjEwXDIxNH5cMjEwXDIxMVwyNDJcMjQyAVwyNDJcMjQzCBlcMzAyXDMwMwIEBgYkXDIxNgJcMjQy OlwyMDM3AAJcMjQyXDMwNFwyNDBcMjEwAlwyNDJcMzA0XDI0MVwyMTACXDI0MjpcMjAzSgACXDI0 MlwzMDUJIT1cMjA0SgBcMzA2XDMwNyFcMjEwXDIxMgk8XDIwM1cAXDMxMFwzMTEhXDIxMFwyMDJL ACkCXDI0MhAsXDI2NgIBQVwyNjZcMjAyXDIwMgEAXDIwNyIgW2J1ZmZlci11bmRvLWxpc3QgcGVu ZGluZy11bmRvLWxpc3QgbWFrZS1jbG9zdXJlICNbMCAiXDMwMlwyNDI6XDIwNQ8AXDMwMlwyNDJc MzAxXDI0MFwyMTBcMzAyXDI0MlwzMDBcMjQxXDIwNyIgW1YwIFYxIFYyXSAyXSBuaWwgbGFzdCBl cnJvciAiVW5kb2luZyB0byBzb21lIHVucmVsYXRlZCBzdGF0ZSIgdW5kby1tb3JlIDFdIDEwICgj JCAuIDEyMzQ1NildKSNANTYxIE1vbWVudGFyaWx5IGRpc3BsYXkgU1RSSU5HIGluIHRoZSBidWZm ZXIgYXQgUE9TLgpEaXNwbGF5IHJlbWFpbnMgdW50aWwgbmV4dCBldmVudCBpcyBpbnB1dC4KSWYg UE9TIGlzIGEgbWFya2VyLCBvbmx5IGl0cyBwb3NpdGlvbiBpcyB1c2VkOyBpdHMgYnVmZmVyIGlz IGlnbm9yZWQuCk9wdGlvbmFsIHRoaXJkIGFyZyBFWElULUNIQVIgY2FuIGJlIGEgY2hhcmFjdGVy LCBldmVudCBvciBldmVudApkZXNjcmlwdGlvbiBsaXN0LiAgRVhJVC1DSEFSIGRlZmF1bHRzIHRv IFNQQy4gIElmIHRoZSBpbnB1dCBpcwpFWElULUNIQVIgaXQgaXMgc3dhbGxvd2VkOyBvdGhlcndp c2UgaXQgaXMgdGhlbiBhdmFpbGFibGUgYXMKaW5wdXQgKGFzIGEgY29tbWFuZCBpZiBub3RoaW5n IGVsc2UpLgpEaXNwbGF5IE1FU1NBR0UgKG9wdGlvbmFsIGZvdXJ0aCBhcmcpIGluIHRoZSBlY2hv IGFyZWEuCklmIE1FU1NBR0UgaXMgbmlsLCBpbnN0cnVjdGlvbnMgdG8gdHlwZSBFWElULUNIQVIg YXJlIGRpc3BsYXllZCB0aGVyZS4KCihmbiBTVFJJTkcgUE9TICZvcHRpb25hbCBFWElULUNIQVIg TUVTU0FHRSkfCihkZWZhbGlhcyAnbW9tZW50YXJ5LXN0cmluZy1kaXNwbGF5ICNbMTAyNiAiAVwy MDQHAFwzMDFcMjYyAlwzMDIDXDIxMVwiXDMwMwUhXDMwNFwzMDUDXCJcMjE2XDIxMlwzMDYCXDMw NwMjXDIxMARiXDIxMGBcMjYyBVwzMTBcMzExXDMxMlwiBVhcMjAzMABcMzEzXDMxNCBcMzE1XDI0 NSFcMjEwKVwzMTYDXDIwNjcAXDMxN1wzMjAGBiFcIlwyMTBcMzIxIFwyMTEFPVwyMDZVAFwyMTFc MzIyBgYhPVwyMDZVAFwzMjNcMzI0IAhcIlwyMTEQKVwyMDciIFt1bnJlYWQtY29tbWFuZC1ldmVu dHMgMzIgbWFrZS1vdmVybGF5IGNvcHktc2VxdWVuY2UgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwz MDAhXDIwNyIgW1YwIGRlbGV0ZS1vdmVybGF5XSAyXSBvdmVybGF5LXB1dCBhZnRlci1zdHJpbmcg d2luZG93LWVuZCBuaWwgdCByZWNlbnRlciB3aW5kb3ctaGVpZ2h0IDIgbWVzc2FnZSAiVHlwZSAl cyB0byBjb250aW51ZSBlZGl0aW5nLiIgc2luZ2xlLWtleS1kZXNjcmlwdGlvbiByZWFkLWtleSBl dmVudC1jb252ZXJ0LWxpc3QgYXBwZW5kIHRoaXMtc2luZ2xlLWNvbW1hbmQtcmF3LWtleXNdIDEw ICgjJCAuIDEyNDEwOCldKSNAMzcgUmV0dXJuIGEgY29weSBvZiBvdmVybGF5IE8uCgooZm4gTykf CihkZWZhbGlhcyAnY29weS1vdmVybGF5ICNbMjU3ICJcMzAwASFcMjAzFABcMzAxXDMwMgIhXDMw MwMhXDMwMAQhI1wyMDIfAFwzMDFlZVwiXDMwNAEhXDIxMFwyMTFcMjYyAVwzMDUCIVwyMTFcMjAz OQBcMzA2AgJcMjExQVwyNjIEXDI0MgNcMjExQVwyNjIFXDI0MiNcMjEwXDIwMlwiAAFcMjA3IiBb b3ZlcmxheS1idWZmZXIgbWFrZS1vdmVybGF5IG92ZXJsYXktc3RhcnQgb3ZlcmxheS1lbmQgZGVs ZXRlLW92ZXJsYXkgb3ZlcmxheS1wcm9wZXJ0aWVzIG92ZXJsYXktcHV0XSA4ICgjJCAuIDEyNTI1 MCldKSNANTk3IFJlbW92ZSBvdmVybGF5cyBiZXR3ZWVuIEJFRyBhbmQgRU5EIHRoYXQgaGF2ZSBw cm9wZXJ0eSBOQU1FIHdpdGggdmFsdWUgVkFMLgpPdmVybGF5cyBtaWdodCBiZSBtb3ZlZCBhbmQv b3Igc3BsaXQuICBJZiBhbnkgdGFyZ2V0ZWQgb3ZlcmxheXMKc3RhcnQgYmVmb3JlIEJFRywgdGhl IG92ZXJsYXlzIHdpbGwgYmUgYWx0ZXJlZCBzbyB0aGF0IHRoZXkgZW5kCmF0IEJFRy4gIExpa2V3 aXNlLCBpZiB0aGUgdGFyZ2V0ZWQgb3ZlcmxheXMgZW5kIGFmdGVyIEVORCwgdGhleQp3aWxsIGJl IGFsdGVyZWQgc28gdGhhdCB0aGV5IHN0YXJ0IGF0IEVORC4gIE92ZXJsYXlzIHRoYXQgc3RhcnQK YXQgb3IgYWZ0ZXIgQkVHIGFuZCBlbmQgYmVmb3JlIEVORCB3aWxsIGJlIHJlbW92ZWQgY29tcGxl dGVseS4KCkJFRyBhbmQgRU5EIGRlZmF1bHQgcmVzcGVjdGl2ZWx5IHRvIHRoZSBiZWdpbm5pbmcg YW5kIGVuZCBvZiB0aGUKYnVmZmVyLgpWYWx1ZXMgYXJlIGNvbXBhcmVkIHdpdGggYGVxJy4KSWYg ZWl0aGVyIE5BTUUgb3IgVkFMIGFyZSBzcGVjaWZpZWQsIGJvdGggc2hvdWxkIGJlIHNwZWNpZmll ZC4KCihmbiAmb3B0aW9uYWwgQkVHIEVORCBOQU1FIFZBTCkfCihkZWZhbGlhcyAncmVtb3ZlLW92 ZXJsYXlzICNbMTAyNCAiA1wyMDQHAGVcMjYyBAJcMjA0DgBkXDI2MgNcMzAwAyFcMjEwAgRXXDIw Mx4AAgRcMjYyBFwyNjIEXDIxMlwzMDEEBFwiXDIxMVwyMDVcMjA1AFwyMTFAXDMwMgEFXCIDPVwy MDN+AFwzMDMBIQYGV1wyMDNmAFwzMDQBIQVWXDIwM1oAXDMwNVwzMDYCIVwzMDMDIQYII1wyMTBc MzA1AQYGXDMwNAQhI1wyMTBcMjAyfgBcMzA1AVwzMDMDIQYII1wyMTBcMjAyfgBcMzA0ASEFVlwy MDN6AFwzMDUBBgZcMzA0BCEjXDIxMFwyMDJ+AFwzMDcBIVwyMTABQVwyNjZcMjAyXDIwMiMAKVwy MDciIFtvdmVybGF5LXJlY2VudGVyIG92ZXJsYXlzLWluIG92ZXJsYXktZ2V0IG92ZXJsYXktc3Rh cnQgb3ZlcmxheS1lbmQgbW92ZS1vdmVybGF5IGNvcHktb3ZlcmxheSBkZWxldGUtb3ZlcmxheV0g MTEgKCMkIC4gMTI1NTgxKV0pI0A1NiBOb3JtYWwgaG9vayBydW4gYnkgYHN1c3BlbmQtZW1hY3Mn LCBiZWZvcmUgc3VzcGVuZGluZy4fCihkZWZ2YXIgc3VzcGVuZC1ob29rIG5pbCAoIyQgLiAxMjY2 MjApKSNANjMgTm9ybWFsIGhvb2sgcnVuIGJ5IGBzdXNwZW5kLWVtYWNzJywgYWZ0ZXIgRW1hY3Mg aXMgY29udGludWVkLh8KKGRlZnZhciBzdXNwZW5kLXJlc3VtZS1ob29rIG5pbCAoIyQgLiAxMjY3 MjApKSNANDcgTm9ybWFsIGhvb2sgcnVuIGFmdGVyIGxvYWRpbmcgdGhlIC5wZG1wIGZpbGUuHwoo ZGVmdmFyIGFmdGVyLXBkdW1wLWxvYWQtaG9vayBuaWwgKCMkIC4gMTI2ODM0KSkjQDE3OSBOb3Jt YWwgaG9vayBydW4gYnkgYHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyJyBhZnRlciBkaXNwbGF5 aW5nIHRoZSBidWZmZXIuCldoZW4gdGhlIGhvb2sgcnVucywgdGhlIHRlbXBvcmFyeSBidWZmZXIg aXMgY3VycmVudCwgYW5kIHRoZSB3aW5kb3cgaXQKd2FzIGRpc3BsYXllZCBpbiBpcyBzZWxlY3Rl ZC4fCihkZWZ2YXIgdGVtcC1idWZmZXItc2hvdy1ob29rIG5pbCAoIyQgLiAxMjY5MzUpKSNAMTkz IE5vcm1hbCBob29rIHJ1biBieSBgd2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXInIGF0IHRoZSBz dGFydC4KV2hlbiB0aGUgaG9vayBydW5zLCB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciBpcyBjdXJyZW50 LgpUaGlzIGhvb2sgaXMgbm9ybWFsbHkgc2V0IHVwIHdpdGggYSBmdW5jdGlvbiB0byBwdXQgdGhl IGJ1ZmZlciBpbiBIZWxwCm1vZGUuHwooZGVmdmFyIHRlbXAtYnVmZmVyLXNldHVwLWhvb2sgbmls ICgjJCAuIDEyNzE2OCkpI0AyMzAgRGlyZWN0b3J5IGJlbmVhdGggd2hpY2ggYWRkaXRpb25hbCBw ZXItdXNlciBFbWFjcy1zcGVjaWZpYyBmaWxlcyBhcmUgcGxhY2VkLgpWYXJpb3VzIHByb2dyYW1z IGluIEVtYWNzIHN0b3JlIGluZm9ybWF0aW9uIGluIHRoaXMgZGlyZWN0b3J5LgpOb3RlIHRoYXQg dGhpcyBzaG91bGQgZW5kIHdpdGggYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLgpTZWUgYWxzbyBgbG9j YXRlLXVzZXItZW1hY3MtZmlsZScuHwooZGVmdmFyIHVzZXItZW1hY3MtZGlyZWN0b3J5IG5pbCAo IyQgLiAxMjc0MTYpKSNANTEgUmV0dXJuIG5vbi1uaWwgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlz IG5hcnJvd2VkLh8KKGRlZmFsaWFzICdidWZmZXItbmFycm93ZWQtcCAjWzAgImRlWlwzMDAgVT9c MjA3IiBbYnVmZmVyLXNpemVdIDIgKCMkIC4gMTI3Njk4KV0pCihieXRlLWNvZGUgIlwzMDBcMzAx XDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IGJ1ZmZlci1uYXJy b3dlZC1wIHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNvbXBpbGUtaW5saW5lLWV4 cGFuZF0gNSkjQDQxNyBFeGVjdXRlIEJPRFkgd2l0aCByZXN0cmljdGlvbnMgc2V0IHRvIFNUQVJU IGFuZCBFTkQuCgpUaGUgY3VycmVudCByZXN0cmljdGlvbnMsIGlmIGFueSwgYXJlIHJlc3RvcmVk IHVwb24gcmV0dXJuLgoKV2l0aCB0aGUgb3B0aW9uYWwgOmxvY2tlZCBUQUcgYXJndW1lbnQsIGlu c2lkZSBCT0RZLApgbmFycm93LXRvLXJlZ2lvbicgYW5kIGB3aWRlbicgY2FuIGJlIHVzZWQgb25s eSB3aXRoaW4gdGhlIFNUQVJUCmFuZCBFTkQgbGltaXRzLCB1bmxlc3MgdGhlIHJlc3RyaWN0aW9u cyBhcmUgdW5sb2NrZWQgYnkgY2FsbGluZwpgbmFycm93aW5nLXVubG9jaycgd2l0aCBUQUcuICBT ZWUgYG5hcnJvd2luZy1sb2NrJyBmb3IgYSBtb3JlCmRldGFpbGVkIGRlc2NyaXB0aW9uLgoKKGZu IFNUQVJUIEVORCBbOmxvY2tlZCBUQUddIEJPRFkpHwooZGVmYWxpYXMgJ3dpdGgtbmFycm93aW5n ICcobWFjcm8gLiAjWzY0MiAiXDIxMUBcMzAwPVwyMDMXAFwzMDEDA1wzMDJcMzAzBUFBQkIEQUBc MjU3BVwyMDdcMzAxAwNcMzAyXDMwMwVCQkZcMjA3IiBbOmxvY2tlZCBpbnRlcm5hbC0td2l0aC1u YXJyb3dpbmcgbGFtYmRhIG5pbF0gOSAoIyQgLiAxMjc5NzkpXSkpI0A4NSBIZWxwZXIgZnVuY3Rp b24gZm9yIGB3aXRoLW5hcnJvd2luZycsIHdoaWNoIHNlZS4KCihmbiBTVEFSVCBFTkQgQk9EWSAm b3B0aW9uYWwgVEFHKR8KKGRlZmFsaWFzICdpbnRlcm5hbC0td2l0aC1uYXJyb3dpbmcgI1sxMDI3 ICJcMjE0AwN9XDIxMFwyMTFcMjAzDQBcMzAwASFcMjEwASApXDIwNyIgW25hcnJvd2luZy1sb2Nr XSA2ICgjJCAuIDEyODU3OSldKSNAMTgwIERldGVybWluZSB0aGUgYm91bmRhcmllcyBvZiB0aGUg ZGVmYXVsdCB0YWcsIGJhc2VkIG9uIHRleHQgYXQgcG9pbnQuClJldHVybiBhIGNvbnMgY2VsbCB3 aXRoIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgZm91bmQgdGFnLgpJZiB0aGVyZSBpcyBu byBwbGF1c2libGUgZGVmYXVsdCwgcmV0dXJuIG5pbC4fCihkZWZhbGlhcyAnZmluZC10YWctZGVm YXVsdC1ib3VuZHMgI1swICJcMzAwXDMwMSFcMjA3IiBbYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50 IHN5bWJvbF0gMiAoIyQgLiAxMjg3ODgpXSkjQDEwOCBEZXRlcm1pbmUgZGVmYXVsdCB0YWcgdG8g c2VhcmNoIGZvciwgYmFzZWQgb24gdGV4dCBhdCBwb2ludC4KSWYgdGhlcmUgaXMgbm8gcGxhdXNp YmxlIGRlZmF1bHQsIHJldHVybiBuaWwuHwooZGVmYWxpYXMgJ2ZpbmQtdGFnLWRlZmF1bHQgI1sw ICJcMzAwIFwyMTFcMjA1XGYAXDMwMQFAAkFcIlwyMDciIFtmaW5kLXRhZy1kZWZhdWx0LWJvdW5k cyBidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXNdIDQgKCMkIC4gMTI5MDgwKV0pI0AyMzQg UmV0dXJuIHJlZ2V4cCB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQgdGFnIGF0IHBvaW50LgpJZiB0 aGVyZSBpcyBubyB0YWcgYXQgcG9pbnQsIHJldHVybiBuaWwuCgpXaGVuIGluIGEgbWFqb3IgbW9k ZSB0aGF0IGRvZXMgbm90IHByb3ZpZGUgaXRzIG93bgpgZmluZC10YWctZGVmYXVsdC1mdW5jdGlv bicsIHJldHVybiBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgdGhlCnN5bWJvbCBhdCBwb2ludCBleGFj dGx5Lh8KKGRlZmFsaWFzICdmaW5kLXRhZy1kZWZhdWx0LWFzLXJlZ2V4cCAjWzAgIghcMjA2CwAJ XDMwME5cMjA2CwBcMzAyIFwyMTFcMjA1EwBcMzAzASFcMjA3IiBbZmluZC10YWctZGVmYXVsdC1m dW5jdGlvbiBtYWpvci1tb2RlIGZpbmQtdGFnLWRlZmF1bHQgcmVnZXhwLXF1b3RlXSAzICgjJCAu IDEyOTMzMyldKSNAMjQ0IFJldHVybiByZWdleHAgdGhhdCBtYXRjaGVzIHRoZSBkZWZhdWx0IHRh ZyBhdCBwb2ludCBhcyBzeW1ib2wuCklmIHRoZXJlIGlzIG5vIHRhZyBhdCBwb2ludCwgcmV0dXJu IG5pbC4KCldoZW4gaW4gYSBtYWpvciBtb2RlIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBpdHMgb3du CmBmaW5kLXRhZy1kZWZhdWx0LWZ1bmN0aW9uJywgcmV0dXJuIGEgcmVnZXhwIHRoYXQgbWF0Y2hl cyB0aGUKc3ltYm9sIGF0IHBvaW50IGV4YWN0bHkuHwooZGVmYWxpYXMgJ2ZpbmQtdGFnLWRlZmF1 bHQtYXMtc3ltYm9sLXJlZ2V4cCAjWzAgIlwzMDIgXDIxMVwyMDMbAAhcMjA2EQAJXDMwME5cMjA2 EQBcMzAzXDMwMz1cMjAzGwBcMzA0XDMwNQJcIlwyMDdcMjA3IiBbZmluZC10YWctZGVmYXVsdC1m dW5jdGlvbiBtYWpvci1tb2RlIGZpbmQtdGFnLWRlZmF1bHQtYXMtcmVnZXhwIGZpbmQtdGFnLWRl ZmF1bHQgZm9ybWF0ICJcXF88JXNcXF8+Il0gNCAoIyQgLiAxMjk3NDgpXSkjQDY3OCBTT1VORCBp cyBhIGxpc3Qgb2YgdGhlIGZvcm0gYChzb3VuZCBLRVlXT1JEIFZBTFVFLi4uKScuClRoZSBmb2xs b3dpbmcga2V5d29yZHMgYXJlIHJlY29nbml6ZWQ6CgogIDpmaWxlIEZJTEUgLSByZWFkIHNvdW5k IGRhdGEgZnJvbSBGSUxFLiAgSWYgRklMRSBpc24ndCBhbgphYnNvbHV0ZSBmaWxlIG5hbWUsIGl0 IGlzIHNlYXJjaGVkIGluIGBkYXRhLWRpcmVjdG9yeScuCgogIDpkYXRhIERBVEEgLSByZWFkIHNv dW5kIGRhdGEgZnJvbSBzdHJpbmcgREFUQS4KCkV4YWN0bHkgb25lIG9mIDpmaWxlIG9yIDpkYXRh IG11c3QgYmUgcHJlc2VudC4KCiAgOnZvbHVtZSBWT0wgLSBzZXQgdm9sdW1lIHRvIFZPTC4gIFZP TCBtdXN0IGFuIGludGVnZXIgaW4gdGhlCnJhbmdlIDAuLjEwMCBvciBhIGZsb2F0IGluIHRoZSBy YW5nZSAwLi4xLjAuICBJZiBub3Qgc3BlY2lmaWVkLApkb24ndCBjaGFuZ2UgdGhlIHZvbHVtZSBz ZXR0aW5nIG9mIHRoZSBzb3VuZCBkZXZpY2UuCgogIDpkZXZpY2UgREVWSUNFIC0gcGxheSBzb3Vu ZCBvbiBERVZJQ0UuICBJZiBub3Qgc3BlY2lmaWVkLAphIHN5c3RlbS1kZXBlbmRlbnQgZGVmYXVs dCBkZXZpY2UgbmFtZSBpcyB1c2VkLgoKTm90ZTogOmRhdGEgYW5kIDpkZXZpY2UgYXJlIGN1cnJl bnRseSBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MuCgooZm4gU09VTkQpHwooZGVmYWxpYXMgJ3Bs YXktc291bmQgI1syNTcgIlwzMDBcMzAxIVwyMDNcbgBcMzAxASFcMjA3XDMwMlwzMDMhXDIwNyIg W2Zib3VuZHAgcGxheS1zb3VuZC1pbnRlcm5hbCBlcnJvciAiVGhpcyBFbWFjcyBiaW5hcnkgbGFj a3Mgc291bmQgc3VwcG9ydCJdIDMgKCMkIC4gMTMwMjM4KV0pI0A0MTkgUXVvdGUgQVJHVU1FTlQg Zm9yIHBhc3NpbmcgYXMgYXJndW1lbnQgdG8gYW4gaW5mZXJpb3Igc2hlbGwuCgpUaGlzIGZ1bmN0 aW9uIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGUgc3ludGF4IG9mIHlvdXIgc3lzdGVtJ3MK c3RhbmRhcmQgc2hlbGwsIGFuZCBtaWdodCBwcm9kdWNlIGluY29ycmVjdCByZXN1bHRzIHdpdGgg dW51c3VhbCBzaGVsbHMuClNlZSBJbmZvIG5vZGUgYChlbGlzcClTZWN1cml0eSBDb25zaWRlcmF0 aW9ucycuCgpJZiB0aGUgb3B0aW9uYWwgUE9TSVggYXJndW1lbnQgaXMgbm9uLW5pbCwgQVJHVU1F TlQgaXMgcXVvdGVkCmFjY29yZGluZyB0byBQT1NJWCBzaGVsbCBxdW90aW5nIHJ1bGVzLCByZWdh cmRsZXNzIG9mIHRoZQpzeXN0ZW0ncyBzaGVsbC4KCihmbiBBUkdVTUVOVCAmb3B0aW9uYWwgUE9T SVgpHwooZGVmYWxpYXMgJ3NoZWxsLXF1b3RlLWFyZ3VtZW50ICNbNTEzICJcMjExXDIwNEoACFwz MDE9XDIwM0oAXDMwMlwzMDNcMzA0XDMwNVwzMDYGBlwiXDIwMx0AXDMwM1wyMjUFR1dcMjAzQABc MzA1XDMwNwYGBCNcMjAzQABcMzAzXDIyNFwyNjIBAgUDA09cMzEwBgcEXDIxMVRPUlwyNjIDXDIx MVRcMjYyAlwyMDIdAFwzMTEDBgYEXDMwNE9cMzExUlwyMDdcMjExXDIwNHoACFwzMTI9XDIwM3oA XDMxMyBcMjAzegBcMzE0XDMxNVwzMTZcMzE0XDMxN1wzMjAGByMjXDI2MgJcMzA1XDMyMQNcIlwy MDN1AFwzMjJcMzE0XDMyM1wzMjQFI1wzMjJRXDIwN1wzMTECXDMxMVFcMjA3AVwzMDJcMjMyXDIw M1wyMDIAXDMyNVwyMDdcMzI2XDMyN1wzMzBcMzE0XDMzMVwzMzIGByMjXDIwNyIgW3N5c3RlbS10 eXBlIG1zLWRvcyAiIiAwIG5pbCBzdHJpbmctbWF0Y2ggIlteXCJdIiAiW1wiXSIgIlxcIiAiXCIi IHdpbmRvd3MtbnQgdzMyLXNoZWxsLWRvcy1zZW1hbnRpY3MgcmVwbGFjZS1yZWdleHAtaW4tc3Ry aW5nICJcXChcXFxcKlxcKSQiICJcXDFcXDEiICJcXChcXFxcKlxcKVwiIiAiXFwxXFwxXFxcXFwi IiAiWyUhXCJdIiAiXlwiIiAiXFwoWyUhKClcIjw+JnxeXVxcKSIgIl5cXDEiICInJyIgc3RyaW5n LXJlcGxhY2UgIlxuIiAiJ1xuJyIgIlteLTAtOWEtekEtWl8uL1xuXSIgIlxcXFxcXCYiXSAxMSAo IyQgLiAxMzEwODUpXSkjQDUzIFJldHVybiBhIGxpc3Qgb2YgY2hhcmFjdGVycyBpbiBTVFJJTkcu CgooZm4gU1RSSU5HKR8KKGRlZmFsaWFzICdzdHJpbmctdG8tbGlzdCAjWzI1NyAiXDMwMAFcMzAx XCJcMjA3IiBbYXBwZW5kIG5pbF0gNCAoIyQgLiAxMzIyMDIpXSkKKGJ5dGUtY29kZSAiXDMwMFwz MDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgc3RyaW5nLXRv LWxpc3Qgc3BlZWQgLTEgcHV0IGJ5dGUtb3B0aW1pemVyIGJ5dGUtY29tcGlsZS1pbmxpbmUtZXhw YW5kXSA1KSNANTUgUmV0dXJuIGEgdmVjdG9yIG9mIGNoYXJhY3RlcnMgaW4gU1RSSU5HLgoKKGZu IFNUUklORykfCihkZWZhbGlhcyAnc3RyaW5nLXRvLXZlY3RvciAjWzI1NyAiXDMwMAEhXDIwNyIg W3Zjb25jYXRdIDMgKCMkIC4gMTMyNDgwKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMj XDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHN0cmluZy10by12ZWN0b3Igc3Bl ZWQgLTEgcHV0IGJ5dGUtb3B0aW1pemVyIGJ5dGUtY29tcGlsZS1pbmxpbmUtZXhwYW5kXSA1KSNA NzYgUmV0dXJuIHQgaWYgT0JKRUNUIGlzIGEgc3RyaW5nIG9yIG5pbC4KT3RoZXJ3aXNlLCByZXR1 cm4gbmlsLgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnc3RyaW5nLW9yLW51bGwtcCAjWzI1NyAi XDIxMTtcMjA2BwBcMjExP1wyMDciIFtdIDIgKCMkIC4gMTMyNzU2KV0pI0A2MiBSZXR1cm4gdCBp ZiBPQkpFQ1QgaXMgbmlsIG9yIGEgbGlzdCBvZiBzdHJpbmdzLgoKKGZuIE9CSkVDVCkfCihkZWZh bGlhcyAnbGlzdC1vZi1zdHJpbmdzLXAgI1syNTcgIlwyMTE6XDIwMxIAXDIxMUA7XDIwMxIAXDIx MUFcMjYyAVwyMDIAAFwyMTE/XDIwNyIgW10gMiAoIyQgLiAxMzI5MTQpXSkKKGJ5dGUtY29kZSAi XDMwMFwzMDFcMzAyXDMwMyNcMzAwXDMwMVwzMDRcMzA1I1wzMDBcMjA3IiBbZnVuY3Rpb24tcHV0 IGxpc3Qtb2Ytc3RyaW5ncy1wIHB1cmUgdCBzaWRlLWVmZmVjdC1mcmVlIGVycm9yLWZyZWVdIDUp I0AxMTAgUmV0dXJuIHQgaWYgT0JKRUNUIGlzIG9uZSBvZiB0aGUgdHdvIGNhbm9uaWNhbCBib29s ZWFuIHZhbHVlczogdCBvciBuaWwuCk90aGVyd2lzZSwgcmV0dXJuIG5pbC4KCihmbiBPQkpFQ1Qp HwooZGVmYWxpYXMgJ2Jvb2xlYW5wICNbMjU3ICJcMjExXDMwMD5cMjA1BwBcMzAxXDIwNyIgWyhu aWwgdCkgdF0gMyAoIyQgLiAxMzMyMTUpXSkjQDYzIE5vbi1uaWwgaWYgYW5kIG9ubHkgaWYgT0JK RUNUIGlzIGEgc3BlY2lhbCBmb3JtLgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnc3BlY2lhbC1m b3JtLXAgI1syNTcgIlwyMTE5XDIwMxAAXDMwMAEhXDIwMxAAXDMwMQEhXDI2MgFcMzAyASFcMjA1 HABcMzAzASFBXDMwND1cMjA3IiBbZmJvdW5kcCBpbmRpcmVjdC1mdW5jdGlvbiBzdWJycCBzdWJy LWFyaXR5IHVuZXZhbGxlZF0gMyAoIyQgLiAxMzM0MTEpXSkjQDYyIE5vbi1uaWwgaWYgYW5kIG9u bHkgaWYgT0JKRUNUIGlzIGEgdmFsaWQgcGxpc3QuCgooZm4gT0JKRUNUKR8KKGRlZmFsaWFzICdw bGlzdHAgI1syNTcgIlwzMDABIVwyMTFcMjA1XGYAXDIxMVwzMDFcMjQ2XDMwMlVcMjA3IiBbcHJv cGVyLWxpc3QtcCAyIDBdIDQgKCMkIC4gMTMzNjQ4KV0pI0A1NiBOb24tbmlsIGlmIGFuZCBvbmx5 IGlmIE9CSkVDVCBpcyBhIG1hY3JvLgoKKGZuIE9CSkVDVCkfCihkZWZhbGlhcyAnbWFjcm9wICNb MjU3ICJcMzAwASFcMjExOlwyMDUeAFwyMTFAXDMwMT1cMjA2HgBcMjExXDIxMVwyNDJcMzAyPVwy NjIBXDIwNR4AXDMwMwE4XDMwND5cMjA3IiBbaW5kaXJlY3QtZnVuY3Rpb24gbWFjcm8gYXV0b2xv YWQgNCAobWFjcm8gdCldIDUgKCMkIC4gMTMzODE3KV0pI0AxNTggUmV0dXJuIG5vbi1uaWwgaWYg T0JKRUNUIGlzIGEgZnVuY3Rpb24gdGhhdCBoYXMgYmVlbiBjb21waWxlZC4KRG9lcyBub3QgZGlz dGluZ3Vpc2ggYmV0d2VlbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gbWFjaGluZSBjb2RlCm9y IGJ5dGUtY29kZS4KCihmbiBPQkpFQ1QpHwooZGVmYWxpYXMgJ2NvbXBpbGVkLWZ1bmN0aW9uLXAg I1syNTcgIlwzMDABIVwyMDYJAFwzMDEBIVwyMDciIFtzdWJycCBieXRlLWNvZGUtZnVuY3Rpb24t cF0gMyAoIyQgLiAxMzQwNDYpXSkjQDgxIFJldHVybiB0aGUgZmllbGQgYXQgcG9zaXRpb24gUE9T LCB0YWtpbmcgc3RpY2tpbmVzcyBldGMgaW50byBhY2NvdW50LgoKKGZuIFBPUykfCihkZWZhbGlh cyAnZmllbGQtYXQtcG9zICNbMjU3ICJcMzAwXDMwMQIhXDMwMlwiXDIxMVwzMDM9XDIwMxQAXDMw MFwzMDQDIVNcMzAyXCJcMjA3XDIwNyIgW2dldC1jaGFyLXByb3BlcnR5IGZpZWxkLWJlZ2lubmlu ZyBmaWVsZCBib3VuZGFyeSBmaWVsZC1lbmRdIDUgKCMkIC4gMTM0MzE3KV0pI0A0NDIgUmV0dXJu IHRoZSBTSEEtMSAoU2VjdXJlIEhhc2ggQWxnb3JpdGhtKSBvZiBhbiBPQkpFQ1QuCk9CSkVDVCBp cyBlaXRoZXIgYSBzdHJpbmcgb3IgYSBidWZmZXIuICBPcHRpb25hbCBhcmd1bWVudHMgU1RBUlQg YW5kCkVORCBhcmUgY2hhcmFjdGVyIHBvc2l0aW9ucyBzcGVjaWZ5aW5nIHdoaWNoIHBvcnRpb24g b2YgT0JKRUNUIGZvcgpjb21wdXRpbmcgdGhlIGhhc2guICBJZiBCSU5BUlkgaXMgbm9uLW5pbCwg cmV0dXJuIGEgc3RyaW5nIGluIGJpbmFyeQpmb3JtLgoKTm90ZSB0aGF0IFNIQS0xIGlzIG5vdCBj b2xsaXNpb24gcmVzaXN0YW50IGFuZCBzaG91bGQgbm90IGJlIHVzZWQKZm9yIGFueXRoaW5nIHNl Y3VyaXR5LXJlbGF0ZWQuICBTZWUgYHNlY3VyZS1oYXNoJyBmb3IKYWx0ZXJuYXRpdmVzLgoKKGZu IE9CSkVDVCAmb3B0aW9uYWwgU1RBUlQgRU5EIEJJTkFSWSkfCihkZWZhbGlhcyAnc2hhMSAjWzEw MjUgIlwzMDBcMzAxBQUFBSVcMjA3IiBbc2VjdXJlLWhhc2ggc2hhMV0gMTAgKCMkIC4gMTM0NTcx KV0pI0AyNDEgUmV0dXJuIHRoZSB2YWx1ZSBvZiBwcm9wZXJ0eSBQUk9QIG9mIGZ1bmN0aW9uIEYu CklmIEFVVE9MT0FEIGlzIG5vbi1uaWwgYW5kIEYgaXMgYXV0b2xvYWRlZCwgdHJ5IHRvIGxvYWQg aXQKaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIHNldCBQUk9QLiAgSWYgQVVUT0xPQUQgaXMgYG1h Y3JvJywgZG8gaXQgb25seQppZiBpdCdzIGFuIGF1dG9sb2FkZWQgbWFjcm8uCgooZm4gRiBQUk9Q ICZvcHRpb25hbCBBVVRPTE9BRCkfCihkZWZhbGlhcyAnZnVuY3Rpb24tZ2V0ICNbNzcwICJcMzAw AzlcMjAzPgADA05cMjExXDI2MgJcMjA0PgBcMzAxBCFcMjAzPgADSwJcMjAzNwBcMjExXDIxMVwy NDJcMzAyPVwyNjIBXDIwMzcAXDIxMVwzMDMCBgcGBlwzMDQ9XDIwNTIAXDMwNCNcMjMyXDIwMzoA XDIxMVwyNjIFXDIxMFwyMDIBAFwyMDciIFtuaWwgZmJvdW5kcCBhdXRvbG9hZCBhdXRvbG9hZC1k by1sb2FkIG1hY3JvXSAxMSAoIyQgLiAxMzUwOTkpXSkjQDIxMiBQcm9jZXNzIHRleHQgcHJvcGVy dGllcyBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQsIGluc2VydGVkIGZvciBhIGB5YW5rJy4KUGVyZm9y bSB0aGUgaGFuZGxpbmcgc3BlY2lmaWVkIGJ5IGB5YW5rLWhhbmRsZWQtcHJvcGVydGllcycsIHRo ZW4KcmVtb3ZlIHByb3BlcnRpZXMgc3BlY2lmaWVkIGJ5IGB5YW5rLWV4Y2x1ZGVkLXByb3BlcnRp ZXMnLgoKKGZuIFNUQVJUIEVORCkfCihkZWZhbGlhcyAncmVtb3ZlLXlhbmstZXhjbHVkZWQtcHJv cGVydGllcyAjWzUxNCAiXDMwMxgJXDIxMVwyMDM0AFwyMTFAXDIxMUABQQVcMjExBgZXXDIwMysA XDMwNAEEXCJcMzA1AgVcMzA2BlxuJAMCBAMjXDIxMFwyNjZcMjAyXDIwMg4AXDI2NgMBQVwyNjZc MjAyXDIwMgMAXDIxMFxuXDMwMz1cMjAzQwBcMzA3AgJcMzA2I1wyMDJIAFwzMTACAlxuIylcMjA3 IiBbaW5oaWJpdC1yZWFkLW9ubHkgeWFuay1oYW5kbGVkLXByb3BlcnRpZXMgeWFuay1leGNsdWRl ZC1wcm9wZXJ0aWVzIHQgZ2V0LXRleHQtcHJvcGVydHkgbmV4dC1zaW5nbGUtcHJvcGVydHktY2hh bmdlIG5pbCBzZXQtdGV4dC1wcm9wZXJ0aWVzIHJlbW92ZS1saXN0LW9mLXRleHQtcHJvcGVydGll c10gMTMgKCMkIC4gMTM1NTg0KV0pI0AzMTEgSW5zZXJ0IFNUUklORyBhdCBwb2ludCBmb3IgdGhl IGB5YW5rJyBjb21tYW5kLgoKVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBpbnNlcnQnLCBleGNlcHQg aXQgaG9ub3JzIHRoZSB2YXJpYWJsZXMKYHlhbmstaGFuZGxlZC1wcm9wZXJ0aWVzJyBhbmQgYHlh bmstZXhjbHVkZWQtcHJvcGVydGllcycsIGFuZCB0aGUKYHlhbmstaGFuZGxlcicgdGV4dCBwcm9w ZXJ0eSwgaW4gdGhlIHdheSB0aGF0IGB5YW5rJyBkb2VzLgoKSXQgYWxzbyBydW5zIHRoZSBzdHJp bmcgdGhyb3VnaCBgeWFuay10cmFuc2Zvcm0tZnVuY3Rpb25zJy4KCihmbiBTVFJJTkcpHwooZGVm YWxpYXMgJ2luc2VydC1mb3IteWFuayAjWzI1NyAiXDIxMUNcMzAwXDMwMVwzMDJcMzAzBFwiXCJc MjEwXDMwNFwzMDVcMzA2XDMwNwRcMjQyI1wyMTFcMjYyAlwyMDMqAFwzMTACXDI0MlwzMDYDTyFc MjEwAVwyMTFcMjQyAlwzMDRPXDI0MFwyMTBcMjAyCwBcMjEwXDMxMAFcMjQyIVwyMDciIFtydW4t aG9vay13cmFwcGVkIHlhbmstdHJhbnNmb3JtLWZ1bmN0aW9ucyBtYWtlLWNsb3N1cmUgI1syNTcg IlwzMDABXDMwMFwyNDIhXDI0MFwyMTBcMzAxXDIwNyIgW1YwIG5pbF0gNCAiXG5cbihmbiBGKSJd IG5pbCBuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UgMCB5YW5rLWhhbmRsZXIgaW5zZXJ0LWZv ci15YW5rLTFdIDcgKCMkIC4gMTM2MjAwKV0pI0A1NSBIZWxwZXIgZm9yIGBpbnNlcnQtZm9yLXlh bmsnLCB3aGljaCBzZWUuCgooZm4gU1RSSU5HKR8KKGRlZmFsaWFzICdpbnNlcnQtZm9yLXlhbmst MSAjWzI1NyAiXDIxMTtcMjA1XG4AXDMwM1wzMDRcMzA1AyNcMjExQUBcMjA2EQABYAgYXDMwNlwz MDcRA0BcMjAzJAADQAMhXDIxMFwyMDInAAJjXDIxMGBcMjYyAVwzMDcQXDMxMAQ4XDIwNDcAXDMx MQICXCJcMjEwXDIxMQJWXDIwM0wAXDMxMgFTIVwyMDNMAFwzMTMBUwJcMzE0XDMwNyRcMjEwCVwz MDc9XDIwM1YAXDMxNQQ4EVwzMTYEOFwyMDVhAFwzMTYEOFwyMTESKVwyMDciIFtpbmhpYml0LXJl YWQtb25seSB5YW5rLXVuZG8tZnVuY3Rpb24gdGhpcy1jb21tYW5kIGdldC10ZXh0LXByb3BlcnR5 IDAgeWFuay1oYW5kbGVyIG5pbCB0IDIgcmVtb3ZlLXlhbmstZXhjbHVkZWQtcHJvcGVydGllcyB0 ZXh0LXByb3BlcnRpZXMtYXQgcHV0LXRleHQtcHJvcGVydHkgcmVhci1ub25zdGlja3kgMyA0XSAx MCAoIyQgLiAxMzY4ODkpXSkjQDI4NiBJbnNlcnQgYmVmb3JlIHBvaW50IGEgc3Vic3RyaW5nIG9m IEJVRkZFUiwgd2l0aG91dCB0ZXh0IHByb3BlcnRpZXMuCkJVRkZFUiBtYXkgYmUgYSBidWZmZXIg b3IgYSBidWZmZXIgbmFtZS4KQXJndW1lbnRzIFNUQVJUIGFuZCBFTkQgYXJlIGNoYXJhY3RlciBw b3NpdGlvbnMgc3BlY2lmeWluZyB0aGUgc3Vic3RyaW5nLgpUaGV5IGRlZmF1bHQgdG8gdGhlIHZh bHVlcyBvZiAocG9pbnQtbWluKSBhbmQgKHBvaW50LW1heCkgaW4gQlVGRkVSLgoKKGZuIEJVRkZF UiAmb3B0aW9uYWwgU1RBUlQgRU5EKR8KKGRlZmFsaWFzICdpbnNlcnQtYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzICNbNzY5ICJgXDMwMQQEBCNcMjEwXDMwMhhcMzAzAWBcMzA0IylcMjA3 IiBbaW5oaWJpdC1yZWFkLW9ubHkgaW5zZXJ0LWJ1ZmZlci1zdWJzdHJpbmcgdCBzZXQtdGV4dC1w cm9wZXJ0aWVzIG5pbF0gOCAoIyQgLiAxMzczOTMpXSkjQDQwMSBJbnNlcnQgYmVmb3JlIHBvaW50 IGEgcGFydCBvZiBCVUZGRVIsIHN0cmlwcGluZyBzb21lIHRleHQgcHJvcGVydGllcy4KQlVGRkVS IG1heSBiZSBhIGJ1ZmZlciBvciBhIGJ1ZmZlciBuYW1lLgpBcmd1bWVudHMgU1RBUlQgYW5kIEVO RCBhcmUgY2hhcmFjdGVyIHBvc2l0aW9ucyBzcGVjaWZ5aW5nIHRoZSBzdWJzdHJpbmcuClRoZXkg ZGVmYXVsdCB0byB0aGUgdmFsdWVzIG9mIChwb2ludC1taW4pIGFuZCAocG9pbnQtbWF4KSBpbiBC VUZGRVIuCkJlZm9yZSBpbnNlcnRpb24sIHByb2Nlc3MgdGV4dCBwcm9wZXJ0aWVzIGFjY29yZGlu ZyB0bwpgeWFuay1oYW5kbGVkLXByb3BlcnRpZXMnIGFuZCBgeWFuay1leGNsdWRlZC1wcm9wZXJ0 aWVzJy4KCihmbiBCVUZGRVIgJm9wdGlvbmFsIFNUQVJUIEVORCkfCihkZWZhbGlhcyAnaW5zZXJ0 LWJ1ZmZlci1zdWJzdHJpbmctYXMteWFuayAjWzc2OSAiYFwzMDAEBAQjXDIxMFwzMDEBYFwiXDIw NyIgW2luc2VydC1idWZmZXItc3Vic3RyaW5nIHJlbW92ZS15YW5rLWV4Y2x1ZGVkLXByb3BlcnRp ZXNdIDggKCMkIC4gMTM3ODY0KV0pI0AyMDggSW5zZXJ0IHRoZSBjb250ZW50cyBvZiB0aGUgY3Vy cmVudCBidWZmZXIgaW50byBCVUZGRVIuCklmIFNUQVJUL0VORCwgb25seSBpbnNlcnQgdGhhdCBy ZWdpb24gZnJvbSB0aGUgY3VycmVudCBidWZmZXIuClBvaW50IGluIEJVRkZFUiB3aWxsIGJlIHBs YWNlZCBhZnRlciB0aGUgaW5zZXJ0ZWQgdGV4dC4KCihmbiBCVUZGRVIgJm9wdGlvbmFsIFNUQVJU IEVORCkfCihkZWZhbGlhcyAnaW5zZXJ0LWludG8tYnVmZmVyICNbNzY5ICJwcgNxXDIxMFwzMDAB BAQjKVwyMDciIFtpbnNlcnQtYnVmZmVyLXN1YnN0cmluZ10gOCAoIyQgLiAxMzg0MjMpXSkjQDMz NiBSZXBsYWNlIFNUUklORyB3aXRoIFJFUExBQ0VNRU5UIGluIHRoZSByZWdpb24gZnJvbSBTVEFS VCB0byBFTkQuClRoZSBudW1iZXIgb2YgcmVwbGFjZWQgb2NjdXJyZW5jZXMgYXJlIHJldHVybmVk LCBvciBuaWwgaWYgU1RSSU5HCmRvZXNuJ3QgZXhpc3QgaW4gdGhlIHJlZ2lvbi4KCklmIFNUQVJU IGlzIG5pbCwgdXNlIHRoZSBjdXJyZW50IHBvaW50LiAgSWYgRU5EIGlzIG5pbCwgdXNlIGBwb2lu dC1tYXgnLgoKQ29tcGFyaXNvbnMgYW5kIHJlcGxhY2VtZW50cyBhcmUgZG9uZSB3aXRoIGZpeGVk IGNhc2UuCgooZm4gU1RSSU5HIFJFUExBQ0VNRU5UICZvcHRpb25hbCBTVEFSVCBFTkQpHwooZGVm YWxpYXMgJ3JlcGxhY2Utc3RyaW5nLWluLXJlZ2lvbiAjWzEwMjYgIgFcMjAzEQABZVdcMjAzFABc MzAxXDMwMiFcMjEwXDIwMhQAYFwyNjICXDIxMVwyMDMlAFwyMTFkVlwyMDMoAFwzMDFcMzAzIVwy MTBcMjAyKABkXDI2MgFcMjEyAWJcMjEwXDIxNAEBfVwyMTBcMzA0XDMwNRhcMzA2BVwzMDVcMzA3 I1wyMDNMAFwzMDRcMjI0XDMwNFwyMjV8XDIxMANjXDIxMFwyMTFUXDI2MgFcMjAyNABcMjExXDMw NFU/XDIwNVQAXDIxMStcMjA3IiBbY2FzZS1mb2xkLXNlYXJjaCBlcnJvciAiU3RhcnQgYmVmb3Jl IHN0YXJ0IG9mIGJ1ZmZlciIgIkVuZCBhZnRlciBlbmQgb2YgYnVmZmVyIiAwIG5pbCBzZWFyY2gt Zm9yd2FyZCB0XSA5ICgjJCAuIDEzODc0MCldKSNANjE3IFJlcGxhY2UgUkVHRVhQIHdpdGggUkVQ TEFDRU1FTlQgaW4gdGhlIHJlZ2lvbiBmcm9tIFNUQVJUIHRvIEVORC4KVGhlIG51bWJlciBvZiBy ZXBsYWNlZCBvY2N1cnJlbmNlcyBhcmUgcmV0dXJuZWQsIG9yIG5pbCBpZiBSRUdFWFAKZG9lc24n dCBleGlzdCBpbiB0aGUgcmVnaW9uLgoKSWYgU1RBUlQgaXMgbmlsLCB1c2UgdGhlIGN1cnJlbnQg cG9pbnQuICBJZiBFTkQgaXMgbmlsLCB1c2UgYHBvaW50LW1heCcuCgpDb21wYXJpc29ucyBhbmQg cmVwbGFjZW1lbnRzIGFyZSBkb25lIHdpdGggZml4ZWQgY2FzZS4KClJFUExBQ0VNRU5UIGNhbiB1 c2UgdGhlIGZvbGxvd2luZyBzcGVjaWFsIGVsZW1lbnRzOgoKICBgXCYnIGluIE5FV1RFWFQgbWVh bnMgc3Vic3RpdHV0ZSBvcmlnaW5hbCBtYXRjaGVkIHRleHQuCiAgYFxOJyBtZWFucyBzdWJzdGl0 dXRlIHdoYXQgbWF0Y2hlZCB0aGUgTnRoIGBcKC4uLlwpJy4KICAgICAgIElmIE50aCBwYXJlbnMg ZGlkbid0IG1hdGNoLCBzdWJzdGl0dXRlIG5vdGhpbmcuCiAgYFxcJyBtZWFucyBpbnNlcnQgb25l IGBcJy4KICBgXD8nIGlzIHRyZWF0ZWQgbGl0ZXJhbGx5LgoKKGZuIFJFR0VYUCBSRVBMQUNFTUVO VCAmb3B0aW9uYWwgU1RBUlQgRU5EKR8KKGRlZmFsaWFzICdyZXBsYWNlLXJlZ2V4cC1pbi1yZWdp b24gI1sxMDI2ICIBXDIwMxEAAWVXXDIwMxQAXDMwMVwzMDIhXDIxMFwyMDIUAGBcMjYyAlwyMTFc MjAzJQBcMjExZFZcMjAzKABcMzAxXDMwMyFcMjEwXDIwMigAZFwyNjIBXDIxMgFiXDIxMFwyMTQB AX1cMjEwXDMwNFwzMDUYXDMwNgVcMzA1XDMwNyNcMjAzSABcMzEwBFwzMDdcIlwyMTBcMjExVFwy NjIBXDIwMjQAXDIxMVwzMDRVP1wyMDVQAFwyMTErXDIwNyIgW2Nhc2UtZm9sZC1zZWFyY2ggZXJy b3IgIlN0YXJ0IGJlZm9yZSBzdGFydCBvZiBidWZmZXIiICJFbmQgYWZ0ZXIgZW5kIG9mIGJ1ZmZl ciIgMCBuaWwgcmUtc2VhcmNoLWZvcndhcmQgdCByZXBsYWNlLW1hdGNoXSA5ICgjJCAuIDEzOTQ1 NildKSNAMTc2IElmIGBmb250LWxvY2stZGVmYXVsdHMnIGlzIG5pbCwgYXBwbHkgRkFDRSBhcyBh IGBmYWNlJyBwcm9wZXJ0eS4KU1RBUlQgYW5kIEVORCBkZW5vdGUgdGhlIHN0YXJ0IGFuZCBlbmQg b2YgdGhlIHRleHQgdG8gYWN0IG9uLgpEbyBub3RoaW5nIGlmIEZBQ0UgaXMgbmlsLgoKKGZuIEZB Q0UgU1RBUlQgRU5EKR8KKGRlZmFsaWFzICd5YW5rLWhhbmRsZS1mb250LWxvY2stZmFjZS1wcm9w ZXJ0eSAjWzc3MSAiAlwyMDUQAAg/XDIwNRAAXDMwMQICXDMwMgYGJFwyMDciIFtmb250LWxvY2st ZGVmYXVsdHMgcHV0LXRleHQtcHJvcGVydHkgZmFjZV0gOCAoIyQgLiAxNDA0NTgpXSkjQDk1IEFw cGx5IHByb3BlcnR5IGNhdGVnb3J5IENBVEVHT1JZJ3MgcHJvcGVydGllcyBiZXR3ZWVuIFNUQVJU IGFuZCBFTkQuCgooZm4gQ0FURUdPUlkgU1RBUlQgRU5EKR8KKGRlZmFsaWFzICd5YW5rLWhhbmRs ZS1jYXRlZ29yeS1wcm9wZXJ0eSAjWzc3MSAiAlwyMDUqAAFcMjExAldcMjA1KABcMzAwAVwzMDEE I1wzMDICIVwzMDMDA1wzMDQGCSEjXDIxMFwzMDUDAwMjXDIxMAFcMjY2XDIwM1wyMDIFAFwyNjIB XDIwNyIgW25leHQtcHJvcGVydHktY2hhbmdlIG5pbCB0ZXh0LXByb3BlcnRpZXMtYXQgc2V0LXRl eHQtcHJvcGVydGllcyBzeW1ib2wtcGxpc3QgYWRkLXRleHQtcHJvcGVydGllc10gMTEgKCMkIC4g MTQwNzg4KV0pI0A0ODQgU3RhcnQgYSBwcm9ncmFtIGluIGEgc3VicHJvY2Vzcy4gIFJldHVybiB0 aGUgcHJvY2VzcyBvYmplY3QgZm9yIGl0LgpOQU1FIGlzIG5hbWUgZm9yIHByb2Nlc3MuICBJdCBp cyBtb2RpZmllZCBpZiBuZWNlc3NhcnkgdG8gbWFrZSBpdCB1bmlxdWUuCkJVRkZFUiBpcyB0aGUg YnVmZmVyIChvciBidWZmZXIgbmFtZSkgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHByb2Nlc3MuCiBQ cm9jZXNzIG91dHB1dCBnb2VzIGF0IGVuZCBvZiB0aGF0IGJ1ZmZlciwgdW5sZXNzIHlvdSBzcGVj aWZ5CiBhbiBvdXRwdXQgc3RyZWFtIG9yIGZpbHRlciBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIG91 dHB1dC4KIEJVRkZFUiBtYXkgYmUgYWxzbyBuaWwsIG1lYW5pbmcgdGhhdCB0aGlzIHByb2Nlc3Mg aXMgbm90IGFzc29jaWF0ZWQKIHdpdGggYW55IGJ1ZmZlci4KQ09NTUFORCBpcyB0aGUgc2hlbGwg Y29tbWFuZCB0byBydW4uCgooZm4gTkFNRSBCVUZGRVIgQ09NTUFORCkfCihkZWZhbGlhcyAnc3Rh cnQtcHJvY2Vzcy1zaGVsbC1jb21tYW5kICNbNzcxICJcMzAyAwMICQUlXDIwNyIgW3NoZWxsLWZp bGUtbmFtZSBzaGVsbC1jb21tYW5kLXN3aXRjaCBzdGFydC1wcm9jZXNzXSA5ICgjJCAuIDE0MTE0 NyldKSNAMTY5IFN0YXJ0IGEgcHJvZ3JhbSBpbiBhIHN1YnByb2Nlc3MuICBSZXR1cm4gdGhlIHBy b2Nlc3Mgb2JqZWN0IGZvciBpdC4KU2ltaWxhciB0byBgc3RhcnQtcHJvY2Vzcy1zaGVsbC1jb21t YW5kJywgYnV0IGNhbGxzIGBzdGFydC1maWxlLXByb2Nlc3MnLgoKKGZuIE5BTUUgQlVGRkVSIENP TU1BTkQpHwooZGVmYWxpYXMgJ3N0YXJ0LWZpbGUtcHJvY2Vzcy1zaGVsbC1jb21tYW5kICNbNzcx ICJcMzAwXDMwMVwzMDIDBQYHJCFcMjA3IiBbd2l0aC1jb25uZWN0aW9uLWxvY2FsLXZhcmlhYmxl cy0xIG1ha2UtY2xvc3VyZSAjWzAgIlwzMDVcMzAyXDMwMQtcZlwzMDAlXDIwNyIgW1YwIFYxIFYy IHNoZWxsLWZpbGUtbmFtZSBzaGVsbC1jb21tYW5kLXN3aXRjaCBzdGFydC1maWxlLXByb2Nlc3Nd IDZdXSA5ICgjJCAuIDE0MTc2OSldKSNAMTI0NCBFeGVjdXRlIHRoZSBzaGVsbCBjb21tYW5kIENP TU1BTkQgc3luY2hyb25vdXNseSBpbiBzZXBhcmF0ZSBwcm9jZXNzLgpUaGUgcmVtYWluaW5nIGFy Z3VtZW50cyBhcmUgb3B0aW9uYWwuClRoZSBwcm9ncmFtJ3MgaW5wdXQgY29tZXMgZnJvbSBmaWxl IElORklMRSAobmlsIG1lYW5zIGAvZGV2L251bGwnKS4KSW5zZXJ0IG91dHB1dCBpbiBCVUZGRVIg YmVmb3JlIHBvaW50OyB0IG1lYW5zIGN1cnJlbnQgYnVmZmVyOwogbmlsIGZvciBCVUZGRVIgbWVh bnMgZGlzY2FyZCBpdDsgMCBtZWFucyBkaXNjYXJkIGFuZCBkb24ndCB3YWl0LgpCVUZGRVIgY2Fu IGFsc28gaGF2ZSB0aGUgZm9ybSAoUkVBTC1CVUZGRVIgU1RERVJSLUZJTEUpOyBpbiB0aGF0IGNh c2UsClJFQUwtQlVGRkVSIHNheXMgd2hhdCB0byBkbyB3aXRoIHN0YW5kYXJkIG91dHB1dCwgYXMg YWJvdmUsCndoaWxlIFNUREVSUi1GSUxFIHNheXMgd2hhdCB0byBkbyB3aXRoIHN0YW5kYXJkIGVy cm9yIGluIHRoZSBjaGlsZC4KU1RERVJSLUZJTEUgbWF5IGJlIG5pbCAoZGlzY2FyZCBzdGFuZGFy ZCBlcnJvciBvdXRwdXQpLAp0IChtaXggaXQgd2l0aCBvcmRpbmFyeSBvdXRwdXQpLCBvciBhIGZp bGUgbmFtZSBzdHJpbmcuCgpGb3VydGggYXJnIERJU1BMQVkgbm9uLW5pbCBtZWFucyByZWRpc3Bs YXkgYnVmZmVyIGFzIG91dHB1dCBpcyBpbnNlcnRlZC4KV2lsZGNhcmRzIGFuZCByZWRpcmVjdGlv biBhcmUgaGFuZGxlZCBhcyB1c3VhbCBpbiB0aGUgc2hlbGwuCgpJZiBCVUZGRVIgaXMgMCwgYGNh bGwtcHJvY2Vzcy1zaGVsbC1jb21tYW5kJyByZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGggdmFsdWUg bmlsLgpPdGhlcndpc2UgaXQgd2FpdHMgZm9yIENPTU1BTkQgdG8gdGVybWluYXRlIGFuZCByZXR1 cm5zIGEgbnVtZXJpYyBleGl0CnN0YXR1cyBvciBhIHNpZ25hbCBkZXNjcmlwdGlvbiBzdHJpbmcu CklmIHlvdSBxdWl0LCB0aGUgcHJvY2VzcyBpcyBraWxsZWQgd2l0aCBTSUdJTlQsIG9yIFNJR0tJ TEwgaWYgeW91IHF1aXQgYWdhaW4uCgpBbiBvbGQgY2FsbGluZyBjb252ZW50aW9uIGFjY2VwdGVk IGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFmdGVyIERJU1BMQVksCndoaWNoIHdlcmUganVzdCBj b25jYXRlbmF0ZWQgdG8gQ09NTUFORC4gIFRoaXMgaXMgc3RpbGwgc3VwcG9ydGVkIGJ1dCBzdHJv bmdseQpkaXNjb3VyYWdlZC4KCihmbiBDT01NQU5EICZvcHRpb25hbCBJTkZJTEUgQlVGRkVSIERJ U1BMQVkgJnJlc3QgQVJHUykfCihkZWZhbGlhcyAnY2FsbC1wcm9jZXNzLXNoZWxsLWNvbW1hbmQg I1sxMTUzICJcMzAyCAUFBQlcMzAzXDMwNAZcZgYJQlwzMDUjJgZcMjA3IiBbc2hlbGwtZmlsZS1u YW1lIHNoZWxsLWNvbW1hbmQtc3dpdGNoIGNhbGwtcHJvY2VzcyBtYXBjb25jYXQgaWRlbnRpdHkg IiAiXSAxNSAoIyQgLiAxNDIxODcpXSkKKHNldC1hZHZlcnRpc2VkLWNhbGxpbmctY29udmVudGlv biAnY2FsbC1wcm9jZXNzLXNoZWxsLWNvbW1hbmQgJyhjb21tYW5kICZvcHRpb25hbCBpbmZpbGUg YnVmZmVyIGRpc3BsYXkpICIyNC41IikjQDE3NiBQcm9jZXNzIGZpbGVzIHN5bmNocm9ub3VzbHkg aW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgpTaW1pbGFyIHRvIGBjYWxsLXByb2Nlc3Mtc2hlbGwtY29t bWFuZCcsIGJ1dCBjYWxscyBgcHJvY2Vzcy1maWxlJy4KCihmbiBDT01NQU5EICZvcHRpb25hbCBJ TkZJTEUgQlVGRkVSIERJU1BMQVkgJnJlc3QgQVJHUykfCihkZWZhbGlhcyAncHJvY2Vzcy1maWxl LXNoZWxsLWNvbW1hbmQgI1sxMTUzICJcMzAwXDMwMVwzMDIDBQYHBgkGCyYGIVwyMDciIFt3aXRo LWNvbm5lY3Rpb24tbG9jYWwtdmFyaWFibGVzLTEgbWFrZS1jbG9zdXJlICNbMCAiXDMwNg1cMzAz XDMwMlwzMDEOXG5cMzA3XDMxMFwzMDRcMzAwQlwzMTEjJgZcMjA3IiBbVjAgVjEgVjIgVjMgVjQg c2hlbGwtZmlsZS1uYW1lIHByb2Nlc3MtZmlsZSBtYXBjb25jYXQgaWRlbnRpdHkgIiAiIHNoZWxs LWNvbW1hbmQtc3dpdGNoXSAxMF1dIDEzICgjJCAuIDE0MzcyNildKQooc2V0LWFkdmVydGlzZWQt Y2FsbGluZy1jb252ZW50aW9uICdwcm9jZXNzLWZpbGUtc2hlbGwtY29tbWFuZCAnKGNvbW1hbmQg Jm9wdGlvbmFsIGluZmlsZSBidWZmZXIgZGlzcGxheSkgIjI0LjUiKSNAMTAyMyBTZW5kIHRleHQg ZnJvbSBTVEFSVCB0byBFTkQgYXMgaW5wdXQgdG8gYW4gaW5mZXJpb3Igc2hlbGwgcnVubmluZyBD T01NQU5ELgpEZWxldGUgdGhlIHRleHQgaWYgZm91cnRoIGFyZyBERUxFVEUgaXMgbm9uLW5pbC4K Ckluc2VydCBvdXRwdXQgaW4gQlVGRkVSIGJlZm9yZSBwb2ludDsgdCBtZWFucyBjdXJyZW50IGJ1 ZmZlcjsgbmlsIGZvcgogQlVGRkVSIG1lYW5zIGRpc2NhcmQgaXQ7IDAgbWVhbnMgZGlzY2FyZCBh bmQgZG9uJ3Qgd2FpdDsgYW5kIGAoOmZpbGUKIEZJTEUpJywgd2hlcmUgRklMRSBpcyBhIGZpbGUg bmFtZSBzdHJpbmcsIG1lYW5zIHRoYXQgaXQgc2hvdWxkIGJlCiB3cml0dGVuIHRvIHRoYXQgZmls ZSAoaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgaXQgaXMgb3ZlcndyaXR0ZW4pLgpCVUZGRVIg Y2FuIGFsc28gaGF2ZSB0aGUgZm9ybSAoUkVBTC1CVUZGRVIgU1RERVJSLUZJTEUpOyBpbiB0aGF0 IGNhc2UsClJFQUwtQlVGRkVSIHNheXMgd2hhdCB0byBkbyB3aXRoIHN0YW5kYXJkIG91dHB1dCwg YXMgYWJvdmUsCndoaWxlIFNUREVSUi1GSUxFIHNheXMgd2hhdCB0byBkbyB3aXRoIHN0YW5kYXJk IGVycm9yIGluIHRoZSBjaGlsZC4KU1RERVJSLUZJTEUgbWF5IGJlIG5pbCAoZGlzY2FyZCBzdGFu ZGFyZCBlcnJvciBvdXRwdXQpLAp0IChtaXggaXQgd2l0aCBvcmRpbmFyeSBvdXRwdXQpLCBvciBh IGZpbGUgbmFtZSBzdHJpbmcuCgpJZiBCVUZGRVIgaXMgMCwgYGNhbGwtc2hlbGwtcmVnaW9uJyBy ZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGggdmFsdWUgbmlsLgpPdGhlcndpc2UgaXQgd2FpdHMgZm9y IENPTU1BTkQgdG8gdGVybWluYXRlCmFuZCByZXR1cm5zIGEgbnVtZXJpYyBleGl0IHN0YXR1cyBv ciBhIHNpZ25hbCBkZXNjcmlwdGlvbiBzdHJpbmcuCklmIHlvdSBxdWl0LCB0aGUgcHJvY2VzcyBp cyBraWxsZWQgd2l0aCBTSUdJTlQsIG9yIFNJR0tJTEwgaWYgeW91IHF1aXQgYWdhaW4uCgooZm4g U1RBUlQgRU5EIENPTU1BTkQgJm9wdGlvbmFsIERFTEVURSBCVUZGRVIpHwooZGVmYWxpYXMgJ2Nh bGwtc2hlbGwtcmVnaW9uICNbMTI4MyAiXDMwMgUFCAUFXDMwMwkGXG4mCFwyMDciIFtzaGVsbC1m aWxlLW5hbWUgc2hlbGwtY29tbWFuZC1zd2l0Y2ggY2FsbC1wcm9jZXNzLXJlZ2lvbiBuaWxdIDE0 ICgjJCAuIDE0NDMxNCldKSNAMjA2IEV2YWx1YXRlIEJPRFkgd2l0aCBtb3VzZSBtb3ZlbWVudCBl dmVudHMgZW5hYmxlZC4KV2l0aGluIGEgYHRyYWNrLW1vdXNlJyBmb3JtLCBtb3VzZSBtb3Rpb24g Z2VuZXJhdGVzIGlucHV0IGV2ZW50cyB0aGF0CiB5b3UgY2FuIHJlYWQgd2l0aCBgcmVhZC1ldmVu dCcuCk5vcm1hbGx5LCBtb3VzZSBtb3Rpb24gaXMgaWdub3JlZC4KCihmbiAmcmVzdCBCT0RZKR8K KGRlZmFsaWFzICd0cmFjay1tb3VzZSAnKG1hY3JvIC4gI1sxMjggIlwzMDBcMzAxXDMwMgNCQkRc MjA3IiBbaW50ZXJuYWwtLXRyYWNrLW1vdXNlIGxhbWJkYSBuaWxdIDUgKCMkIC4gMTQ1NDg2KV0p KQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwMVwzMDVcMzA2I1wzMDBc MjA3IiBbcHV0IHRyYWNrLW1vdXNlIGVkZWJ1Zy1mb3JtLXNwZWMgKGRlZi1ib2R5KSBmdW5jdGlv bi1wdXQgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMF0gNCkjQDI1NSBFeGVjdXRlIHRoZSBmb3JtcyBp biBCT0RZIHdpdGggQlVGRkVSLU9SLU5BTUUgdGVtcG9yYXJpbHkgY3VycmVudC4KQlVGRkVSLU9S LU5BTUUgbXVzdCBiZSBhIGJ1ZmZlciBvciB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBidWZmZXIu ClRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgZm9ybSBpbiBCT0RZ LiAgU2VlCmFsc28gYHdpdGgtdGVtcC1idWZmZXInLgoKKGZuIEJVRkZFUi1PUi1OQU1FICZyZXN0 IEJPRFkpHwooZGVmYWxpYXMgJ3dpdGgtY3VycmVudC1idWZmZXIgJyhtYWNybyAuICNbMzg1ICJc MzAwXDMwMQNEAkJCXDIwNyIgW3NhdmUtY3VycmVudC1idWZmZXIgc2V0LWJ1ZmZlcl0gNSAoIyQg LiAxNDU5NTgpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMw NiNcMjA3IiBbZnVuY3Rpb24tcHV0IHdpdGgtY3VycmVudC1idWZmZXIgbGlzcC1pbmRlbnQtZnVu Y3Rpb24gMSBwdXQgZWRlYnVnLWZvcm0tc3BlYyB0XSA1KSNAMTUgCgooZm4gV0lORE9XKR8KKGRl ZmFsaWFzICdpbnRlcm5hbC0tYmVmb3JlLXdpdGgtc2VsZWN0ZWQtd2luZG93ICNbMjU3ICJcMzAw ASEBXDMwMSBcMzAyIAM9P1wyMDURAFwzMDMDIVwzMDIgBD0/XDIwNRwAXDMwNAQhRlwyMDciIFt3 aW5kb3ctZnJhbWUgc2VsZWN0ZWQtd2luZG93IHNlbGVjdGVkLWZyYW1lIGZyYW1lLXNlbGVjdGVk LXdpbmRvdyB0dHktdG9wLWZyYW1lXSA3ICgjJCAuIDE0NjQ3MildKSNAMTQgCgooZm4gU1RBVEUp HwooZGVmYWxpYXMgJ2ludGVybmFsLS1hZnRlci13aXRoLXNlbGVjdGVkLXdpbmRvdyAjWzI1NyAi XDMwMFwzMDECOCFcMjAzJwBcMzAyXDMwMQI4XDMwM1wiXDIxMFwzMDRcMzA1AjghXDIwMycAXDMw NiBcMzA1Ajg9XDIwNCcAXDMwN1wzMDUCOFwzMDNcIlwyMTBcMzAwAUFAIVwyMDU1AFwzMDIBQUBc MzAzXCJcMjA3IiBbd2luZG93LWxpdmUtcCAyIHNlbGVjdC13aW5kb3cgbm9yZWNvcmQgZnJhbWUt bGl2ZS1wIDMgdHR5LXRvcC1mcmFtZSBzZWxlY3QtZnJhbWVdIDQgKCMkIC4gMTQ2NzA2KV0pI0Ay MjEgQ3JlYXRlIGFuZCByZXR1cm4gYSBidWZmZXIgd2l0aCBhIG5hbWUgYmFzZWQgb24gTkFNRS4K Q2hvb3NlIHRoZSBidWZmZXIncyBuYW1lIHVzaW5nIGBnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUn LgpTZWUgYGdldC1idWZmZXItY3JlYXRlJyBmb3IgdGhlIG1lYW5pbmcgb2YgSU5ISUJJVC1CVUZG RVItSE9PS1MuCgooZm4gTkFNRSAmb3B0aW9uYWwgSU5ISUJJVC1CVUZGRVItSE9PS1MpHwooZGVm YWxpYXMgJ2dlbmVyYXRlLW5ldy1idWZmZXIgI1s1MTMgIlwzMDBcMzAxAyECXCJcMjA3IiBbZ2V0 LWJ1ZmZlci1jcmVhdGUgZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lXSA1ICgjJCAuIDE0NzAwNild KSNANzU5IEV4ZWN1dGUgdGhlIGZvcm1zIGluIEJPRFkgd2l0aCBXSU5ET1cgYXMgdGhlIHNlbGVj dGVkIHdpbmRvdy4KVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBm b3JtIGluIEJPRFkuCgpUaGlzIG1hY3JvIHNhdmVzIGFuZCByZXN0b3JlcyB0aGUgc2VsZWN0ZWQg d2luZG93LCBhcyB3ZWxsIGFzIHRoZQpzZWxlY3RlZCB3aW5kb3cgb2YgZWFjaCBmcmFtZS4gIEl0 IGRvZXMgbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YKcmVjZW50bHkgc2VsZWN0ZWQgd2luZG93cy4g IElmIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHdpbmRvdyBvZgpzb21lIGZyYW1lIGlzIG5vIGxv bmdlciBsaXZlIGF0IHRoZSBlbmQgb2YgQk9EWSwgdGhhdCBmcmFtZSdzCnNlbGVjdGVkIHdpbmRv dyBpcyBsZWZ0IGFsb25lLiAgSWYgdGhlIHNlbGVjdGVkIHdpbmRvdyBpcyBubwpsb25nZXIgbGl2 ZSwgdGhlbiB3aGF0ZXZlciB3aW5kb3cgaXMgc2VsZWN0ZWQgYXQgdGhlIGVuZCBvZiBCT0RZCnJl bWFpbnMgc2VsZWN0ZWQuCgpUaGlzIG1hY3JvIHVzZXMgYHNhdmUtY3VycmVudC1idWZmZXInIHRv IHNhdmUgYW5kIHJlc3RvcmUgdGhlCmN1cnJlbnQgYnVmZmVyLCBzaW5jZSBvdGhlcndpc2UgaXRz IG5vcm1hbCBvcGVyYXRpb24gY291bGQKcG90ZW50aWFsbHkgbWFrZSBhIGRpZmZlcmVudCBidWZm ZXIgY3VycmVudC4gIEl0IGRvZXMgbm90IGFsdGVyCnRoZSBidWZmZXIgbGlzdCBvcmRlcmluZy4K CihmbiBXSU5ET1cgJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2l0aC1zZWxlY3RlZC13aW5kb3cg JyhtYWNybyAuICNbMzg1ICJcMzAwXDMwMVwzMDIERERDXDMwM1wzMDRcMzA1XDMwNgYGQkJcMzA3 QkJERVwyMDciIFtsZXQgc2F2ZS1zZWxlY3RlZC13aW5kb3ctLXN0YXRlIGludGVybmFsLS1iZWZv cmUtd2l0aC1zZWxlY3RlZC13aW5kb3cgc2F2ZS1jdXJyZW50LWJ1ZmZlciB1bndpbmQtcHJvdGVj dCBwcm9nbiAoc2VsZWN0LXdpbmRvdyAoY2FyIHNhdmUtc2VsZWN0ZWQtd2luZG93LS1zdGF0ZSkg J25vcmVjb3JkKSAoKGludGVybmFsLS1hZnRlci13aXRoLXNlbGVjdGVkLXdpbmRvdyBzYXZlLXNl bGVjdGVkLXdpbmRvdy0tc3RhdGUpKV0gOSAoIyQgLiAxNDczNTIpXSkpCihieXRlLWNvZGUgIlwz MDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHdpdGgt c2VsZWN0ZWQtd2luZG93IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDEgcHV0IGVkZWJ1Zy1mb3JtLXNw ZWMgdF0gNSkjQDI5MiBFeGVjdXRlIHRoZSBmb3JtcyBpbiBCT0RZIHdpdGggRlJBTUUgYXMgdGhl IHNlbGVjdGVkIGZyYW1lLgpUaGUgdmFsdWUgcmV0dXJuZWQgaXMgdGhlIHZhbHVlIG9mIHRoZSBs YXN0IGZvcm0gaW4gQk9EWS4KClRoaXMgbWFjcm8gc2F2ZXMgYW5kIHJlc3RvcmVzIHRoZSBzZWxl Y3RlZCBmcmFtZSwgYW5kIGNoYW5nZXMgdGhlCm9yZGVyIG9mIG5laXRoZXIgdGhlIHJlY2VudGx5 IHNlbGVjdGVkIHdpbmRvd3Mgbm9yIHRoZSBidWZmZXJzIGluCnRoZSBidWZmZXIgbGlzdC4KCihm biBGUkFNRSAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICd3aXRoLXNlbGVjdGVkLWZyYW1lICcobWFj cm8gLiAjWzM4NSAiXDMwMFwzMDEhXDMwMFwzMDIhXDMwMwJcMzA0QgJcMzA1QkRcMzA2XDMwN1wz MTAGCFwzMTFCQgYHQkJcMzEyXDMxMwYHRFwzMTAGCFwzMTRCQkVcMzEyXDMxNQYHRFwzMTYGCERF RkVcMjA3IiBbbWFrZS1zeW1ib2wgIm9sZC1mcmFtZSIgIm9sZC1idWZmZXIiIGxldCAoKHNlbGVj dGVkLWZyYW1lKSkgKChjdXJyZW50LWJ1ZmZlcikpIHVud2luZC1wcm90ZWN0IHByb2duIHNlbGVj dC1mcmFtZSAoJ25vcmVjb3JkKSB3aGVuIGZyYW1lLWxpdmUtcCAoJ25vcmVjb3JkKSBidWZmZXIt bGl2ZS1wIHNldC1idWZmZXJdIDEzICgjJCAuIDE0ODYxMyldKSkKKGJ5dGUtY29kZSAiXDMwMFwz MDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgd2l0aC1zZWxl Y3RlZC1mcmFtZSBsaXNwLWluZGVudC1mdW5jdGlvbiAxIHB1dCBlZGVidWctZm9ybS1zcGVjIHRd IDUpI0A1OTAgRXhlY3V0ZSBCT0RZLCB0aGVuIHJlc3RvcmUgcHJldmlvdXMgd2luZG93IGNvbmZp Z3VyYXRpb24uClRoaXMgbWFjcm8gc2F2ZXMgdGhlIHdpbmRvdyBjb25maWd1cmF0aW9uIG9uIHRo ZSBzZWxlY3RlZCBmcmFtZSwKZXhlY3V0ZXMgQk9EWSwgdGhlbiBjYWxscyBgc2V0LXdpbmRvdy1j b25maWd1cmF0aW9uJyB0byByZXN0b3JlCnRoZSBzYXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbi4g IFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGxhc3QKZm9ybSBpbiBCT0RZLiAgVGhlIHdpbmRvdyBj b25maWd1cmF0aW9uIGlzIGFsc28gcmVzdG9yZWQgaWYgQk9EWQpleGl0cyBub25sb2NhbGx5LgoK QkVXQVJFOiBNb3N0IHVzZXMgb2YgdGhpcyBtYWNybyBpbnRyb2R1Y2UgYnVncy4KRS5nLiBpdCBz aG91bGQgbm90IGJlIHVzZWQgdG8gdHJ5IGFuZCBwcmV2ZW50IHNvbWUgY29kZSBmcm9tIG9wZW5p bmcKYSBuZXcgd2luZG93LCBzaW5jZSB0aGF0IHdpbmRvdyBtYXkgc29tZXRpbWVzIGFwcGVhciBp biBhbm90aGVyIGZyYW1lLAppbiB3aGljaCBjYXNlIGBzYXZlLXdpbmRvdy1leGN1cnNpb24nIGNh bm5vdCBoZWxwLgoKKGZuICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ3NhdmUtd2luZG93LWV4Y3Vy c2lvbiAnKG1hY3JvIC4gI1sxMjggIlwzMDBcMzAxIVwzMDIBXDMwM0JDXDMwNFwzMDUFQlwzMDYF REVFXDIwNyIgW21ha2Utc3ltYm9sICJ3Y29uZmlnIiBsZXQgKChjdXJyZW50LXdpbmRvdy1jb25m aWd1cmF0aW9uKSkgdW53aW5kLXByb3RlY3QgcHJvZ24gc2V0LXdpbmRvdy1jb25maWd1cmF0aW9u XSA4ICgjJCAuIDE0OTQwNildKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMw MVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgc2F2ZS13aW5kb3ctZXhjdXJzaW9uIGxpc3At aW5kZW50LWZ1bmN0aW9uIDAgcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgdF0gNSkjQDY2IEludGVybmFs IGZ1bmN0aW9uIGZvciBgd2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXInLgoKKGZuIEJVRkZFUikf CihkZWZhbGlhcyAnaW50ZXJuYWwtdGVtcC1vdXRwdXQtYnVmZmVyLXNob3cgI1syNTcgInJcMjEx cVwyMTBcMzA0XDMwNSFcMjEwZWIpXDIxMAhcMjAzFwAIASFcMjEwXDIwMnUAclwyMTFxXDIxMAlc MzA2PVwyMDQrAAlcMzA3PVwyMDMvAFxuXDIwMy8AXDMxMFwyMDIwAAkZXDMxMQEhKVwyMTFcMjA1 PABcMzEyASEBXDIwM3IAXDIxMVwzMTMgPVwyMDRLAFwzMTQBIVwyMTABE1wzMTUCXDMxNlwiXDIx MFwzMTcCZVwzMTAjXDIxMFwzMjACZVwiXDIxMFwzMjECIXJcMzIyXDMyMwJcIlwyMTZcMzI0AUBc MzI1XCJcMjEwXDMyNlwzMjchKlwyNjYCKVwyNjYCXDMwNVwyMDciIFt0ZW1wLWJ1ZmZlci1zaG93 LWZ1bmN0aW9uIHdpbmRvdy1jb21iaW5hdGlvbi1saW1pdCB0ZW1wLWJ1ZmZlci1yZXNpemUtbW9k ZSBtaW5pYnVmZmVyLXNjcm9sbC13aW5kb3cgc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCB0ZW1w LWJ1ZmZlciB0ZW1wLWJ1ZmZlci1yZXNpemUgdCBkaXNwbGF5LWJ1ZmZlciB3aW5kb3ctZnJhbWUg c2VsZWN0ZWQtZnJhbWUgbWFrZS1mcmFtZS12aXNpYmxlIHNldC13aW5kb3ctaHNjcm9sbCAwIHNl dC13aW5kb3ctc3RhcnQgc2V0LXdpbmRvdy1wb2ludCBpbnRlcm5hbC0tYmVmb3JlLXdpdGgtc2Vs ZWN0ZWQtd2luZG93IG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMzAwIVwyMDciIFtWMCBpbnRlcm5h bC0tYWZ0ZXItd2l0aC1zZWxlY3RlZC13aW5kb3ddIDJdIHNlbGVjdC13aW5kb3cgbm9yZWNvcmQg cnVuLWhvb2tzIHRlbXAtYnVmZmVyLXNob3ctaG9va10gNyAoIyQgLiAxNTAzNTgpXSkjQDE2NzUg QmluZCBgc3RhbmRhcmQtb3V0cHV0JyB0byBidWZmZXIgQlVGTkFNRSwgZXZhbCBCT0RZLCB0aGVu IHNob3cgdGhhdCBidWZmZXIuCgpUaGlzIGlzIGEgY29udmVuaWVuY2UgbWFjcm8gbWVhbnQgZm9y IGRpc3BsYXlpbmcgaGVscCBidWZmZXJzIGFuZAp0aGUgbGlrZS4gIEl0IGVtcHRpZXMgdGhlIEJV Rk5BTUUgYnVmZmVyIGJlZm9yZSBldmFsdWF0aW5nIEJPRFkKYW5kIGRpc2FibGVzIHVuZG8gaW4g dGhhdCBidWZmZXIuCgpJdCBkb2VzIG5vdCBtYWtlIHRoZSBidWZmZXIgY3VycmVudCBmb3IgQk9E WS4gIEluc3RlYWQgaXQgYmluZHMKYHN0YW5kYXJkLW91dHB1dCcgdG8gdGhhdCBidWZmZXIsIHNv IHRoYXQgb3V0cHV0IGdlbmVyYXRlZCB3aXRoCmBwcmluMScgYW5kIHNpbWlsYXIgZnVuY3Rpb25z IGluIEJPRFkgZ29lcyBpbnRvIHRoZSBidWZmZXIuCgpBdCB0aGUgZW5kIG9mIEJPRFksIHRoaXMg bWFya3MgYnVmZmVyIEJVRk5BTUUgdW5tb2RpZmllZCBhbmQgZGlzcGxheXMKaXQgaW4gYSB3aW5k b3csIGJ1dCBkb2VzIG5vdCBzZWxlY3QgaXQuICBUaGUgbm9ybWFsIHdheSB0byBkbyB0aGlzIGlz CmJ5IGNhbGxpbmcgYGRpc3BsYXktYnVmZmVyJywgdGhlbiBydW5uaW5nIGB0ZW1wLWJ1ZmZlci1z aG93LWhvb2snLgpIb3dldmVyLCBpZiBgdGVtcC1idWZmZXItc2hvdy1mdW5jdGlvbicgaXMgbm9u LW5pbCwgaXQgY2FsbHMgdGhhdApmdW5jdGlvbiBpbnN0ZWFkIChhbmQgZG9lcyBub3QgcnVuIGB0 ZW1wLWJ1ZmZlci1zaG93LWhvb2snKS4gIFRoZQpmdW5jdGlvbiBnZXRzIG9uZSBhcmd1bWVudCwg dGhlIGJ1ZmZlciB0byBkaXNwbGF5LgoKVGhlIHJldHVybiB2YWx1ZSBvZiBgd2l0aC1vdXRwdXQt dG8tdGVtcC1idWZmZXInIGlzIHRoZSB2YWx1ZSBvZiB0aGUKbGFzdCBmb3JtIGluIEJPRFkuICBJ ZiBCT0RZIGRvZXMgbm90IGZpbmlzaCBub3JtYWxseSwgdGhlIGJ1ZmZlcgpCVUZOQU1FIGlzIG5v dCBkaXNwbGF5ZWQuCgpUaGlzIHJ1bnMgdGhlIGhvb2sgYHRlbXAtYnVmZmVyLXNldHVwLWhvb2sn IGJlZm9yZSBCT0RZLAp3aXRoIHRoZSBidWZmZXIgQlVGTkFNRSB0ZW1wb3JhcmlseSBjdXJyZW50 LiAgSXQgcnVucyB0aGUgaG9vawpgdGVtcC1idWZmZXItc2hvdy1ob29rJyBhZnRlciBkaXNwbGF5 aW5nIGJ1ZmZlciBCVUZOQU1FLCB3aXRoIHRoYXQKYnVmZmVyIHRlbXBvcmFyaWx5IGN1cnJlbnQs IGFuZCB0aGUgd2luZG93IHRoYXQgd2FzIHVzZWQgdG8gZGlzcGxheSBpdAp0ZW1wb3JhcmlseSBz ZWxlY3RlZC4gIEJ1dCBpdCBkb2Vzbid0IHJ1biBgdGVtcC1idWZmZXItc2hvdy1ob29rJwppZiBp dCB1c2VzIGB0ZW1wLWJ1ZmZlci1zaG93LWZ1bmN0aW9uJy4KCkJ5IGRlZmF1bHQsIHRoZSBzZXR1 cCBob29rIHB1dHMgdGhlIGJ1ZmZlciBpbnRvIEhlbHAgbW9kZSBiZWZvcmUgcnVubmluZyBCT0RZ LgpJZiBCT0RZIGRvZXMgbm90IGNoYW5nZSB0aGUgbWFqb3IgbW9kZSwgdGhlIHNob3cgaG9vayBt YWtlcyB0aGUgYnVmZmVyCnJlYWQtb25seSwgYW5kIHNjYW5zIGl0IGZvciBmdW5jdGlvbiBhbmQg dmFyaWFibGUgbmFtZXMgdG8gbWFrZSB0aGVtIGludG8KY2xpY2thYmxlIGNyb3NzLXJlZmVyZW5j ZXMuCgpTZWUgdGhlIHJlbGF0ZWQgZm9ybSBgd2l0aC10ZW1wLWJ1ZmZlci13aW5kb3cnLgoKKGZu IEJVRk5BTUUgJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2l0aC1vdXRwdXQtdG8tdGVtcC1idWZm ZXIgJyhtYWNybyAuICNbMzg1ICJcMzAwXDMwMSFcMzAwXDMwMiFcMzAzAlwzMDRCAlwzMDVcMzA2 BghEXDMwN1wzMTBcMzExXDMxMlwzMTMGC0VcMzE0QkJCQkVEXDMxNQRERVwzMDdcMzE2BgZCXDMx NwVERUVcMjA3IiBbbWFrZS1zeW1ib2wgIm9sZC1kaXIiICJidWYiIGxldCogKGRlZmF1bHQtZGly ZWN0b3J5KSB3aXRoLWN1cnJlbnQtYnVmZmVyIGdldC1idWZmZXItY3JlYXRlIHByb2cxIChjdXJy ZW50LWJ1ZmZlcikgKGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcykgc2V0cSBkZWZhdWx0LWRpcmVj dG9yeSAoKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpIChzZXRxIGJ1ZmZlci1maWxlLW5hbWUg bmlsKSAoc2V0cSBidWZmZXItdW5kby1saXN0IHQpIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0 KSAoaW5oaWJpdC1tb2RpZmljYXRpb24taG9va3MgdCkpIChlcmFzZS1idWZmZXIpIChydW4taG9v a3MgJ3RlbXAtYnVmZmVyLXNldHVwLWhvb2spKSkgc3RhbmRhcmQtb3V0cHV0IHByb2duIGludGVy bmFsLXRlbXAtb3V0cHV0LWJ1ZmZlci1zaG93XSAxNSAoIyQgLiAxNTEyMjEpXSkpCihwdXQgJ3dp dGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyICdlZGVidWctZm9ybS1zcGVjIHQpI0AyOTggQ3JlYXRl IGEgbmV3IGJ1ZmZlciwgZXZhbHVhdGUgQk9EWSB0aGVyZSwgYW5kIHdyaXRlIHRoZSBidWZmZXIg dG8gRklMRS4KVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBmb3Jt IGluIEJPRFkuClRoZSBidWZmZXIgZG9lcyBub3QgcnVuIHRoZSBob29rcyBga2lsbC1idWZmZXIt aG9vaycsCmBraWxsLWJ1ZmZlci1xdWVyeS1mdW5jdGlvbnMnLCBhbmQgYGJ1ZmZlci1saXN0LXVw ZGF0ZS1ob29rJy4KU2VlIGFsc28gYHdpdGgtdGVtcC1idWZmZXInLgoKKGZuIEZJTEUgJnJlc3Qg Qk9EWSkfCihkZWZhbGlhcyAnd2l0aC10ZW1wLWZpbGUgJyhtYWNybyAuICNbMzg1ICJcMzAwXDMw MSFcMzAwXDMwMiFcMzAzAgVEAlwzMDRCRFwzMDVcMzA2XDMwNwUGCEJCXDMwNwYGXDMxMFwzMTFc MjExBgtcMzEyQkJCQkVFXDMxM1wzMTQGBkRcMzE1BgdERUVFXDIwNyIgW21ha2Utc3ltYm9sICJ0 ZW1wLWZpbGUiICJ0ZW1wLWJ1ZmZlciIgbGV0ICgoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICp0ZW1w IGZpbGUqIiB0KSkgdW53aW5kLXByb3RlY3QgcHJvZzEgd2l0aC1jdXJyZW50LWJ1ZmZlciB3cml0 ZS1yZWdpb24gbmlsIChuaWwgMCkgYW5kIGJ1ZmZlci1uYW1lIGtpbGwtYnVmZmVyXSAxNiAoIyQg LiAxNTM1NTIpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMw NiNcMjA3IiBbZnVuY3Rpb24tcHV0IHdpdGgtdGVtcC1maWxlIGxpc3AtaW5kZW50LWZ1bmN0aW9u IDEgcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgdF0gNSkjQDQyOCBEaXNwbGF5IE1FU1NBR0UgdGVtcG9y YXJpbHkgaWYgbm9uLW5pbCB3aGlsZSBCT0RZIGlzIGV2YWx1YXRlZC4KVGhlIG9yaWdpbmFsIG1l c3NhZ2UgaXMgcmVzdG9yZWQgdG8gdGhlIGVjaG8gYXJlYSBhZnRlciBCT0RZIGhhcyBmaW5pc2hl ZC4KVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBmb3JtIGluIEJP RFkuCk1FU1NBR0UgaXMgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBsb2cgYnVmZmVyIGlmIGBtZXNz YWdlLWxvZy1tYXgnIGlzIG5vbi1uaWwuCklmIE1FU1NBR0UgaXMgbmlsLCB0aGUgZWNobyBhcmVh IGFuZCBtZXNzYWdlIGxvZyBidWZmZXIgYXJlIHVuY2hhbmdlZC4KVXNlIGEgTUVTU0FHRSBvZiAi IiB0byB0ZW1wb3JhcmlseSBjbGVhciB0aGUgZWNobyBhcmVhLgoKKGZuIE1FU1NBR0UgJnJlc3Qg Qk9EWSkfCihkZWZhbGlhcyAnd2l0aC10ZW1wLW1lc3NhZ2UgJyhtYWNybyAuICNbMzg1ICJcMzAw XDMwMSFcMzAwXDMwMiFcMzAzAQVEA0NEXDMwNFwzMDVcMzA2BVwzMDcGCFwzMTBCQlwzMTFcMzEy BglFRgYHQkJcMzEzBVwzMTQGCFwzMTFcMzEyBgtFXDMxNUJCQkVFRVwyMDciIFttYWtlLXN5bWJv bCAiY3VycmVudC1tZXNzYWdlIiAid2l0aC10ZW1wLW1lc3NhZ2UiIGxldCB1bndpbmQtcHJvdGVj dCBwcm9nbiB3aGVuIHNldHEgKChjdXJyZW50LW1lc3NhZ2UpKSBtZXNzYWdlICIlcyIgYW5kIGlm ICgobWVzc2FnZSBuaWwpKV0gMTUgKCMkIC4gMTU0MzM0KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMw MVwzMDJcMzAzI1wyMTBcMzA0XDMwMVwzMDVcMzA2I1wzMDBcMjA3IiBbcHV0IHdpdGgtdGVtcC1t ZXNzYWdlIGVkZWJ1Zy1mb3JtLXNwZWMgdCBmdW5jdGlvbi1wdXQgbGlzcC1pbmRlbnQtZnVuY3Rp b24gMV0gNCkjQDI1NCBDcmVhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyLCBhbmQgZXZhbHVhdGUgQk9E WSB0aGVyZSBsaWtlIGBwcm9nbicuClRoZSBidWZmZXIgZG9lcyBub3QgcnVuIHRoZSBob29rcyBg a2lsbC1idWZmZXItaG9vaycsCmBraWxsLWJ1ZmZlci1xdWVyeS1mdW5jdGlvbnMnLCBhbmQgYGJ1 ZmZlci1saXN0LXVwZGF0ZS1ob29rJy4KU2VlIGFsc28gYHdpdGgtdGVtcC1maWxlJyBhbmQgYHdp dGgtb3V0cHV0LXRvLXN0cmluZycuCgooZm4gJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2l0aC10 ZW1wLWJ1ZmZlciAnKG1hY3JvIC4gI1sxMjggIlwzMDBcMzAxIVwzMDIBXDMwM0JDXDMwNANcMzA1 XDMwNgYHQlwzMDdcMzEwBghEXDMxMQYJREVFRUVcMjA3IiBbbWFrZS1zeW1ib2wgInRlbXAtYnVm ZmVyIiBsZXQgKChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKnRlbXAqIiB0KSkgd2l0aC1jdXJyZW50 LWJ1ZmZlciB1bndpbmQtcHJvdGVjdCBwcm9nbiBhbmQgYnVmZmVyLW5hbWUga2lsbC1idWZmZXJd IDEyICgjJCAuIDE1NTIyNSldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMw MVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgd2l0aC10ZW1wLWJ1ZmZlciBsaXNwLWluZGVu dC1mdW5jdGlvbiAwIHB1dCBlZGVidWctZm9ybS1zcGVjIHRdIDUpI0A1ODUgRXhlY3V0ZSBCT0RZ LCBwcmV0ZW5kaW5nIGl0IGRvZXMgbm90IG1vZGlmeSB0aGUgYnVmZmVyLgpUaGlzIG1hY3JvIGlz IHR5cGljYWxseSB1c2VkIGFyb3VuZCBtb2RpZmljYXRpb25zIG9mCnRleHQgcHJvcGVydGllcyB0 aGF0IGRvIG5vdCByZWFsbHkgYWZmZWN0IHRoZSBidWZmZXIncyBjb250ZW50LgpJZiBCT0RZIHBl cmZvcm1zIHJlYWwgbW9kaWZpY2F0aW9ucyB0byB0aGUgYnVmZmVyJ3MgdGV4dCwgb3RoZXIKdGhh biBjb3NtZXRpYyBvbmVzLCB1bmRvIGRhdGEgbWF5IGJlY29tZSBjb3JydXB0ZWQuCgpUaGlzIG1h Y3JvIHdpbGwgcnVuIEJPRFkgbm9ybWFsbHksIGJ1dCBkb2Vzbid0IGNvdW50IGl0cyBidWZmZXIK bW9kaWZpY2F0aW9ucyBhcyBiZWluZyBidWZmZXIgbW9kaWZpY2F0aW9ucy4gIFRoaXMgYWZmZWN0 cyB0aGluZ3MKbGlrZSBgYnVmZmVyLW1vZGlmaWVkLXAnLCBjaGVja2luZyB3aGV0aGVyIHRoZSBm aWxlIGlzIGxvY2tlZCBieQpzb21lb25lIGVsc2UsIHJ1bm5pbmcgYnVmZmVyIG1vZGlmaWNhdGlv biBob29rcywgYW5kIG90aGVyIHRoaW5ncwpvZiB0aGF0IG5hdHVyZS4KCihmbiAmcmVzdCBCT0RZ KR8KKGRlZmFsaWFzICd3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zICcobWFjcm8gLiAjWzEyOCAi XDMwMFwzMDEhXDMwMgFcMzAzQlwzMDRCXDMwNVwzMDYFQlwzMDdcMzEwXDMxMQYHRFwzMTIGCFwz MTNCQkVcMzE0BgdERUVFXDIwNyIgW21ha2Utc3ltYm9sICJtb2RpZmllZCIgbGV0KiAoKGJ1ZmZl ci1tb2RpZmllZC1wKSkgKChidWZmZXItdW5kby1saXN0IHQpIChpbmhpYml0LXJlYWQtb25seSB0 KSAoaW5oaWJpdC1tb2RpZmljYXRpb24taG9va3MgdCkpIHVud2luZC1wcm90ZWN0IHByb2duIHdo ZW4gb3Igbm90IGVxICgnYXV0b3NhdmVkKSByZXN0b3JlLWJ1ZmZlci1tb2RpZmllZC1wXSAxMiAo IyQgLiAxNTU4ODMpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDIxMFwzMDRcMzAx XDMwNVwzMDYjXDMwMFwyMDciIFtwdXQgd2l0aC1zaWxlbnQtbW9kaWZpY2F0aW9ucyBlZGVidWct Zm9ybS1zcGVjIHQgZnVuY3Rpb24tcHV0IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDBdIDQpI0A5MSBF eGVjdXRlIEJPRFksIHJldHVybiB0aGUgdGV4dCBpdCBzZW50IHRvIGBzdGFuZGFyZC1vdXRwdXQn LCBhcyBhIHN0cmluZy4KCihmbiAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICd3aXRoLW91dHB1dC10 by1zdHJpbmcgJyhtYWNybyAuICNbMTI4ICJcMzAwXDMwMVwzMDJcMzAzXDMwMFwzMDQGBkJCXDMw NUJCXDMwNkJCRVwyMDciIFtsZXQgKChzdGFuZGFyZC1vdXRwdXQgKGdlbmVyYXRlLW5ldy1idWZm ZXIgIiAqc3RyaW5nLW91dHB1dCoiIHQpKSkgdW53aW5kLXByb3RlY3QgcHJvZ24gKChzdGFuZGFy ZC1vdXRwdXQgc3RhbmRhcmQtb3V0cHV0KSkgKCh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJk LW91dHB1dCAoYnVmZmVyLXN0cmluZykpKSAoKGtpbGwtYnVmZmVyIHN0YW5kYXJkLW91dHB1dCkp XSA4ICgjJCAuIDE1Njk3NyldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMw MVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgd2l0aC1vdXRwdXQtdG8tc3RyaW5nIGxpc3At aW5kZW50LWZ1bmN0aW9uIDAgcHV0IGVkZWJ1Zy1mb3JtLXNwZWMgdF0gNSkjQDI4OSBFeGVjdXRl IEJPRFksIGFsbG93aW5nIHF1aXRzIHRvIHRlcm1pbmF0ZSBCT0RZIGJ1dCBub3QgZXNjYXBlIGZ1 cnRoZXIuCldoZW4gYSBxdWl0IHRlcm1pbmF0ZXMgQk9EWSwgYHdpdGgtbG9jYWwtcXVpdCcgcmV0 dXJucyBuaWwgYnV0CnJlcXVlc3RzIGFub3RoZXIgcXVpdC4gIFRoYXQgcXVpdCB3aWxsIGJlIHBy b2Nlc3NlZCBhcyBzb29uIGFzIHF1aXR0aW5nCmlzIGFsbG93ZWQgb25jZSBhZ2Fpbi4gIChJbW1l ZGlhdGVseSwgaWYgYGluaGliaXQtcXVpdCcgaXMgbmlsLikKCihmbiAmcmVzdCBCT0RZKR8KKGRl ZmFsaWFzICd3aXRoLWxvY2FsLXF1aXQgJyhtYWNybyAuICNbMTI4ICJcMzAwXDMwMVwzMDJcMzAz BEJCXDMwNEJCQlwyMDciIFtjb25kaXRpb24tY2FzZSBuaWwgbGV0ICgoaW5oaWJpdC1xdWl0IG5p bCkpICgocXVpdCAoc2V0cSBxdWl0LWZsYWcgdCkgKGV2YWwgJyhpZ25vcmUgbmlsKSB0KSkpXSA2 ICgjJCAuIDE1NzU0MSldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMjEwXDMwNFwz MDFcMzA1XDMwNiNcMzAwXDIwNyIgW3B1dCB3aXRoLWxvY2FsLXF1aXQgZWRlYnVnLWZvcm0tc3Bl YyB0IGZ1bmN0aW9uLXB1dCBsaXNwLWluZGVudC1mdW5jdGlvbiAwXSA0KSNAMjYwIEV4ZWN1dGUg Qk9EWSBvbmx5IGFzIGxvbmcgYXMgdGhlcmUncyBubyBwZW5kaW5nIGlucHV0LgpJZiBpbnB1dCBh cnJpdmVzLCB0aGF0IGVuZHMgdGhlIGV4ZWN1dGlvbiBvZiBCT0RZLAphbmQgYHdoaWxlLW5vLWlu cHV0JyByZXR1cm5zIHQuICBRdWl0dGluZyBtYWtlcyBpdCByZXR1cm4gbmlsLgpJZiBCT0RZIGZp bmlzaGVzLCBgd2hpbGUtbm8taW5wdXQnIHJldHVybnMgd2hhdGV2ZXIgdmFsdWUgQk9EWSBwcm9k dWNlZC4KCihmbiAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICd3aGlsZS1uby1pbnB1dCAnKG1hY3Jv IC4gI1sxMjggIlwzMDBcMzAxIVwzMDJcMzAzXDMwNANEXDMwNVwzMDZcMzA0BgZERFwzMDdCXDMx MFwzMTFcMzEyXDMxM1wzMTQGC0JFRVwzMTVCQkJFRFwyMDciIFttYWtlLXN5bWJvbCAiaW5wdXQi IHdpdGgtbG9jYWwtcXVpdCBjYXRjaCBxdW90ZSBsZXQgdGhyb3ctb24taW5wdXQgKHZhbCkgc2V0 cSB2YWwgb3IgKGlucHV0LXBlbmRpbmctcCkgcHJvZ24gKChjb25kICgoZXEgcXVpdC1mbGFnIHRo cm93LW9uLWlucHV0KSAoc2V0cSBxdWl0LWZsYWcgbmlsKSB0KSAocXVpdC1mbGFnIG5pbCkgKHQg dmFsKSkpXSAxMyAoIyQgLiAxNTgxNjcpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMj XDIxMFwzMDRcMzAxXDMwNVwzMDYjXDMwMFwyMDciIFtwdXQgd2hpbGUtbm8taW5wdXQgZWRlYnVn LWZvcm0tc3BlYyB0IGZ1bmN0aW9uLXB1dCBsaXNwLWluZGVudC1mdW5jdGlvbiAwXSA0KSNAMjEy IExpa2UgYGNvbmRpdGlvbi1jYXNlJyBleGNlcHQgdGhhdCBpdCBkb2VzIG5vdCBwcmV2ZW50IGRl YnVnZ2luZy4KTW9yZSBzcGVjaWZpY2FsbHkgaWYgYGRlYnVnLW9uLWVycm9yJyBpcyBzZXQgdGhl biB0aGUgZGVidWdnZXIgd2lsbCBiZSBpbnZva2VkCmV2ZW4gaWYgdGhpcyBjYXRjaGVzIHRoZSBz aWduYWwuCgooZm4gVkFSIEJPRFlGT1JNICZyZXN0IEhBTkRMRVJTKR8KKGRlZmFsaWFzICdjb25k aXRpb24tY2FzZS11bmxlc3MtZGVidWcgJyhtYWNybyAuICNbNjQyICJcMzAwAwNcMzAxXDMwMgVc IkJCQlwyMDciIFtjb25kaXRpb24tY2FzZSBtYXBjYXIgI1syNTcgIlwzMDABQDxcMjAzXGYAAUBc MjAyDwABQENCAUFCXDIwNyIgW2RlYnVnXSAzICJcblxuKGZuIEhBTkRMRVIpIl1dIDkgKCMkIC4g MTU4OTE3KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wyMTBcMzA0XDMwMVwzMDVc MzA2I1wzMDBcMjA3IiBbcHV0IGNvbmRpdGlvbi1jYXNlLXVubGVzcy1kZWJ1ZyBlZGVidWctZm9y bS1zcGVjIGNvbmRpdGlvbi1jYXNlIGZ1bmN0aW9uLXB1dCBsaXNwLWluZGVudC1mdW5jdGlvbiAy XSA0KSNANDIwIFJ1biBCT0RZIGFuZCBkZW1vdGUgYW55IGVycm9ycyB0byBzaW1wbGUgbWVzc2Fn ZXMuCkZPUk1BVCBpcyBhIHN0cmluZyBwYXNzZWQgdG8gYG1lc3NhZ2UnIHRvIGZvcm1hdCBhbnkg ZXJyb3IgbWVzc2FnZS4KSXQgc2hvdWxkIGNvbnRhaW4gYSBzaW5nbGUgJS1zZXF1ZW5jZTsgZS5n LiwgIkVycm9yOiAlUyIuCgpJZiBgZGVidWctb24tZXJyb3InIGlzIG5vbi1uaWwsIHJ1biBCT0RZ IHdpdGhvdXQgY2F0Y2hpbmcgaXRzIGVycm9ycy4KVGhpcyBpcyB0byBiZSB1c2VkIGFyb3VuZCBj b2RlIHRoYXQgaXMgbm90IGV4cGVjdGVkIHRvIHNpZ25hbCBhbiBlcnJvcgpidXQgdGhhdCBzaG91 bGQgYmUgcm9idXN0IGluIHRoZSB1bmV4cGVjdGVkIGNhc2UgdGhhdCBhbiBlcnJvciBpcyBzaWdu YWxlZC4KCihmbiBGT1JNQVQgJnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2l0aC1kZW1vdGVkLWVy cm9ycyAnKG1hY3JvIC4gI1szODUgIlwzMDBcMzAxIQEDO1wyMDMRAAJcMjAzEQADXDIwMhsAA1wy MDMaAAMDQlwyNjIDXDMwMlwzMDMDXDMwNAYGIVwzMDVcMzA2BQYIRVwzMDdCQkYCBT1cMjAzMgBc MjA3XDMxMFwzMTECXDMxMlwyMTEGBiVcMjA3IiBbbWFrZS1zeW1ib2wgImVyciIgIkVycm9yOiAl UyIgY29uZGl0aW9uLWNhc2UtdW5sZXNzLWRlYnVnIG1hY3JvZXhwLXByb2duIGVycm9yIG1lc3Nh Z2UgKG5pbCkgbWFjcm9leHAtd2Fybi1hbmQtcmV0dXJuICJNaXNzaW5nIGZvcm1hdCBhcmd1bWVu dCIgbmlsXSAxMiAoIyQgLiAxNTk0OTYpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMj XDIxMFwzMDRcMzAxXDMwNVwzMDYjXDMwMFwyMDciIFtwdXQgd2l0aC1kZW1vdGVkLWVycm9ycyBl ZGVidWctZm9ybS1zcGVjIHQgZnVuY3Rpb24tcHV0IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDFdIDQp I0A1MTQgRXhlY3V0ZSBCT0RZLCBidXQgZG9uJ3QgY2FsbCB0aGUgYWZ0ZXItY2hhbmdlIGZ1bmN0 aW9ucyB0aWxsIHRoZSBlbmQuCklmIEJPRFkgbWFrZXMgY2hhbmdlcyBpbiB0aGUgYnVmZmVyLCB0 aGV5IGFyZSByZWNvcmRlZAphbmQgdGhlIGZ1bmN0aW9ucyBvbiBgYWZ0ZXItY2hhbmdlLWZ1bmN0 aW9ucycgYXJlIGNhbGxlZCBzZXZlcmFsIHRpbWVzCndoZW4gQk9EWSBpcyBmaW5pc2hlZC4KVGhl IHJldHVybiB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgZm9ybSBpbiBCT0RZLgoKSWYg YGJlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zJyBpcyBub24tbmlsLCB0aGVuIGNhbGxzIHRvIHRoZSBh ZnRlci1jaGFuZ2UKZnVuY3Rpb25zIGNhbid0IGJlIGRlZmVycmVkLCBzbyBpbiB0aGF0IGNhc2Ug dGhpcyBtYWNybyBoYXMgbm8gZWZmZWN0LgoKRG8gbm90IGFsdGVyIGBhZnRlci1jaGFuZ2UtZnVu Y3Rpb25zJyBvciBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnCmluIEJPRFkuCgooZm4gJnJlc3Qg Qk9EWSkfCihkZWZhbGlhcyAnY29tYmluZS1hZnRlci1jaGFuZ2UtY2FsbHMgJyhtYWNybyAuICNb MTI4ICJcMzAwXDMwMVwzMDIDQkJcMzAzQkJcMjA3IiBbdW53aW5kLXByb3RlY3QgbGV0ICgoY29t YmluZS1hZnRlci1jaGFuZ2UtY2FsbHMgdCkpICgoY29tYmluZS1hZnRlci1jaGFuZ2UtZXhlY3V0 ZSkpXSA1ICgjJCAuIDE2MDQwNCldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0 XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgY29tYmluZS1hZnRlci1jaGFuZ2UtY2Fs bHMgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMCBwdXQgZWRlYnVnLWZvcm0tc3BlYyB0XSA1KSNANTEg Tm9uLW5pbCB3aGVuIGBjb21iaW5lLWNoYW5nZS1jYWxscy0xJyBpcyBydW5uaW5nLh8KKGRlZnZh ciB1bmRvLS1jb21iaW5pbmctY2hhbmdlLWNhbGxzIG5pbCAoIyQgLiAxNjEyNTMpKSNAOTQ3IEV2 YWx1YXRlIEJPRFksIHJ1bm5pbmcgdGhlIGNoYW5nZSBob29rcyBqdXN0IG9uY2UsIGZvciByZWdp b24gKEJFRyBFTkQpLgoKRmlyc3RseSwgYGJlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zJyBpcyBpbnZv a2VkIGZvciB0aGUgcmVnaW9uCihCRUcgRU5EKSwgdGhlbiBCT0RZIChhIGZ1bmN0aW9uKSBpcyBl dmFsdWF0ZWQgd2l0aApgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIGFuZCBgYWZ0ZXItY2hhbmdl LWZ1bmN0aW9ucycgYm91bmQgdG8KbmlsLCB0aGVuIGZpbmFsbHkgYGFmdGVyLWNoYW5nZS1mdW5j dGlvbnMnIGlzIGludm9rZWQgb24gdGhlCnVwZGF0ZWQgcmVnaW9uIChCRUcgTkVXLUVORCkgd2l0 aCBhIGNhbGN1bGF0ZWQgT0xELUxFTiBhcmd1bWVudC4KSWYgYGluaGliaXQtbW9kaWZpY2F0aW9u LWhvb2tzJyBpcyBpbml0aWFsbHkgbm9uLW5pbCwgdGhlIGNoYW5nZQpob29rcyBhcmUgbm90IHJ1 bi4KClRoZSByZXN1bHQgb2YgYGNvbWJpbmUtY2hhbmdlLWNhbGxzLTEnIGlzIHRoZSB2YWx1ZSBy ZXR1cm5lZCBieQpCT0RZLiAgQk9EWSBtdXN0IG5vdCBtYWtlIGEgZGlmZmVyZW50IGJ1ZmZlciBj dXJyZW50LCBleGNlcHQKdGVtcG9yYXJpbHkuICBJdCBtdXN0IG5vdCBtYWtlIGFueSBjaGFuZ2Vz IHRvIHRoZSBidWZmZXIgb3V0c2lkZQp0aGUgc3BlY2lmaWVkIHJlZ2lvbi4gIEl0IG11c3Qgbm90 IGNoYW5nZQpgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIG9yIGBhZnRlci1jaGFuZ2UtZnVuY3Rp b25zJy4KCkFkZGl0aW9uYWxseSwgdGhlIGJ1ZmZlciBtb2RpZmljYXRpb25zIG9mIEJPRFkgYXJl IHJlY29yZGVkIG9uCnRoZSBidWZmZXIncyB1bmRvIGxpc3QgYXMgYSBzaW5nbGUgKGFwcGx5IC4u LikgZW50cnkgY29udGFpbmluZwp0aGUgZnVuY3Rpb24gYHVuZG8tLXdyYXAtYW5kLXJ1bi1wcmlt aXRpdmUtdW5kbycuCgooZm4gQkVHIEVORCBCT0RZKR8KKGRlZmFsaWFzICdjb21iaW5lLWNoYW5n ZS1jYWxscy0xICNbNzcxICJcMzA1AyFcMjAzCwBcMzA2AyFcMjYyA1wzMDUCIVwyMDMWAFwzMDYC IVwyNjICCFwzMDcDXDMxMFwiXDMxMQlcMjAzJwADIFwyNjIBXDIwMlwzMzIAXDMxMBlcblwyMDQ1 AFwzMTJcMzAzBgcGByNcMjEwC1xmXDMxM1wzMDMhXDMxM1wzMDQhXDMxNFwzMTUCBAYGBgglXDIx NlwzMTZcMzAzIVwyMTBcMzE3BD5cMjA1UgBcMzIwE1wzMTZcMzA0IVwyMTBcMzExFAYHIClcMjY2 XDIwNQhcMzEwPVwyMDRcMzA3AFwzMjEFA1oGB1wzMDYFIVwzMjIGXG5cMzA2BgghCFwyNTcICFwy MTEFPVwyMDRcMzA1AFwyMTFBBT1cMjA0XDI2MABcMjExQVwyMDNcMjYwAFwyMTFBOlwyMDNcMjUx AFwyMTFBQDpcMjAzXDI1MQBcMjExQUBAXDMxMD1cMjAzXDI1MQBcMjExQVwyMTFcMjYyBlwyMDRc MjYwAFwyMTFBXDI2MgFcMjAyfwBcMjExQVwyMDRcMjcxAFwzMjNcMzI0IVwyMTBcMjExXDMxMVwy NDFcMjEwAQhCXDIxMRAFXDI0MVwyMTBcMjY2AlxuXDIwNFwzMzEAXDMxMlwzMDQGB1wzMDYFIQYI BlxuWiRcMjEwKQFcMzExXDIxMVwyMjNcMjEwXDIwNyIgW2J1ZmZlci11bmRvLWxpc3QgdW5kby0t Y29tYmluaW5nLWNoYW5nZS1jYWxscyBpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcyBiZWZvcmUt Y2hhbmdlLWZ1bmN0aW9ucyBhZnRlci1jaGFuZ2UtZnVuY3Rpb25zIG1hcmtlcnAgbWFya2VyLXBv c2l0aW9uIGNvcHktbWFya2VyIHQgbmlsIHJ1bi1ob29rLXdpdGgtYXJncyBsb2NhbC12YXJpYWJs ZS1wIG1ha2UtY2xvc3VyZSAjWzAgIlwzMDFcMjAzCQBcMzAzFFwyMDINAFwzMDZcMzA0IVwyMTBc MzAwXDIwMxUAXDMwMlwyMTEVXDIwN1wzMDZcMzA1IVwyMDciIFtWMCBWMSBWMiBWMyBiZWZvcmUt Y2hhbmdlLWZ1bmN0aW9ucyBhZnRlci1jaGFuZ2UtZnVuY3Rpb25zIGtpbGwtbG9jYWwtdmFyaWFi bGVdIDJdIG1ha2UtbG9jYWwtdmFyaWFibGUgc3ludGF4LXBwc3MtZmx1c2gtY2FjaGUgKHN5bnRh eC1wcHNzLWZsdXNoLWNhY2hlKSBhcHBseSB1bmRvLS13cmFwLWFuZC1ydW4tcHJpbWl0aXZlLXVu ZG8gbWVzc2FnZSAiY29tYmluZS1jaGFuZ2UtY2FsbHM6IGJ1ZmZlci11bmRvLWxpc3QgYnJva2Vu Il0gMTcgKCMkIC4gMTYxMzY1KV0pI0AxMDEzIEV2YWx1YXRlIEJPRFksIHJ1bm5pbmcgdGhlIGNo YW5nZSBob29rcyBqdXN0IG9uY2UuCgpCT0RZIGlzIGEgc2VxdWVuY2Ugb2YgTGlzcCBmb3JtcyB0 byBldmFsdWF0ZS4gIEJFRyBhbmQgRU5EIGJvdW5kCnRoZSByZWdpb24gdGhlIGNoYW5nZSBob29r cyB3aWxsIGJlIHJ1biBmb3IuCgpGaXJzdGx5LCBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIGlz IGludm9rZWQgZm9yIHRoZSByZWdpb24KKEJFRyBFTkQpLCB0aGVuIHRoZSBCT0RZIGZvcm1zIGFy ZSBldmFsdWF0ZWQgd2l0aApgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIGFuZCBgYWZ0ZXItY2hh bmdlLWZ1bmN0aW9ucycgYm91bmQgdG8KbmlsLCBhbmQgZmluYWxseSBgYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucycgaXMgaW52b2tlZCBvbiB0aGUKdXBkYXRlZCByZWdpb24uICBUaGUgY2hhbmdlIGhv b2tzIGFyZSBub3QgcnVuIGlmCmBpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcycgaXMgaW5pdGlh bGx5IG5vbi1uaWwuCgpUaGUgcmVzdWx0IG9mIGBjb21iaW5lLWNoYW5nZS1jYWxscycgaXMgdGhl IHZhbHVlIHJldHVybmVkIGJ5IHRoZQpsYXN0IG9mIHRoZSBCT0RZIGZvcm1zIHRvIGJlIGV2YWx1 YXRlZC4gIEJPRFkgbWF5IG5vdCBtYWtlIGEKZGlmZmVyZW50IGJ1ZmZlciBjdXJyZW50LCBleGNl cHQgdGVtcG9yYXJpbHkuICBCT0RZIG1heSBub3QKY2hhbmdlIHRoZSBidWZmZXIgb3V0c2lkZSB0 aGUgc3BlY2lmaWVkIHJlZ2lvbi4gIEl0IG11c3Qgbm90CmNoYW5nZSBgYmVmb3JlLWNoYW5nZS1m dW5jdGlvbnMnIG9yIGBhZnRlci1jaGFuZ2UtZnVuY3Rpb25zJy4KCkFkZGl0aW9uYWxseSwgdGhl IGJ1ZmZlciBtb2RpZmljYXRpb25zIG9mIEJPRFkgYXJlIHJlY29yZGVkIG9uCnRoZSBidWZmZXIn cyB1bmRvIGxpc3QgYXMgYSBzaW5nbGUgKGFwcGx5IC4uLikgZW50cnkgY29udGFpbmluZwp0aGUg ZnVuY3Rpb24gYHVuZG8tLXdyYXAtYW5kLXJ1bi1wcmltaXRpdmUtdW5kbycuCgooZm4gQkVHIEVO RCAmcmVzdCBCT0RZKR8KKGRlZmFsaWFzICdjb21iaW5lLWNoYW5nZS1jYWxscyAnKG1hY3JvIC4g I1s2NDIgIlwzMDADA1wzMDFcMzAyBUJCRlwyMDciIFtjb21iaW5lLWNoYW5nZS1jYWxscy0xIGxh bWJkYSBuaWxdIDkgKCMkIC4gMTYzNDQ3KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAz I1wyMTBcMzA0XDMwMVwzMDVcMzA2I1wzMDBcMjA3IiBbcHV0IGNvbWJpbmUtY2hhbmdlLWNhbGxz IGVkZWJ1Zy1mb3JtLXNwZWMgKGZvcm0gZm9ybSBkZWYtYm9keSkgZnVuY3Rpb24tcHV0IGxpc3At aW5kZW50LWZ1bmN0aW9uIDJdIDQpI0A1ODcgQ2FsbCBgcHJpbWl0aXZlLXVuZG8nIG9uIHRoZSB1 bmRvIGVsZW1lbnRzIGluIExJU1QuCgpUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGNh bGxlZCBwdXJlbHkgYnkgYHVuZG8nIGFzIHRoZQpmdW5jdGlvbiBpbiBhbiAoYXBwbHkgREVMVEEg QkVHIEVORCBGVU5OQU1FIC4gQVJHUykgdW5kbwplbGVtZW50LiAgSXQgaW52b2tlcyBgYmVmb3Jl LWNoYW5nZS1mdW5jdGlvbnMnIGFuZApgYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucycgb25jZSBlYWNo IGZvciB0aGUgZW50aXJlIHJlZ2lvbiAoQkVHCkVORCkgcmF0aGVyIHRoYW4gb25jZSBmb3IgZWFj aCBpbmRpdmlkdWFsIGNoYW5nZS4KCkFkZGl0aW9uYWxseSB0aGUgZnJlc2ggInJlZG8iIGVsZW1l bnRzIHdoaWNoIGFyZSBnZW5lcmF0ZWQgb24KYGJ1ZmZlci11bmRvLWxpc3QnIHdpbGwgdGhlbXNl bHZlcyBiZSAiZW5jbG9zZWQiIGluCmB1bmRvLS13cmFwLWFuZC1ydW4tcHJpbWl0aXZlLXVuZG8n LgoKVW5kbyBlbGVtZW50cyBvZiB0aGlzIGZvcm0gYXJlIGdlbmVyYXRlZCBieSB0aGUgbWFjcm8K YGNvbWJpbmUtY2hhbmdlLWNhbGxzJy4KCihmbiBCRUcgRU5EIExJU1QpHwooZGVmYWxpYXMgJ3Vu ZG8tLXdyYXAtYW5kLXJ1bi1wcmltaXRpdmUtdW5kbyAjWzc3MSAiXDIxMUNcMzAwBARcMzAxXDMw MgVcIiNcMjA3IiBbY29tYmluZS1jaGFuZ2UtY2FsbHMtMSBtYWtlLWNsb3N1cmUgI1swICJcMzAw XDI0MlwyMDUQAFwzMDBcMzAxXDMwMlwzMDBcMjQyXCJcMjQwXDIxMFwyMDIAAFwyMDciIFtWMCBw cmltaXRpdmUtdW5kbyAxXSA0XV0gMTAgKCMkIC4gMTY0NzU3KV0pI0AxNDYgRXhlY3V0ZSB0aGUg Zm9ybXMgaW4gQk9EWSB3aXRoIFRBQkxFIGFzIHRoZSBjdXJyZW50IGNhc2UgdGFibGUuClRoZSB2 YWx1ZSByZXR1cm5lZCBpcyB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgZm9ybSBpbiBCT0RZLgoKKGZu IFRBQkxFICZyZXN0IEJPRFkpHwooZGVmYWxpYXMgJ3dpdGgtY2FzZS10YWJsZSAnKG1hY3JvIC4g I1szODUgIlwzMDBcMzAxIVwzMDBcMzAyIVwzMDMCXDMwNEICXDMwNUJEXDMwNlwzMDdcMzEwBghE BgdCQlwzMTEFXDMxMAYIREVFRVwyMDciIFttYWtlLXN5bWJvbCAidGFibGUiICJidWZmZXIiIGxl dCAoKGN1cnJlbnQtY2FzZS10YWJsZSkpICgoY3VycmVudC1idWZmZXIpKSB1bndpbmQtcHJvdGVj dCBwcm9nbiBzZXQtY2FzZS10YWJsZSB3aXRoLWN1cnJlbnQtYnVmZmVyXSAxMiAoIyQgLiAxNjU1 NzMpXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3 IiBbZnVuY3Rpb24tcHV0IHdpdGgtY2FzZS10YWJsZSBsaXNwLWluZGVudC1mdW5jdGlvbiAxIHB1 dCBlZGVidWctZm9ybS1zcGVjIHRdIDUpI0AxMzUgRXhlY3V0ZSBCT0RZIHdpdGggZGVmYXVsdCBm aWxlIHBlcm1pc3Npb25zIHRlbXBvcmFyaWx5IHNldCB0byBNT0RFUy4KTU9ERVMgaXMgYXMgZm9y IGBzZXQtZGVmYXVsdC1maWxlLW1vZGVzJy4KCihmbiBNT0RFUyAmcmVzdCBCT0RZKR8KKGRlZmFs aWFzICd3aXRoLWZpbGUtbW9kZXMgJyhtYWNybyAuICNbMzg1ICJcMzAwXDMwMSFcMzAyAVwzMDNC Q1wzMDRcMzA1XDMwNgYHRAYGQkJcMzA2BURFRVwyMDciIFttYWtlLXN5bWJvbCAidW1hc2siIGxl dCAoKGRlZmF1bHQtZmlsZS1tb2RlcykpIHVud2luZC1wcm90ZWN0IHByb2duIHNldC1kZWZhdWx0 LWZpbGUtbW9kZXNdIDkgKCMkIC4gMTY2MTI4KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJc MzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1dCB3aXRoLWZpbGUtbW9kZXMg bGlzcC1pbmRlbnQtZnVuY3Rpb24gMSBwdXQgZWRlYnVnLWZvcm0tc3BlYyB0XSA1KSNAMTYzIEV4 ZWN1dGUgQk9EWSB3aXRoIGBkZWZhdWx0LWRpcmVjdG9yeScgYm91bmQgdG8gYW4gZXhpc3Rpbmcg ZGlyZWN0b3J5LgpJZiBgZGVmYXVsdC1kaXJlY3RvcnknIGlzIGFscmVhZHkgYW4gZXhpc3Rpbmcg ZGlyZWN0b3J5LCBpdCdzIG5vdCBjaGFuZ2VkLgoKKGZuICZyZXN0IEJPRFkpHwooZGVmYWxpYXMg J3dpdGgtZXhpc3RpbmctZGlyZWN0b3J5ICcobWFjcm8gLiAjWzEyOCAiXDMwMFwzMDECQkJcMjA3 IiBbbGV0ICgoZGVmYXVsdC1kaXJlY3RvcnkgKHNlcS1maW5kIChsYW1iZGEgKGRpcikgKGFuZCBk aXIgKGZpbGUtZXhpc3RzLXAgZGlyKSkpIChsaXN0IGRlZmF1bHQtZGlyZWN0b3J5IChleHBhbmQt ZmlsZS1uYW1lICJ+LyIpIHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeSAoZ2V0ZW52ICJUTVBESVIi KSAiL3RtcC8iKSAiLyIpKSldIDQgKCMkIC4gMTY2NjA5KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMw MVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1dCB3aXRoLWV4aXN0 aW5nLWRpcmVjdG9yeSBsaXNwLWluZGVudC1mdW5jdGlvbiAwIHB1dCBlZGVidWctZm9ybS1zcGVj IHRdIDUpI0AzOTEgRXhlY3V0ZSB0aGUgQk9EWSBmb3JtcywgcmVzdG9yaW5nIHRoZSBnbG9iYWwg dmFsdWUgb2YgdGhlIG1hdGNoIGRhdGEuClRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgdmFsdWUg b2YgdGhlIGxhc3QgZm9ybSBpbiBCT0RZLgpOT1RFOiBUaGUgY29udmVudGlvbiBpbiBFbGlzcCBp cyB0aGF0IGFueSBmdW5jdGlvbiwgZXhjZXB0IGZvciBhIGZldwpleGNlcHRpb25zIGxpa2UgY2Fy L2Fzc29jLysvZ290by1jaGFyLCBjYW4gY2xvYmJlciB0aGUgbWF0Y2ggZGF0YSwKc28gYHNhdmUt bWF0Y2gtZGF0YScgc2hvdWxkIG5vcm1hbGx5IGJlIHVzZWQgdG8gc2F2ZSAqeW91ciogbWF0Y2gg ZGF0YQpyYXRoZXIgdGhhbiB5b3VyIGNhbGxlcidzIG1hdGNoIGRhdGEuCgooZm4gJnJlc3QgQk9E WSkfCihkZWZhbGlhcyAnc2F2ZS1tYXRjaC1kYXRhICcobWFjcm8gLiAjWzEyOCAiXDMwMFwzMDEh XDMwMgFcMzAzRENcMzA0XDMwNQVCXDMwNgVcMzA3RUVFXDIwNyIgW21ha2Utc3ltYm9sICJzYXZl ZC1tYXRjaC1kYXRhIiBsZXQgKG1hdGNoLWRhdGEpIHVud2luZC1wcm90ZWN0IHByb2duIHNldC1t YXRjaC1kYXRhIHRdIDkgKCMkIC4gMTY3MTkzKV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJc MzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIwNyIgW2Z1bmN0aW9uLXB1dCBzYXZlLW1hdGNoLWRhdGEg bGlzcC1pbmRlbnQtZnVuY3Rpb24gMCBwdXQgZWRlYnVnLWZvcm0tc3BlYyB0XSA1KSNAOTY3IFJl dHVybiB0aGUgc3RyaW5nIG9mIHRleHQgbWF0Y2hlZCBieSB0aGUgcHJldmlvdXMgc2VhcmNoIG9y IHJlZ2V4cCBvcGVyYXRpb24uCk5VTSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0aGUgcGFyZW50 aGVzaXplZCBzdWItZXhwcmVzc2lvbiBpbiB0aGUgbGFzdApyZWdleHAgd2hvc2UgbWF0Y2ggdG8g cmV0dXJuLiAgWmVybyBtZWFucyByZXR1cm4gdGhlIHRleHQgbWF0Y2hlZCBieSB0aGUKZW50aXJl IHJlZ2V4cCBvciB0aGUgd2hvbGUgc3RyaW5nLgoKVGhlIHJldHVybiB2YWx1ZSBpcyBuaWwgaWYg TlVNdGggcGFpciBkaWRuJ3QgbWF0Y2ggYW55dGhpbmcsIG9yIGlmIHRoZXJlCndlcmUgZmV3ZXIg dGhhbiBOVU0gc3ViLWV4cHJlc3Npb25zIGluIHRoZSByZWdleHAgdXNlZCBpbiB0aGUgc2VhcmNo LgoKU1RSSU5HIHNob3VsZCBiZSBnaXZlbiBpZiB0aGUgbGFzdCBzZWFyY2ggd2FzIGJ5IGBzdHJp bmctbWF0Y2gnCm9uIFNUUklORy4gIElmIFNUUklORyBpcyBuaWwsIHRoZSBjdXJyZW50IGJ1ZmZl ciBzaG91bGQgYmUgdGhlCnNhbWUgYnVmZmVyIGFzIHRoZSBvbmUgaW4gd2hpY2ggdGhlIHNlYXJj aC9tYXRjaCB3YXMgcGVyZm9ybWVkLgoKTm90ZSB0aGF0IG1hbnkgZnVuY3Rpb25zIGluIEVtYWNz IG1vZGlmeSB0aGUgbWF0Y2ggZGF0YSwgc28gdGhpcwpmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk ICJjbG9zZSIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgZGlkIHRoZQpyZWdleHAgc2VhcmNoLiAgSW4g cGFydGljdWxhciwgc2F5aW5nIChmb3IgaW5zdGFuY2UpCmBNLTogKGxvb2tpbmctYXQgIlswLTld IikgUkVUJyBmb2xsb3dlZCBieSBgTS06IChtYXRjaC1zdHJpbmcgMCkgUkVUJwppbnRlcmFjdGl2 ZWx5IGlzIHNlbGRvbSBtZWFuaW5nZnVsLCBzaW5jZSB0aGUgRW1hY3MgY29tbWFuZCBsb29wCm1h eSBtb2RpZnkgdGhlIG1hdGNoIGRhdGEuCgooZm4gTlVNICZvcHRpb25hbCBTVFJJTkcpHwooZGVm YWxpYXMgJ21hdGNoLXN0cmluZyAjWzUxMyAiAVwyMjRcMjA1FQBcMjExXDIwMxAAXDIxMQJcMjI0 A1wyMjVPXDIwNwFcMjI0AlwyMjV7XDIwNyIgW10gNSAoIyQgLiAxNjc5MjApXSkKKGJ5dGUtY29k ZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBtYXRjaC1zdHJpbmcg c2lkZS1lZmZlY3QtZnJlZSB0XSA0KSNANDg2IFJldHVybiBzdHJpbmcgb2YgdGV4dCBtYXRjaGVk IGJ5IGxhc3Qgc2VhcmNoLCB3aXRob3V0IHRleHQgcHJvcGVydGllcy4KTlVNIHNwZWNpZmllcyB3 aGljaCBwYXJlbnRoZXNpemVkIGV4cHJlc3Npb24gaW4gdGhlIGxhc3QgcmVnZXhwLgogVmFsdWUg aXMgbmlsIGlmIE5VTXRoIHBhaXIgZGlkbid0IG1hdGNoLCBvciB0aGVyZSB3ZXJlIGxlc3MgdGhh biBOVU0gcGFpcnMuClplcm8gbWVhbnMgdGhlIGVudGlyZSB0ZXh0IG1hdGNoZWQgYnkgdGhlIHdo b2xlIHJlZ2V4cCBvciB3aG9sZSBzdHJpbmcuClNUUklORyBzaG91bGQgYmUgZ2l2ZW4gaWYgdGhl IGxhc3Qgc2VhcmNoIHdhcyBieSBgc3RyaW5nLW1hdGNoJyBvbiBTVFJJTkcuCklmIFNUUklORyBp cyBuaWwsIHRoZSBjdXJyZW50IGJ1ZmZlciBzaG91bGQgYmUgdGhlIHNhbWUgYnVmZmVyCnRoZSBz ZWFyY2gvbWF0Y2ggd2FzIHBlcmZvcm1lZCBpbi4KCihmbiBOVU0gJm9wdGlvbmFsIFNUUklORykf CihkZWZhbGlhcyAnbWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgI1s1MTMgIgFcMjI0XDIwNRcA XDIxMVwyMDMRAFwzMDABA1wyMjQEXDIyNSNcMjA3XDMwMQJcMjI0A1wyMjVcIlwyMDciIFtzdWJz dHJpbmctbm8tcHJvcGVydGllcyBidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXNdIDYgKCMk IC4gMTY5MDkwKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtmdW5j dGlvbi1wdXQgbWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgc2lkZS1lZmZlY3QtZnJlZSB0XSA0 KSNAMzQyIFJldHVybiBSRVBMQUNFTUVOVCBhcyBpdCB3aWxsIGJlIGluc2VydGVkIGJ5IGByZXBs YWNlLW1hdGNoJy4KSW4gb3RoZXIgd29yZHMsIGFsbCBiYWNrLXJlZmVyZW5jZXMgaW4gdGhlIGZv cm0gYFwmJyBhbmQgYFxOJwphcmUgc3Vic3RpdHV0ZWQgd2l0aCBhY3R1YWwgc3RyaW5ncyBtYXRj aGVkIGJ5IHRoZSBsYXN0IHNlYXJjaC4KT3B0aW9uYWwgRklYRURDQVNFLCBMSVRFUkFMLCBTVFJJ TkcgYW5kIFNVQkVYUCBoYXZlIHRoZSBzYW1lCm1lYW5pbmcgYXMgZm9yIGByZXBsYWNlLW1hdGNo Jy4KCihmbiBSRVBMQUNFTUVOVCAmb3B0aW9uYWwgRklYRURDQVNFIExJVEVSQUwgU1RSSU5HIFNV QkVYUCkfCihkZWZhbGlhcyAnbWF0Y2gtc3Vic3RpdHV0ZS1yZXBsYWNlbWVudCAjWzEyODEgIlwz MDBcMzAxA1wiXDMwMiBcMzAzXDMwNAJcIlwyMTZcMzA1XDMwMVwyMjRbIVwyMTBcMzA2BgcGBwYH BQYHJSlcMjA3IiBbbWF0Y2gtc3RyaW5nIDAgbWF0Y2gtZGF0YSBtYWtlLWNsb3N1cmUgI1swICJc MzAxXDMwMFwzMDJcIlwyMDciIFtWMCBzZXQtbWF0Y2gtZGF0YSB0XSAzXSBtYXRjaC1kYXRhLS10 cmFuc2xhdGUgcmVwbGFjZS1tYXRjaF0gMTMgKCMkIC4gMTY5ODY3KV0pI0A2NTUgUmV0dXJuIG5v bi1uaWwgaWYgdGV4dCBiZWZvcmUgcG9pbnQgbWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb24gUkVH RVhQLgpMaWtlIGBsb29raW5nLWF0JyBleGNlcHQgbWF0Y2hlcyBiZWZvcmUgcG9pbnQsIGFuZCBp cyBzbG93ZXIuCkxJTUlUIGlmIG5vbi1uaWwgc3BlZWRzIHVwIHRoZSBzZWFyY2ggYnkgc3BlY2lm eWluZyBhIG1pbmltdW0Kc3RhcnRpbmcgcG9zaXRpb24sIHRvIGF2b2lkIGNoZWNraW5nIG1hdGNo ZXMgdGhhdCB3b3VsZCBzdGFydApiZWZvcmUgTElNSVQuCgpJZiBHUkVFRFkgaXMgbm9uLW5pbCwg ZXh0ZW5kIHRoZSBtYXRjaCBiYWNrd2FyZHMgYXMgZmFyIGFzCnBvc3NpYmxlLCBzdG9wcGluZyB3 aGVuIGEgc2luZ2xlIGFkZGl0aW9uYWwgcHJldmlvdXMgY2hhcmFjdGVyCmNhbm5vdCBiZSBwYXJ0 IG9mIGEgbWF0Y2ggZm9yIFJFR0VYUC4gIFdoZW4gdGhlIG1hdGNoIGlzCmV4dGVuZGVkLCBpdHMg c3RhcnRpbmcgcG9zaXRpb24gaXMgYWxsb3dlZCB0byBvY2N1ciBiZWZvcmUKTElNSVQuCgpBcyBh IGdlbmVyYWwgcmVjb21tZW5kYXRpb24sIHRyeSB0byBhdm9pZCB1c2luZyBgbG9va2luZy1iYWNr Jwp3aGVyZXZlciBwb3NzaWJsZSwgc2luY2UgaXQgaXMgc2xvdy4KCihmbiBSRUdFWFAgJm9wdGlv bmFsIExJTUlUIEdSRUVEWSkfCihkZWZhbGlhcyAnbG9va2luZy1iYWNrICNbNzY5ICJgXDIxMlwz MDBcMzAxBVwzMDJRBFwzMDMjXDIwNQ4AYCkCXDIwM0gAXDIxMVwyMDNIAFwyMTRlAn1cMjEwXDIx MWVWXDIwMzsAXDIxMlwyMTFiXDIxMFwzMDR1XDIxMFwzMDVcMzAxBgZcMzA2USEpXDIwMzsAXDIx MVNcMjYyAVwyMDIcAFwyMTJcMjExYlwyMTBcMzA1XDMwMQYGXDMwNlEhKlwyMTBcMjExPz9cMjA3 IiBbcmUtc2VhcmNoLWJhY2t3YXJkICJcXCg/OiIgIlxcKVxcPSIgdCAtMSBsb29raW5nLWF0ICJc XClcXCciXSA5ICgjJCAuIDE3MDQ3OCldKQooc2V0LWFkdmVydGlzZWQtY2FsbGluZy1jb252ZW50 aW9uICdsb29raW5nLWJhY2sgJyhyZWdleHAgbGltaXQgJm9wdGlvbmFsIGdyZWVkeSkgIjI1LjEi KSNAODggU2FtZSBhcyBgbG9va2luZy1hdCcgZXhjZXB0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3Qg Y2hhbmdlIHRoZSBtYXRjaCBkYXRhLgoKKGZuIFJFR0VYUCkfCihkZWZhbGlhcyAnbG9va2luZy1h dC1wICNbMjU3ICJcMzAwAVwzMDFcIlwyMDciIFtsb29raW5nLWF0IHRdIDQgKCMkIC4gMTcxNTE5 KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBb ZnVuY3Rpb24tcHV0IGxvb2tpbmctYXQtcCBzcGVlZCAtMSBwdXQgYnl0ZS1vcHRpbWl6ZXIgYnl0 ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDUpI0AxMTMgU2FtZSBhcyBgc3RyaW5nLW1hdGNoJyBl eGNlcHQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGFuZ2UgdGhlIG1hdGNoIGRhdGEuCgooZm4g UkVHRVhQIFNUUklORyAmb3B0aW9uYWwgU1RBUlQpHwooZGVmYWxpYXMgJ3N0cmluZy1tYXRjaC1w ICNbNzcwICJcMzAwAwMDXDMwMSRcMjA3IiBbc3RyaW5nLW1hdGNoIHRdIDggKCMkIC4gMTcxODMx KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBb ZnVuY3Rpb24tcHV0IHN0cmluZy1tYXRjaC1wIHNwZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBi eXRlLWNvbXBpbGUtaW5saW5lLWV4cGFuZF0gNSkjQDQwMiBSZXR1cm4gbm9uLW5pbCBpZiBQT1Mg aXMgaW4gYSBub3JtYWwgc3VicmVnZXhwIGNvbnRleHQgaW4gUkVHRVhQLgpBIHN1YnJlZ2V4cCBj b250ZXh0IGlzIG9uZSB3aGVyZSBhIHN1Yi1yZWdleHAgY2FuIGFwcGVhci4KQSBub24tc3VicmVn ZXhwIGNvbnRleHQgaXMgZm9yIGV4YW1wbGUgd2l0aGluIGJyYWNrZXRzLCBvciB3aXRoaW4gYQpy ZXBldGl0aW9uIGJvdW5kcyBvcGVyYXRvciBgXD1cey4uLlx9Jywgb3IgcmlnaHQgYWZ0ZXIgYSBg XCcuCklmIFNUQVJUIGlzIG5vbi1uaWwsIGl0IHNob3VsZCBiZSBhIHBvc2l0aW9uIGluIFJFR0VY UCwgc21hbGxlcgp0aGFuIFBPUywgYW5kIGtub3duIHRvIGJlIGluIGEgc3VicmVnZXhwIGNvbnRl eHQuCgooZm4gUkVHRVhQIFBPUyAmb3B0aW9uYWwgU1RBUlQpHwooZGVmYWxpYXMgJ3N1YnJlZ2V4 cC1jb250ZXh0LXAgI1s3NzAgIlwzMDAxEwBcMzAxAwJcMjA2CwBcMzAyBE9cMzAzXCJcMjEwXDMw NDBcMjA3XDIxMUFAXDMwNVwyMzU/XDIwNyIgWyhpbnZhbGlkLXJlZ2V4cCkgc3RyaW5nLW1hdGNo IDAgIiIgdCAoIlVubWF0Y2hlZCBbIG9yIFteIiAiVW5tYXRjaGVkIFxceyIgIlRyYWlsaW5nIGJh Y2tzbGFzaCIpXSA3ICgjJCAuIDE3MjE3NSldKSNAMjkwIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHNl cGFyYXRvcnMgZm9yIGBzcGxpdC1zdHJpbmcnLgoKQSByZWdleHAgbWF0Y2hpbmcgc3RyaW5ncyBv ZiB3aGl0ZXNwYWNlLiAgTWF5IGJlIGxvY2FsZS1kZXBlbmRlbnQKKGFzIHlldCB1bmltcGxlbWVu dGVkKS4gIFNob3VsZCBub3QgbWF0Y2ggbm9uLWJyZWFraW5nIHNwYWNlcy4KCldhcm5pbmc6IGJp bmRpbmcgdGhpcyB0byBhIGRpZmZlcmVudCB2YWx1ZSBhbmQgdXNpbmcgaXQgYXMgZGVmYXVsdCBp cwpsaWtlbHkgdG8gaGF2ZSB1bmRlc2lyZWQgc2VtYW50aWNzLh8KKGRlZmNvbnN0IHNwbGl0LXN0 cmluZy1kZWZhdWx0LXNlcGFyYXRvcnMgIlsgXGYJXG4NC10rIiAoIyQgLiAxNzI4MDEpKSNAMTY1 NyBTcGxpdCBTVFJJTkcgaW50byBzdWJzdHJpbmdzIGJvdW5kZWQgYnkgbWF0Y2hlcyBmb3IgU0VQ QVJBVE9SUy4KClRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBTVFJJTkcsIGFuZCBlYWNoIG1hdGNo IGZvciBTRVBBUkFUT1JTLCBhcmUKc3BsaXR0aW5nIHBvaW50cy4gIFRoZSBzdWJzdHJpbmdzIG1h dGNoaW5nIFNFUEFSQVRPUlMgYXJlIHJlbW92ZWQsIGFuZAp0aGUgc3Vic3RyaW5ncyBiZXR3ZWVu IHRoZSBzcGxpdHRpbmcgcG9pbnRzIGFyZSBjb2xsZWN0ZWQgYXMgYSBsaXN0LAp3aGljaCBpcyBy ZXR1cm5lZC4KCklmIFNFUEFSQVRPUlMgaXMgbm9uLW5pbCwgaXQgc2hvdWxkIGJlIGEgcmVndWxh ciBleHByZXNzaW9uIG1hdGNoaW5nIHRleHQKdGhhdCBzZXBhcmF0ZXMsIGJ1dCBpcyBub3QgcGFy dCBvZiwgdGhlIHN1YnN0cmluZ3MuICBJZiBuaWwgaXQgZGVmYXVsdHMgdG8KYHNwbGl0LXN0cmlu Zy1kZWZhdWx0LXNlcGFyYXRvcnMnLCBub3JtYWxseSAiWyBcZlx0XG5cclx2XSsiLCBhbmQKT01J VC1OVUxMUyBpcyBmb3JjZWQgdG8gdC4KCklmIE9NSVQtTlVMTFMgaXMgdCwgemVyby1sZW5ndGgg c3Vic3RyaW5ncyBhcmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0IChzbwp0aGF0IGZvciB0aGUgZGVm YXVsdCB2YWx1ZSBvZiBTRVBBUkFUT1JTIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UK YXJlIGVmZmVjdGl2ZWx5IHRyaW1tZWQpLiAgSWYgbmlsLCBhbGwgemVyby1sZW5ndGggc3Vic3Ry aW5ncyBhcmUgcmV0YWluZWQsCndoaWNoIGNvcnJlY3RseSBwYXJzZXMgQ1NWIGZvcm1hdCwgZm9y IGV4YW1wbGUuCgpJZiBUUklNIGlzIG5vbi1uaWwsIGl0IHNob3VsZCBiZSBhIHJlZ3VsYXIgZXhw cmVzc2lvbiB0byBtYXRjaAp0ZXh0IHRvIHRyaW0gZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBlbmQg b2YgZWFjaCBzdWJzdHJpbmcuICBJZiB0cmltbWluZwptYWtlcyB0aGUgc3Vic3RyaW5nIGVtcHR5 LCBpdCBpcyB0cmVhdGVkIGFzIG51bGwuCgpJZiB5b3Ugd2FudCB0byB0cmltIHdoaXRlc3BhY2Ug ZnJvbSB0aGUgc3Vic3RyaW5ncywgdGhlIHJlbGlhYmx5IGNvcnJlY3QKd2F5IGlzIHVzaW5nIFRS SU0uICBNYWtpbmcgU0VQQVJBVE9SUyBtYXRjaCB0aGF0IHdoaXRlc3BhY2UgZ2l2ZXMgaW5jb3Jy ZWN0CnJlc3VsdHMgd2hlbiB0aGVyZSBpcyB3aGl0ZXNwYWNlIGF0IHRoZSBzdGFydCBvciBlbmQg b2YgU1RSSU5HLiAgSWYgeW91CnNlZSBzdWNoIGNhbGxzIHRvIGBzcGxpdC1zdHJpbmcnLCBwbGVh c2UgZml4IHRoZW0uCgpOb3RlIHRoYXQgdGhlIGVmZmVjdCBvZiBgKHNwbGl0LXN0cmluZyBTVFJJ TkcpJyBpcyB0aGUgc2FtZSBhcwpgKHNwbGl0LXN0cmluZyBTVFJJTkcgc3BsaXQtc3RyaW5nLWRl ZmF1bHQtc2VwYXJhdG9ycyB0KScuICBJbiB0aGUgcmFyZQpjYXNlIHRoYXQgeW91IHdpc2ggdG8g cmV0YWluIHplcm8tbGVuZ3RoIHN1YnN0cmluZ3Mgd2hlbiBzcGxpdHRpbmcgb24Kd2hpdGVzcGFj ZSwgdXNlIGAoc3BsaXQtc3RyaW5nIFNUUklORyBzcGxpdC1zdHJpbmctZGVmYXVsdC1zZXBhcmF0 b3JzKScuCgpNb2RpZmllcyB0aGUgbWF0Y2ggZGF0YTsgdXNlIGBzYXZlLW1hdGNoLWRhdGEnIGlm IG5lY2Vzc2FyeS4KCihmbiBTVFJJTkcgJm9wdGlvbmFsIFNFUEFSQVRPUlMgT01JVC1OVUxMUyBU UklNKR8KKGRlZmFsaWFzICdzcGxpdC1zdHJpbmcgI1sxMDI1ICICXDIwMwgAAVwyMDIJAFwzMDE/ A1wyMDYPAAhcMzAyXDMwM0NcMzAzQ1wzMDNcMjExQ1wzMDRcMzA1BgcGDQVcMjAzOAAGCFwzMDJc MjI0VVwyMDM4AAYIBg9HV1wyMDM4AAYIVFwyMDI6AAYII1wyMDNqAAUGXGZHV1wyMDNqAFwzMDFc MjYyAwQGBlwyNDBcMjEwA1wzMDJcMjI0XDI0MFwyMTBcMzAyXDIyNVwyNjIGXDIxMQZcZgZcbgZc bgYIBggGByYGXDIxMFwyMDIYAAQGBlwyNDBcMjEwAwZcZkdcMjQwXDIxMFwyMTEGXGYGXG4GXG4G CAYIBgcmBlwyMTABXDI0MlwyMzdcMjA3IiBbc3BsaXQtc3RyaW5nLWRlZmF1bHQtc2VwYXJhdG9y cyB0IDAgbmlsICNbMTU0MiAiBFwyMDMYAFwzMDAFBgcFXDI0MiNcMjExBFwyNDI9XDIwMxcAA1wz MDFcMjI1XDI0MFwyMTBcMjEwA1wyMDQkAAJcMjQyAlwyNDJXXDIwNVsABQNcMjQyA1wyNDJPBVwy MDNIAFwzMDAGBlwzMDJQAlwzMDEjXDIxMVwyMDNHAFwyMTECR1dcMjAzRwABXDMwMQJPXDI2MgJc MjEwBFwyMDRTAFwyMTFHXDMwMVZcMjA1WQABAQNcMjQyQlwyNDBcMjYyAVwyMDciIFtzdHJpbmct bWF0Y2ggMCAiXFwnIl0gMTEgIlxuXG4oZm4gU1RSSU5HIFRSSU0gS0VFUC1OVUxMUyBUSElTLVNU QVJUIFRISVMtRU5EIExJU1QpIl0gc3RyaW5nLW1hdGNoXSAxOSAoIyQgLiAxNzMxNjgpXSkKKGRl ZmFsaWFzICdzdHJpbmctc3BsaXQgJ3NwbGl0LXN0cmluZykjQDM4NyBDb25jYXRlbmF0ZSB0aGUg U1RSSU5HUywgYWRkaW5nIHRoZSBTRVBBUkFUT1IgKGRlZmF1bHQgIiAiKS4KVGhpcyB0cmllcyB0 byBxdW90ZSB0aGUgc3RyaW5ncyB0byBhdm9pZCBhbWJpZ3VpdHkgc3VjaCB0aGF0CiAgKHNwbGl0 LXN0cmluZy1hbmQtdW5xdW90ZSAoY29tYmluZS1hbmQtcXVvdGUtc3RyaW5ncyBzdHJzKSkgPT0g c3RycwpPbmx5IHNvbWUgU0VQQVJBVE9ScyB3aWxsIHdvcmsgcHJvcGVybHkuCgpOb3RlIHRoYXQg dGhpcyBpcyBub3QgaW50ZW5kZWQgdG8gcHJvdGVjdCBTVFJJTkdTIGZyb20KaW50ZXJwcmV0YXRp b24gYnkgc2hlbGxzLCB1c2UgYHNoZWxsLXF1b3RlLWFyZ3VtZW50JyBmb3IgdGhhdC4KCihmbiBT VFJJTkdTICZvcHRpb25hbCBTRVBBUkFUT1IpHwooZGVmYWxpYXMgJ2NvbWJpbmUtYW5kLXF1b3Rl LXN0cmluZ3MgI1s1MTMgIlwyMTFcMjA2BQBcMzAwXDMwMVwzMDICIVBcMzAzXDMwNFwzMDUDXCIF BCNcMjA3IiBbIiAiICJbXFxcIl1cXHwiIHJlZ2V4cC1xdW90ZSBtYXBjb25jYXQgbWFrZS1jbG9z dXJlICNbMjU3ICJcMzAxXDMwMAJcIlwyMDMQAFwzMDJcMzAzXDMwNFwzMDUEI1wzMDJRXDIwN1wy MDciIFtWMCBzdHJpbmctbWF0Y2ggIlwiIiByZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIltcXFwi XSIgIlxcXFxcXCYiXSA2ICJcblxuKGZuIFNUUikiXV0gOCAoIyQgLiAxNzU1NDQpXSkjQDI0NSBT cGxpdCB0aGUgU1RSSU5HIGludG8gYSBsaXN0IG9mIHN0cmluZ3MuCkl0IHVuZGVyc3RhbmRzIEVt YWNzIExpc3AgcXVvdGluZyB3aXRoaW4gU1RSSU5HLCBzdWNoIHRoYXQKICAoc3BsaXQtc3RyaW5n LWFuZC11bnF1b3RlIChjb21iaW5lLWFuZC1xdW90ZS1zdHJpbmdzIHN0cnMpKSA9PSBzdHJzClRo ZSBTRVBBUkFUT1IgcmVnZXhwIGRlZmF1bHRzIHRvICJccy0rIi4KCihmbiBTVFJJTkcgJm9wdGlv bmFsIFNFUEFSQVRPUikfCihkZWZhbGlhcyAnc3BsaXQtc3RyaW5nLWFuZC11bnF1b3RlICNbNTEz ICJcMjExXDIwNgUAXDMwMFwzMDFcMzAyBFwiXDIxMVwyMDQTAFwzMDMEA1wzMDQjXDIwN1wzMDUB XDMwNj0/XDIwNSMAXDMwMwVcMzA2BE8EXDMwNCNcMzA3BgYEXCJcMjExQFwzMTAGCANBXDMxMU8G B1wiQlwyNjIBXCJcMjA3IiBbIlxccy0rIiBzdHJpbmctc2VhcmNoICJcIiIgc3BsaXQtc3RyaW5n IHQgYXBwZW5kIDAgcmVhZC1mcm9tLXN0cmluZyBzcGxpdC1zdHJpbmctYW5kLXVucXVvdGUgbmls XSAxMiAoIyQgLiAxNzYyNDMpXSkjQDE3NCBSZXBsYWNlIEZST01DSEFSIHdpdGggVE9DSEFSIGlu IFNUUklORyBlYWNoIHRpbWUgaXQgb2NjdXJzLgpVbmxlc3Mgb3B0aW9uYWwgYXJndW1lbnQgSU5Q TEFDRSBpcyBub24tbmlsLCByZXR1cm4gYSBuZXcgc3RyaW5nLgoKKGZuIEZST01DSEFSIFRPQ0hB UiBTVFJJTkcgJm9wdGlvbmFsIElOUExBQ0UpHwooZGVmYWxpYXMgJ3N1YnN0LWNoYXItaW4tc3Ry aW5nICNbMTAyNyAiAUcBXDIwM1xuAAJcMjAyDQBcMzAwAyEBXDMwMVZcMjAzKQABU1wyNjICXDIx MQJIBgY9XDIwMw0AXDIxMQIGBklcMjEwXDIwMg0AXDIwNyIgW2NvcHktc2VxdWVuY2UgMF0gOSAo IyQgLiAxNzY3ODMpXSkjQDEwOCBSZXBsYWNlIEZST00tU1RSSU5HIHdpdGggVE8tU1RSSU5HIGlu IElOLVNUUklORyBlYWNoIHRpbWUgaXQgb2NjdXJzLgoKKGZuIEZST00tU1RSSU5HIFRPLVNUUklO RyBJTi1TVFJJTkcpHwooZGVmYWxpYXMgJ3N0cmluZy1yZXBsYWNlICNbNzcxICICXDMwMFwyMzJc MjAzCwBcMzAxXDMwMlwzMDNcIlwyMTBcMzA0XDMwNVwyMTFcMzA2BgYFBSNcMjExXDI2MgJcMjAz NwACAVVcMjA0KAADAwJPAkJcMjYyAgQCQlwyNjICXDIxMQYGR1xcXDI2MgNcMjAyDgABXDIwND0A A1wyMDcCBEdVXDIwNEwAAwNcMzA1TwJCXDI2MgJcMzA3XDMxMANcMjM3XCJcMjA3IiBbIiIgc2ln bmFsIHdyb25nLWxlbmd0aC1hcmd1bWVudCAoMCkgMCBuaWwgc3RyaW5nLXNlYXJjaCBhcHBseSBj b25jYXRdIDEwICgjJCAuIDE3NzExOSldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wz MDBcMzAxXDMwNFwzMDMjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgc3RyaW5nLXJlcGxhY2UgcHVy ZSB0IHNpZGUtZWZmZWN0LWZyZWVdIDUpI0AxMDIxIFJlcGxhY2UgYWxsIG1hdGNoZXMgZm9yIFJF R0VYUCB3aXRoIFJFUCBpbiBTVFJJTkcuCgpSZXR1cm4gYSBuZXcgc3RyaW5nIGNvbnRhaW5pbmcg dGhlIHJlcGxhY2VtZW50cy4KCk9wdGlvbmFsIGFyZ3VtZW50cyBGSVhFRENBU0UsIExJVEVSQUwg YW5kIFNVQkVYUCBhcmUgbGlrZSB0aGUKYXJndW1lbnRzIHdpdGggdGhlIHNhbWUgbmFtZXMgb2Yg ZnVuY3Rpb24gYHJlcGxhY2UtbWF0Y2gnLiAgSWYgU1RBUlQKaXMgbm9uLW5pbCwgc3RhcnQgcmVw bGFjZW1lbnRzIGF0IHRoYXQgaW5kZXggaW4gU1RSSU5HLCBhbmQgb21pdAp0aGUgZmlyc3QgU1RB UlQgY2hhcmFjdGVycyBvZiBTVFJJTkcgZnJvbSB0aGUgcmV0dXJuIHZhbHVlLgoKUkVQIGlzIGVp dGhlciBhIHN0cmluZyB1c2VkIGFzIHRoZSBORVdURVhUIGFyZyBvZiBgcmVwbGFjZS1tYXRjaCcg b3IgYQpmdW5jdGlvbi4gIElmIGl0IGlzIGEgZnVuY3Rpb24sIGl0IGlzIGNhbGxlZCB3aXRoIHRo ZSBhY3R1YWwgdGV4dCBvZiBlYWNoCm1hdGNoLCBhbmQgaXRzIHZhbHVlIGlzIHVzZWQgYXMgdGhl IHJlcGxhY2VtZW50IHRleHQuICBXaGVuIFJFUCBpcyBjYWxsZWQsCnRoZSBtYXRjaCBkYXRhIGFy ZSB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIFJFR0VYUCBhZ2FpbnN0IGEgc3Vic3RyaW5nCm9mIFNU UklORywgdGhlIHNhbWUgc3Vic3RyaW5nIHRoYXQgaXMgdGhlIGFjdHVhbCB0ZXh0IG9mIHRoZSBt YXRjaCB3aGljaAppcyBwYXNzZWQgdG8gUkVQIGFzIGl0cyBhcmd1bWVudC4KClRvIHJlcGxhY2Ug b25seSB0aGUgZmlyc3QgbWF0Y2ggKGlmIGFueSksIG1ha2UgUkVHRVhQIG1hdGNoIHVwIHRvIFxc PScKYW5kIHJlcGxhY2UgYSBzdWItZXhwcmVzc2lvbiwgZS5nLgogIChyZXBsYWNlLXJlZ2V4cC1p bi1zdHJpbmcgIlxcKGZvb1xcKS4qXFxcPSciICJiYXIiICIgZm9vIGZvbyIgbmlsIG5pbCAxKQog ICAgPT4gIiBiYXIgZm9vIgoKKGZuIFJFR0VYUCBSRVAgU1RSSU5HICZvcHRpb25hbCBGSVhFRENB U0UgTElURVJBTCBTVUJFWFAgU1RBUlQpHwooZGVmYWxpYXMgJ3JlcGxhY2UtcmVnZXhwLWluLXN0 cmluZyAjWzE3OTUgIgRHAVwyMDYHAFwzMDBcMzAxXDIxMVwyMTFcMjExXDMwMiBcMzAzXDMwNAJc IlwyMTYFBgdXXDIwM3QAXDMwNQYOBg0GCCNcMjAzdABcMzAwXDIyNFwyNjIDXDMwMFwyMjVcMjYy AgEDVVwyMDM5AAYGA1ReXDI2MgJcMzA2A1shXDIxMAYLAwNPXDI2MgRcMzA3Bg07XDIwM1EABg1c MjAyWQAGDVwzMTBcMzAwBgdcIiEGXGYGXGYGBwYNJQZcZgYHBU8GBkJCXDI2MgUBXDI2MgZcMjAy EgAGCwYGBghPBUJcMjYyBVwzMTFcMzEyBgZcMjM3XCIpXDIwNyIgWzAgbmlsIG1hdGNoLWRhdGEg bWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDBcMzAyXCJcMjA3IiBbVjAgc2V0LW1hdGNoLWRhdGEg dF0gM10gc3RyaW5nLW1hdGNoIG1hdGNoLWRhdGEtLXRyYW5zbGF0ZSByZXBsYWNlLW1hdGNoIG1h dGNoLXN0cmluZyBhcHBseSBjb25jYXRdIDIwICgjJCAuIDE3NzY0MyldKSNAMTg2IENvbXBhcmUg U1RSSU5HMSBhbmQgU1RSSU5HMiBjYXNlLWluc2Vuc2l0aXZlbHkuClVwcGVyLWNhc2UgYW5kIGxv d2VyLWNhc2UgbGV0dGVycyBhcmUgdHJlYXRlZCBhcyBlcXVhbC4KVW5pYnl0ZSBzdHJpbmdzIGFy ZSBjb252ZXJ0ZWQgdG8gbXVsdGlieXRlIGZvciBjb21wYXJpc29uLgoKKGZuIFNUUklORzEgU1RS SU5HMikfCihkZWZhbGlhcyAnc3RyaW5nLWVxdWFsLWlnbm9yZS1jYXNlICNbNTE0ICJcMzAwAlwz MDFcMzAyBFwzMDFcMzAyXDMwMyYHXDMwMz1cMjA3IiBbY29tcGFyZS1zdHJpbmdzIDAgbmlsIHRd IDEwICgjJCAuIDE3OTE0MyldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMzAx XDMwNFwzMDMjXDMwMFwzMDFcMzA1XDMwNiNcMzA3XDMwMVwzMTBcMzExI1wyMDciIFtmdW5jdGlv bi1wdXQgc3RyaW5nLWVxdWFsLWlnbm9yZS1jYXNlIHB1cmUgdCBzaWRlLWVmZmVjdC1mcmVlIHNw ZWVkIC0xIHB1dCBieXRlLW9wdGltaXplciBieXRlLWNvbXBpbGUtaW5saW5lLWV4cGFuZF0gNykj QDE4NyBSZXR1cm4gbm9uLW5pbCBpZiBQUkVGSVggaXMgYSBwcmVmaXggb2YgU1RSSU5HLgpJZiBJ R05PUkUtQ0FTRSBpcyBub24tbmlsLCB0aGUgY29tcGFyaXNvbiBpcyBkb25lIHdpdGhvdXQgcGF5 aW5nIGF0dGVudGlvbgp0byBjYXNlIGRpZmZlcmVuY2VzLgoKKGZuIFBSRUZJWCBTVFJJTkcgJm9w dGlvbmFsIElHTk9SRS1DQVNFKR8KKGRlZmFsaWFzICdzdHJpbmctcHJlZml4LXAgI1s3NzAgIgJH XDIxMQNHVj9cMjA1GQBcMzAwBFwzMDEDBgZcMzAxBgYGCCYHXDMwMj1cMjA3IiBbY29tcGFyZS1z dHJpbmdzIDAgdF0gMTIgKCMkIC4gMTc5NjY5KV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwz MDMjXDMwMFwzMDFcMzA0XDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBzdHJpbmctcHJlZml4 LXAgcHVyZSB0IHNpZGUtZWZmZWN0LWZyZWVdIDUpI0AxODcgUmV0dXJuIG5vbi1uaWwgaWYgU1VG RklYIGlzIGEgc3VmZml4IG9mIFNUUklORy4KSWYgSUdOT1JFLUNBU0UgaXMgbm9uLW5pbCwgdGhl IGNvbXBhcmlzb24gaXMgZG9uZSB3aXRob3V0IHBheWluZwphdHRlbnRpb24gdG8gY2FzZSBkaWZm ZXJlbmNlcy4KCihmbiBTVUZGSVggU1RSSU5HICZvcHRpb25hbCBJR05PUkUtQ0FTRSkfCihkZWZh bGlhcyAnc3RyaW5nLXN1ZmZpeC1wICNbNzcwICIBRwNHWlwyMTFcMzAwWVwyMDUZAFwzMDEEXDMw MlwyMTEGBgVcMzAyBggmB1wzMDM9XDIwNyIgWzAgY29tcGFyZS1zdHJpbmdzIG5pbCB0XSAxMiAo IyQgLiAxODAwOTkpXSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzAwXDMwMVwzMDRc MzAzI1wzMDBcMjA3IiBbZnVuY3Rpb24tcHV0IHN0cmluZy1zdWZmaXgtcCBwdXJlIHQgc2lkZS1l ZmZlY3QtZnJlZV0gNSkjQDU2MiBSZXR1cm4gYSBzdHJpbmcgdGhhdCBjYW4gYmUgc2FmZWx5IGlu c2VydGVkIGluIGxlZnQtdG8tcmlnaHQgdGV4dC4KCk5vcm1hbGx5LCBpbnNlcnRpbmcgYSBzdHJp bmcgd2l0aCByaWdodC10by1sZWZ0IChSVEwpIHNjcmlwdCBpbnRvCmEgYnVmZmVyIG1heSBjYXVz ZSBzb21lIHN1YnNlcXVlbnQgdGV4dCB0byBiZSBkaXNwbGF5ZWQgYXMgcGFydApvZiB0aGUgUlRM IHNlZ21lbnQgKHVzdWFsbHkgdGhpcyBhZmZlY3RzIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMpLgpU aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJpbmcgdGhhdCBkaXNwbGF5cyBhcyBTVFIgYnV0IGZv cmNlcwpzdWJzZXF1ZW50IHRleHQgdG8gYmUgZGlzcGxheWVkIGFzIGxlZnQtdG8tcmlnaHQuCgpJ ZiBTVFIgY29udGFpbnMgYW55IFJUTCBjaGFyYWN0ZXIsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBh IHN0cmluZwpjb25zaXN0aW5nIG9mIFNUUiBmb2xsb3dlZCBieSBhbiBpbnZpc2libGUgbGVmdC10 by1yaWdodCBtYXJrCihMUk0pIGNoYXJhY3Rlci4gIE90aGVyd2lzZSwgaXQgcmV0dXJucyBTVFIu CgooZm4gU1RSKR8KKGRlZmFsaWFzICdiaWRpLXN0cmluZy1tYXJrLWxlZnQtdG8tcmlnaHQgI1sy NTcgIlwyMTE7XDIwNFxmAFwzMDBcMzAxXDMwMgNEXCJcMjEwXDMwM1wzMDQCXCJcMjAzHQBcMjEx XDMwNVwzMDZcMzA3IVwzMTBcMzExI1BcMjA3XDIwNyIgW3NpZ25hbCB3cm9uZy10eXBlLWFyZ3Vt ZW50IHN0cmluZ3Agc3RyaW5nLW1hdGNoICJcXGNSIiBwcm9wZXJ0aXplIHN0cmluZyA4MjA2IGlu dmlzaWJsZSB0XSA2ICgjJCAuIDE4MDUzOSldKSNAMTgwIFJldHVybiBub24tbmlsIGlmIFNUUklO RzEgaXMgZ3JlYXRlciB0aGFuIFNUUklORzIgaW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4KQ2FzZSBp cyBzaWduaWZpY2FudC4KU3ltYm9scyBhcmUgYWxzbyBhbGxvd2VkOyB0aGVpciBwcmludCBuYW1l cyBhcmUgdXNlZCBpbnN0ZWFkLgoKKGZuIFNUUklORzEgU1RSSU5HMikfCihkZWZhbGlhcyAnc3Ry aW5nLWdyZWF0ZXJwICNbNTE0ICJcMjExAlwyMzFcMjA3IiBbXSA0ICgjJCAuIDE4MTM1MSldKSNA MTIyIEZvcm0gYSByZWdleHAgdG8gZmluZCBGSUxFIGluIGBsb2FkLWhpc3RvcnknLgpGSUxFLCBh IHN0cmluZywgaXMgZGVzY3JpYmVkIGluIHRoZSBmdW5jdGlvbiBgZXZhbC1hZnRlci1sb2FkJy4K CihmbiBGSUxFKR8KKGRlZmFsaWFzICdsb2FkLWhpc3RvcnktcmVnZXhwICNbMjU3ICJcMzAyASFc MjAzCwBcMzAzASFcMjYyAVwzMDIBIVwyMDMVAFwzMDRcMjAyFgBcMzA1XDMwNgIhXDMwNwMhXDIw MyMAXDMxMFwyMDIrAFwzMTFcMzEyXDMwNghcMzEzI1wzMTRRXDMxMVwzMTJcMzA2CVwzMTMjXDMx NVwyNjAGXDIwNyIgW2xvYWQtc3VmZml4ZXMgamthLWNvbXByLWxvYWQtc3VmZml4ZXMgZmlsZS1u YW1lLWFic29sdXRlLXAgZmlsZS10cnVlbmFtZSAiXFxgIiAiXFwoXFxgXFx8L1xcKSIgcmVnZXhw LXF1b3RlIGZpbGUtbmFtZS1leHRlbnNpb24gIiIgIlxcKCIgbWFwY29uY2F0ICJcXHwiICJcXCk/ IiAiXFwpP1xcJyJdIDkgKCMkIC4gMTgxNjA2KV0pI0AxMTcgR2V0IHRoZSBmaXJzdCBlbHQgb2Yg YGxvYWQtaGlzdG9yeScgd2hvc2UgY2FyIG1hdGNoZXMgRklMRS1SRUdFWFAuClJldHVybiBuaWwg aWYgdGhlcmUgaXNuJ3Qgb25lLgoKKGZuIEZJTEUtUkVHRVhQKR8KKGRlZmFsaWFzICdsb2FkLWhp c3RvcnktZmlsZW5hbWUtZWxlbWVudCAjWzI1NyAiCFwyMTFcMjA1BwBcMjExQFwzMDEgXDMwMlwz MDMCXCJcMjE2AlwyMDMuAAFAXDIwMx8AXDMwNAQDQFwiXDIwNC4AAkFcMjYyAwJcMjA1KQACQFwy NjICXDIwMg4AKVwyMTBcMjA3IiBbbG9hZC1oaXN0b3J5IG1hdGNoLWRhdGEgbWFrZS1jbG9zdXJl ICNbMCAiXDMwMVwzMDBcMzAyXCJcMjA3IiBbVjAgc2V0LW1hdGNoLWRhdGEgdF0gM10gc3RyaW5n LW1hdGNoXSA3ICgjJCAuIDE4MjA5NCldKSNAMTU2MyBBcnJhbmdlIHRoYXQgaWYgRklMRSBpcyBs b2FkZWQsIEZPUk0gd2lsbCBiZSBydW4gaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcy4KSWYgRklMRSBp cyBhbHJlYWR5IGxvYWRlZCwgZXZhbHVhdGUgRk9STSByaWdodCBub3cuCkZPUk0gY2FuIGJlIGFu IEVsaXNwIGV4cHJlc3Npb24gKGluIHdoaWNoIGNhc2UgaXQncyBwYXNzZWQgdG8gYGV2YWwnKSwK b3IgYSBmdW5jdGlvbiAoaW4gd2hpY2ggY2FzZSBpdCdzIHBhc3NlZCB0byBgZnVuY2FsbCcgd2l0 aCBubyBhcmd1bWVudCkuCgpJZiBhIG1hdGNoaW5nIGZpbGUgaXMgbG9hZGVkIGFnYWluLCBGT1JN IHdpbGwgYmUgZXZhbHVhdGVkIGFnYWluLgoKSWYgRklMRSBpcyBhIHN0cmluZywgaXQgbWF5IGJl IGVpdGhlciBhbiBhYnNvbHV0ZSBvciBhIHJlbGF0aXZlIGZpbGUKbmFtZSwgYW5kIG1heSBoYXZl IGFuIGV4dGVuc2lvbiAoZS5nLiAiLmVsIikgb3IgbWF5IGxhY2sgb25lLCBhbmQKYWRkaXRpb25h bGx5IG1heSBvciBtYXkgbm90IGhhdmUgYW4gZXh0ZW5zaW9uIGRlbm90aW5nIGEgY29tcHJlc3Nl ZApmb3JtYXQgKGUuZy4gIi5neiIpLgoKV2hlbiBGSUxFIGlzIGFic29sdXRlLCB0aGlzIGZpcnN0 IGNvbnZlcnRzIGl0IHRvIGEgdHJ1ZSBuYW1lIGJ5IGNoYXNpbmcKc3ltYm9saWMgbGlua3MuICBP bmx5IGEgZmlsZSBvZiB0aGlzIG5hbWUgKHNlZSBuZXh0IHBhcmFncmFwaCByZWdhcmRpbmcKZXh0 ZW5zaW9ucykgd2lsbCB0cmlnZ2VyIHRoZSBldmFsdWF0aW9uIG9mIEZPUk0uICBXaGVuIEZJTEUg aXMgcmVsYXRpdmUsCmEgZmlsZSB3aG9zZSBhYnNvbHV0ZSB0cnVlIG5hbWUgZW5kcyBpbiBGSUxF IHdpbGwgdHJpZ2dlciBldmFsdWF0aW9uLgoKV2hlbiBGSUxFIGxhY2tzIGFuIGV4dGVuc2lvbiwg YSBmaWxlIG5hbWUgd2l0aCBhbnkgZXh0ZW5zaW9uIHdpbGwgdHJpZ2dlcgpldmFsdWF0aW9uLiAg T3RoZXJ3aXNlLCBpdHMgZXh0ZW5zaW9uIG11c3QgbWF0Y2ggRklMRSdzLiAgQSBmdXJ0aGVyCmV4 dGVuc2lvbiBmb3IgYSBjb21wcmVzc2VkIGZvcm1hdCAoZS5nLiAiLmd6Iikgb24gRklMRSB3aWxs IG5vdCBhZmZlY3QKdGhpcyBuYW1lIG1hdGNoaW5nLgoKQWx0ZXJuYXRpdmVseSwgRklMRSBjYW4g YmUgYSBmZWF0dXJlIChpLmUuIGEgc3ltYm9sKSwgaW4gd2hpY2ggY2FzZSBGT1JNCmlzIGV2YWx1 YXRlZCBhdCB0aGUgZW5kIG9mIGFueSBmaWxlIHRoYXQgYHByb3ZpZGUncyB0aGlzIGZlYXR1cmUu CklmIHRoZSBmZWF0dXJlIGlzIHByb3ZpZGVkIHdoZW4gZXZhbHVhdGluZyBjb2RlIG5vdCBhc3Nv Y2lhdGVkIHdpdGggYQpmaWxlLCBGT1JNIGlzIGV2YWx1YXRlZCBpbW1lZGlhdGVseSBhZnRlciB0 aGUgcHJvdmlkZSBzdGF0ZW1lbnQuCgpVc3VhbGx5IEZJTEUgaXMganVzdCBhIGxpYnJhcnkgbmFt ZSBsaWtlICJmb250LWxvY2siIG9yIGEgZmVhdHVyZSBuYW1lCmxpa2UgYGZvbnQtbG9jaycuCgpU aGlzIGZ1bmN0aW9uIG1ha2VzIG9yIGFkZHMgdG8gYW4gZW50cnkgb24gYGFmdGVyLWxvYWQtYWxp c3QnLgoKU2VlIGFsc28gYHdpdGgtZXZhbC1hZnRlci1sb2FkJy4KCihmbiBGSUxFIEZPUk0pHwoo ZGVmYWxpYXMgJ2V2YWwtYWZ0ZXItbG9hZCAjWzUxNCAiATtcMjAzEABcMzAyXDMwMwMhIVwyMTFc MjYyA1wyMDIRAAFcMzA0AQhcIlwzMDUDIVwyMDMfAAJcMjAyJgBcMzA2XDMwN1wzMTAFRQlcIgFc MjA0MgACQ1wyNjICAQhCEAQ7XDIwMz0AXDMxMQMhXDIwMkAAXDMxMgUhXDIwNUUAXDIxMSADOVwy MDROAAFcMjAyUgBcMzEzXDMxNANcIlwyMTEEQVwyMzVcMjA0XgADAUNcMjQ0XDIxMFwyMTBcMjA3 IiBbYWZ0ZXItbG9hZC1hbGlzdCBsZXhpY2FsLWJpbmRpbmcgcHVyZWNvcHkgbG9hZC1oaXN0b3J5 LXJlZ2V4cCBhc3NvYyBmdW5jdGlvbnAgZXZhbCBsYW1iZGEgbmlsIGxvYWQtaGlzdG9yeS1maWxl bmFtZS1lbGVtZW50IGZlYXR1cmVwIG1ha2UtY2xvc3VyZSAjWzAgIglcMjA0BwBcMzAwIFwyMDcJ XDMwMlwzMDMhXDIxMVwzMDRcMzA1AwVcMzAwJE1cMjEwXDMwNlwzMDcCXDMxMCNcMjA3IiBbVjAg bG9hZC1maWxlLW5hbWUgbWFrZS1zeW1ib2wgImV2YWwtYWZ0ZXItbG9hZC1oZWxwZXIiIG1ha2Ut Y2xvc3VyZSAjWzI1NyAiXDIxMVwzMDFcMjMyXDIwNQ0AXDMwM1wzMDRcMzAwXCJcMjEwXDMwMiBc MjA3IiBbVjAgVjEgVjIgcmVtb3ZlLWhvb2sgYWZ0ZXItbG9hZC1mdW5jdGlvbnNdIDQgIlxuXG4o Zm4gRklMRSkiXSBhZGQtaG9vayBhZnRlci1sb2FkLWZ1bmN0aW9ucyBhcHBlbmRdIDhdXSA5ICgj JCAuIDE4MjQ4OSldKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMzAxXDMwNFwz MDUjXDMwMFwyMDciIFtmdW5jdGlvbi1wdXQgZXZhbC1hZnRlci1sb2FkIGxpc3AtaW5kZW50LWZ1 bmN0aW9uIDEgY29tcGlsZXItbWFjcm8gZXZhbC1hZnRlci1sb2FkLS1hbm9uLWNtYWNyb10gNSkj QDI0IAoKKGZuIFdIT0xFIEZJTEUgRk9STSkfCihkZWZhbGlhcyAnZXZhbC1hZnRlci1sb2FkLS1h bm9uLWNtYWNybyAjWzc3MSAiXDIxMVwyNDJcMzAwPVwyMDMRAFwzMDECXDMwMlwzMDMEQUBFRVwy MDcCXDIwNyIgW3F1b3RlIGV2YWwtYWZ0ZXItbG9hZCBsYW1iZGEgbmlsXSA4ICgjJCAuIDE4NDkx MildKSNAMjY2IEV4ZWN1dGUgQk9EWSBhZnRlciBGSUxFIGlzIGxvYWRlZC4KRklMRSBpcyBub3Jt YWxseSBhIGZlYXR1cmUgbmFtZSwgYnV0IGl0IGNhbiBhbHNvIGJlIGEgZmlsZSBuYW1lLAppbiBj YXNlIHRoYXQgZmlsZSBkb2VzIG5vdCBwcm92aWRlIGFueSBmZWF0dXJlLiAgU2VlIGBldmFsLWFm dGVyLWxvYWQnCmZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGRpZmZlcmVudCBmb3JtcyBvZiBG SUxFIGFuZCB0aGVpciBzZW1hbnRpY3MuCgooZm4gRklMRSAmcmVzdCBCT0RZKR8KKGRlZmFsaWFz ICd3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnKG1hY3JvIC4gI1szODUgIlwzMDACXDMwMVwzMDIEQkJF XDIwNyIgW2V2YWwtYWZ0ZXItbG9hZCBsYW1iZGEgbmlsXSA3ICgjJCAuIDE4NTA4OSldKSkKKGJ5 dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlv bi1wdXQgd2l0aC1ldmFsLWFmdGVyLWxvYWQgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMSBwdXQgZWRl YnVnLWZvcm0tc3BlYyAoZm9ybSBkZWYtYm9keSldIDUpI0AxMzcgU3BlY2lhbCBob29rIHJ1biBh ZnRlciBsb2FkaW5nIGEgZmlsZS4KRWFjaCBmdW5jdGlvbiB0aGVyZSBpcyBjYWxsZWQgd2l0aCBh IHNpbmdsZSBhcmd1bWVudCwgdGhlIGFic29sdXRlCm5hbWUgb2YgdGhlIGZpbGUganVzdCBsb2Fk ZWQuHwooZGVmdmFyIGFmdGVyLWxvYWQtZnVuY3Rpb25zIG5pbCAoIyQgLiAxODU2MzEpKSNAMjAy IEV2YWx1YXRlIGFsbCBgZXZhbC1hZnRlci1sb2FkJyBmb3JtcywgaWYgYW55LCBmb3IgQUJTLUZJ TEUuCkFCUy1GSUxFLCBhIHN0cmluZywgc2hvdWxkIGJlIHRoZSBhYnNvbHV0ZSB0cnVlIG5hbWUg b2YgYSBmaWxlIGp1c3QgbG9hZGVkLgpUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkaXJlY3RseSBm cm9tIHRoZSBDIGNvZGUuCgooZm4gQUJTLUZJTEUpHwooZGVmYWxpYXMgJ2RvLWFmdGVyLWxvYWQt ZXZhbHVhdGlvbiAjWzI1NyAiCFwyMTFcMjAzKQBcMjExQFwyMTFAO1wyMDNcIgBcMjExQANcMzA1 XDMwNgMDA1wzMDckXDI2NlwyMDNcMjAzXCIAXDMxMFwzMTECQVwiXDIxMAFBXDI2NlwyMDJcMjAy AQBcMjEwXDMxMgFcMzA1XDMwNgMDA1wzMDckXDI2NlwyMDNcMjAzXDIyNQBcMzEzASFcMzE0AVwz MTVcMzA2XDMxNgVcIk8JXCJcMzE3XDMyMAJcIlwzMjFcMzIyXDMyMyFcMjAzVwBcMzIzXDMyNARc IlwyMDNcMjIzAFwzMjVcMzAyIVwyMDNcMjAwAFxuXDIwM1wyMDAAXG47XDIwM3cAXDMxMlwzMjZc bgtcIlwzMDVcMzA2AwMDXDMwNyRcMjY2XDIwM1wyMDRcMjIzAFwzMjdcMzMwA1wiXDI2NgVcMjAy XDIyNQBcZlwyMDNcMjE0AFwyMTECIVwyNjYFXDIwMlwyMjUAXDMzMVwzMTVcMzA1AwUkXDIxMFwy NjYEXDMzMlwzMzMCXCJcMjA3IiBbYWZ0ZXItbG9hZC1hbGlzdCBvYmFycmF5IGJ5dGUtY29tcGls ZS1jdXJyZW50LWZpbGUgYnl0ZS1jb21waWxlLXJvb3QtZGlyIG5vbmludGVyYWN0aXZlIG5pbCBz dHJpbmctbWF0Y2ggdCBtYXBjIGZ1bmNhbGwgIi9vYnNvbGV0ZS9bXi9dKlxcJyIgZmlsZS1uYW1l LW5vbmRpcmVjdG9yeSBpbnRlcm4gMCAiXFwuZWxjP1xcPiIgZm9ybWF0ICJQYWNrYWdlICVzIGlz IGRlcHJlY2F0ZWQiICNbMjU3ICJcMzAwXDMwMQJcIlwyMDciIFttZXNzYWdlICIlcyJdIDQgIlxu XG4oZm4gTVNHKSJdIGZib3VuZHAgYnl0ZS1jb21waWxlLXdhcm5pbmctZW5hYmxlZC1wIG9ic29s ZXRlIGJvdW5kcCBleHBhbmQtZmlsZS1uYW1lIGJ5dGUtY29tcGlsZS13YXJuICIlcyIgcnVuLXdp dGgtaWRsZS10aW1lciBydW4taG9vay13aXRoLWFyZ3MgYWZ0ZXItbG9hZC1mdW5jdGlvbnNdIDEz ICgjJCAuIDE4NTgyMSldKSNAMTAzIERpc3BsYXkgZGVsYXllZCB3YXJuaW5ncyBmcm9tIGBkZWxh eWVkLXdhcm5pbmdzLWxpc3QnLgpVc2VkIGZyb20gYGRlbGF5ZWQtd2FybmluZ3MtaG9vaycgKHdo aWNoIHNlZSkuHwooZGVmYWxpYXMgJ2Rpc3BsYXktZGVsYXllZC13YXJuaW5ncyAjWzAgIghcMjM3 XDIxMVwyMDMUAFwyMTFAXDMwMVwzMDICXCJcMjEwAUFcMjY2XDIwMlwyMDICAFwyMTBcMzAzXDIx MRBcMjA3IiBbZGVsYXllZC13YXJuaW5ncy1saXN0IGFwcGx5IGRpc3BsYXktd2FybmluZyBuaWxd IDUgKCMkIC4gMTg2OTI1KV0pI0AxNTYgUmVtb3ZlIGR1cGxpY2F0ZXMgZnJvbSBgZGVsYXllZC13 YXJuaW5ncy1saXN0Jy4KQ29sbGFwc2UgaWRlbnRpY2FsIGFkamFjZW50IHdhcm5pbmdzIGludG8g b25lIChwbHVzIGNvdW50KS4KVXNlZCBmcm9tIGBkZWxheWVkLXdhcm5pbmdzLWhvb2snICh3aGlj aCBzZWUpLh8KKGRlZmFsaWFzICdjb2xsYXBzZS1kZWxheWVkLXdhcm5pbmdzICNbMCAiXDMwMVwz MDJcMjExCFwyMDM8AAhcMjExQRBcMjQyXDI2MgFcMjExCEBcMjMyXDIwMxwAAlRcMjYyA1wyMDID AAJcMzAxVlwyMDM0AFwyMTFcMzAzXDMwNANBQAYGIwJBQUJcMjQxXDIxMFwzMDFcMjYyA1wyMTEC QlwyNjICXDIwMgMAAVwyMzdcMjExEFwyMDciIFtkZWxheWVkLXdhcm5pbmdzLWxpc3QgMSBuaWwg Zm9ybWF0ICIlcyBbJWQgdGltZXNdIl0gOCAoIyQgLiAxODcyMTIpXSkjQDIyMSBOb3JtYWwgaG9v ayBydW4gdG8gcHJvY2VzcyBhbmQgZGlzcGxheSBkZWxheWVkIHdhcm5pbmdzLgpCeSBkZWZhdWx0 LCB0aGlzIGhvb2sgY29udGFpbnMgZnVuY3Rpb25zIHRvIGNvbnNvbGlkYXRlIHRoZQp3YXJuaW5n cyBsaXN0ZWQgaW4gYGRlbGF5ZWQtd2FybmluZ3MtbGlzdCcsIGRpc3BsYXkgdGhlbSwgYW5kIHNl dApgZGVsYXllZC13YXJuaW5ncy1saXN0JyBiYWNrIHRvIG5pbC4fCihkZWZ2YXIgZGVsYXllZC13 YXJuaW5ncy1ob29rICcoY29sbGFwc2UtZGVsYXllZC13YXJuaW5ncyBkaXNwbGF5LWRlbGF5ZWQt d2FybmluZ3MpICgjJCAuIDE4NzYzNCkpI0AxNjYgRGlzcGxheSBhIGRlbGF5ZWQgd2FybmluZy4K QXNpZGUgZnJvbSBnb2luZyB0aHJvdWdoIGBkZWxheWVkLXdhcm5pbmdzLWxpc3QnLCB0aGlzIGlz IGVxdWl2YWxlbnQKdG8gYGRpc3BsYXktd2FybmluZycuCgooZm4gVFlQRSBNRVNTQUdFICZvcHRp b25hbCBMRVZFTCBCVUZGRVItTkFNRSkfCihkZWZhbGlhcyAnZGVsYXktd2FybmluZyAjWzEwMjYg IgMDAwNGCEJcMjExEFwyMDciIFtkZWxheWVkLXdhcm5pbmdzLWxpc3RdIDggKCMkIC4gMTg3OTU5 KV0pI0A0MjkgQWRkIEVMRU1FTlQgdG8gYGJ1ZmZlci1pbnZpc2liaWxpdHktc3BlYycuClNlZSBk b2N1bWVudGF0aW9uIGZvciBgYnVmZmVyLWludmlzaWJpbGl0eS1zcGVjJyBmb3IgdGhlIGtpbmQg b2YgZWxlbWVudHMKdGhhdCBjYW4gYmUgYWRkZWQuCgpJZiBgYnVmZmVyLWludmlzaWJpbGl0eS1z cGVjJyBpc24ndCBhIGxpc3QgYmVmb3JlIGNhbGxpbmcgdGhpcwpmdW5jdGlvbiwgYGJ1ZmZlci1p bnZpc2liaWxpdHktc3BlYycgd2lsbCBhZnRlcndhcmRzIGJlIGEgbGlzdAp3aXRoIHRoZSB2YWx1 ZSBgKHQgRUxFTUVOVCknLiAgVGhpcyBtZWFucyB0aGF0IGlmIHRleHQgZXhpc3RzCnRoYXQgaW52 aXNpYmlsaXR5IHZhbHVlcyB0aGF0IGFyZW4ndCBlaXRoZXIgdCBvciBFTEVNRU5ULCB0aGF0CnRl eHQgd2lsbCBiZWNvbWUgdmlzaWJsZS4KCihmbiBFTEVNRU5UKR8KKGRlZmFsaWFzICdhZGQtdG8t aW52aXNpYmlsaXR5LXNwZWMgI1syNTcgIghcMzAxPVwyMDMJAFwzMDFDEFwyMTEIQlwyMTEQXDIw NyIgW2J1ZmZlci1pbnZpc2liaWxpdHktc3BlYyB0XSAzICgjJCAuIDE4ODIyMyldKSNAMzAyIFJl bW92ZSBFTEVNRU5UIGZyb20gYGJ1ZmZlci1pbnZpc2liaWxpdHktc3BlYycuCklmIGBidWZmZXIt aW52aXNpYmlsaXR5LXNwZWMnIGlzbid0IGEgbGlzdCBiZWZvcmUgY2FsbGluZyB0aGlzCmZ1bmN0 aW9uLCBpdCB3aWxsIGJlIG1hZGUgaW50byBhIGxpc3QgY29udGFpbmluZyBqdXN0IHQgYXMgdGhl Cm9ubHkgbGlzdCBtZW1iZXIuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGV4dCBleGlzdHMgd2l0aCBu b24tdAppbnZpc2liaWxpdHkgdmFsdWVzLCB0aGF0IHRleHQgd2lsbCBiZWNvbWUgdmlzaWJsZS4K CihmbiBFTEVNRU5UKR8KKGRlZmFsaWFzICdyZW1vdmUtZnJvbS1pbnZpc2liaWxpdHktc3BlYyAj WzI1NyAiCDpcMjAzXGYAXDMwMQEIXCJcMjAyDgBcMzAyQ1wyMTEQXDIwNyIgW2J1ZmZlci1pbnZp c2liaWxpdHktc3BlYyBkZWxldGUgdF0gNCAoIyQgLiAxODg3ODIpXSkjQDI1MSBFdmFsdWF0ZSBC T0RZIHdpdGggc3ludGF4IHRhYmxlIG9mIGN1cnJlbnQgYnVmZmVyIHNldCB0byBUQUJMRS4KVGhl IHN5bnRheCB0YWJsZSBvZiB0aGUgY3VycmVudCBidWZmZXIgaXMgc2F2ZWQsIEJPRFkgaXMgZXZh bHVhdGVkLCBhbmQgdGhlCnNhdmVkIHRhYmxlIGlzIHJlc3RvcmVkLCBldmVuIGluIGNhc2Ugb2Yg YW4gYWJub3JtYWwgZXhpdC4KVmFsdWUgaXMgd2hhdCBCT0RZIHJldHVybnMuCgooZm4gVEFCTEUg JnJlc3QgQk9EWSkfCihkZWZhbGlhcyAnd2l0aC1zeW50YXgtdGFibGUgJyhtYWNybyAuICNbMzg1 ICJcMzAwXDMwMSFcMzAwXDMwMiFcMzAzAlwzMDRCAlwzMDVCRFwzMDZcMzA3XDMxMAYIRAYHQkJc MzExXDMxMgYGRFwzMTAGCERFRUVcMjA3IiBbbWFrZS1zeW1ib2wgInRhYmxlIiAiYnVmZmVyIiBs ZXQgKChzeW50YXgtdGFibGUpKSAoKGN1cnJlbnQtYnVmZmVyKSkgdW53aW5kLXByb3RlY3QgcHJv Z24gc2V0LXN5bnRheC10YWJsZSBzYXZlLWN1cnJlbnQtYnVmZmVyIHNldC1idWZmZXJdIDEyICgj JCAuIDE4OTIzMCldKSkKKGJ5dGUtY29kZSAiXDMwMFwzMDFcMzAyXDMwMyNcMjEwXDMwNFwzMDFc MzA1XDMwNiNcMzAwXDIwNyIgW3B1dCB3aXRoLXN5bnRheC10YWJsZSBlZGVidWctZm9ybS1zcGVj IHQgZnVuY3Rpb24tcHV0IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDFdIDQpI0AxNTkgUmV0dXJuIGEg bmV3IHN5bnRheCB0YWJsZS4KQ3JlYXRlIGEgc3ludGF4IHRhYmxlIHRoYXQgaW5oZXJpdHMgZnJv bSBPTERUQUJMRSAoaWYgbm9uLW5pbCkgb3IKZnJvbSBgc3RhbmRhcmQtc3ludGF4LXRhYmxlJyBv dGhlcndpc2UuCgooZm4gJm9wdGlvbmFsIE9MRFRBQkxFKR8KKGRlZmFsaWFzICdtYWtlLXN5bnRh eC10YWJsZSAjWzI1NiAiXDMwMFwzMDFcMzAyXCJcMzAzAQNcMjA2XGYAXDMwNCBcIlwyMTBcMjA3 IiBbbWFrZS1jaGFyLXRhYmxlIHN5bnRheC10YWJsZSBuaWwgc2V0LWNoYXItdGFibGUtcGFyZW50 IHN0YW5kYXJkLXN5bnRheC10YWJsZV0gNSAoIyQgLiAxODk5MTUpXSkjQDEzMSBSZXR1cm4gdGhl IHJhdyBzeW50YXggZGVzY3JpcHRvciBmb3IgdGhlIGNoYXIgYWZ0ZXIgUE9TLgpJZiBQT1MgaXMg b3V0c2lkZSB0aGUgYnVmZmVyJ3MgYWNjZXNzaWJsZSBwb3J0aW9uLCByZXR1cm4gbmlsLgoKKGZu IFBPUykfCihkZWZhbGlhcyAnc3ludGF4LWFmdGVyICNbMjU3ICJcMjExZVdcMjA2CQBcMjExZFk/ XDIwNSkACFwyMDUVAFwzMDEBXDMwMlwiXDIxMTpcMjAzHgBcMjExXDIwMicAXDIxMVwyMDYkAFwz MDIgAmZIXDI2MgFcMjA3IiBbcGFyc2Utc2V4cC1sb29rdXAtcHJvcGVydGllcyBnZXQtY2hhci1w cm9wZXJ0eSBzeW50YXgtdGFibGVdIDQgKCMkIC4gMTkwMjU2KV0pI0AyODkgUmV0dXJuIHRoZSBj b2RlIGZvciB0aGUgc3ludGF4IGNsYXNzIGRlc2NyaWJlZCBieSBTWU5UQVguCgpTWU5UQVggc2hv dWxkIGJlIGEgcmF3IHN5bnRheCBkZXNjcmlwdG9yOyB0aGUgcmV0dXJuIHZhbHVlIGlzIGEKaW50 ZWdlciB0aGF0IGVuY29kZXMgdGhlIGNvcnJlc3BvbmRpbmcgc3ludGF4IGNsYXNzLiAgU2VlIElu Zm8Kbm9kZSBgKGVsaXNwKVN5bnRheCBUYWJsZSBJbnRlcm5hbHMnIGZvciBhIGxpc3Qgb2YgY29k ZXMuCgpJZiBTWU5UQVggaXMgbmlsLCByZXR1cm4gbmlsLgoKKGZuIFNZTlRBWCkfCihkZWZhbGlh cyAnc3ludGF4LWNsYXNzICNbMjU3ICJcMjExXDIwNQkAXDMwMAFAXDMwMVwiXDIwNyIgW2xvZ2Fu ZCA2NTUzNV0gNCAoIyQgLiAxOTA1OTYpXSkjQDEyOCBVc2VkIGluIGBmb3J3YXJkLXdvcmQtc3Ry aWN0bHknIGFuZCBgYmFja3dhcmQtd29yZC1zdHJpY3RseScKdG8gY291bnRlcm1hbmQgdGhlIGVm ZmVjdCBvZiBgZmluZC13b3JkLWJvdW5kYXJ5LWZ1bmN0aW9uLXRhYmxlJy4fCihkZWZ2YXIgd29y ZC1tb3ZlLWVtcHR5LWNoYXItdGFibGUgbmlsICgjJCAuIDE5MDk4MikpI0A0NzEgTW92ZSBwb2lu dCBmb3J3YXJkIEFSRyB3b3JkcyAoYmFja3dhcmQgaWYgQVJHIGlzIG5lZ2F0aXZlKS4KSWYgQVJH IGlzIG9taXR0ZWQgb3IgbmlsLCBtb3ZlIHBvaW50IGZvcndhcmQgb25lIHdvcmQuCk5vcm1hbGx5 IHJldHVybnMgdC4KSWYgYW4gZWRnZSBvZiB0aGUgYnVmZmVyIG9yIGEgZmllbGQgYm91bmRhcnkg aXMgcmVhY2hlZCwgcG9pbnQgaXMgbGVmdCB0aGVyZQphbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMg bmlsLiAgRmllbGQgYm91bmRhcmllcyBhcmUgbm90IG5vdGljZWQgaWYKYGluaGliaXQtZmllbGQt dGV4dC1tb3Rpb24nIGlzIG5vbi1uaWwuCgpUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGZvcndhcmQt d29yZCcsIGJ1dCBpdCBpcyBub3QgYWZmZWN0ZWQKYnkgYGZpbmQtd29yZC1ib3VuZGFyeS1mdW5j dGlvbi10YWJsZScuICBJdCBpcyBhbHNvIG5vdCBpbnRlcmFjdGl2ZS4KCihmbiAmb3B0aW9uYWwg QVJHKR8KKGRlZmFsaWFzICdmb3J3YXJkLXdvcmQtc3RyaWN0bHkgI1syNTYgIlwzMDIIIVwyMDNc bgAIXDIwMg8AXDMwM1wzMDQhXDIxMRAZXDIxMVwyMDYVAFwzMDV2KVwyMDciIFt3b3JkLW1vdmUt ZW1wdHktY2hhci10YWJsZSBmaW5kLXdvcmQtYm91bmRhcnktZnVuY3Rpb24tdGFibGUgY2hhci10 YWJsZS1wIG1ha2UtY2hhci10YWJsZSBuaWwgMV0gMyAoIyQgLiAxOTExNjkpXSkjQDMxMCBNb3Zl IGJhY2t3YXJkIHVudGlsIGVuY291bnRlcmluZyB0aGUgYmVnaW5uaW5nIG9mIGEgd29yZC4KV2l0 aCBhcmd1bWVudCBBUkcsIGRvIHRoaXMgdGhhdCBtYW55IHRpbWVzLgpJZiBBUkcgaXMgb21pdHRl ZCBvciBuaWwsIG1vdmUgcG9pbnQgYmFja3dhcmQgb25lIHdvcmQuCgpUaGlzIGZ1bmN0aW9uIGlz IGxpa2UgYGZvcndhcmQtd29yZCcsIGJ1dCBpdCBpcyBub3QgYWZmZWN0ZWQKYnkgYGZpbmQtd29y ZC1ib3VuZGFyeS1mdW5jdGlvbi10YWJsZScuICBJdCBpcyBhbHNvIG5vdCBpbnRlcmFjdGl2ZS4K CihmbiAmb3B0aW9uYWwgQVJHKR8KKGRlZmFsaWFzICdiYWNrd2FyZC13b3JkLXN0cmljdGx5ICNb MjU2ICJcMzAyCCFcMjAzXG4ACFwyMDIPAFwzMDNcMzA0IVwyMTEQGVwyMTFcMjA2FQBcMzA1W3Yp XDIwNyIgW3dvcmQtbW92ZS1lbXB0eS1jaGFyLXRhYmxlIGZpbmQtd29yZC1ib3VuZGFyeS1mdW5j dGlvbi10YWJsZSBjaGFyLXRhYmxlLXAgbWFrZS1jaGFyLXRhYmxlIG5pbCAxXSAzICgjJCAuIDE5 MTg1OCldKSNAMjczIE1vdmUgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXF1ZW5jZSBv ZiB3aGl0ZXNwYWNlIGNoYXJzLgpFYWNoIHN1Y2ggc2VxdWVuY2UgbWF5IGJlIGEgc2luZ2xlIG5l d2xpbmUsIG9yIGEgc2VxdWVuY2Ugb2YKY29uc2VjdXRpdmUgc3BhY2UgYW5kL29yIHRhYiBjaGFy YWN0ZXJzLgpXaXRoIHByZWZpeCBhcmd1bWVudCBBUkcsIGRvIGl0IEFSRyB0aW1lcyBpZiBwb3Np dGl2ZSwgb3IgbW92ZQpiYWNrd2FyZHMgQVJHIHRpbWVzIGlmIG5lZ2F0aXZlLgoKKGZuIEFSRykf CihkZWZhbGlhcyAnZm9yd2FyZC13aGl0ZXNwYWNlICNbMjU3ICJcMzAwASFcMjAzDQBcMzAxXDMw MlwzMDNcMzA0BCRcMjA3XDIxMVwzMDVXXDIwNS4AXDMwNlwzMDJcMzAzXDMwNCNcMjAzJwBcMzA1 XDIyNGZcMzA3PVwyMDQnAFwzMTBcMzAzeFwyMTBcMjExVFwyNjIBXDIwMg0AXDIwNyIgW25hdG51 bXAgcmUtc2VhcmNoLWZvcndhcmQgIlsgCV0rXFx8XG4iIG5pbCBtb3ZlIDAgcmUtc2VhcmNoLWJh Y2t3YXJkIDEwICIgCSJdIDYgKCMkIC4gMTkyMzg4KSAiXnAiXSkjQDI4MyBNb3ZlIHBvaW50IHRv IHRoZSBuZXh0IHBvc2l0aW9uIHRoYXQgaXMgdGhlIGVuZCBvZiBhIHN5bWJvbC4KQSBzeW1ib2wg aXMgYW55IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW4gZWl0aGVyIHRoZQp3b3Jk IGNvbnN0aXR1ZW50IG9yIHN5bWJvbCBjb25zdGl0dWVudCBzeW50YXggY2xhc3MuCldpdGggcHJl Zml4IGFyZ3VtZW50IEFSRywgZG8gaXQgQVJHIHRpbWVzIGlmIHBvc2l0aXZlLCBvciBtb3ZlCmJh Y2t3YXJkcyBBUkcgdGltZXMgaWYgbmVnYXRpdmUuCgooZm4gQVJHKR8KKGRlZmFsaWFzICdmb3J3 YXJkLXN5bWJvbCAjWzI1NyAiXDMwMAEhXDIwMw0AXDMwMVwzMDJcMzAzXDMwNAQkXDIwN1wyMTFc MzA1V1wyMDUmAFwzMDZcMzAyXDMwM1wzMDQjXDIwMx8AXDMwN1wzMTAhXDIxMFwyMTFUXDI2MgFc MjAyDQBcMjA3IiBbbmF0bnVtcCByZS1zZWFyY2gtZm9yd2FyZCAiXFwoXFxzd1xcfFxcc19cXCkr IiBuaWwgbW92ZSAwIHJlLXNlYXJjaC1iYWNrd2FyZCBza2lwLXN5bnRheC1iYWNrd2FyZCAid18i XSA2ICgjJCAuIDE5MjkzMikgIl5wIl0pI0AxNzYgTW92ZSBwb2ludCBwYXN0IGFsbCBjaGFyYWN0 ZXJzIHdpdGggdGhlIHNhbWUgc3ludGF4IGNsYXNzLgpXaXRoIHByZWZpeCBhcmd1bWVudCBBUkcs IGRvIGl0IEFSRyB0aW1lcyBpZiBwb3NpdGl2ZSwgb3IgbW92ZQpiYWNrd2FyZHMgQVJHIHRpbWVz IGlmIG5lZ2F0aXZlLgoKKGZuICZvcHRpb25hbCBBUkcpHwooZGVmYWxpYXMgJ2ZvcndhcmQtc2Ft ZS1zeW50YXggI1syNTYgIlwyMTFcMjA0BwBcMzAwXDI2MgFcMjExXDMwMVdcMjAzHQBcMzAyXDMw M2BTZnohIVwyMTBcMjExVFwyNjIBXDIwMgcAXDIxMVwzMDFWXDIwNTIAXDMwNFwzMDNcMzA1Znoh IVwyMTBcMjExU1wyNjIBXDIwMh0AXDIwNyIgWzEgMCBza2lwLXN5bnRheC1iYWNrd2FyZCBjaGFy LXRvLXN0cmluZyBza2lwLXN5bnRheC1mb3J3YXJkIG5pbF0gNCAoIyQgLiAxOTM0ODgpICJecCJd KQooZGVmdmFyIHRleHQtY2xvbmUtLW1haW50YWluaW5nIG5pbCkjQDE3NSBQcm9wYWdhdGUgdGhl IGNoYW5nZXMgbWFkZSB1bmRlciB0aGUgb3ZlcmxheSBPTDEgdG8gdGhlIG90aGVyIGNsb25lcy4K VGhpcyBpcyB1c2VkIG9uIHRoZSBgbW9kaWZpY2F0aW9uLWhvb2tzJyBwcm9wZXJ0eSBvZiB0ZXh0 IGNsb25lcy4KCihmbiBPTDEgQUZURVIgQkVHIEVORCAmb3B0aW9uYWwgTEVOKR8KKGRlZmFsaWFz ICd0ZXh0LWNsb25lLS1tYWludGFpbiAjWzEyODQgIgNcMjA1CAEIP1wyMDUIAQk/XDIwNQgBXDMw MgUhXDIwNQgBXDMwMwVcMzA0XCJcMjAzHwBcMzA1XDIwMiAAXDMwNgNcMzAyBgchAlxcXVwyNjIE AlwzMDcGByECWl5cMjYyAwMDWFwyMDUGAVwyMTJcMzAzBgZcMzEwXCJcMjAzXDI0NQBcMzAyBgYh AVxcXDMwNwYHIQJaAWJcMjEwXDMxMSBcMzEyXDMxMwJcIlwyMTZcMzE0XDMwMwZcblwzMTBcIgNc MzE1I1wyMDRrAAJcMjYyBlwyMDJcMjQyAFwzMDZcMjI1AldcMjAzXDIwNgAFXDMwNlwyMjVeXDI2 MgZcMzE2BglcMzAyBgshXDMwNlwyMjUGB1xcI1wyMTBcMzA2XDIyNANWXDIwM1wyNDIAXDMwNlwy MjQGB11cMjYyB1wzMTYGCVwzMDZcMjI0BgZaXDMwNwZcZiEjXDIxMClcMjY2AwNcMzAyBgchWlwz MDcGByEEWgUFe1wzMTVcMjExGVwzMDMGXG5cMzE3XCJcMjExXDIwM1wzNzEAXDIxMUBcMzA3ASEG XGYCPVwyMDRcMzYxAFwyMTFcMjAzXDM2MQBcMzIwXDI2MgRcMzAyAiEGB1xcXDMwNwMhBgdaYlwy MTBcMjExYFZcMjA0XDM2MABcMjEyBWMpXDIxMFwyMTFgfFwyMTBcMjEwXDIxMAFBXDI2NlwyMDJc MjAyXDI3NABcMjEwXDIxMVwyMDUCAVwzMjEGXG4hKVwyNjZcMjA0KVwyNjIBXDIwNyIgW3VuZG8t aW4tcHJvZ3Jlc3MgdGV4dC1jbG9uZS0tbWFpbnRhaW5pbmcgb3ZlcmxheS1zdGFydCBvdmVybGF5 LWdldCB0ZXh0LWNsb25lLXNwcmVhZHAgMSAwIG92ZXJsYXktZW5kIHRleHQtY2xvbmUtc3ludGF4 IG1hdGNoLWRhdGEgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDBcMzAyXCJcMjA3IiBbVjAgc2V0 LW1hdGNoLWRhdGEgdF0gM10gcmUtc2VhcmNoLWZvcndhcmQgdCBtb3ZlLW92ZXJsYXkgdGV4dC1j bG9uZXMgbmlsIGRlbGV0ZS1vdmVybGF5XSAxNiAoIyQgLiAxOTM5NTgpXSkjQDYyNiBDcmVhdGUg YSB0ZXh0IGNsb25lIG9mIFNUQVJULi4uRU5EIGF0IHBvaW50LgpUZXh0IGNsb25lcyBhcmUgY2h1 bmtzIG9mIHRleHQgdGhhdCBhcmUgYXV0b21hdGljYWxseSBrZXB0IGlkZW50aWNhbDoKY2hhbmdl cyBkb25lIHRvIG9uZSBvZiB0aGUgY2xvbmVzIHdpbGwgYmUgaW1tZWRpYXRlbHkgcHJvcGFnYXRl ZCB0byB0aGUgb3RoZXIuCgpUaGUgYnVmZmVyJ3MgY29udGVudCBhdCBwb2ludCBpcyBhc3N1bWVk IHRvIGJlIGFscmVhZHkgaWRlbnRpY2FsIHRvCnRoZSBvbmUgYmV0d2VlbiBTVEFSVCBhbmQgRU5E LgpJZiBTWU5UQVggaXMgcHJvdmlkZWQgaXQncyBhIHJlZ2V4cCB0aGF0IGRlc2NyaWJlcyB0aGUg cG9zc2libGUgdGV4dCBvZgp0aGUgY2xvbmVzOyB0aGUgY2xvbmUgd2lsbCBiZSBzaHJ1bmsgb3Ig a2lsbGVkIGlmIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdAppdHMgdGV4dCBtYXRjaGVzIHRoZSBy ZWdleHAuCklmIFNQUkVBRFAgaXMgbm9uLW5pbCBpdCBpbmRpY2F0ZXMgdGhhdCB0ZXh0IGluc2Vy dGVkIGJlZm9yZS9hZnRlciB0aGUKY2xvbmUgc2hvdWxkIGJlIGluY29ycG9yYXRlZCBpbiB0aGUg Y2xvbmUuCgooZm4gU1RBUlQgRU5EICZvcHRpb25hbCBTUFJFQURQIFNZTlRBWCkfCihkZWZhbGlh cyAndGV4dC1jbG9uZS1jcmVhdGUgI1sxMDI2ICJgAwVaXFwCXDIwMxMAb1wyMDQTAARlWFwyMDMX AFwzMDBcMjAyGABcMzAxA1wyMDMoAAFkWVwyMDQoAAVkWVwyMDMsAFwzMDBcMjAyLQBcMzAxXDMw MgYHA1oGBwNcXFwzMDNcMzA0JFwzMDJgBFoFBFxcXDMwM1wzMDQkAQFEXDMwNQNcMzA2XDMwNyNc MjEwBgdcMjAzVwBcMzA1A1wzMTBcMzA0I1wyMTAGBlwyMDNjAFwzMDUDXDMxMQYJI1wyMTBcMzA1 A1wzMTJcMzA0I1wyMTBcMzA1A1wzMTMDI1wyMTBcMzA1AlwzMDZcMzE0I1wyMTAGB1wyMDNcMjAw AFwzMDUCXDMxMFwzMDQjXDIxMAYGXDIwM1wyMTQAXDMwNQJcMzExBgkjXDIxMFwzMDUCXDMxMlwz MDQjXDIxMFwzMDUCXDMxMwMjXDIwNyIgWzAgMSBtYWtlLW92ZXJsYXkgbmlsIHQgb3ZlcmxheS1w dXQgbW9kaWZpY2F0aW9uLWhvb2tzICh0ZXh0LWNsb25lLS1tYWludGFpbikgdGV4dC1jbG9uZS1z cHJlYWRwIHRleHQtY2xvbmUtc3ludGF4IGV2YXBvcmF0ZSB0ZXh0LWNsb25lcyAodGV4dC1jbG9u ZS0tbWFpbnRhaW4pXSAxNCAoIyQgLiAxOTUwNDcpXSkjQDEzNTggRGVmaW5lIGEgc3ltYm9sIHRv IGlkZW50aWZ5IGEgbWFpbC1zZW5kaW5nIHBhY2thZ2UgZm9yIGBtYWlsLXVzZXItYWdlbnQnLgoK U1lNQk9MIGNhbiBiZSBhbnkgTGlzcCBzeW1ib2wuICBJdHMgZnVuY3Rpb24gZGVmaW5pdGlvbiBh bmQvb3IKdmFsdWUgYXMgYSB2YXJpYWJsZSBkbyBub3QgbWF0dGVyIGZvciB0aGlzIHVzYWdlOyB3 ZSB1c2Ugb25seSBjZXJ0YWluCnByb3BlcnRpZXMgb24gaXRzIHByb3BlcnR5IGxpc3QsIHRvIGVu Y29kZSB0aGUgcmVzdCBvZiB0aGUgYXJndW1lbnRzLgoKQ09NUE9TRUZVTkMgaXMgcHJvZ3JhbSBj YWxsYWJsZSBmdW5jdGlvbiB0aGF0IGNvbXBvc2VzIGFuIG91dGdvaW5nCm1haWwgbWVzc2FnZSBi dWZmZXIuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBzZXQgdXAgdGhlIGJhc2ljcyBvZiB0aGUKYnVm ZmVyIHdpdGhvdXQgcmVxdWlyaW5nIHVzZXIgaW50ZXJhY3Rpb24uICBJdCBzaG91bGQgcG9wdWxh dGUgdGhlCnN0YW5kYXJkIG1haWwgaGVhZGVycywgbGVhdmluZyB0aGUgYHRvOicgYW5kIGBzdWJq ZWN0OicgaGVhZGVycyBibGFuawpieSBkZWZhdWx0LgoKQ09NUE9TRUZVTkMgc2hvdWxkIGFjY2Vw dCBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cy0tdGhlIHNhbWUKYXJndW1lbnRzIHRoYXQgYGNv bXBvc2UtbWFpbCcgdGFrZXMuICBTZWUgdGhhdCBmdW5jdGlvbidzIGRvY3VtZW50YXRpb24uCgpT RU5ERlVOQyBpcyB0aGUgY29tbWFuZCBhIHVzZXIgd291bGQgcnVuIHRvIHNlbmQgdGhlIG1lc3Nh Z2UuCgpPcHRpb25hbCBBQk9SVEZVTkMgaXMgdGhlIGNvbW1hbmQgYSB1c2VyIHdvdWxkIHJ1biB0 byBhYm9ydCB0aGUKbWVzc2FnZS4gIEZvciBtYWlsIHBhY2thZ2VzIHRoYXQgZG9uJ3QgaGF2ZSBh IHNlcGFyYXRlIGFib3J0IGZ1bmN0aW9uLAp0aGlzIGNhbiBiZSBga2lsbC1idWZmZXInICh0aGUg ZXF1aXZhbGVudCBvZiBvbWl0dGluZyB0aGlzIGFyZ3VtZW50KS4KCk9wdGlvbmFsIEhPT0tWQVIg aXMgYSBob29rIHZhcmlhYmxlIHRoYXQgZ2V0cyBydW4gYmVmb3JlIHRoZSBtZXNzYWdlCmlzIGFj dHVhbGx5IHNlbnQuICBDYWxsZXJzIHRoYXQgdXNlIHRoZSBgbWFpbC11c2VyLWFnZW50JyBtYXkK aW5zdGFsbCBhIGhvb2sgZnVuY3Rpb24gdGVtcG9yYXJpbHkgb24gdGhpcyBob29rIHZhcmlhYmxl LgpJZiBIT09LVkFSIGlzIG5pbCwgYG1haWwtc2VuZC1ob29rJyBpcyB1c2VkLgoKVGhlIHByb3Bl cnRpZXMgdXNlZCBvbiBTWU1CT0wgYXJlIGBjb21wb3NlZnVuYycsIGBzZW5kZnVuYycsCmBhYm9y dGZ1bmMnLCBhbmQgYGhvb2t2YXInLgoKKGZuIFNZTUJPTCBDT01QT1NFRlVOQyBTRU5ERlVOQyAm b3B0aW9uYWwgQUJPUlRGVU5DIEhPT0tWQVIpHwooZGVmYWxpYXMgJ2RlZmluZS1tYWlsLXVzZXIt YWdlbnQgI1sxMjgzICJcMzAwBVwzMDEGBiNcMjEwXDMwMAVcMzAyBSNcMjEwXDMwMAVcMzAzBFwy MDYVAFwzMDQjXDIxMFwzMDAFXDMwNQNcMjA2HwBcMzA2I1wyMDciIFtwdXQgY29tcG9zZWZ1bmMg c2VuZGZ1bmMgYWJvcnRmdW5jIGtpbGwtYnVmZmVyIGhvb2t2YXIgbWFpbC1zZW5kLWhvb2tdIDkg KCMkIC4gMTk2MjMzKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwMFwyMDciIFtm dW5jdGlvbi1wdXQgZGVmaW5lLW1haWwtdXNlci1hZ2VudCBsaXNwLWluZGVudC1mdW5jdGlvbiBk ZWZ1bl0gNCkjQDE3NiBDb2xsZWN0IGFsbCBmcmFtZXMgb2YgY3VycmVudCBiYWNrdHJhY2UgaW50 byBhIGxpc3QuCklmIG5vbi1uaWwsIEJBU0Ugc2hvdWxkIGJlIGEgZnVuY3Rpb24sIGFuZCBmcmFt ZXMgYmVmb3JlIGl0cwpuZWFyZXN0IGFjdGl2YXRpb24gZnJhbWUgYXJlIGRpc2NhcmRlZC4KCihm biAmb3B0aW9uYWwgQkFTRSkfCihkZWZhbGlhcyAnYmFja3RyYWNlLWZyYW1lcyAjWzI1NiAiXDMw MENcMzAxXDMwMlwzMDMDXCIDXDIwNlxmAFwzMDRcIlwyMTBcMjExXDI0MlwyMzdcMjA3IiBbbmls IG1hcGJhY2t0cmFjZSBtYWtlLWNsb3N1cmUgI1sxMjggIlwzMDABXDMwMFwyNDJCXDI0MFwyMDci IFtWMF0gNCAiXG5cbihmbiAmcmVzdCBGUkFNRSkiXSBiYWNrdHJhY2UtZnJhbWVzXSA2ICgjJCAu IDE5NzkxOCldKSNANjU1IFJldHVybiB0aGUgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBORlJBTUVT IHVwIGZyb20gY3VycmVudCBleGVjdXRpb24gcG9pbnQuCklmIG5vbi1uaWwsIEJBU0Ugc2hvdWxk IGJlIGEgZnVuY3Rpb24sIGFuZCBORlJBTUVTIGNvdW50cyBmcm9tIGl0cwpuZWFyZXN0IGFjdGl2 YXRpb24gZnJhbWUuCklmIHRoZSBmcmFtZSBoYXMgbm90IGV2YWx1YXRlZCB0aGUgYXJndW1lbnRz IHlldCAob3IgaXMgYSBzcGVjaWFsIGZvcm0pLAp0aGUgdmFsdWUgaXMgKG5pbCBGVU5DVElPTiBB UkctRk9STVMuLi4pLgpJZiB0aGUgZnJhbWUgaGFzIGV2YWx1YXRlZCBpdHMgYXJndW1lbnRzIGFu ZCBjYWxsZWQgaXRzIGZ1bmN0aW9uIGFscmVhZHksCnRoZSB2YWx1ZSBpcyAodCBGVU5DVElPTiBB UkctVkFMVUVTLi4uKS4KQSAmcmVzdCBhcmcgaXMgcmVwcmVzZW50ZWQgYXMgdGhlIHRhaWwgb2Yg dGhlIGxpc3QgQVJHLVZBTFVFUy4KRlVOQ1RJT04gaXMgd2hhdGV2ZXIgd2FzIHN1cHBsaWVkIGFz IGNhciBvZiBldmFsdWF0ZWQgbGlzdCwKb3IgYSBsYW1iZGEgZXhwcmVzc2lvbiBmb3IgbWFjcm8g Y2FsbHMuCklmIE5GUkFNRVMgaXMgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZnJhbWVzLCB0aGUg dmFsdWUgaXMgbmlsLgoKKGZuIE5GUkFNRVMgJm9wdGlvbmFsIEJBU0UpHwooZGVmYWxpYXMgJ2Jh Y2t0cmFjZS1mcmFtZSAjWzUxMyAiXDMwMFwzMDEDA1wyMDYIAFwzMDIjXDIwNyIgW2JhY2t0cmFj ZS1mcmFtZS0taW50ZXJuYWwgI1sxMDI4ICIDAwNCQlwyMDciIFtdIDcgIlxuXG4oZm4gRVZBTEQg RlVOQyBBUkdTIF8pIl0gYmFja3RyYWNlLWZyYW1lXSA2ICgjJCAuIDE5ODMxOSldKSNAMzY3IFNw ZWNpYWwgaG9vayBjYWxsZWQgdG8gc2tpcCBzcGVjaWFsIGZyYW1lcyBpbiBgY2FsbGVkLWludGVy YWN0aXZlbHktcCcuClRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoIDMgYXJndW1lbnRzOiAo SSBGUkFNRTEgRlJBTUUyKSwKd2hlcmUgRlJBTUUxIGlzIGEgImN1cnJlbnQgZnJhbWUiLCBGUkFN RTIgaXMgdGhlIG5leHQgZnJhbWUsCkkgaXMgdGhlIGluZGV4IG9mIHRoZSBmcmFtZSBhZnRlciBG UkFNRTIuICBJdCBzaG91bGQgcmV0dXJuIG5pbAppZiB0aG9zZSBmcmFtZXMgZG9uJ3Qgc2VlbSBz cGVjaWFsIGFuZCBvdGhlcndpc2UsIGl0IHNob3VsZCByZXR1cm4KdGhlIG51bWJlciBvZiBmcmFt ZXMgdG8gc2tpcCAobWludXMgMSkuHwooZGVmdmFyIGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAtZnVu Y3Rpb25zIG5pbCAoIyQgLiAxOTkxNTYpKQooZGVmY29uc3QgaW50ZXJuYWwtLWZ1bmNhbGwtaW50 ZXJhY3RpdmVseSAoc3ltYm9sLWZ1bmN0aW9uICdmdW5jYWxsLWludGVyYWN0aXZlbHkpKSNAMTQy NCBSZXR1cm4gdCBpZiB0aGUgY29udGFpbmluZyBmdW5jdGlvbiB3YXMgY2FsbGVkIGJ5IGBjYWxs LWludGVyYWN0aXZlbHknLgpJZiBLSU5EIGlzIGBpbnRlcmFjdGl2ZScsIHRoZW4gcmV0dXJuIHQg b25seSBpZiB0aGUgY2FsbCB3YXMgbWFkZQppbnRlcmFjdGl2ZWx5IGJ5IHRoZSB1c2VyLCBpLmUu IG5vdCBpbiBgbm9uaW50ZXJhY3RpdmUnIG1vZGUgbm9yCndoZW4gYGV4ZWN1dGluZy1rYmQtbWFj cm8nLgpJZiBLSU5EIGlzIGBhbnknLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXQgd2lsbCByZXR1cm4g dCBmb3IgYW55IGtpbmQgb2YKaW50ZXJhY3RpdmUgY2FsbCwgaW5jbHVkaW5nIGJlaW5nIGNhbGxl ZCBhcyB0aGUgYmluZGluZyBvZiBhIGtleSBvcgpmcm9tIGEga2V5Ym9hcmQgbWFjcm8sIGV2ZW4g aW4gYG5vbmludGVyYWN0aXZlJyBtb2RlLgoKVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IGJyaXR0bGUs IGl0IG1heSBmYWlsIHRvIHJldHVybiB0aGUgaW50ZW5kZWQgcmVzdWx0IHdoZW4KdGhlIGNvZGUg aXMgZGVidWdnZWQsIGFkdmlzZWQsIG9yIGluc3RydW1lbnRlZCBpbiBzb21lIGZvcm0uICBTb21l IG1hY3JvcyBhbmQKc3BlY2lhbCBmb3JtcyAoc3VjaCBhcyBgY29uZGl0aW9uLWNhc2UnKSBtYXkg YWxzbyBzb21ldGltZXMgd3JhcCB0aGVpciBib2RpZXMKaW4gYSBgbGFtYmRhJywgc28gYW55IGNh bGwgdG8gYGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAnIGZyb20gdGhvc2UgYm9kaWVzIHdpbGwKaW5k aWNhdGUgd2hldGhlciB0aGF0IGxhbWJkYSAocmF0aGVyIHRoYW4gdGhlIHN1cnJvdW5kaW5nIGZ1 bmN0aW9uKSB3YXMgY2FsbGVkCmludGVyYWN0aXZlbHkuCgpJbnN0ZWFkIG9mIHVzaW5nIHRoaXMg ZnVuY3Rpb24sIGl0IGlzIGNsZWFuZXIgYW5kIG1vcmUgcmVsaWFibGUgdG8gZ2l2ZSB5b3VyCmZ1 bmN0aW9uIGFuIGV4dHJhIG9wdGlvbmFsIGFyZ3VtZW50IHdob3NlIGBpbnRlcmFjdGl2ZScgc3Bl YyBzcGVjaWZpZXMKbm9uLW5pbCB1bmNvbmRpdGlvbmFsbHkgKCJwIiBpcyBhIGdvb2Qgd2F5IHRv IGRvIHRoaXMpLCBvciB2aWEKKG5vdCAob3IgZXhlY3V0aW5nLWtiZC1tYWNybyBub25pbnRlcmFj dGl2ZSkpLgoKVGhlIG9ubHkga25vd24gcHJvcGVyIHVzZSBvZiBgaW50ZXJhY3RpdmUnIGZvciBL SU5EIGlzIGluIGRlY2lkaW5nCndoZXRoZXIgdG8gZGlzcGxheSBhIGhlbHBmdWwgbWVzc2FnZSwg b3IgaG93IHRvIGRpc3BsYXkgaXQuICBJZiB5b3UncmUKdGhpbmtpbmcgb2YgdXNpbmcgaXQgZm9y IGFueSBvdGhlciBwdXJwb3NlLCBpdCBpcyBxdWl0ZSBsaWtlbHkgdGhhdAp5b3UncmUgbWFraW5n IGEgbWlzdGFrZS4gIFRoaW5rOiB3aGF0IGRvIHlvdSB3YW50IHRvIGRvIHdoZW4gdGhlCmNvbW1h bmQgaXMgY2FsbGVkIGZyb20gYSBrZXlib2FyZCBtYWNybz8KCihmbiAmb3B0aW9uYWwgS0lORCkf CihkZWZhbGlhcyAnY2FsbGVkLWludGVyYWN0aXZlbHktcCAjWzI1NiAiXDIxMVwzMDM9XDIwNQsA CFwyMDYLAAk/XDIwNREBXDMwNENcMzA1Q1wzMDVDXDMwNlwyMTEEBAQjXDIxMFwyMTEEBAQjXDIx MAJcMjQyXDIwMy0AAlwyNDJAXDIwMxwAAlwyNDJBQFwzMDc+XDIwNBwAXDMxMFwzMTEFXDI0MgVc MjQyBVwyNDIkXDIxMVwzMTJcMjY3XDIwMk0AXDMwNVwyMDJaAFwzMTNcMjAyWgAEXDIxMVwyNDIC XFxTXDI0MFwyMTABBQUFI1wyNjIBXDIwNBwAAlwyNDICXDI0MkJcMjExOlwyMDUNAVwyMTFcMjQy XDIxMTpcMjAzXDM0NABcMjExXDI0M1wyMTE6XDIwM1wyNzAAXDIxMVwyNDJcMzE0ASFcMzE1ASFc MjA1XDIwNgBcMzE2ASE/XDI2MgE/XDIwNVwyNjMAA1wyNDNcMjExOlwyMDVcMjYxAFwyMTFcMjQy XDIxMVwzMTM9XDIwNVwyNTcAAVwyNDNcMjExOlwyMDVcMjU1AFwyMTFcMjQyXG5cMzE0AiE9Pz9c MjYyAVwyNjIBXDI2MgFcMjYyAVwyNjIBXDIwMlwzMzcAAlwyNDNcMjExOlwyMDVcMzM1AFwyMTFc MjQyXDIxMVwzMTM9XDIwNVwzMzMAAVwyNDNcMjExOlwyMDVcMzMxAFwyMTFcMjQyXG5cMzE0AiE9 Pz9cMjYyAVwyNjIBXDI2MgFcMjYyAVwyNjIBXDIwMgsBAVwyNDNcMjExOlwyMDUJAVwyMTFcMjQy XDIxMVwzMTM9XDIwNQcBAVwyNDNcMjExOlwyMDUFAVwyMTFcMjQyXG5cMzE0AiE9Pz9cMjYyAVwy NjIBXDI2MgFcMjYyAVwyNjIBXDI2MgFcMjY2XDIwNFwyMDciIFtleGVjdXRpbmcta2JkLW1hY3Jv IG5vbmludGVyYWN0aXZlIGludGVybmFsLS1mdW5jYWxsLWludGVyYWN0aXZlbHkgaW50ZXJhY3Rp dmUgMSBuaWwgI1s3NzEgIgEBXDI0MlwyNDBcMjEwXDIxMVwzMDAEXDI0MlwzMDFcIlwyNDBcMjEw AlwyMTFcMjQyVFwyNDBcMjA3IiBbYmFja3RyYWNlLWZyYW1lIGNhbGxlZC1pbnRlcmFjdGl2ZWx5 LXBdIDcgIlxuXG4oZm4gSSBGUkFNRSBORVhURlJBTUUpIl0gKGludGVyYWN0aXZlLXAgJ2J5dGUt Y29kZSkgcnVuLWhvb2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3MgY2FsbGVkLWludGVyYWN0aXZl bHktcC1mdW5jdGlvbnMgI3MoaGFzaC10YWJsZSBzaXplIDIgdGVzdCBlcSByZWhhc2gtc2l6ZSAx LjUgcmVoYXNoLXRocmVzaG9sZCAwLjgxMjUgcHVyZWNvcHkgdCBkYXRhIChuaWwgNjkgMCA3Mykp IHQgaW5kaXJlY3QtZnVuY3Rpb24gc3VicnAgc3Vici1uYXRpdmUtZWxpc3AtcF0gMTYgKCMkIC4g MTk5NjczKV0pCihzZXQtYWR2ZXJ0aXNlZC1jYWxsaW5nLWNvbnZlbnRpb24gJ2NhbGxlZC1pbnRl cmFjdGl2ZWx5LXAgJyhraW5kKSAiMjMuMSIpI0A5NjAgUmV0dXJuIHQgaWYgdGhlIGNvbnRhaW5p bmcgZnVuY3Rpb24gd2FzIHJ1biBkaXJlY3RseSBieSB1c2VyIGlucHV0LgpUaGlzIG1lYW5zIHRo YXQgdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgd2l0aCBgY2FsbC1pbnRlcmFjdGl2ZWx5Jwood2hp Y2ggaW5jbHVkZXMgYmVpbmcgY2FsbGVkIGFzIHRoZSBiaW5kaW5nIG9mIGEga2V5KQphbmQgaW5w dXQgaXMgY3VycmVudGx5IGNvbWluZyBmcm9tIHRoZSBrZXlib2FyZCAobm90IGEga2V5Ym9hcmQg bWFjcm8pLAphbmQgRW1hY3MgaXMgbm90IHJ1bm5pbmcgaW4gYmF0Y2ggbW9kZSAoYG5vbmludGVy YWN0aXZlJyBpcyBuaWwpLgoKVGhlIG9ubHkga25vd24gcHJvcGVyIHVzZSBvZiBgaW50ZXJhY3Rp dmUtcCcgaXMgaW4gZGVjaWRpbmcgd2hldGhlciB0bwpkaXNwbGF5IGEgaGVscGZ1bCBtZXNzYWdl LCBvciBob3cgdG8gZGlzcGxheSBpdC4gIElmIHlvdSdyZSB0aGlua2luZwpvZiB1c2luZyBpdCBm b3IgYW55IG90aGVyIHB1cnBvc2UsIGl0IGlzIHF1aXRlIGxpa2VseSB0aGF0IHlvdSdyZQptYWtp bmcgYSBtaXN0YWtlLiAgVGhpbms6IHdoYXQgZG8geW91IHdhbnQgdG8gZG8gd2hlbiB0aGUgY29t bWFuZCBpcwpjYWxsZWQgZnJvbSBhIGtleWJvYXJkIG1hY3JvIG9yIGluIGJhdGNoIG1vZGU/CgpU byB0ZXN0IHdoZXRoZXIgeW91ciBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggYGNhbGwtaW50ZXJh Y3RpdmVseScsCmVpdGhlciAoaSkgYWRkIGFuIGV4dHJhIG9wdGlvbmFsIGFyZ3VtZW50IGFuZCBn aXZlIGl0IGFuIGBpbnRlcmFjdGl2ZScKc3BlYyB0aGF0IHNwZWNpZmllcyBub24tbmlsIHVuY29u ZGl0aW9uYWxseSAoc3VjaCBhcyAicCIpOyBvciAoaWkpCnVzZSBgY2FsbGVkLWludGVyYWN0aXZl bHktcCcuCgpUbyB0ZXN0IHdoZXRoZXIgYSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGludGVyYWN0 aXZlbHksIHVzZQpgY29tbWFuZHAnLh8KKGRlZmFsaWFzICdpbnRlcmFjdGl2ZS1wICNbMCAiXDMw MFwzMDEhXDIwNyIgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgaW50ZXJhY3RpdmVdIDIgKCMkIC4g MjAyMzgzKV0pCihtYWtlLW9ic29sZXRlICdpbnRlcmFjdGl2ZS1wICdjYWxsZWQtaW50ZXJhY3Rp dmVseS1wICIyMy4yIikjQDIyIAoKKGZuIEtFWU1BUCBTWU1CT0wpHwooZGVmYWxpYXMgJ2ludGVy bmFsLXB1c2gta2V5bWFwICNbNTE0ICJcMjExSgIBPj9cMjA1KABcMzAwAko+XDIwNFwiAFwzMDFc MzAyA0pcIlwyNjIBXDIxMVwzMDACQUJcMjQxXDIxMAEBTFwyMTBcMjExAwJBQlwyNDFcMjA3IiBb YWRkLWtleW1hcC13aXRuZXNzIG1ha2UtY29tcG9zZWQta2V5bWFwIG5pbF0gNiAoIyQgLiAyMDM1 MDkpXSkjQDIyIAoKKGZuIEtFWU1BUCBTWU1CT0wpHwooZGVmYWxpYXMgJ2ludGVybmFsLXBvcC1r ZXltYXAgI1s1MTQgIlwyMTFKAgE+XDIwMxAAXDIxMVwzMDAEA0FcIlwyNDFcMjEwXDIxMUFBXDIx MVwyMDMdAFwzMDEBIVwyMDUoAAFBQFwzMDI9XDIwNSgAAgFMXDIwNyIgW2RlbHEga2V5bWFwcCBh ZGQta2V5bWFwLXdpdG5lc3NdIDcgKCMkIC4gMjAzNzI4KV0pCihieXRlLWNvZGUgIlwzMDBcMzAx XDMwMlwzMDMjXDIxMFwzMDRcMzAxXDMwMlwzMDUjXDIwNyIgW2RlZmFsaWFzIHNldC10ZW1wb3Jh cnktb3ZlcmxheS1tYXAgc2V0LXRyYW5zaWVudC1tYXAgbmlsIG1ha2Utb2Jzb2xldGUgIjI0LjQi XSA0KSNAMjUxIFRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgZGVhY3RpdmF0aW9uIG9mIGEgdHJhbnNp ZW50IGtleW1hcC4KSWYgdGhpcyBpcyBhIG51bWJlciwgaXQgc3BlY2lmaWVzIHRoZSBhbW91bnQg b2YgaWRsZSB0aW1lCmFmdGVyIHdoaWNoIHRvIGRlYWN0aXZhdGUgdGhlIGtleW1hcCBzZXQgYnkg YHNldC10cmFuc2llbnQtbWFwJywKdGh1cyBvdmVycmlkaW5nIHRoZSB2YWx1ZSBvZiB0aGUgVElN RU9VVCBhcmd1bWVudCB0byB0aGF0IGZ1bmN0aW9uLh8KKGRlZnZhciBzZXQtdHJhbnNpZW50LW1h cC10aW1lb3V0IG5pbCAoIyQgLiAyMDQwNzApKSNANDAgVGltZXIgZm9yIGBzZXQtdHJhbnNpZW50 LW1hcC10aW1lb3V0Jy4fCihkZWZ2YXIgc2V0LXRyYW5zaWVudC1tYXAtdGltZXIgbmlsICgjJCAu IDIwNDM3OCkpI0AxNTM5IFNldCBNQVAgYXMgYSB0ZW1wb3Jhcnkga2V5bWFwIHRha2luZyBwcmVj ZWRlbmNlIG92ZXIgb3RoZXIga2V5bWFwcy4KTm9ybWFsbHksIE1BUCBpcyB1c2VkIG9ubHkgb25j ZSwgdG8gbG9vayB1cCB0aGUgdmVyeSBuZXh0IGtleS4KSG93ZXZlciwgaWYgdGhlIG9wdGlvbmFs IGFyZ3VtZW50IEtFRVAtUFJFRCBpcyB0LCBNQVAgc3RheXMKYWN0aXZlIGlmIGEga2V5IGZyb20g TUFQIGlzIHVzZWQuICBLRUVQLVBSRUQgY2FuIGFsc28gYmUgYQpmdW5jdGlvbiBvZiBubyBhcmd1 bWVudHM6IGl0IGlzIGNhbGxlZCBmcm9tIGBwcmUtY29tbWFuZC1ob29rJyBhbmQKaWYgaXQgcmV0 dXJucyBub24tbmlsLCB0aGVuIE1BUCBzdGF5cyBhY3RpdmUuCgpPcHRpb25hbCBhcmcgT04tRVhJ VCwgaWYgbm9uLW5pbCwgc3BlY2lmaWVzIGEgZnVuY3Rpb24gdGhhdCBpcwpjYWxsZWQsIHdpdGgg bm8gYXJndW1lbnRzLCBhZnRlciBNQVAgaXMgZGVhY3RpdmF0ZWQuCgpPcHRpb25hbCBhcmcgTUVT U0FHRSwgaWYgbm9uLW5pbCwgcmVxdWVzdHMgZGlzcGxheSBvZiBhbiBpbmZvcm1hdGl2ZQptZXNz YWdlIGFmdGVyIGFjdGl2YXRpbmcgdGhlIHRyYW5zaWVudCBtYXAuICBJZiBNRVNTQUdFIGlzIGEg c3RyaW5nLAppdCBzcGVjaWZpZXMgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRoZSBtZXNzYWdlIHRv IGRpc3BsYXksIGFuZCB0aGUgJWsKc3BlY2lmaWVyIGluIHRoZSBzdHJpbmcgaXMgcmVwbGFjZWQg d2l0aCB0aGUgbGlzdCBvZiBrZXlzIGZyb20gdGhlCnRyYW5zaWVudCBtYXAuICBBbnkgb3RoZXIg bm9uLW5pbCB2YWx1ZSBvZiBNRVNTQUdFIG1lYW5zIHRvIHVzZSB0aGUKbWVzc2FnZSBmb3JtYXQg c3RyaW5nICJSZXBlYXQgd2l0aCAlayIuICBVcG9uIGRlYWN0aXZhdGluZyB0aGUgbWFwLAp0aGUg ZGlzcGxheWVkIG1lc3NhZ2Ugd2lsbCBiZSBjbGVhcmVkIG91dC4KCk9wdGlvbmFsIGFyZyBUSU1F T1VULCBpZiBub24tbmlsLCBzaG91bGQgYmUgYSBudW1iZXIgc3BlY2lmeWluZyB0aGUKbnVtYmVy IG9mIHNlY29uZHMgb2YgaWRsZSB0aW1lIGFmdGVyIHdoaWNoIHRoZSBtYXAgaXMgZGVhY3RpdmF0 ZWQuClRoZSB2YXJpYWJsZSBgc2V0LXRyYW5zaWVudC1tYXAtdGltZW91dCcsIGlmIG5vbi1uaWws IG92ZXJyaWRlcyB0aGUKdmFsdWUgb2YgVElNRU9VVC4KClRoaXMgZnVuY3Rpb24gdXNlcyBgb3Zl cnJpZGluZy10ZXJtaW5hbC1sb2NhbC1tYXAnLCB3aGljaCB0YWtlcyBwcmVjZWRlbmNlCm92ZXIg YWxsIG90aGVyIGtleW1hcHMuICBBcyB1c3VhbCwgaWYgbm8gbWF0Y2ggZm9yIGEga2V5IGlzIGZv dW5kIGluIE1BUCwKdGhlIG5vcm1hbCBrZXkgbG9va3VwIHNlcXVlbmNlIHRoZW4gY29udGludWVz LgoKVGhpcyByZXR1cm5zIGFuICJleGl0IGZ1bmN0aW9uIiwgd2hpY2ggY2FuIGJlIGNhbGxlZCB3 aXRoIG5vIGFyZ3VtZW50CnRvIGRlYWN0aXZhdGUgdGhpcyB0cmFuc2llbnQgbWFwLCByZWdhcmRs ZXNzIG9mIEtFRVAtUFJFRC4KCihmbiBNQVAgJm9wdGlvbmFsIEtFRVAtUFJFRCBPTi1FWElUIE1F U1NBR0UgVElNRU9VVCkfCihkZWZhbGlhcyAnc2V0LXRyYW5zaWVudC1tYXAgI1sxMjgxICIIXDIw NgUAXDIxMQJcMjA1KwBcMzAyQ1wzMDNcMzA0XDMwNQNcIgYIXCJcMjEwXDMwNgQ7XDIwMx4ABFwy MDIfAFwzMDdcMzEwXDMxMVwzMTIFXDI0MlwzMTMjQkNcIlwyNjIBXDMxNFwzMTUhXDMwNFwzMTYC BAYJBlxmJQFcMzA0XDMxNwMGBgZcZgYOJU1cMjEwXDMyMFwzMjEDXCJcMjEwXDMyMgYJXDMyM1wi XDIxMANcMjAzYQAJXDIwM1sAXDMyNAkhXDIxMFwzMjUEXDMwMgMjEQJcMjAzagBcMzI2XDMyNwRc IlwyMTBcMjA3IiBbc2V0LXRyYW5zaWVudC1tYXAtdGltZW91dCBzZXQtdHJhbnNpZW50LW1hcC10 aW1lciBuaWwgbWFwLWtleW1hcCBtYWtlLWNsb3N1cmUgI1s1MTQgIlwyMTFcMjA1XG4AXDMwMAJc MzAwXDI0MkJcMjQwXDIwNyIgW1YwXSA1ICJcblxuKGZuIEtFWSBDTUQpIl0gZm9ybWF0LXNwZWMg IlJlcGVhdCB3aXRoICVrIiAxMDcgbWFwY29uY2F0ICNbMjU3ICJcMzAwXDMwMVwzMDJcMzAzXDMw NAUhIVwiIVwyMDciIFtzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyBmb3JtYXQgIlxcYCVzJyIga2V5 LWRlc2NyaXB0aW9uIHZlY3Rvcl0gNyAiXG5cbihmbiBLRVkpIl0gIiwgIiBtYWtlLXN5bWJvbCAi Y2xlYXItdHJhbnNpZW50LW1hcCIgI1swICJcMzA1XDMwM1wzMDZcIlwyMTBcMzA3XDMxMFwzMDBc IlwyMTBcMzAxXDIwMxIAXDMxMVwzMTIhXDIxMFxmXDIwMxoAXDMxM1xmIVwyMTBcMzAyXDIwNSAA XDMwMiBcMjA3IiBbVjAgVjEgVjIgVjMgc2V0LXRyYW5zaWVudC1tYXAtdGltZXIgaW50ZXJuYWwt cG9wLWtleW1hcCBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCByZW1vdmUtaG9vayBwcmUt Y29tbWFuZC1ob29rIG1lc3NhZ2UgIiIgY2FuY2VsLXRpbWVyXSAzXSAjWzAgIlwzMDYxVQBcMzAy XDIwM1EAXDMwM1xmQUA9XDIwNBgAXDMwM1xmQUE+XDIwNEYAXDMwMlwzMDc9XDIwM0EAXDMxMFwz MDNcMzExIFwiXDIxMVwyMDM1AFwyMTE5XDIwMzUAXDMxMgEhXDIwNjMAXDIxMVwyNjIBXDIxMVwy MDU8AA0BPVwyNjIBXDIwMkMAXDMwMiBcMjAzUQBcMzAxXDIwNVMAXDMxM1wzMTRcMzAxXCJcMjAy UwBcMzAwIDBcMjA3XDMxM1wzMTUCXCJcMjEwXDMxNlwyMDciIFtWMCBWMSBWMiBWMyBvdmVycmlk aW5nLXRlcm1pbmFsLWxvY2FsLW1hcCB0aGlzLWNvbW1hbmQgKGRlYnVnIGVycm9yKSB0IGxvb2t1 cC1rZXkgdGhpcy1jb21tYW5kLWtleXMtdmVjdG9yIGNvbW1hbmQtcmVtYXBwaW5nIG1lc3NhZ2Ug IiVzIiAic2V0LXRyYW5zaWVudC1tYXAgUENIOiAlUyIgbmlsXSA0XSBhZGQtaG9vayBwcmUtY29t bWFuZC1ob29rIGludGVybmFsLXB1c2gta2V5bWFwIG92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwt bWFwIGNhbmNlbC10aW1lciBydW4td2l0aC1pZGxlLXRpbWVyIG1lc3NhZ2UgIiVzIl0gMTYgKCMk IC4gMjA0NDc1KV0pI0A3MTcgUmVwb3J0IHByb2dyZXNzIG9mIGFuIG9wZXJhdGlvbiBpbiB0aGUg ZWNobyBhcmVhLgpSRVBPUlRFUiBzaG91bGQgYmUgdGhlIHJlc3VsdCBvZiBhIGNhbGwgdG8gYG1h a2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLgoKSWYgUkVQT1JURVIgaXMgYSBudW1lcmljYWwgcHJvZ3Jl c3MgcmVwb3J0ZXItLS1pLmUuIGlmIGl0IHdhcwogbWFkZSB1c2luZyBub24tbmlsIE1JTi1WQUxV RSBhbmQgTUFYLVZBTFVFIGFyZ3VtZW50cyB0bwogYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInLS0t dGhlbiBWQUxVRSBzaG91bGQgYmUgYSBudW1iZXIgYmV0d2VlbgogTUlOLVZBTFVFIGFuZCBNQVgt VkFMVUUuCgpPcHRpb25hbCBhcmd1bWVudCBTVUZGSVggaXMgYSBzdHJpbmcgdG8gYmUgZGlzcGxh eWVkIGFmdGVyClJFUE9SVEVSJ3MgbWFpbiBtZXNzYWdlIGFuZCBwcm9ncmVzcyB0ZXh0LiAgSWYg UkVQT1JURVIgaXMgYQpub24tbnVtZXJpY2FsIHJlcG9ydGVyLCB0aGVuIFZBTFVFIHNob3VsZCBi ZSBuaWwsIG9yIGEgc3RyaW5nIHRvCnVzZSBpbnN0ZWFkIG9mIFNVRkZJWC4KClRoaXMgZnVuY3Rp b24gaXMgcmVsYXRpdmVseSBpbmV4cGVuc2l2ZS4gIElmIHRoZSBjaGFuZ2Ugc2luY2UKbGFzdCB1 cGRhdGUgaXMgdG9vIHNtYWxsIG9yIGluc3VmZmljaWVudCB0aW1lIGhhcyBwYXNzZWQsIGl0IGRv ZXMKbm90aGluZy4KCihmbiBSRVBPUlRFUiAmb3B0aW9uYWwgVkFMVUUgU1VGRklYKR8KKGRlZmFs aWFzICdwcm9ncmVzcy1yZXBvcnRlci11cGRhdGUgI1s3NjkgIgFcMjQ3XDIwM1xmAAEDQFlcMjA1 EQBcMzAwAwMDI1wyMDciIFtwcm9ncmVzcy1yZXBvcnRlci1kby11cGRhdGVdIDcgKCMkIC4gMjA3 NDQxKV0pCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3 IiBbZnVuY3Rpb24tcHV0IHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSBzcGVlZCAtMSBwdXQgYnl0 ZS1vcHRpbWl6ZXIgYnl0ZS1jb21waWxlLWlubGluZS1leHBhbmRdIDUpI0AxMjA0IFJldHVybiBw cm9ncmVzcyByZXBvcnRlciBvYmplY3QgZm9yIHVzZSB3aXRoIGBwcm9ncmVzcy1yZXBvcnRlci11 cGRhdGUnLgoKTUVTU0FHRSBpcyBzaG93biBpbiB0aGUgZWNobyBhcmVhLCB3aXRoIGEgc3RhdHVz IGluZGljYXRvcgphcHBlbmRlZCB0byB0aGUgZW5kLiAgV2hlbiB5b3UgY2FsbCBgcHJvZ3Jlc3Mt cmVwb3J0ZXItZG9uZScsIHRoZQp3b3JkICJkb25lIiBpcyBwcmludGVkIGFmdGVyIHRoZSBNRVNT QUdFLiAgWW91IGNhbiBjaGFuZ2UgdGhlCk1FU1NBR0Ugb2YgYW4gZXhpc3RpbmcgcHJvZ3Jlc3Mg cmVwb3J0ZXIgYnkgY2FsbGluZwpgcHJvZ3Jlc3MtcmVwb3J0ZXItZm9yY2UtdXBkYXRlJy4KCk1J Ti1WQUxVRSBhbmQgTUFYLVZBTFVFLCBpZiBub24tbmlsLCBhcmUgc3RhcnRpbmcgKDAlIGNvbXBs ZXRlKQphbmQgZmluYWwgKDEwMCUgY29tcGxldGUpIHN0YXRlcyBvZiBvcGVyYXRpb247IHRoZSBs YXR0ZXIgc2hvdWxkCmJlIGxhcmdlci4gIEluIHRoaXMgY2FzZSwgdGhlIHN0YXR1cyBtZXNzYWdl IHNob3dzIHRoZSBwZXJjZW50YWdlCnByb2dyZXNzLgoKSWYgTUlOLVZBTFVFIGFuZC9vciBNQVgt VkFMVUUgaXMgb21pdHRlZCBvciBuaWwsIHRoZSBzdGF0dXMKbWVzc2FnZSBzaG93cyBhICJzcGlu bmluZyIsIG5vbi1udW1lcmljIGluZGljYXRvci4KCk9wdGlvbmFsIENVUlJFTlQtVkFMVUUgaXMg dGhlIGluaXRpYWwgcHJvZ3Jlc3M7IHRoZSBkZWZhdWx0IGlzCk1JTi1WQUxVRS4KT3B0aW9uYWwg TUlOLUNIQU5HRSBpcyB0aGUgbWluaW1hbCBjaGFuZ2UgaW4gcGVyY2VudHMgdG8gcmVwb3J0Owp0 aGUgZGVmYXVsdCBpcyAxJS4KQ1VSUkVOVC1WQUxVRSBhbmQgTUlOLUNIQU5HRSBkbyBub3QgaGF2 ZSBhbnkgZWZmZWN0IGlmIE1JTi1WQUxVRQphbmQvb3IgTUFYLVZBTFVFIGFyZSBuaWwuCgpPcHRp b25hbCBNSU4tVElNRSBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaW50ZXJ2YWwgdGltZSBiZXR3ZWVu CmVjaG8gYXJlYSB1cGRhdGVzIChkZWZhdWx0IGlzIDAuMiBzZWNvbmRzLikgIElmIHRoZSBPUyBp cyBub3QKY2FwYWJsZSBvZiBtZWFzdXJpbmcgZnJhY3Rpb25zIG9mIHNlY29uZHMsIHRoaXMgcGFy YW1ldGVyIGlzCmVmZmVjdGl2ZWx5IHJvdW5kZWQgdXAuCgooZm4gTUVTU0FHRSAmb3B0aW9uYWwg TUlOLVZBTFVFIE1BWC1WQUxVRSBDVVJSRU5ULVZBTFVFIE1JTi1DSEFOR0UgTUlOLVRJTUUpHwoo ZGVmYWxpYXMgJ21ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXIgI1sxNTM3ICJcMzAwXDMwMQYHXCJcMjAz DQAFXDMwMlBcMjYyBlwyMTFcMjA0FABcMzAzXDI2MgEEXDIwNhkAXDMwNFwzMDUCXDMwNllcMjA1 XCIAXDMwNyAGBwYHBlxuBgdcMjAzNgAGB1wzMTBeXDMxMV1cMjAyNwBcMzExBgdcMzEyJgdCXDIx MQRcMjA2RAAGBlwzMTIBXDI0N1wyMDNRAAEDQFlcMjA1VgBcMzEzAwMDI1wyNjYEXDIwNyIgW3N0 cmluZy1tYXRjaCAiW1s6YWxudW06XV1cXCciICIuLi4iIDAuMiAwIHZlY3RvciAwLjAyIGZsb2F0 LXRpbWUgNTAgMSBuaWwgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlXSAxNSAoIyQgLiAyMDg0 NDEpXSkjQDI1NSBSZXBvcnQgcHJvZ3Jlc3Mgb2YgYW4gb3BlcmF0aW9uIGluIHRoZSBlY2hvIGFy ZWEgdW5jb25kaXRpb25hbGx5LgoKUkVQT1JURVIsIFZBTFVFLCBhbmQgU1VGRklYIGFyZSB0aGUg c2FtZSBhcyBpbiBgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlJy4KTkVXLU1FU1NBR0UsIGlmIG5v bi1uaWwsIHNldHMgYSBuZXcgbWVzc2FnZSBmb3IgdGhlIHJlcG9ydGVyLgoKKGZuIFJFUE9SVEVS ICZvcHRpb25hbCBWQUxVRSBORVctTUVTU0FHRSBTVUZGSVgpHwooZGVmYWxpYXMgJ3Byb2dyZXNz LXJlcG9ydGVyLWZvcmNlLXVwZGF0ZSAjWzEwMjUgIgNBAlwyMDMLAFwyMTFcMzAwBElcMjEwXDIx MVwzMDFIXDIwMxcAXDIxMVwzMDFcMzAyIElcMjEwXDMwMwUFBCNcMjA3IiBbMyAwIGZsb2F0LXRp bWUgcHJvZ3Jlc3MtcmVwb3J0ZXItZG8tdXBkYXRlXSA5ICgjJCAuIDIwOTk5OSldKSNANTEgQ2hh cmFjdGVycyB0byB1c2UgZm9yIHB1bHNpbmcgcHJvZ3Jlc3MgcmVwb3J0ZXJzLh8KKGRlZnZhciBw cm9ncmVzcy1yZXBvcnRlci0tcHVsc2UtY2hhcmFjdGVycyBbIi0iICJcXCIgInwiICIvIl0gKCMk IC4gMjEwNDQxKSkjQDQwIAoKKGZuIFJFUE9SVEVSIFZBTFVFICZvcHRpb25hbCBTVUZGSVgpHwoo ZGVmYWxpYXMgJ3Byb2dyZXNzLXJlcG9ydGVyLWRvLXVwZGF0ZSAjWzc3MCAiAkFcMjExXDMwMkgB XDMwM0gCXDMwNEgDXDMwNUgDP1wyMDYjAFwzMDYEXDMwN1wiXDIwNSMABFwzMDIFBgdcMzEwSFxc SQNcMjAzXDIzNgACXDIwM1wyMzYAAgRaXDMxMVwyNDUDBVVcMjAzOgBcMzAyXDIwMkMAXDMxMgYJ BgZaAlwyNDUhBlxuBgYCBVwyMDNTAAZcblwzMTNIXDIwMlQAXDMwM1xcBF9cXAYGXlwyNDBcMjEw BglcMjUwXDIwM2wABlxuXDMxNAZcZkAhXDI0MFwyMTACXDIwNVwyMzUABghcMjAzfwAGB1wzMTUG XG5JXDIxMFwyMDJcMjExAAYHXDMxNUhcMjA2XDIwNwBcMzE2XDI2MglcMjExXDMwMlZcMjAzXDIy NwBcMzE3XDMyMAUDBlxmJFwyMDdcMzE3XDMyMQUGCyNcMjA3XDIxMVwyMDVcMzQyAAYHXDIwM1wy NjAABgZcMjA0XDI2MAAGB1wyNjIHBgZcMjAzXDI3NgAFXDMxNQYISVwyMTBcMjAyXDMwNwAFXDMx NUhcMjA2XDMwNQBcMzE2XDI2MgdcMzIyBglAVFwzMTNcIlwzMDcYCQFIBlxuAlwyNDBcMjEwXDMx N1wzMjMFAwZcZiQpXDI2NlwyMDJcMjA3IiBbbWVzc2FnZS1sb2ctbWF4IHByb2dyZXNzLXJlcG9y dGVyLS1wdWxzZS1jaGFyYWN0ZXJzIDAgMSAyIDMgdGltZS1sZXNzLXAgbmlsIDUgMTAwLjAgdHJ1 bmNhdGUgNCBjZWlsaW5nIDYgIiIgbWVzc2FnZSAiJXMlZCUlICVzIiAiJXMgJXMiIG1vZCAiJXMg JXMgJXMiXSAxNiAoIyQgLiAyMTA1NzQpXSkjQDc5IFByaW50IHJlcG9ydGVyJ3MgbWVzc2FnZSBm b2xsb3dlZCBieSB3b3JkICJkb25lIiBpbiBlY2hvIGFyZWEuCgooZm4gUkVQT1JURVIpHwooZGVm YWxpYXMgJ3Byb2dyZXNzLXJlcG9ydGVyLWRvbmUgI1syNTcgIlwzMDBcMzAxAkFcMzAySFwiXDIw NyIgW21lc3NhZ2UgIiVzZG9uZSIgM10gNSAoIyQgLiAyMTEzMzApXSkjQDY5NSBMb29wIGEgY2Vy dGFpbiBudW1iZXIgb2YgdGltZXMgYW5kIHJlcG9ydCBwcm9ncmVzcyBpbiB0aGUgZWNobyBhcmVh LgpFdmFsdWF0ZSBCT0RZIHdpdGggVkFSIGJvdW5kIHRvIHN1Y2Nlc3NpdmUgaW50ZWdlcnMgcnVu bmluZyBmcm9tCjAsIGluY2x1c2l2ZSwgdG8gQ09VTlQsIGV4Y2x1c2l2ZS4gIFRoZW4gZXZhbHVh dGUgUkVTVUxUIHRvIGdldAp0aGUgcmV0dXJuIHZhbHVlIChuaWwgaWYgUkVTVUxUIGlzIG9taXR0 ZWQpLgoKUkVQT1JURVItT1ItTUVTU0FHRSBpcyBhIHByb2dyZXNzIHJlcG9ydGVyIG9iamVjdCBv ciBhIHN0cmluZy4gIEluIHRoZSBsYXR0ZXIKY2FzZSwgdXNlIHRoaXMgc3RyaW5nIHRvIGNyZWF0 ZSBhIHByb2dyZXNzIHJlcG9ydGVyLgoKQXQgZWFjaCBpdGVyYXRpb24sIHByaW50IHRoZSByZXBv cnRlciBtZXNzYWdlIGZvbGxvd2VkIGJ5IHByb2dyZXNzCnBlcmNlbnRhZ2UgaW4gdGhlIGVjaG8g YXJlYS4gIEFmdGVyIHRoZSBsb29wIGlzIGZpbmlzaGVkLApwcmludCB0aGUgcmVwb3J0ZXIgbWVz c2FnZSBmb2xsb3dlZCBieSB0aGUgd29yZCAiZG9uZSIuCgpUaGlzIG1hY3JvIGlzIGEgY29udmVu aWVuY2Ugd3JhcHBlciBhcm91bmQgYG1ha2UtcHJvZ3Jlc3MtcmVwb3J0ZXInIGFuZCBmcmllbmRz LgoKKGZuIChWQVIgQ09VTlQgW1JFU1VMVF0pIFJFUE9SVEVSLU9SLU1FU1NBR0UgQk9EWS4uLikf CihkZWZhbGlhcyAnZG90aW1lcy13aXRoLXByb2dyZXNzLXJlcG9ydGVyICcobWFjcm8gLiAjWzY0 MiAiXDMwMFwzMDEhXDMwMFwzMDIhXDMwMwIFRAIGB0FARERcMzA0XDMwNQVEXDMwNgYGXDMwNwYI XDMxMAYJRkVFXDMxMQYIQAVEXDMxMgYIXDMxMwYJXDMxNAYOQERFQ1wiQkJcMzE1BgZEXDMxNlwz MTIGC0FBXDMxN1wiQlwyNTcGXDIwNyIgW21ha2Utc3ltYm9sICItLWRvdGltZXMtcHJlcC0tIiAi LS1kb3RpbWVzLWVuZC0tIiBsZXQgd2hlbiBzdHJpbmdwIHNldHEgbWFrZS1wcm9ncmVzcy1yZXBv cnRlciAwIGRvdGltZXMgYXBwZW5kIHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSAxKyBwcm9ncmVz cy1yZXBvcnRlci1kb25lIG9yIChuaWwpXSAxNiAoIyQgLiAyMTE1MTcpXSkpCihieXRlLWNvZGUg IlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwzMDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IGRv dGltZXMtd2l0aC1wcm9ncmVzcy1yZXBvcnRlciBsaXNwLWluZGVudC1mdW5jdGlvbiAyIHB1dCBl ZGVidWctZm9ybS1zcGVjICgoc3ltYm9scCBmb3JtICZvcHRpb25hbCBmb3JtKSBmb3JtIGJvZHkp XSA1KSNANTQwIExvb3Agb3ZlciBhIGxpc3QgYW5kIHJlcG9ydCBwcm9ncmVzcyBpbiB0aGUgZWNo byBhcmVhLgpFdmFsdWF0ZSBCT0RZIHdpdGggVkFSIGJvdW5kIHRvIGVhY2ggY2FyIGZyb20gTElT VCwgaW4gdHVybi4KVGhlbiBldmFsdWF0ZSBSRVNVTFQgdG8gZ2V0IHJldHVybiB2YWx1ZSwgZGVm YXVsdCBuaWwuCgpSRVBPUlRFUi1PUi1NRVNTQUdFIGlzIGEgcHJvZ3Jlc3MgcmVwb3J0ZXIgb2Jq ZWN0IG9yIGEgc3RyaW5nLiAgSW4gdGhlIGxhdHRlcgpjYXNlLCB1c2UgdGhpcyBzdHJpbmcgdG8g Y3JlYXRlIGEgcHJvZ3Jlc3MgcmVwb3J0ZXIuCgpBdCBlYWNoIGl0ZXJhdGlvbiwgcHJpbnQgdGhl IHJlcG9ydGVyIG1lc3NhZ2UgZm9sbG93ZWQgYnkgcHJvZ3Jlc3MKcGVyY2VudGFnZSBpbiB0aGUg ZWNobyBhcmVhLiAgQWZ0ZXIgdGhlIGxvb3AgaXMgZmluaXNoZWQsCnByaW50IHRoZSByZXBvcnRl ciBtZXNzYWdlIGZvbGxvd2VkIGJ5IHRoZSB3b3JkICJkb25lIi4KCihmbiAoVkFSIExJU1QgW1JF U1VMVF0pIFJFUE9SVEVSLU9SLU1FU1NBR0UgQk9EWS4uLikfCihkZWZhbGlhcyAnZG9saXN0LXdp dGgtcHJvZ3Jlc3MtcmVwb3J0ZXIgJyhtYWNybyAuICNbNjQyICJcMzAwXDMwMSFcMzAwXDMwMiFc MzAwXDMwMyFcMzA0AwYGRANcMzA1QgMGCUFAREVcMzA2XDMwNwYGRFwzMTAGB1wzMTEGCVwzMTJc MzEzBlxuREZFRVwzMTQGCUAFRFwzMTUGCVwzMTYGXG5cMzEwBgtcMzE3Bg1ERUVDXCJCQlwzMjAG B0RcMzIxXDMxNQZcZkFBXDMyMlwiQlwyNTcGXDIwNyIgW21ha2Utc3ltYm9sICItLWRvbGlzdC1w cm9ncmVzcy1yZXBvcnRlci0tIiAiLS1kb2xpc3QtY291bnQtLSIgIi0tZG9saXN0LWxpc3QtLSIg bGV0ICgwKSB3aGVuIHN0cmluZ3Agc2V0cSBtYWtlLXByb2dyZXNzLXJlcG9ydGVyIDAgbGVuZ3Ro IGRvbGlzdCBhcHBlbmQgcHJvZ3Jlc3MtcmVwb3J0ZXItdXBkYXRlIDErIHByb2dyZXNzLXJlcG9y dGVyLWRvbmUgb3IgKG5pbCldIDE5ICgjJCAuIDIxMjc5MSldKSkKKGJ5dGUtY29kZSAiXDMwMFwz MDFcMzAyXDMwMyNcMzA0XDMwMVwzMDVcMzA2I1wyMDciIFtmdW5jdGlvbi1wdXQgZG9saXN0LXdp dGgtcHJvZ3Jlc3MtcmVwb3J0ZXIgbGlzcC1pbmRlbnQtZnVuY3Rpb24gMiBwdXQgZWRlYnVnLWZv cm0tc3BlYyAoKHN5bWJvbHAgZm9ybSAmb3B0aW9uYWwgZm9ybSkgZm9ybSBib2R5KV0gNSkjQDEy MiBTcGVjaWZ5IHRoZSBzdHJpbmcgdXNlZCB0byBzZXBhcmF0ZSB0aGUgdmVyc2lvbiBlbGVtZW50 cy4KClVzdWFsbHkgdGhlIHNlcGFyYXRvciBpcyAiLiIsIGJ1dCBpdCBjYW4gYmUgYW55IG90aGVy IHN0cmluZy4fCihkZWZjb25zdCB2ZXJzaW9uLXNlcGFyYXRvciAiLiIgKCMkIC4gMjEzOTgwKSkj QDk4MyBTcGVjaWZ5IGFzc29jaWF0aW9uIGJldHdlZW4gbm9uLW51bWVyaWMgdmVyc2lvbiBhbmQg aXRzIHByaW9yaXR5LgoKVGhpcyBhc3NvY2lhdGlvbiBpcyB1c2VkIHRvIGhhbmRsZSB2ZXJzaW9u IHN0cmluZyBsaWtlICIxLjBwcmUyIiwKIjAuOWFscGhhMSIsIGV0Yy4gIEl0J3MgdXNlZCBieSBg dmVyc2lvbi10by1saXN0JyAod2hpY2ggc2VlKSB0byBjb252ZXJ0IHRoZQpub24tbnVtZXJpYyBw YXJ0IG9mIGEgdmVyc2lvbiBzdHJpbmcgdG8gYW4gaW50ZWdlci4gIEZvciBleGFtcGxlOgoKICAg U3RyaW5nIFZlcnNpb24gICAgSW50ZWdlciBMaXN0IFZlcnNpb24KICAgIjAuOXNuYXBzaG90IiAg ICAgKDAgIDkgLTQpCiAgICIxLjAtZ2l0IiAgICAgICAgICgxICAwIC00KQogICAiMS4wLmN2cyIg ICAgICAgICAoMSAgMCAtNCkKICAgIjEuMHByZTIiICAgICAgICAgKDEgIDAgLTEgMikKICAgIjEu MFBSRTIiICAgICAgICAgKDEgIDAgLTEgMikKICAgIjIyLjhiZXRhMyIgICAgICAgKDIyIDggLTIg MykKICAgIjIyLjggQmV0YTMiICAgICAgKDIyIDggLTIgMykKICAgIjAuOWFscGhhMSIgICAgICAg KDAgIDkgLTMgMSkKICAgIjAuOUFscGhBMSIgICAgICAgKDAgIDkgLTMgMSkKICAgIjAuOSBhbHBo YSIgICAgICAgKDAgIDkgLTMpCgpFYWNoIGVsZW1lbnQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybToK CiAgIChSRUdFWFAgLiBQUklPUklUWSkKCldoZXJlOgoKUkVHRVhQCQlyZWdleHAgdXNlZCB0byBt YXRjaCBub24tbnVtZXJpYyBwYXJ0IG9mIGEgdmVyc2lvbiBzdHJpbmcuCgkJSXQgc2hvdWxkIGJl Z2luIHdpdGggdGhlIGBeJyBhbmNob3IgYW5kIGVuZCB3aXRoIGEgYCQnIHRvCgkJcHJldmVudCBm YWxzZSBoaXRzLiAgTGV0dGVyLWNhc2UgaXMgaWdub3JlZCB3aGlsZSBtYXRjaGluZwoJCVJFR0VY UC4KClBSSU9SSVRZCWEgbmVnYXRpdmUgaW50ZWdlciBzcGVjaWZ5aW5nIG5vbi1udW1lcmljIHBy aW9yaXR5IG9mIFJFR0VYUC4fCihkZWZjb25zdCB2ZXJzaW9uLXJlZ2V4cC1hbGlzdCAnKCgiXlst Ll8rIF0/c25hcHNob3QkIiAuIC00KSAoIl5bLS5fK10kIiAuIC00KSAoIl5bLS5fKyBdP1xcKGN2 c1xcfGdpdFxcfGJ6clxcfHN2blxcfGhnXFx8ZGFyY3NcXCkkIiAuIC00KSAoIl5bLS5fKyBdP3Vu a25vd24kIiAuIC00KSAoIl5bLS5fKyBdP2FscGhhJCIgLiAtMykgKCJeWy0uXysgXT9iZXRhJCIg LiAtMikgKCJeWy0uXysgXT9cXChwcmVcXHxyY1xcKSQiIC4gLTEpKSAoIyQgLiAyMTQxNTQpKSNA MTA5MyBDb252ZXJ0IHZlcnNpb24gc3RyaW5nIFZFUiBpbnRvIGEgbGlzdCBvZiBpbnRlZ2Vycy4K ClRoZSB2ZXJzaW9uIHN5bnRheCBpcyBnaXZlbiBieSB0aGUgZm9sbG93aW5nIEVCTkY6CgogICBW RVJTSU9OIDo6PSBOVU1CRVIgKCBTRVBBUkFUT1IgTlVNQkVSICkqLgoKICAgTlVNQkVSIDo6PSAo MHwxfDJ8M3w0fDV8Nnw3fDh8OSkrLgoKICAgU0VQQVJBVE9SIDo6PSBgdmVyc2lvbi1zZXBhcmF0 b3InICh3aGljaCBzZWUpCgkgICAgICAgfCBgdmVyc2lvbi1yZWdleHAtYWxpc3QnICh3aGljaCBz ZWUpLgoKVGhlIE5VTUJFUiBwYXJ0IGlzIG9wdGlvbmFsIGlmIFNFUEFSQVRPUiBpcyBhIG1hdGNo IGZvciBhbiBlbGVtZW50CmluIGB2ZXJzaW9uLXJlZ2V4cC1hbGlzdCcuCgpFeGFtcGxlcyBvZiB2 YWxpZCB2ZXJzaW9uIHN5bnRheDoKCiAgIDEuMHByZTIgICAxLjAuNy41ICAgMjIuOGJldGEzICAg MC45YWxwaGExICAgNi45LjMwQmV0YSAgIDIuNC5zbmFwc2hvdCAgIC41CgpFeGFtcGxlcyBvZiBp bnZhbGlkIHZlcnNpb24gc3ludGF4OgoKICAgMS4wcHJlcHJlMiAgIDEuMC4uNy41ICAgMjIuOFgz ICAgYWxwaGEzLjIKCkV4YW1wbGVzIG9mIHZlcnNpb24gY29udmVyc2lvbjoKCiAgIFZlcnNpb24g U3RyaW5nICAgIFZlcnNpb24gYXMgYSBMaXN0IG9mIEludGVnZXJzCiAgICIuNSIgICAgICAgICAg ICAgICgwIDUpCiAgICIwLjkgYWxwaGEiICAgICAgICgwICA5IC0zKQogICAiMC45QWxwaEExIiAg ICAgICAoMCAgOSAtMyAxKQogICAiMC45c25hcHNob3QiICAgICAoMCAgOSAtNCkKICAgIjEuMC1n aXQiICAgICAgICAgKDEgIDAgLTQpCiAgICIxLjAuNy41IiAgICAgICAgICgxICAwICA3IDUpCiAg ICIxLjAuY3ZzIiAgICAgICAgICgxICAwIC00KQogICAiMS4wUFJFMiIgICAgICAgICAoMSAgMCAt MSAyKQogICAiMS4wcHJlMiIgICAgICAgICAoMSAgMCAtMSAyKQogICAiMjIuOCBCZXRhMyIgICAg ICAoMjIgOCAtMiAzKQogICAiMjIuOGJldGEzIiAgICAgICAoMjIgOCAtMiAzKQoKU2VlIGRvY3Vt ZW50YXRpb24gZm9yIGB2ZXJzaW9uLXNlcGFyYXRvcicgYW5kIGB2ZXJzaW9uLXJlZ2V4cC1hbGlz dCcuCgooZm4gVkVSKR8KKGRlZmFsaWFzICd2ZXJzaW9uLXRvLWxpc3QgI1syNTcgIlwyMTE7XDIw NAkAXDMwM1wzMDQhXDIxMFwyMTFHCEdZXDIwMyAAXDIxMVwzMDUIR08IXDIzMFwyMDMgAFwzMDYB UFwyNjIBXDMwNwFcMzEwXDMxMQMDA1wzMTIkXDI2NlwyMDNcMjA0MwBcMzAzXDMxMwJcIlwyMTBc MzE0IFwzMTVcMzE2AlwiXDIxNlwzMDVcMzEyXDMxMFwyMTFcMjExAxlcMzExXDMxNwYIBgcjXDIx MVwyNjIDXDIwM1wzMzAAAQVVXDIwM1wzMzAAXDMyMAYHBgZcMzA1XDIyNU8hA0JcMjYyA1wzMDVc MjI1XDI2MgVcMzExXDMyMQYIBgcjXDIxMVwyNjIDXDIwM0EAAQVVXDIwM0EABgYFXDMwNVwyMjVP XDI2MgJcMzA1XDIyNVwyNjIFAQhcMjMwXDIwNEEAXG5cMjYyAVwyMTFcMjAzXDI0MQBcMzExAUBA A1wiXDIwNFwyNDEAXDIxMUFcMjYyAVwyMDJcMjE1AFwyMTFcMjAzXDI1NwBcMjExQEEDQlwyNjID XDIwMkEAXDMxMVwzMjIDXCJcMjAzXDMxNwAEBgdHVVwyMDNcMzE3AFwzMjNcMzI0A1wiXDIyN1wz MDVIXDMyNVpUA0JcMjYyA1wyMDJBAFwzMDNcMzI2BghcIlwyMTBcMjAyQQACXDIzNylcMjY2XDIw NSlcMjA3IiBbdmVyc2lvbi1zZXBhcmF0b3IgY2FzZS1mb2xkLXNlYXJjaCB2ZXJzaW9uLXJlZ2V4 cC1hbGlzdCBlcnJvciAiVmVyc2lvbiBtdXN0IGJlIGEgc3RyaW5nIiAwICIwIiAiXlswLTldIiBu aWwgc3RyaW5nLW1hdGNoIHQgIkludmFsaWQgdmVyc2lvbiBzeW50YXg6IGAlcycgKG11c3Qgc3Rh cnQgd2l0aCBhIG51bWJlcikiIG1hdGNoLWRhdGEgbWFrZS1jbG9zdXJlICNbMCAiXDMwMVwzMDBc MzAyXCJcMjA3IiBbVjAgc2V0LW1hdGNoLWRhdGEgdF0gM10gIlswLTldKyIgc3RyaW5nLXRvLW51 bWJlciAiW14wLTldKyIgIl5bLS5fKyBdP1xcKFthLXpBLVpdXFwpJCIgbWF0Y2gtc3RyaW5nIDEg OTcgIkludmFsaWQgdmVyc2lvbiBzeW50YXg6IGAlcyciXSAxMSAoIyQgLiAyMTU0MDgpXSkjQDM0 OCBSZXR1cm4gdCBpZiBMMSwgYSBsaXN0IHNwZWNpZmljYXRpb24gb2YgYSB2ZXJzaW9uLCBpcyBs b3dlciB0aGFuIEwyLgoKTm90ZSB0aGF0IGEgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIGxpc3Qg KDEpIGlzIGVxdWFsIHRvICgxIDApLAooMSAwIDApLCAoMSAwIDAgMCksIGV0Yy4gIFRoYXQgaXMs IHRoZSB0cmFpbGluZyB6ZXJvcyBhcmUgaW5zaWduaWZpY2FudC4KQWxzbywgYSB2ZXJzaW9uIGdp dmVuIGJ5IHRoZSBsaXN0ICgxKSBpcyBoaWdoZXIgdGhhbiAoMSAtMSksIHdoaWNoIGluCnR1cm4g aXMgaGlnaGVyIHRoYW4gKDEgLTIpLCB3aGljaCBpcyBoaWdoZXIgdGhhbiAoMSAtMykuCgooZm4g TDEgTDIpHwooZGVmYWxpYXMgJ3ZlcnNpb24tbGlzdC08ICNbNTE0ICIBXDIwMxsAXDIxMVwyMDMb AAFAAUBVXDIwMxsAAUFcMjYyAlwyMTFBXDI2MgFcMjAyAAABXDIwMykAXDIxMVwyMDMpAAFAAUBX XDIwNwFcMjA0MwBcMjExXDIwNDMAXDMwMFwyMDcBXDIwMz0AXDMwMQIhXDMwMldcMjA3XDMwMlwz MDECIVdcMjA3IiBbbmlsIHZlcnNpb24tbGlzdC1ub3QtemVybyAwXSA1ICgjJCAuIDIxNzQ1Nyld KSNAMzQ2IFJldHVybiB0IGlmIEwxLCBhIGxpc3Qgc3BlY2lmaWNhdGlvbiBvZiBhIHZlcnNpb24s IGlzIGVxdWFsIHRvIEwyLgoKTm90ZSB0aGF0IGEgdmVyc2lvbiBzcGVjaWZpZWQgYnkgdGhlIGxp c3QgKDEpIGlzIGVxdWFsIHRvICgxIDApLAooMSAwIDApLCAoMSAwIDAgMCksIGV0Yy4gIFRoYXQg aXMsIHRoZSB0cmFpbGluZyB6ZXJvcyBhcmUgaW5zaWduaWZpY2FudC4KQWxzbywgYSB2ZXJzaW9u IGdpdmVuIGJ5IHRoZSBsaXN0ICgxKSBpcyBoaWdoZXIgdGhhbiAoMSAtMSksIHdoaWNoIGluCnR1 cm4gaXMgaGlnaGVyIHRoYW4gKDEgLTIpLCB3aGljaCBpcyBoaWdoZXIgdGhhbiAoMSAtMykuCgoo Zm4gTDEgTDIpHwooZGVmYWxpYXMgJ3ZlcnNpb24tbGlzdC09ICNbNTE0ICIBXDIwMxsAXDIxMVwy MDMbAAFAAUBVXDIwMxsAAUFcMjYyAlwyMTFBXDI2MgFcMjAyAAABXDIwMyUAXDIxMVwyMDMlAFwz MDBcMjA3AVwyMDQuAFwyMTE/XDIwNj0AAVwyMDM4AFwzMDECIVwzMDJVXDIwN1wzMDEBIVwzMDJV XDIwNyIgW25pbCB2ZXJzaW9uLWxpc3Qtbm90LXplcm8gMF0gNCAoIyQgLiAyMTgwMzIpXSkjQDMx NiBSZXR1cm4gdCBpZiBMMSwgYSBsaXN0IHNwZWNpZmljYXRpb24gb2YgYSB2ZXJzaW9uLCBpcyBs b3dlciBvciBlcXVhbCB0byBMMi4KCk5vdGUgdGhhdCBpbnRlZ2VyIGxpc3QgKDEpIGlzIGVxdWFs IHRvICgxIDApLCAoMSAwIDApLCAoMSAwIDAgMCksCmV0Yy4gIFRoYXQgaXMsIHRoZSB0cmFpbGlu ZyB6ZXJvZXMgYXJlIGluc2lnbmlmaWNhbnQuICBBbHNvLCBpbnRlZ2VyCmxpc3QgKDEpIGlzIGdy ZWF0ZXIgdGhhbiAoMSAtMSkgd2hpY2ggaXMgZ3JlYXRlciB0aGFuICgxIC0yKQp3aGljaCBpcyBn cmVhdGVyIHRoYW4gKDEgLTMpLgoKKGZuIEwxIEwyKR8KKGRlZmFsaWFzICd2ZXJzaW9uLWxpc3Qt PD0gI1s1MTQgIgFcMjAzGwBcMjExXDIwMxsAAUABQFVcMjAzGwABQVwyNjICXDIxMUFcMjYyAVwy MDIAAAFcMjAzKQBcMjExXDIwMykAAUABQFdcMjA3AVwyMDQyAFwyMTE/XDIwNkEAAVwyMDM8AFwz MDACIVwzMDFYXDIwN1wzMDFcMzAwAiFYXDIwNyIgW3ZlcnNpb24tbGlzdC1ub3QtemVybyAwXSA1 ICgjJCAuIDIxODU5NyldKSNAMTQxIFJldHVybiB0aGUgZmlyc3Qgbm9uLXplcm8gZWxlbWVudCBv ZiBMU1QsIHdoaWNoIGlzIGEgbGlzdCBvZiBpbnRlZ2Vycy4KCklmIGFsbCBMU1QgZWxlbWVudHMg YXJlIHplcm9zIG9yIExTVCBpcyBuaWwsIHJldHVybiB6ZXJvLgoKKGZuIExTVCkfCihkZWZhbGlh cyAndmVyc2lvbi1saXN0LW5vdC16ZXJvICNbMjU3ICJcMjExXDIwMxIAXDIxMUBcMzAwVVwyMDMS AFwyMTFBXDI2MgFcMjAyAABcMjExXDIwMxkAXDIxMUBcMjA3XDMwMFwyMDciIFswXSAzICgjJCAu IDIxOTEzMCldKSNANDAyIFJldHVybiB0IGlmIHZlcnNpb24gVjEgaXMgbG93ZXIgKG9sZGVyKSB0 aGFuIFYyLgoKTm90ZSB0aGF0IHZlcnNpb24gc3RyaW5nICIxIiBpcyBlcXVhbCB0byAiMS4wIiwg IjEuMC4wIiwgIjEuMC4wLjAiLApldGMuICBUaGF0IGlzLCB0aGUgdHJhaWxpbmcgIi4wInMgYXJl IGluc2lnbmlmaWNhbnQuICBBbHNvLCB2ZXJzaW9uCnN0cmluZyAiMSIgaXMgaGlnaGVyIChuZXdl cikgdGhhbiAiMXByZSIsIHdoaWNoIGlzIGhpZ2hlciB0aGFuICIxYmV0YSIsCndoaWNoIGlzIGhp Z2hlciB0aGFuICIxYWxwaGEiLCB3aGljaCBpcyBoaWdoZXIgdGhhbiAiMXNuYXBzaG90Ii4KQWxz bywgIi1HSVQiLCAiLUNWUyIgYW5kICItTk5OIiBhcmUgdHJlYXRlZCBhcyBzbmFwc2hvdCB2ZXJz aW9ucy4KCihmbiBWMSBWMikfCihkZWZhbGlhcyAndmVyc2lvbjwgI1s1MTQgIlwzMDBcMzAxAyFc MzAxAyFcIlwyMDciIFt2ZXJzaW9uLWxpc3QtPCB2ZXJzaW9uLXRvLWxpc3RdIDYgKCMkIC4gMjE5 NDA5KV0pI0A0MTQgUmV0dXJuIHQgaWYgdmVyc2lvbiBWMSBpcyBsb3dlciAob2xkZXIpIHRoYW4g b3IgZXF1YWwgdG8gVjIuCgpOb3RlIHRoYXQgdmVyc2lvbiBzdHJpbmcgIjEiIGlzIGVxdWFsIHRv ICIxLjAiLCAiMS4wLjAiLCAiMS4wLjAuMCIsCmV0Yy4gIFRoYXQgaXMsIHRoZSB0cmFpbGluZyAi LjAicyBhcmUgaW5zaWduaWZpY2FudC4gIEFsc28sIHZlcnNpb24Kc3RyaW5nICIxIiBpcyBoaWdo ZXIgKG5ld2VyKSB0aGFuICIxcHJlIiwgd2hpY2ggaXMgaGlnaGVyIHRoYW4gIjFiZXRhIiwKd2hp Y2ggaXMgaGlnaGVyIHRoYW4gIjFhbHBoYSIsIHdoaWNoIGlzIGhpZ2hlciB0aGFuICIxc25hcHNo b3QiLgpBbHNvLCAiLUdJVCIsICItQ1ZTIiBhbmQgIi1OTk4iIGFyZSB0cmVhdGVkIGFzIHNuYXBz aG90IHZlcnNpb25zLgoKKGZuIFYxIFYyKR8KKGRlZmFsaWFzICd2ZXJzaW9uPD0gI1s1MTQgIlwz MDBcMzAxAyFcMzAxAyFcIlwyMDciIFt2ZXJzaW9uLWxpc3QtPD0gdmVyc2lvbi10by1saXN0XSA2 ICgjJCAuIDIxOTkxOCldKSNAMzkyIFJldHVybiB0IGlmIHZlcnNpb24gVjEgaXMgZXF1YWwgdG8g VjIuCgpOb3RlIHRoYXQgdmVyc2lvbiBzdHJpbmcgIjEiIGlzIGVxdWFsIHRvICIxLjAiLCAiMS4w LjAiLCAiMS4wLjAuMCIsCmV0Yy4gIFRoYXQgaXMsIHRoZSB0cmFpbGluZyAiLjAicyBhcmUgaW5z aWduaWZpY2FudC4gIEFsc28sIHZlcnNpb24Kc3RyaW5nICIxIiBpcyBoaWdoZXIgKG5ld2VyKSB0 aGFuICIxcHJlIiwgd2hpY2ggaXMgaGlnaGVyIHRoYW4gIjFiZXRhIiwKd2hpY2ggaXMgaGlnaGVy IHRoYW4gIjFhbHBoYSIsIHdoaWNoIGlzIGhpZ2hlciB0aGFuICIxc25hcHNob3QiLgpBbHNvLCAi LUdJVCIsICItQ1ZTIiBhbmQgIi1OTk4iIGFyZSB0cmVhdGVkIGFzIHNuYXBzaG90IHZlcnNpb25z LgoKKGZuIFYxIFYyKR8KKGRlZmFsaWFzICd2ZXJzaW9uPSAjWzUxNCAiXDMwMFwzMDEDIVwzMDED IVwiXDIwNyIgW3ZlcnNpb24tbGlzdC09IHZlcnNpb24tdG8tbGlzdF0gNiAoIyQgLiAyMjA0NDEp XSkjQDIwNSBBbGlzdCBnaXZpbmcgdGhlIHZlcnNpb24gb2YgZWFjaCB2ZXJzaW9uZWQgYnVpbHRp biBwYWNrYWdlLgpJLmUuIGVhY2ggZWxlbWVudCBvZiB0aGUgbGlzdCBpcyBvZiB0aGUgZm9ybSAo TkFNRSAuIFZFUlNJT04pIHdoZXJlCk5BTUUgaXMgdGhlIHBhY2thZ2UgbmFtZSBhcyBhIHN5bWJv bCwgYW5kIFZFUlNJT04gaXMgaXRzIHZlcnNpb24KYXMgYSBsaXN0Lh8KKGRlZnZhciBwYWNrYWdl LS1idWlsdGluLXZlcnNpb25zIChieXRlLWNvZGUgIlwzMDFcMzAyXDMwMwghQkMhXDIwNyIgW2Vt YWNzLXZlcnNpb24gcHVyZWNvcHkgZW1hY3MgdmVyc2lvbi10by1saXN0XSA0KSAoIyQgLiAyMjA5 NDApKSNANjUgUmV0dXJuIHBhY2thZ2UgZGVzY3JpcHRpb24gZmlsZSBuYW1lIGZvciBwYWNrYWdl IERJUi4KCihmbiBESVIpHwooZGVmYWxpYXMgJ3BhY2thZ2UtLWRlc2NyaXB0aW9uLWZpbGUgI1sy NTcgIlwzMDBcMzAxAiEhXDMwMlwzMDMCXCJcMjAzEwBcMzA0XDMwNQJcIlwyMDIUAFwyMTFcMjYy AVwzMDZQXDIwNyIgW2ZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZGlyZWN0b3J5LWZpbGUtbmFtZSBz dHJpbmctbWF0Y2ggIlxcKFteLl0uKj9cXCktXFwoWzAtOV0rXFwoPzpbLl1bMC05XStcXHxcXCg/ OnByZVxcfGJldGFcXHxhbHBoYVxcKVswLTldK1xcKSpcXCkiIG1hdGNoLXN0cmluZyAxICItcGtn LmVsIl0gNSAoIyQgLiAyMjEyODMpXSkjQDE0MiBJbnZva2UgQk9EWSB3aXRoIE1VVEVYIGhlbGQs IHJlbGVhc2luZyBNVVRFWCB3aGVuIGRvbmUuClRoaXMgaXMgdGhlIHNpbXBsZXN0IHNhZmUgd2F5 IHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBtdXRleC4KCihmbiBNVVRFWCAmcmVzdCBCT0RZKR8K KGRlZmFsaWFzICd3aXRoLW11dGV4ICcobWFjcm8gLiAjWzM4NSAiXDMwMFwzMDEhXDMwMgEERENc MzAzA0RcMzA0XDMwNQYGQlwzMDYGBkRFRlwyMDciIFttYWtlLXN5bWJvbCAibXV0ZXgiIGxldCBt dXRleC1sb2NrIHVud2luZC1wcm90ZWN0IHByb2duIG11dGV4LXVubG9ja10gMTAgKCMkIC4gMjIx NjQ1KV0pKQooYnl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDRcMzAxXDMwNVwzMDYjXDIw NyIgW2Z1bmN0aW9uLXB1dCB3aXRoLW11dGV4IGxpc3AtaW5kZW50LWZ1bmN0aW9uIDEgcHV0IGVk ZWJ1Zy1mb3JtLXNwZWMgdF0gNSkjQDI2OCBTaG93IGFsbCBzeW1ib2xzIHdob3NlIG5hbWVzIGNv bnRhaW4gbWF0Y2ggZm9yIFJFR0VYUC4KSWYgb3B0aW9uYWwgMm5kIGFyZyBQUkVESUNBVEUgaXMg bm9uLW5pbCwgKGZ1bmNhbGwgUFJFRElDQVRFIFNZTUJPTCkgaXMgZG9uZQpmb3IgZWFjaCBzeW1i b2wgYW5kIGEgc3ltYm9sIGlzIG1lbnRpb25lZCBvbmx5IGlmIHRoYXQgcmV0dXJucyBub24tbmls LgpSZXR1cm4gbGlzdCBvZiBzeW1ib2xzIGZvdW5kLgoKKGZuIFJFR0VYUCAmb3B0aW9uYWwgUFJF RElDQVRFKR8KKGRlZmFsaWFzICdhcHJvcG9zLWludGVybmFsICNbNTEzICJcMzAwQ1wzMDFcMzAy XDMwMwMFBgckIVwyMTBcMzA0AVwyNDJcMzA1XCJcMjA3IiBbbmlsIG1hcGF0b21zIG1ha2UtY2xv c3VyZSAjWzI1NyAiXDMwM1wzMDJcMzA0AyFcIlwyMDUZAFwzMDFcMjAzEwBcMzAxASFcMjA1GQBc MzAwAVwzMDBcMjQyQlwyNDBcMjA3IiBbVjAgVjEgVjIgc3RyaW5nLW1hdGNoIHN5bWJvbC1uYW1l XSA1ICJcblxuKGZuIFNZTUJPTCkiXSBzb3J0IHN0cmluZy1sZXNzcF0gOSAoIyQgLiAyMjIwOTgp XSkjQDYzMSBIYXNoIHRhYmxlIG1hcHBpbmcgcHJlZml4ZXMgdG8gdGhlIGZpbGVzIGluIHdoaWNo IHRoZXkncmUgdXNlZC4KVGhpcyBjYW4gYmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGZldGNoIG5v dC15ZXQtbG9hZGVkIGRlZmluaXRpb25zLgpNb3JlIHNwZWNpZmljYWxseSwgaWYgdGhlcmUgaXMg YSB2YWx1ZSBvZiB0aGUgZm9ybSAoRklMRVMuLi4pIGZvcgphIHN0cmluZyBQUkVGSVggaXQgbWVh bnMgdGhhdCB0aGUgRklMRVMgZGVmaW5lIHZhcmlhYmxlcyBvciBmdW5jdGlvbnMKd2l0aCBuYW1l cyB0aGF0IHN0YXJ0IHdpdGggUFJFRklYLgoKTm90ZSB0aGF0IGl0IGRvZXMgbm90IGltcGx5IHRo YXQgYWxsIGRlZmluaXRpb25zIHN0YXJ0aW5nIHdpdGggUFJFRklYIGNhbgpiZSBmb3VuZCBpbiB0 aG9zZSBmaWxlcy4gIEUuZy4gaWYgcHJlZml4IGlzICJnbnVzLWFydGljbGUtIiB0aGVyZSBtaWdo dApzdGlsbCBiZSBkZWZpbml0aW9ucyBvZiB0aGUgZm9ybSAiZ251cy1hcnRpY2xlLXRvdG8tdGl0 aSIgaW4gb3RoZXIgZmlsZXMsCndoaWNoIHdvdWxkIHByZXN1bWFibHkgYXBwZWFyIGluIHRoaXMg dGFibGUgdW5kZXIgYW5vdGhlciBwcmVmaXggc3VjaCBhcwoiZ251cy0iIG9yICJnbnVzLWFydGlj bGUtdG90by0iLh8KKGRlZnZhciBkZWZpbml0aW9uLXByZWZpeGVzIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgJ2VxdWFsKSAoIyQgLiAyMjI2NTApKSNANTUgUmVnaXN0ZXIgdGhhdCBGSUxFIHVzZXMg UFJFRklYRVMuCgooZm4gRklMRSBQUkVGSVhFUykfCihkZWZhbGlhcyAncmVnaXN0ZXItZGVmaW5p dGlvbi1wcmVmaXhlcyAjWzUxNCAiXDIxMVwyMTFcMjA1GQBcMjExQFwzMDEBBVwzMDIECFwiQggj XDIxMAFBXDI2NlwyMDJcMjAyAQBcMjA3IiBbZGVmaW5pdGlvbi1wcmVmaXhlcyBwdXRoYXNoIGdl dGhhc2hdIDEwICgjJCAuIDIyMzM1OSldKSNAMjIgU2VwYXJhdG9yIGZvciBtZW51cy4fCihkZWZj b25zdCBtZW51LWJhci1zZXBhcmF0b3IgJygiLS0iKSAoIyQgLiAyMjM1ODQpKQooYnl0ZS1jb2Rl ICJcMzAwXDMwMVwzMDJcMzAzICEhQCFcMjAzEABcMzA0XDMwNSFcMjEwXDMwMFwyMDciIFtoYXNo LXRhYmxlLXAgcmVhZC1mcm9tLXN0cmluZyBwcmluMS10by1zdHJpbmcgbWFrZS1oYXNoLXRhYmxl IHByb3ZpZGUgaGFzaHRhYmxlLXByaW50LXJlYWRhYmxlXSA0KSNAMzAxIFByb2R1Y2UgdGhlIGNh bm9uaWNhbCBmaWxlIG5hbWUgZm9yIEZJTEUgZnJvbSBpdHMgTVNZUyBmb3JtLgoKT24gc3lzdGVt cyBvdGhlciB0aGFuIE1TLVdpbmRvd3MsIGp1c3QgcmV0dXJucyBGSUxFLgpPbiBNUy1XaW5kb3dz LCBjb252ZXJ0cyAvZC9mb28vYmFyIGZvcm0gb2YgZmlsZSBuYW1lcwpwYXNzZWQgYnkgTVNZUyBN YWtlIGludG8gZDovZm9vL2JhciB0aGF0IEVtYWNzIGNhbiBncm9rLgoKVGhpcyBmdW5jdGlvbiBp cyBjYWxsZWQgZnJvbSBsaXNwL01ha2VmaWxlIGFuZCBsZWltL01ha2VmaWxlLgoKKGZuIEZJTEUp HwooZGVmYWxpYXMgJ3VubXN5cy0tZmlsZS1uYW1lICNbMjU3ICIIXDMwMT1cMjAzGQBcMzAyXDMw MwJcIlwyMDMZAFwyMTFcMzA0XDMwNU9cMzA2AlwzMDVcMzA3T1FcMjYyAVwyMDciIFtzeXN0ZW0t dHlwZSB3aW5kb3dzLW50IHN0cmluZy1tYXRjaCAiXFxgL1thLXpBLVpdLyIgMSAyICI6IiBuaWxd IDYgKCMkIC4gMjIzODI1KV0pI0AyOTAgUmV0dXJuIGEgImZsYXR0ZW5lZCIgY29weSBvZiBUUkVF LgpJbiBvdGhlciB3b3JkcywgcmV0dXJuIGEgbGlzdCBvZiB0aGUgbm9uLW5pbCB0ZXJtaW5hbCBu b2Rlcywgb3IKbGVhdmVzLCBvZiB0aGUgdHJlZSBvZiBjb25zIGNlbGxzIHJvb3RlZCBhdCBUUkVF LiAgTGVhdmVzIGluIHRoZQpyZXR1cm5lZCBsaXN0IGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyBp biBUUkVFLgoKKGZsYXR0ZW4tdHJlZSBcPScoMSAoMiAuIDMpIG5pbCAoNCA1ICg2KSkgNykpCj0+ ICgxIDIgMyA0IDUgNiA3KQoKKGZuIFRSRUUpHwooZGVmYWxpYXMgJ2ZsYXR0ZW4tdHJlZSAjWzI1 NyAiXDMwMAE6XDIwMysAAVwyMTFBXDI2MgNcMjQyXDIxMTpcMjAzHgBcMjExQQNCXDI2MgNcMjEx QFwyNjIBXDIwMlxmAFwyMTFcMjAzJwBcMjExAkJcMjYyAlwyMTBcMjAyAQABXDIwMzQAAQFCXDI2 MgFcMjExXDIzN1wyMDciIFtuaWxdIDUgKCMkIC4gMjI0MzE5KV0pCihkZWZhbGlhcyAnZmxhdHRl bi1saXN0ICdmbGF0dGVuLXRyZWUpI0AxMTIgVHJpbSBTVFJJTkcgb2YgbGVhZGluZyBzdHJpbmcg bWF0Y2hpbmcgUkVHRVhQLgoKUkVHRVhQIGRlZmF1bHRzIHRvICJbIFx0XG5ccl0rIi4KCihmbiBT VFJJTkcgJm9wdGlvbmFsIFJFR0VYUCkfCihkZWZhbGlhcyAnc3RyaW5nLXRyaW0tbGVmdCAjWzUx MyAiXDMwMFwzMDECXDIwNgcAXDMwMlwzMDNRA1wiXDIwMxQAAVwzMDRcMjI1XDMwNU9cMjA3AVwy MDciIFtzdHJpbmctbWF0Y2ggIlxcYFxcKD86IiAiWyAJXG4NXSsiICJcXCkiIDAgbmlsXSA2ICgj JCAuIDIyNDgzNSldKSNAMTE0IFRyaW0gU1RSSU5HIG9mIHRyYWlsaW5nIHN0cmluZyBtYXRjaGlu ZyBSRUdFWFAuCgpSRUdFWFAgZGVmYXVsdHMgdG8gICJbIFx0XG5ccl0rIi4KCihmbiBTVFJJTkcg Jm9wdGlvbmFsIFJFR0VYUCkfCihkZWZhbGlhcyAnc3RyaW5nLXRyaW0tcmlnaHQgI1s1MTMgIlwz MDABXDIwNgYAXDMwMVwzMDJRAlwzMDNcMzA0AwMDXDMwNSRcMjY2XDIwM1wyMTFcMjAzGwACXDMw NgJPXDIwNwJcMjA3IiBbIlxcKD86IiAiWyAJXG4NXSsiICJcXClcXCciIG5pbCBzdHJpbmctbWF0 Y2ggdCAwXSAxMCAoIyQgLiAyMjUxMTIpXSkjQDE3NSBUcmltIFNUUklORyBvZiBsZWFkaW5nIGFu ZCB0cmFpbGluZyBzdHJpbmdzIG1hdGNoaW5nIFRSSU0tTEVGVCBhbmQgVFJJTS1SSUdIVC4KClRS SU0tTEVGVCBhbmQgVFJJTS1SSUdIVCBkZWZhdWx0IHRvICJbIFx0XG5ccl0rIi4KCihmbiBTVFJJ TkcgJm9wdGlvbmFsIFRSSU0tTEVGVCBUUklNLVJJR0hUKR8KKGRlZmFsaWFzICdzdHJpbmctdHJp bSAjWzc2OSAiXDMwMFwzMDEEA1wiA1wiXDIwNyIgW3N0cmluZy10cmltLWxlZnQgc3RyaW5nLXRy aW0tcmlnaHRdIDcgKCMkIC4gMjI1NDEwKV0pI0A2MCBTdGFuZGFyZCByZWdleHAgZ3VhcmFudGVl ZCBub3QgdG8gbWF0Y2ggYW55IHN0cmluZyBhdCBhbGwuHwooZGVmY29uc3QgcmVnZXhwLXVubWF0 Y2hhYmxlICJcXGBhXFxgIiAoIyQgLiAyMjU2OTUpKSNAMjg2IFJ1biBIT09LLCBjYXRjaGluZyBl cnJvcnMsIGFuZCBxdWVyeWluZyB0aGUgdXNlciBhYm91dCB3aGV0aGVyIHRvIGNvbnRpbnVlLgpJ ZiBhIGZ1bmN0aW9uIGluIEhPT0sgc2lnbmFscyBhbiBlcnJvciwgdGhlIHVzZXIgd2lsbCBiZSBw cm9tcHRlZAp3aGV0aGVyIHRvIGNvbnRpbnVlIG9yIG5vdC4gIElmIHRoZSB1c2VyIGRvZXNuJ3Qg cmVzcG9uZCwKZXZhbHVhdGlvbiB3aWxsIGNvbnRpbnVlIGlmIHRoZSB1c2VyIGRvZXNuJ3QgcmVz cG9uZCB3aXRoaW4gZml2ZQpzZWNvbmRzLgoKKGZuIEhPT0spHwooZGVmYWxpYXMgJ3J1bi1ob29r LXF1ZXJ5LWVycm9yLXdpdGgtdGltZW91dCAjWzI1NyAiXDMwMAFcMzAxXCJcMjA3IiBbcnVuLWhv b2std3JhcHBlZCAjWzI1NyAiXDMwMDELAFwyMTEgMFwyMTBcMjAyHABcMzAxXDMwMlwzMDMDXCJc MzA0XDMwNSM/XDIwNRoAXDMwNgEhXDI2NgJcMzA3XDIwNyIgWyhlcnJvcikgeS1vci1uLXAtd2l0 aC10aW1lb3V0IGZvcm1hdCAiRXJyb3IgJXM7IGNvbnRpbnVlPyIgNSB0IGVycm9yIG5pbF0gNiAi XG5cbihmbiBGVU4pIl1dIDQgKCMkIC4gMjI1ODE0KV0pI0AyMTEgRmlsbCBzdHJpbmcgU1RSIHRv IGBmaWxsLWNvbHVtbicuClRoaXMgaXMgaW50ZW5kZWQgZm9yIHZlcnkgc2ltcGxlIGZpbGxpbmcg d2hpbGUgYm9vdHN0cmFwcGluZwpFbWFjcyBpdHNlbGYsIGFuZCBkb2VzIG5vdCBzdXBwb3J0IGFs bCB0aGUgY3VzdG9taXphdGlvbiBvcHRpb25zCm9mIGZpbGwuZWwgKGZvciBleGFtcGxlIGBmaWxs LXJlZ2lvbicpLgoKKGZuIFNUUikfCihkZWZhbGlhcyAnaW50ZXJuYWwtLWZpbGwtc3RyaW5nLXNp bmdsZS1saW5lICNbMjU3ICJcMjExRwhXXDIwMwgAXDIwNwgBR14BXDMwMQJPAgJcMzAyT1wzMDNc MzA0A1wiXDIwMycAXDMwNVwzMDZcMzAyXDIxMQVcMzA3JVwyNjICXDIwMlQAXDMwM1wzMTACXCJc MjAzPAABXDMwNlBcMjYyAlwzMTFcMzA3AlwiXDI2MgFcMjAyVABcMzAzXDMxMgNcIlwyMDNUAFwz MTFcMzEzA1wiAVBcMjYyAVwzMDVcMzA2XDMwMlwyMTEFXDMwNyVcMjYyAgFcMzE0AiFQXDIwNyIg W2ZpbGwtY29sdW1uIDAgbmlsIHN0cmluZy1tYXRjaCAiXFwoIFxcKSQiIHJlcGxhY2UtbWF0Y2gg IlxuIiAxICJeIFxcKC4qXFwpIiBtYXRjaC1zdHJpbmcgIi4qXFwoIFxcKC4rXFwpXFwpJCIgMiBp bnRlcm5hbC0tZmlsbC1zdHJpbmctc2luZ2xlLWxpbmVdIDEwICgjJCAuIDIyNjM4NildKSNAMzM0 IEZvcm1hdCBhIHNpbmdsZSBsaW5lIGZyb20gYSBkb2N1bWVudGF0aW9uIHN0cmluZyBvdXQgb2Yg U1RSSU5HIGFuZCBPQkpFQ1RTLgpTaWduYWwgYW4gZXJyb3IgaWYgU1RSSU5HIGNvbnRhaW5zIGEg bmV3bGluZS4KVGhpcyBpcyBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuICBBdm9pZCB1 c2luZyB0aGlzIGZvciB0aGUKZmlyc3QgbGluZSBvZiBhIGRvY3N0cmluZzsgdGhlIGZpcnN0IGxp bmUgc2hvdWxkIGJlIGEgY29tcGxldGUKc2VudGVuY2UgKHNlZSBJbmZvIG5vZGUgYChlbGlzcCkg RG9jdW1lbnRhdGlvbiBUaXBzJykuCgooZm4gU1RSSU5HICZyZXN0IE9CSkVDVFMpHwooZGVmYWxp YXMgJ2ludGVybmFsLS1mb3JtYXQtZG9jc3RyaW5nLWxpbmUgI1szODUgIlwzMDBcMzAxA1wiXDIw M1xmAFwzMDJcMzAzA1wiXDIxMFwzMDRcMzA1XDMwNgQEIyFcMjA3IiBbc3RyaW5nLW1hdGNoICJc biIgZXJyb3IgIlVuYWJsZSB0byBmaWxsIHN0cmluZyBjb250YWluaW5nIG5ld2xpbmU6ICVTIiBp bnRlcm5hbC0tZmlsbC1zdHJpbmctc2luZ2xlLWxpbmUgYXBwbHkgZm9ybWF0XSA3ICgjJCAuIDIy NzAzMildKSNANDkgUmV0dXJuIG5vbi1uaWwgaWYgRW1hY3MgaGFzIGxpYmphbnNzb24gc3VwcG9y dC4fCihkZWZhbGlhcyAnanNvbi1hdmFpbGFibGUtcCAjWzAgIlwzMDBcMzAxIVwyMDURAFwzMDIx DwBcMzAzMFwyMTBcMzA0XDIwN1wyMTBcMzA1XDIwNyIgW2Zib3VuZHAganNvbi1zZXJpYWxpemUg KGpzb24tdW5hdmFpbGFibGUpICJ0cnVlIiB0IG5pbF0gMiAoIyQgLiAyMjc2MTMpXSkjQDE1NiBS ZXR1cm4gT0JKRUNUIGFzIGEgbGlzdC4KSWYgT0JKRUNUIGlzIGFscmVhZHkgYSBsaXN0LCByZXR1 cm4gT0JKRUNUIGl0c2VsZi4gIElmIGl0J3MKbm90IGEgbGlzdCwgcmV0dXJuIGEgb25lLWVsZW1l bnQgbGlzdCBjb250YWluaW5nIE9CSkVDVC4KCihmbiBPQkpFQ1QpHwooZGVmYWxpYXMgJ2Vuc3Vy ZS1saXN0ICNbMjU3ICJcMjExPFwyMDMGAFwyMDdcMjExQ1wyMDciIFtdIDIgKCMkIC4gMjI3ODI4 KV0pI0AyNTIgTGlrZSBgcHJvZ24nLCBidXQgZGlzcGxheSBNRVNTQUdFIGlmIEJPRFkgdGFrZXMg bG9uZ2VyIHRoYW4gVElNRU9VVCBzZWNvbmRzLgpUaGUgTUVTU0FHRSBmb3JtIHdpbGwgYmUgZXZh bHVhdGVkIGltbWVkaWF0ZWx5LCBidXQgdGhlIHJlc3VsdGluZwpzdHJpbmcgd2lsbCBiZSBkaXNw bGF5ZWQgb25seSBpZiBCT0RZIHRha2VzIGxvbmdlciB0aGFuIFRJTUVPVVQgc2Vjb25kcy4KCihm biAodGltZW91dCBtZXNzYWdlKSAmcmVzdCBib2R5KR8KKGRlZmFsaWFzICd3aXRoLWRlbGF5ZWQt bWVzc2FnZSAnKG1hY3JvIC4gI1szODUgIlwzMDACQANBQFwzMDFcMzAyBUJCRlwyMDciIFtmdW5j YWxsLXdpdGgtZGVsYXllZC1tZXNzYWdlIGxhbWJkYSBuaWxdIDggKCMkIC4gMjI4MDY2KV0pKQoo Ynl0ZS1jb2RlICJcMzAwXDMwMVwzMDJcMzAzI1wzMDBcMjA3IiBbZnVuY3Rpb24tcHV0IHdpdGgt ZGVsYXllZC1tZXNzYWdlIGxpc3AtaW5kZW50LWZ1bmN0aW9uIDFdIDQpI0AyNjYgUmV0dXJuIG5p bCBpZiBGVU5DIGlzIG5vdCBhIGZ1bmN0aW9uIGFsaWFzLgpJZiBGVU5DIGlzIGEgZnVuY3Rpb24g YWxpYXMsIHJldHVybiB0aGUgZnVuY3Rpb24gYWxpYXMgY2hhaW4uCgpJZiB0aGUgZnVuY3Rpb24g YWxpYXMgY2hhaW4gY29udGFpbnMgbG9vcHMsIGFuIGVycm9yIHdpbGwgYmUKc2lnbmFsZWQuICBJ ZiBOT0VSUk9SLCB0aGUgbm9uLWxvb3AgcGFydHMgb2YgdGhlIGNoYWluIGlzIHJldHVybmVkLgoK KGZuIEZVTkMgJm9wdGlvbmFsIE5PRVJST1IpHwooZGVmYWxpYXMgJ2Z1bmN0aW9uLWFsaWFzLXAg I1s1MTMgIlwzMDACXDMwMTJAAAM5XDIwMz4AA0tcMjExXDI2MgVcMjAzPgADOVwyMDM+AAMCPlwy MDQkAAMBPVwyMDM2AAJcMjAzMABcMzAyXDMwMQNcIlwyMTBcMjAyNgBcMzAzXDMwNAJDXCJcMjEw AwJCXDI2MgJcMjAyBgABMFwyMzdcMjA3IiBbbmlsIGxvb3AgdGhyb3cgc2lnbmFsIGN5Y2xpYy1m dW5jdGlvbi1pbmRpcmVjdGlvbl0gNyAoIyQgLiAyMjg1NjEpXSkKKGJ5dGUtY29kZSAiXDMwMFwz MDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCBmdW5jdGlvbi1hbGlhcy1wIHNpZGUt ZWZmZWN0LWZyZWUgdF0gNCkjQDI3MCBTYXkgd2hldGhlciBPQkpFQ1QgaGFzIGEgcmVhZGFibGUg c3ludGF4LgpUaGlzIG1lYW5zIHRoYXQgT0JKRUNUIGNhbiBiZSBwcmludGVkIG91dCBhbmQgdGhl biByZWFkIGJhY2sKYWdhaW4gYnkgdGhlIExpc3AgcmVhZGVyLiAgVGhpcyBmdW5jdGlvbiByZXR1 cm5zIG5pbCBpZiBPQkpFQ1QgaXMKdW5yZWFkYWJsZSwgYW5kIHRoZSBwcmludGVkIHJlcHJlc2Vu dGF0aW9uIChmcm9tIGBwcmluMScpIG9mCk9CSkVDVCBpZiBpdCBpcyByZWFkYWJsZS4KCihmbiBP QkpFQ1QpHwooZGVmYWxpYXMgJ3JlYWRhYmxlcCAjWzI1NyAiXDMwMTILAFwzMDIYXDMwMwEhKTBc MjA3IiBbcHJpbnQtdW5yZWFkYWJsZS1mdW5jdGlvbiB1bnJlYWRhYmxlICNbNTE0ICJcMzAwXDMw MVwzMDJcIlwyMDciIFt0aHJvdyB1bnJlYWRhYmxlIG5pbF0gNSAiXG5cbihmbiBPQkpFQ1QgRVND QVBFKSJdIHByaW4xLXRvLXN0cmluZ10gMyAoIyQgLiAyMjkxNjMpXSkKKGJ5dGUtY29kZSAiXDMw MFwzMDFcMzAyXDMwMyNcMzAwXDIwNyIgW2Z1bmN0aW9uLXB1dCByZWFkYWJsZXAgc2lkZS1lZmZl Y3QtZnJlZSBlcnJvci1mcmVlXSA0KSNAMjYgRGVsZXRlIHRoZSBjdXJyZW50IGxpbmUuHwooZGVm YWxpYXMgJ2RlbGV0ZS1saW5lICNbMCAiXDMwMCBcMzAwXDMwMSF8XDIwNyIgW3Bvcy1ib2wgMl0g MyAoIyQgLiAyMjk3MzcpXSkjQDQ1OSBFbnN1cmUgdGhhdCB0aGVyZSBhcmUgTElORVMgbnVtYmVy IG9mIGVtcHR5IGxpbmVzIGJlZm9yZSBwb2ludC4KSWYgTElORVMgaXMgbmlsIG9yIG9taXR0ZWQs IGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgc2luZ2xlIGVtcHR5CmxpbmUgYmVmb3JlIHBvaW50LgoK SWYgY2FsbGVkIGludGVyYWN0aXZlbHksIExJTkVTIGlzIGdpdmVuIGJ5IHRoZSBwcmVmaXggYXJn dW1lbnQuCgpJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIExJTkVTIGVtcHR5IGxpbmVzIGJlZm9yZSBw b2ludCwgdGhlIG51bWJlcgpvZiBlbXB0eSBsaW5lcyBpcyByZWR1Y2VkIHRvIExJTkVTLgoKSWYg cG9pbnQgaXMgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLCBhIG5ld2xpbmUgY2hhcmFj dGVyCmlzIGluc2VydGVkIGJlZm9yZSBhZGp1c3RpbmcgdGhlIG51bWJlciBvZiBlbXB0eSBsaW5l cy4KCihmbiAmb3B0aW9uYWwgTElORVMpHwooZGVmYWxpYXMgJ2Vuc3VyZS1lbXB0eS1saW5lcyAj WzI1NiAiblwyMDQHAFwzMDBjXDIxMFwyMTFcMjA2XGYAXDMwMVwyMTJcMzAyXDMwM1wzMDRcMzA1 I1wyMDMbAGBcMzA2XFxcMjAyHABlKWABWgJWXDIwMy8AYGBgA1oEWlp8XDIwN2ABWgJXXDIwNUAA XDMwNwJgA1paXDMxMFwiY1wyMDciIFsiXG4iIDEgcmUtc2VhcmNoLWJhY2t3YXJkICJbXlxuXSIg bmlsIHQgMiBtYWtlLXN0cmluZyAxMF0gNyAoIyQgLiAyMjk4NDcpICJwIl0pI0AyMTYgU3BsaXQg U1RSSU5HIGludG8gYSBsaXN0IG9mIGxpbmVzLgpJZiBPTUlULU5VTExTLCBlbXB0eSBsaW5lcyB3 aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0cy4KSWYgS0VFUC1ORVdMSU5FUywgZG9uJ3Qg c3RyaXAgdHJhaWxpbmcgbmV3bGluZXMgZnJvbSB0aGUgcmVzdWx0CmxpbmVzLgoKKGZuIFNUUklO RyAmb3B0aW9uYWwgT01JVC1OVUxMUyBLRUVQLU5FV0xJTkVTKR8KKGRlZmFsaWFzICdzdHJpbmct bGluZXMgI1s3NjkgIgJcMzAwXDIzMlwyMDMOAAE/XDIwNXQAXDMwMENcMjA3XDMwMVwzMDJcMjEx BUdXXDIwM3AAXDMwM1wzMDQGBgMjXDIxMVwyMDNTAARcMjAzKwABAVVcMjA0TAAFAgVcMjAzNgAC VFwyMDI3AAJPBFwyMDNGAAVcMjAzRgBcMjExXDMwNFwyMzJcMjA0SwBcMjExBEJcMjYyBFwyMTBc MjExVFwyNjZcMjAyXDIwMhAAAVwzMDJVXDIwM2EABQNCXDI2MgNcMjAyaQAFAlwzMDFPA0JcMjYy AwVHXDI2NlwyMDJcMjAyEAABXDIzN1wyNjZcMjAyXDIwNyIgWyIiIG5pbCAwIHN0cmluZy1zZWFy Y2ggIlxuIl0gOSAoIyQgLiAyMzA1NTkpXSkjQDk4NCBSZXR1cm4gbm9uLW5pbCBpZiBCVUZGRVIt T1ItTkFNRSBtYXRjaGVzIENPTkRJVElPTi4KQ09ORElUSU9OIGlzIGVpdGhlcjoKLSB0aGUgc3lt Ym9sIHQsIHRvIGFsd2F5cyBtYXRjaCwKLSB0aGUgc3ltYm9sIG5pbCwgd2hpY2ggbmV2ZXIgbWF0 Y2hlcywKLSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgdG8gbWF0Y2ggYSBidWZmZXIgbmFtZSwKLSBh IHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgYnVmZmVyIG9iamVjdCBhbmQgQVJHIGFz CiAgYXJndW1lbnRzLCBhbmQgcmV0dXJucyBub24tbmlsIGlmIHRoZSBidWZmZXIgbWF0Y2hlcywK LSBhIGNvbnMtY2VsbCwgd2hlcmUgdGhlIGNhciBkZXNjcmliZXMgaG93IHRvIGludGVycHJldCB0 aGUgY2RyLgogIFRoZSBjYXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogICogYGRlcml2 ZWQtbW9kZSc6IHRoZSBidWZmZXIgbWF0Y2hlcyBpZiB0aGUgYnVmZmVyJ3MgbWFqb3IgbW9kZQog ICAgaXMgZGVyaXZlZCBmcm9tIHRoZSBtYWpvciBtb2RlIGluIHRoZSBjb25zLWNlbGwncyBjZHIu CiAgKiBgbWFqb3ItbW9kZSc6IHRoZSBidWZmZXIgbWF0Y2hlcyBpZiB0aGUgYnVmZmVyJ3MgbWFq b3IgbW9kZQogICAgaXMgZXEgdG8gdGhlIGNvbnMtY2VsbCdzIGNkci4gIFByZWZlciB1c2luZyBg ZGVyaXZlZC1tb2RlJwogICAgaW5zdGVhZCB3aGVuIGJvdGggY2FuIHdvcmsuCiAgKiBgbm90Jzog dGhlIGNkciBpcyBpbnRlcnByZXRlZCBhcyBhIG5lZ2F0aW9uIG9mIGEgY29uZGl0aW9uLgogICog YGFuZCc6IHRoZSBjZHIgaXMgYSBsaXN0IG9mIHJlY3Vyc2l2ZSBjb25kaXRpb25zLCB0aGF0IGFs bCBoYXZlCiAgICB0byBiZSBtZXQuCiAgKiBgb3InOiB0aGUgY2RyIGlzIGEgbGlzdCBvZiByZWN1 cnNpdmUgY29uZGl0aW9uLCBvZiB3aGljaCBhdAogICAgbGVhc3Qgb25lIGhhcyB0byBiZSBtZXQu CgooZm4gQ09ORElUSU9OIEJVRkZFUi1PUi1OQU1FICZvcHRpb25hbCBBUkcpHwooZGVmYWxpYXMg J2J1ZmZlci1tYXRjaC1wICNbNzcwICJcMzAwAiFcMzAxQ1wyMTFcMzAyXDMwMwMFBgckXDI0MFwy MTBcMjExXDI0MgVDIVwyMDciIFtnZXQtYnVmZmVyIG5pbCBtYWtlLWNsb3N1cmUgI1syNTcgIlwz MDMyXDI3NwBcMjExXDIxMVwyMDVcMjc0AFwyMTFAXDIxMVwzMDQ9XDIwNFwyNjAAXDIxMTtcMjAz JgBcMjExXDMwNVwzMDEhXDMwNlwzMDcDAwNcMzA0JFwyNjZcMjAzXDIwMlwyNTUAXDMxMAEhXDIw M0IAXDMxMQEhQVwzMTI9XDIwMzsAXDIxMVwzMDEhXDIwMlwyNTUAXDIxMVwzMDFcMzAyXCJcMjAy XDI1NQBcMjExOlwyMDNcMjY1AFwyMTFcMjQyXDIxMVwzMTNcMjY3XDIwMlwyNTIAAVwyNDNcMzE0 XDMxNVwzMDFcIgE9XDI2MgFcMjAyXDI1MwABXDI0M1wzMTZcMzE0XDMxNVwzMDFcIgJcIlwyNjIB XDIwMlwyNTMAAVwyNDNcMzAwXDI0MgEhP1wyNjIBXDIwMlwyNTMAAVwyNDNcMzAwXDI0MgEhXDI2 MgFcMjAyXDI1MwABXDI0M1wzMTcyXDI0NQBcMjExXDIxMVwyMDNcMjQyAFwyMTFAXDMwMFwyNDIB QyFcMjA0XDIzMwBcMzIwXDMxN1wzMDZcIlwyMTABQVwyNjZcMjAyXDIwMlwyMTAAXDIxMFwzMDQw XDI2MgFcMjAyXDI1MwBcMzA2XDI2MgFcMjAzXDI2NQBcMzIwXDMwM1wzMDRcIlwyMTABQVwyNjZc MjAyXDIwMgUAXDI2MgEwXDIwNyIgW1YwIFYxIFYyIG1hdGNoIHQgYnVmZmVyLW5hbWUgbmlsIHN0 cmluZy1tYXRjaCBmdW5jdGlvbnAgZnVuYy1hcml0eSAxICNzKGhhc2gtdGFibGUgc2l6ZSA1IHRl c3QgZXEgcmVoYXNoLXNpemUgMS41IHJlaGFzaC10aHJlc2hvbGQgMC44MTI1IHB1cmVjb3B5IHQg ZGF0YSAobWFqb3ItbW9kZSA3OSBkZXJpdmVkLW1vZGUgOTIgbm90IDEwNiBvciAxMTggYW5kIDEy OSkpIGJ1ZmZlci1sb2NhbC12YWx1ZSBtYWpvci1tb2RlIHByb3ZpZGVkLW1vZGUtZGVyaXZlZC1w IGZhaWwgdGhyb3ddIDExICJcblxuKGZuIENPTkRJVElPTlMpIl1dIDExICgjJCAuIDIzMTExMCld KSNAMzQxIFJldHVybiBhIGxpc3Qgb2YgYnVmZmVycyB0aGF0IG1hdGNoIENPTkRJVElPTi4KU2Vl IGBidWZmZXItbWF0Y2gtcCcgZm9yIGRldGFpbHMgb24gQ09ORElUSU9OLiAgQnkgZGVmYXVsdCBh bGwKYnVmZmVycyBhcmUgY2hlY2tlZCwgdGhpcyBjYW4gYmUgcmVzdHJpY3RlZCBieSBwYXNzaW5n IGFuCm9wdGlvbmFsIGFyZ3VtZW50IEJVRkZFUlMsIHNldCB0byBhIGxpc3Qgb2YgYnVmZmVycyB0 byBjaGVjay4KQVJHIGlzIHBhc3NlZCB0byBgYnVmZmVyLW1hdGNoJywgZm9yIHByZWRpY2F0ZSBj b25kaXRpb25zIGluCkNPTkRJVElPTi4KCihmbiBDT05ESVRJT04gJm9wdGlvbmFsIEJVRkZFUlMg QVJHKR8KKGRlZmFsaWFzICdtYXRjaC1idWZmZXJzICNbNzY5ICJcMzAwAlwyMDYHAFwzMDEgXDIx MVwyMDMlAFwyMTFAXDMwMgYGXDMwMwMhBgYjXDIwMx4AXDIxMQNCXDI2MgMBQVwyNjZcMjAyXDIw MgcAXDIxMFwyMDciIFtuaWwgYnVmZmVyLWxpc3QgYnVmZmVyLW1hdGNoLXAgZ2V0LWJ1ZmZlcl0g MTAgKCMkIC4gMjMzMDgwKV0pI0AxODAgUmV0dXJuIHRoZSB2YWx1ZSBvZiBDT0RFIGFuZCBzdGFz aCBpdCBpbiBQTEFDRS4KSWYgUExBQ0UncyB2YWx1ZSBpcyBub24tbmlsLCB0aGVuIGRvbid0IGJv dGhlciBldmFsdWF0aW5nIENPREUKYW5kIHJldHVybiB0aGUgdmFsdWUgZm91bmQgaW4gUExBQ0Ug aW5zdGVhZC4KCihmbiBQTEFDRSAmcmVzdCBDT0RFKR8KKGRlZmFsaWFzICd3aXRoLW1lbW9pemF0 aW9uICcobWFjcm8gLiAjWzM4NSAiXDMwMAJcMzAxXDMwMgRcIlwiXDIwNyIgW2d2LWdldCBtYWtl LWNsb3N1cmUgI1s1MTQgIlwzMDECXDMwMlwzMDAhXDMwMwEhXDIwMw8AXDIxMVwyMDISAFwzMDRc MzA1IVwzMDYFAiECRQEDPVwyMDMkAFwyMTFcMjY2XDIwM1wyMDItAFwzMDcCBERDAlwiXDI2Nlwy MDNFXDIwNyIgW1YwIG9yIG1hY3JvZXhwLXByb2duIG1hY3JvZXhwLWNvbnN0LXAgbWFrZS1zeW1i b2wgInZhbCIgcHJvZ24gbWFjcm9leHAtbGV0Kl0gMTAgIlxuXG4oZm4gR0VUVEVSIFNFVFRFUiki XV0gNyAoIyQgLiAyMzM2MTApXSkpCihieXRlLWNvZGUgIlwzMDBcMzAxXDMwMlwzMDMjXDMwNFwz MDFcMzA1XDMwNiNcMjA3IiBbZnVuY3Rpb24tcHV0IHdpdGgtbWVtb2l6YXRpb24gbGlzcC1pbmRl bnQtZnVuY3Rpb24gMSBwdXQgZWRlYnVnLWZvcm0tc3BlYyAoZ3YtcGxhY2UgYm9keSldIDUpCg== --=-=-= Content-Type: text/plain In GNU Emacs 29.0.60 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars) of 2022-12-03 built on Tumashu Repository revision: 1e36ad9458e8deacfc85da573bb0ca0f270d4802 Repository branch: emacs-29 Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure --with-x-toolkit=lucid --with-json' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LANG: zh_CN.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Eat Minor modes in effect: eat--semi-char-mode: t global-git-commit-mode: t magit-auto-revert-mode: t shell-dirtrack-mode: t emms-playing-time-display-mode: t emms-playing-time-mode: t cnfonts-mode: t projectile-mode: t company-posframe-mode: t global-company-mode: t company-mode: t org-super-agenda-mode: t pyim-isearch-mode: t vertico-mode: t savehist-mode: t global-tab-line-mode: t tab-line-mode: t global-so-long-mode: t electric-pair-mode: t pixel-scroll-precision-mode: t recentf-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t mouse-wheel-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/feng/.emacs.d/elpa-29/transient-0.3.7/transient hides /home/feng/emacs/emacs29/lisp/transient Features: (shadow mail-extr emacsbug cursor-sensor eat emacs-helper eh-guix skeleton guix geiser-guile info-look geiser-debug geiser-repl geiser-image geiser-capf geiser-doc geiser-menu geiser-autodoc geiser-edit geiser-completion geiser-eval geiser-connection geiser-syntax scheme geiser-impl help-fns radix-tree geiser-log geiser-popup view geiser-custom geiser-base geiser eh-misc vundo magit-bookmark magit-submodule magit-obsolete magit-popup magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu edebug debug backtrace magit-diff smerge-mode diff diff-mode git-commit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor shell server magit-mode transient magit-git magit-section magit-utils aggressive-indent eh-emms emms-player-vlc emms-player-mpv emms-player-mplayer emms-setup emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser emms-volume emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time emms-lyrics emms-url emms-player-simple emms-streams emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line easy-mmode emms-cache emms-info-native bindat emms-info-exiftool emms-info-tinytag emms-info-metaflac emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-info emms-later-do emms-playlist-mode emms-source-playlist emms-source-file locate emms emms-compat el2org cnfonts tempel citre-config citre-lang-fileref citre-tags citre-ctags citre-readtags citre-readtags-tables citre-backend-interface citre-ui-peek color citre-ui-jump citre-common-tag citre-common-util projectile lisp-mnt grep compile ibuf-ext ibuffer ibuffer-loaddefs eh-gnus-common ebdb-message ebdb-gnus nnselect ebdb-mua ebdb-complete ebdb-com crm ebdb-format ebdb-i18n-chn ebdb-i18n ebdb-i18n-basic ebdb inline eieio-base timezone eww url-queue thingatpt mm-url gnus-demon gnus-search eieio-opt cl-extra speedbar ezimage dframe gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cite gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-cache gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util mail-prsvr eh-complete company-posframe company-keywords company-etags etags fileloop xref company-gtags company-template company-dabbrev-code company-dabbrev company-files company-capf company edmacro eh-org org-ql peg org-super-agenda ts ht s dash org-habit org-capture ob-python python project treesit ob-org ox-md ox-org ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox org-element org-persist xdg avl-tree generator autorevert filenotify org-attach org-id org-refile org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete comint ansi-osc ansi-color org-list org-footnote org-faces org-entities time-date noutline outline icons ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs find-func org-version org-compat org-macs format-spec eh-functions eh-theme modus-vivendi-theme modus-themes eh-basic cal-china-x cal-china lunar solar cal-dst holidays holiday-loaddefs cal-menu calendar cal-loaddefs pyim-basedict pyim-cregexp-utils pyim pyim-cloudim pyim-probe pyim-preview pyim-page posframe pyim-indicator pyim-dregcache pyim-dhashcache sort pyim-dict async pcase pyim-autoselector pyim-process pyim-punctuation pyim-outcome pyim-candidates pyim-cstring pyim-cregexp xr rx pyim-codes pyim-imobjs pyim-pinyin pyim-entered pyim-dcache pyim-pymap pyim-scheme pyim-common wdired dired dired-loaddefs vc vc-dispatcher consult-vertico consult compat-28 compat compat-macs kmacro orderless vertico-directory vertico savehist tab-line switch-window switch-window-mvborder switch-window-asciiart quail help-mode so-long elec-pair bookmark text-property-search pp pixel-scroll cua-base ring recentf tree-widget wid-edit elpa-mirror finder-inf company-posframe-autoloads org-ql-autoloads f-autoloads ov-autoloads vertico-posframe-autoloads standard-themes-autoloads corfu-terminal-autoloads aggressive-indent-autoloads posframe-autoloads company-autoloads paredit-autoloads citre-autoloads dired-ranger-autoloads dired-hacks-utils-autoloads kotlin-mode-autoloads geiser-guile-autoloads org-download-autoloads org-super-agenda-autoloads ht-autoloads pos-tip-autoloads switch-window-autoloads vertico-autoloads ts-autoloads s-autoloads orderless-autoloads liberime-autoloads modus-themes-autoloads xmlgen-autoloads wrap-region-autoloads wgrep-autoloads vundo-autoloads consult-autoloads cape-autoloads recentf-ext-autoloads rainbow-mode-autoloads rainbow-delimiters-autoloads pyim-basedict-autoloads flycheck-autoloads tempel-autoloads popon-autoloads projectile-autoloads emms-autoloads org-contrib-autoloads ox-gfm-autoloads magit-autoloads git-commit-autoloads compat-autoloads guix-autoloads bui-autoloads edit-indirect-autoloads transient-autoloads marginalia-autoloads geiser-autoloads pkg-info-autoloads epl-autoloads elpa-mirror-autoloads el2org-autoloads ebdb-i18n-chn-autoloads ebdb-autoloads pyim-autoloads async-autoloads markdown-mode-autoloads xr-autoloads magit-section-autoloads dash-autoloads with-editor-autoloads ef-themes-autoloads peg-autoloads cnfonts-autoloads cal-china-x-autoloads autopair-autoloads corfu-autoloads adaptive-wrap-autoloads info package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib china-util rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo x-toolkit xinput2 x multi-tty make-network-process emacs) Memory information: ((conses 16 1037039 194901) (symbols 48 53037 10) (strings 32 552314 5779) (string-bytes 1 9927388) (vectors 16 96033) (vector-slots 8 13241192 54062) (floats 8 1205 139) (intervals 56 1667 0) (buffers 984 16)) --=-=-=--