Message-ID: <20060802154317.28035.qmail@web33815.mail.mud.yahoo.com> Date: Wed, 2 Aug 2006 08:43:17 -0700 (PDT) From: "Frank C." Subject: Re: Help: gcc problem in Cygwin! To: cygwin AT cygwin DOT com In-Reply-To: <44D0B58D.60301@cygwin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1611111697-1154533397=:26067" Content-Transfer-Encoding: 8bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Note-from-DJ: This may be spam --0-1611111697-1154533397=:26067 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Id: Content-Disposition: inline Hi, Larry, Thanks again for your suggestions! Since I run './configure' first, and which generates the makefile for 'make', I digged into the configure file and found this: -------------------------------------------------- cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; ----------------------------------------------------- As you can see, the second to bottom line calls for 'cygpath', and the variable 'fix_srcfile_path' is called later like this: ----------------------------------------------------- # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" ----------------------------------------------------- I couldn't find the definition of the shell variable '$srcfile' through the whole file. Is it using a default value or something like that? Do you think this is the reason that 'cygpath' been invoked with an empty path? If so, how to fix it? If not, what else? Really appreciate your time and help! (BTW, I attach the configure file just in case you want to take a look.) Best, Frank --- "Larry Hall (Cygwin)" wrote: > . Reformatted. > > Frank C. wrote: > > --- "Larry Hall (Cygwin)" > > wrote: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > . > Thanks. > > > > >> Frank C. wrote: > >>> Dear all, > >>> > >>> I've been trying to install a software on Cygwin > >> under > >>> Windows XP, but without any success. The steps > are > >> (1) > >>> './configure', and (2) 'make'. > >>> > >>> I had following error message after running > >> 'make'. > >>> cygpath: can't convert empty path > >>> > > > /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o) > >>> :: undefined reference to '_WinMain AT 16' > >>> collect2: ld returned 1 exit status > >>> make: *** [libquicknet3.a] Error 1 > >>> > >>> > >>> Can anyone let me know what's wrong here? It > seems > >>> that there is a confusion on which linker to use > >> for > >>> gcc, and GNU ld is not on the path. I attach the > >>> output from './configure' at the end. Do you > think > >> it > >>> is related to those outputs? If so, how to fix > it? > >> If > >>> not, what's the cause? > >>> checking for ld used by GCC... ${CXX} > >>> checking if the linker (${CXX}) is GNU ld... no > >>> > >> > >> > >> Make sure you've installed the 'binutils' package > >> and that > >> 'ld' from this package is in your path. If this > >> doesn't > >> resolve the problem, then please read and follow > the > >> problem > >> reporting guidelines found here: > >> > >>> Problem reports: > >> http://cygwin.com/problems.html > >> > >> > >> > >> -- > >> Larry Hall > >> http://www.rfk.com > >> RFK Partners, Inc. (508) > >> 893-9779 - RFK Office > >> 216 Dalton Rd. (508) > >> 893-9889 - FAX > >> Holliston, MA 01746 > >> > >> -- > >> Unsubscribe info: > >> http://cygwin.com/ml/#unsubscribe-simple > >> Problem reports: > >> http://cygwin.com/problems.html > >> Documentation: > http://cygwin.com/docs.html > >> FAQ: http://cygwin.com/faq/ > >> > > Larry, > > > > Thanks for your quick reply! > > > > I installed the latest version of Cygwin, and > almost > > all packages which includes 'binutils' package. I > > checked and found 'ld' in the path: (1) > > cygwin\bin\ld.exe (678 kb), and (2) > > cygwin\usr\i686-pc-cygwin\bin\ld.exe (1 kb). Is > this > > normal? > > > Yes, that's normal. The latter is a symbolic link > to the former. > > > > I did a quick search on the list and couldn't find > > exact answer to my question. > > > > Do you have any more thoughts? Thanks! > > > OK, this looks like it must be a configure problem > then. 'cygpath' > is apparently being invoked by the script with an > empty path. If > you can narrow down where in this script that this > is happening, > you should have more luck determining why this is > the case and how > to resolve it. My WAG is that it's resolving some > environment variable > or path that doesn't actually exist. But I can't > say more without > further details. > > HTH, > > > -- > Larry Hall > http://www.rfk.com > RFK Partners, Inc. (508) > 893-9779 - RFK Office > 216 Dalton Rd. (508) > 893-9889 - FAX > Holliston, MA 01746 > > -- > Unsubscribe info: > http://cygwin.com/ml/#unsubscribe-simple > Problem reports: > http://cygwin.com/problems.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --0-1611111697-1154533397=:26067 Content-Type: application/octet-stream; name=configure Content-Transfer-Encoding: base64 Content-Description: 2170792853-configure Content-Disposition: attachment; filename=configure IyEgL2Jpbi9zaAojIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVu dCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCiMgR2VuZXJhdGVk IGJ5IEdOVSBBdXRvY29uZiAyLjU3IGZvciBRdWlja05ldCB2M18xMS4KIwoj IFJlcG9ydCBidWdzIHRvIDxxdWlja25ldC1idWdzQElDU0kuQmVya2VsZXku RURVPi4KIwojIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAx OTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyCiMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgVGhpcyBjb25maWd1cmUgc2NyaXB0 IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24KIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0 cmlidXRlIGFuZCBtb2RpZnkgaXQuCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LSAjIwojIyBNNHNoIEluaXRpYWxpemF0aW9uLiAgIyMKIyMgLS0tLS0tLS0t LS0tLS0tLS0tLS0tICMjCgojIEJlIEJvdXJuZSBjb21wYXRpYmxlCmlmIHRl c3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4v ZGV2L251bGwgMj4mMTsgdGhlbgogIGVtdWxhdGUgc2gKICBOVUxMQ01EPToK ICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBv biAkezErIiRAIn0sIHdoaWNoCiAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNh Z2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KICBhbGlhcyAtZyAnJHsxKyIk QCJ9Jz0nIiRAIicKZWxpZiB0ZXN0IC1uICIke0JBU0hfVkVSU0lPTitzZXR9 IiAmJiAoc2V0IC1vIHBvc2l4KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICBz ZXQgLW8gcG9zaXgKZmkKCiMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxl LgppZiAoRk9PPUZPTzsgdW5zZXQgRk9PKSA+L2Rldi9udWxsIDI+JjE7IHRo ZW4KICBhc191bnNldD11bnNldAplbHNlCiAgYXNfdW5zZXQ9ZmFsc2UKZmkK CgojIFdvcmsgYXJvdW5kIGJ1Z3MgaW4gcHJlLTMuMCBVV0lOIGtzaC4KJGFz X3Vuc2V0IEVOViBNQUlMIE1BSUxQQVRIClBTMT0nJCAnClBTMj0nPiAnClBT ND0nKyAnCgojIE5MUyBudWlzYW5jZXMuCmZvciBhc192YXIgaW4gXAogIExB TkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19D VFlQRSBMQ19JREVOVElGSUNBVElPTiBcCiAgTENfTUVBU1VSRU1FTlQgTENf TUVTU0FHRVMgTENfTU9ORVRBUlkgTENfTkFNRSBMQ19OVU1FUklDIExDX1BB UEVSIFwKICBMQ19URUxFUEhPTkUgTENfVElNRQpkbwogIGlmIChzZXQgK3g7 IHRlc3QgLW4gImAoZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyKSAy PiYxYCIpOyB0aGVuCiAgICBldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192 YXIKICBlbHNlCiAgICAkYXNfdW5zZXQgJGFzX3ZhcgogIGZpCmRvbmUKCiMg UmVxdWlyZWQgdG8gdXNlIGJhc2VuYW1lLgppZiBleHByIGEgOiAnXChhXCkn ID4vZGV2L251bGwgMj4mMTsgdGhlbgogIGFzX2V4cHI9ZXhwcgplbHNlCiAg YXNfZXhwcj1mYWxzZQpmaQoKaWYgKGJhc2VuYW1lIC8pID4vZGV2L251bGwg Mj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC8gMj4mMWAiID0gIlgvIjsgdGhl bgogIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCmVsc2UKICBhc19iYXNlbmFtZT1m YWxzZQpmaQoKCiMgTmFtZSBvZiB0aGUgZXhlY3V0YWJsZS4KYXNfbWU9YCRh c19iYXNlbmFtZSAiJDAiIHx8CiRhc19leHByIFgvIiQwIiA6ICcuKi9cKFte L11bXi9dKlwpLyokJyBcfCBcCgkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwK CSBYIiQwIiA6ICdYXCgvXCkkJyBcfCBcCgkgLiAgICAgOiAnXCguXCknIDI+ L2Rldi9udWxsIHx8CmVjaG8gWC8iJDAiIHwKICAgIHNlZCAnL14uKlwvXChb Xi9dW14vXSpcKVwvKiQveyBzLy9cMS87IHE7IH0KICAJICAvXlhcL1woXC9c L1wpJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwvXChcL1wpLioveyBzLy9c MS87IHE7IH0KICAJICBzLy4qLy4vOyBxJ2AKCgojIFBBVEggbmVlZHMgQ1Is IGFuZCBMSU5FTk8gbmVlZHMgQ1IgYW5kIFBBVEguCiMgQXZvaWQgZGVwZW5k aW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KYXNfY3JfbGV0dGVycz0nYWJj ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCmFzX2NyX0xFVFRFUlM9J0FCQ0RF RkdISUpLTE1OT1BRUlNUVVZXWFlaJwphc19jcl9MZXR0ZXJzPSRhc19jcl9s ZXR0ZXJzJGFzX2NyX0xFVFRFUlMKYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5 Jwphc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKCiMg VGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgppZiB0ZXN0ICIke1BBVEhfU0VQ QVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgogIGVjaG8gIiMhIC9iaW4vc2gi ID5jb25mJCQuc2gKICBlY2hvICAiZXhpdCAwIiAgID4+Y29uZiQkLnNoCiAg Y2htb2QgK3ggY29uZiQkLnNoCiAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsu IjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgIFBBVEhf U0VQQVJBVE9SPSc7JwogIGVsc2UKICAgIFBBVEhfU0VQQVJBVE9SPToKICBm aQogIHJtIC1mIGNvbmYkJC5zaApmaQoKCiAgYXNfbGluZW5vXzE9JExJTkVO TwogIGFzX2xpbmVub18yPSRMSU5FTk8KICBhc19saW5lbm9fMz1gKGV4cHIg JGFzX2xpbmVub18xICsgMSkgMj4vZGV2L251bGxgCiAgdGVzdCAieCRhc19s aW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCiAgdGVzdCAieCRhc19s aW5lbm9fMyIgID0gIngkYXNfbGluZW5vXzIiICB8fCB7CiAgIyBGaW5kIHdo byB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8g cGF0aCBhdCBhbGwKICAjIHJlbGF0aXZlIG9yIG5vdC4KICBjYXNlICQwIGlu CiAgICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CiAgICAqKSBhc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4g JFBBVEgKZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2Rp ciIgJiYgYXNfZGlyPS4KICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19t eXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhawpkb25lCgogICAgICAgOzsKICBl c2FjCiAgIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2Jh Ymx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwogICMgaW4gd2hpY2gg Y2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgogIGlm IHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KICAgIGFzX215c2VsZj0k MAogIGZpCiAgaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgogICAg eyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJl cnVuIHdpdGggYW4gYWJzb2x1dGUgcGF0aCIgPiYyCiAgIHsgKGV4aXQgMSk7 IGV4aXQgMTsgfTsgfQogIGZpCiAgY2FzZSAkQ09ORklHX1NIRUxMIGluCiAg JycpCiAgICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S CmZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBB VEhfU0VQQVJBVE9SJFBBVEgKZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICBmb3IgYXNfYmFzZSBpbiBz aCBiYXNoIGtzaCBzaDU7IGRvCgkgY2FzZSAkYXNfZGlyIGluCgkgLyopCgkg ICBpZiAoIiRhc19kaXIvJGFzX2Jhc2UiIC1jICcKICBhc19saW5lbm9fMT0k TElORU5PCiAgYXNfbGluZW5vXzI9JExJTkVOTwogIGFzX2xpbmVub18zPWAo ZXhwciAkYXNfbGluZW5vXzEgKyAxKSAyPi9kZXYvbnVsbGAKICB0ZXN0ICJ4 JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKICB0ZXN0ICJ4 JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgJykgMj4vZGV2L251 bGw7IHRoZW4KCSAgICAgJGFzX3Vuc2V0IEJBU0hfRU5WIHx8IHRlc3QgIiR7 QkFTSF9FTlYrc2V0fSIgIT0gc2V0IHx8IHsgQkFTSF9FTlY9OyBleHBvcnQg QkFTSF9FTlY7IH0KCSAgICAgJGFzX3Vuc2V0IEVOViB8fCB0ZXN0ICIke0VO VitzZXR9IiAhPSBzZXQgfHwgeyBFTlY9OyBleHBvcnQgRU5WOyB9CgkgICAg IENPTkZJR19TSEVMTD0kYXNfZGlyLyRhc19iYXNlCgkgICAgIGV4cG9ydCBD T05GSUdfU0hFTEwKCSAgICAgZXhlYyAiJENPTkZJR19TSEVMTCIgIiQwIiAk ezErIiRAIn0KCSAgIGZpOzsKCSBlc2FjCiAgICAgICBkb25lCmRvbmUKOzsK ICBlc2FjCgogICMgQ3JlYXRlICRhc19tZS5saW5lbm8gYXMgYSBjb3B5IG9m ICRhc19teXNlbGYsIGJ1dCB3aXRoICRMSU5FTk8KICAjIHVuaWZvcm1seSBy ZXBsYWNlZCBieSB0aGUgbGluZSBudW1iZXIuICBUaGUgZmlyc3QgJ3NlZCcg aW5zZXJ0cyBhCiAgIyBsaW5lLW51bWJlciBsaW5lIGJlZm9yZSBlYWNoIGxp bmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9lcyB0aGUgcmVhbAogICMgd29yay4g IFRoZSBzZWNvbmQgc2NyaXB0IHVzZXMgJ04nIHRvIHBhaXIgZWFjaCBsaW5l LW51bWJlciBsaW5lCiAgIyB3aXRoIHRoZSBudW1iZXJlZCBsaW5lLCBhbmQg YXBwZW5kcyB0cmFpbGluZyAnLScgZHVyaW5nCiAgIyBzdWJzdGl0dXRpb24g c28gdGhhdCAkTElORU5PIGlzIG5vdCBhIHNwZWNpYWwgY2FzZSBhdCBsaW5l IGVuZC4KICAjIChSYWphIFIgSGFyaW5hdGggc3VnZ2VzdGVkIHNlZCAnPScs IGFuZCBQYXVsIEVnZ2VydCB3cm90ZSB0aGUKICAjIHNlY29uZCAnc2VkJyBz Y3JpcHQuICBCbGFtZSBMZWUgRS4gTWNNYWhvbiBmb3Igc2VkJ3Mgc3ludGF4 LiAgOi0pCiAgc2VkICc9JyA8JGFzX215c2VsZiB8CiAgICBzZWQgJwogICAg ICBOCiAgICAgIHMsJCwtLAogICAgICA6IGxvb3AKICAgICAgcyxeXChbJyRh c19jcl9kaWdpdHMnXSpcKVwoLipcKVskXUxJTkVOT1woW14nJGFzX2NyX2Fs bnVtJ19dXCksXDFcMlwxXDMsCiAgICAgIHQgbG9vcAogICAgICBzLC0kLCwK ICAgICAgcyxeWyckYXNfY3JfZGlnaXRzJ10qXG4sLAogICAgJyA+JGFzX21l LmxpbmVubyAmJgogIGNobW9kICt4ICRhc19tZS5saW5lbm8gfHwKICAgIHsg ZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGlu ZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMgogICB7IChleGl0 IDEpOyBleGl0IDE7IH07IH0KCiAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBp dCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMK ICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hl cmUgd2UgbWlnaHQgZmluZCB0aGUKICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4g IEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2libGUgdG8gdGhpcykuCiAg LiAuLyRhc19tZS5saW5lbm8KICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2Yg dGhlIGxhc3QgY29tbWFuZC4KICBleGl0Cn0KCgpjYXNlIGBlY2hvICJ0ZXN0 aW5nXGMiOyBlY2hvIDEsMiwzYCxgZWNobyAtbiB0ZXN0aW5nOyBlY2hvIDEs MiwzYCBpbgogICpjKiwtbiopIEVDSE9fTj0gRUNIT19DPScKJyBFQ0hPX1Q9 JwknIDs7CiAgKmMqLCogICkgRUNIT19OPS1uIEVDSE9fQz0gRUNIT19UPSA7 OwogICopICAgICAgIEVDSE9fTj0gRUNIT19DPSdcYycgRUNIT19UPSA7Owpl c2FjCgppZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMTsgdGhl bgogIGFzX2V4cHI9ZXhwcgplbHNlCiAgYXNfZXhwcj1mYWxzZQpmaQoKcm0g LWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKZWNobyA+Y29uZiQk LmZpbGUKaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxs OyB0aGVuCiAgIyBXZSBjb3VsZCBqdXN0IGNoZWNrIGZvciBESkdQUDsgYnV0 IHRoaXMgdGVzdCBhKSB3b3JrcyBiKSBpcyBtb3JlIGdlbmVyaWMKICAjIGFu ZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5 bWxpbmtzIChESkdQUCAyLjA0KS4KICBpZiB0ZXN0IC1mIGNvbmYkJC5leGU7 IHRoZW4KICAgICMgRG9uJ3QgdXNlIGxuIGF0IGFsbDsgd2UgZG9uJ3QgaGF2 ZSBhbnkgbGlua3MKICAgIGFzX2xuX3M9J2NwIC1wJwogIGVsc2UKICAgIGFz X2xuX3M9J2xuIC1zJwogIGZpCmVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQk IDI+L2Rldi9udWxsOyB0aGVuCiAgYXNfbG5fcz1sbgplbHNlCiAgYXNfbG5f cz0nY3AgLXAnCmZpCnJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5m aWxlCgppZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCiAgYXNfbWtk aXJfcD06CmVsc2UKICBhc19ta2Rpcl9wPWZhbHNlCmZpCgphc19leGVjdXRh YmxlX3A9InRlc3QgLWYiCgojIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0 cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCmFzX3RyX2NwcD0ic2VkIHkl KiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3Jf YWxudW1dJV8lZyIKCiMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5n IG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgphc190cl9zaD0ic2VkIHkl KislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCgoKIyBJRlMKIyBXZSBu ZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhh dCBvcmRlci4KYXNfbmw9JwonCklGUz0iIAkkYXNfbmwiCgojIENEUEFUSC4K JGFzX3Vuc2V0IENEUEFUSAoKCiMgRmluZCB0aGUgY29ycmVjdCBQQVRIIHNl cGFyYXRvci4gIFVzdWFsbHkgdGhpcyBpcyBgOicsIGJ1dAojIERKR1BQIHVz ZXMgYDsnIGxpa2UgRE9TLgppZiB0ZXN0ICJYJHtQQVRIX1NFUEFSQVRPUitz ZXR9IiAhPSBYc2V0OyB0aGVuCiAgVU5BTUU9JHtVTkFNRS1gdW5hbWUgMj4v ZGV2L251bGxgfQogIGNhc2UgWCRVTkFNRSBpbgogICAgKi1ET1MpIGx0X2N2 X3N5c19wYXRoX3NlcGFyYXRvcj0nOycgOzsKICAgICopICAgICBsdF9jdl9z eXNfcGF0aF9zZXBhcmF0b3I9JzonIDs7CiAgZXNhYwogIFBBVEhfU0VQQVJB VE9SPSRsdF9jdl9zeXNfcGF0aF9zZXBhcmF0b3IKZmkKCgojIENoZWNrIHRo YXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuClNI RUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CgpjYXNlIFgkRUNITyBpbgpY Ki0tZmFsbGJhY2stZWNobykKICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVv dGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgogIEVDSE89 YGVjaG8gIiRFQ0hPIiB8IHNlZCAncyxcXFxcXCRcXCQwLCckMCcsJ2AKICA7 Owplc2FjCgplY2hvPSR7RUNITy1lY2hvfQppZiB0ZXN0ICJYJDEiID0gWC0t bm8tcmVleGVjOyB0aGVuCiAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBm bGFnLCBhbmQgY29udGludWUuCiAgc2hpZnQKZWxpZiB0ZXN0ICJYJDEiID0g WC0tZmFsbGJhY2stZWNobzsgdGhlbgogICMgQXZvaWQgaW5saW5lIGRvY3Vt ZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKICA6CmVsaWYgdGVzdCAi WGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCiAg IyBZaXBwZWUsICRlY2hvIHdvcmtzIQogIDoKZWxzZQogICMgUmVzdGFydCB1 bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KICBleGVjICRTSEVMTCAiJDAiIC0t bm8tcmVleGVjICR7MSsiJEAifQpmaQoKaWYgdGVzdCAiWCQxIiA9IFgtLWZh bGxiYWNrLWVjaG87IHRoZW4KICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwog IHNoaWZ0CiAgY2F0IDw8RU9GCgpFT0YKICBleGl0IDAKZmkKCiMgVGhlIEhQ LVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJl Y3RvcnkgdG8gc3Rkb3V0CiMgaWYgQ0RQQVRIIGlzIHNldC4KaWYgdGVzdCAi WCR7Q0RQQVRIK3NldH0iID0gWHNldDsgdGhlbiBDRFBBVEg9OjsgZXhwb3J0 IENEUEFUSDsgZmkKCmlmIHRlc3QgLXogIiRFQ0hPIjsgdGhlbgppZiB0ZXN0 ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KIyBm aW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFz IHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0CiAgZm9yIGNtZCBpbiAnc2Vk IDUwcSAiJDAiJyAnc2VkIDIwcSAiJDAiJyAnc2VkIDEwcSAiJDAiJyAnc2Vk IDJxICIkMCInICdlY2hvIHRlc3QnOyBkbwogICAgIyBleHBlY3RlZCBzaXpl czogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAu Li4KICAgIGlmIChlY2hvX3Rlc3Rfc3RyaW5nPSJgZXZhbCAkY21kYCIpIDI+ L2Rldi9udWxsICYmCiAgICAgICBlY2hvX3Rlc3Rfc3RyaW5nPSJgZXZhbCAk Y21kYCIgJiYKICAgICAgICh0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0g IlgkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsCiAgICB0aGVuCiAg ICAgIGJyZWFrCiAgICBmaQogIGRvbmUKZmkKCmlmIHRlc3QgIlhgKCRlY2hv ICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgogICBlY2hvX3Rlc3Rp bmdfc3RyaW5nPWAoJGVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2 L251bGxgICYmCiAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAi WCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgogIDoKZWxzZQogICMgVGhlIFNv bGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJv Z3JhbXMgdW5xdW90ZQogICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0 IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKICAjICAg ZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwogICMKICAj IFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUg dXNlcidzIFBBVEguCgogIElGUz0iJHtJRlM9IAl9Ijsgc2F2ZV9pZnM9IiRJ RlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgZm9yIGRpciBpbiAkUEFUSCAv dXNyL3VjYjsgZG8KICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0 IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCiAgICAgICB0ZXN0ICJYYCgk ZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCiAgICAg ICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0 X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgogICAgICAgdGVzdCAiWCRlY2hv X3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVu CiAgICAgIGVjaG89IiRkaXIvZWNobyIKICAgICAgYnJlYWsKICAgIGZpCiAg ZG9uZQogIElGUz0iJHNhdmVfaWZzIgoKICBpZiB0ZXN0ICJYJGVjaG8iID0g WGVjaG87IHRoZW4KICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNo bywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgogICAgaWYgdGVzdCAiWGAo cHJpbnQgLXIgJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCiAgICAg ICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAocHJpbnQgLXIgIiRlY2hvX3Rlc3Rf c3RyaW5nIikgMj4vZGV2L251bGxgICYmCiAgICAgICB0ZXN0ICJYJGVjaG9f dGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4K ICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhh dCBkb2VzIHRoZSB0cmljay4KICAgICAgZWNobz0ncHJpbnQgLXInCiAgICBl bGlmICh0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNf ZXhlZXh0KSAmJgoJIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9r c2g7IHRoZW4KICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcg Y29uZmlndXJlIGFnYWluIHdpdGggaXQuCiAgICAgIE9SSUdJTkFMX0NPTkZJ R19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQogICAgICBleHBvcnQg T1JJR0lOQUxfQ09ORklHX1NIRUxMCiAgICAgIENPTkZJR19TSEVMTD0vYmlu L2tzaAogICAgICBleHBvcnQgQ09ORklHX1NIRUxMCiAgICAgIGV4ZWMgJENP TkZJR19TSEVMTCAiJDAiIC0tbm8tcmVleGVjICR7MSsiJEAifQogICAgZWxz ZQogICAgICAjIFRyeSB1c2luZyBwcmludGYuCiAgICAgIGVjaG89J3ByaW50 ZiAlc1xuJwogICAgICBpZiB0ZXN0ICJYYCgkZWNobyAnXHQnKSAyPi9kZXYv bnVsbGAiID0gJ1hcdCcgJiYKCSBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGVj aG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCgkgdGVz dCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJp bmciOyB0aGVuCgkjIENvb2wsIHByaW50ZiB3b3JrcwoJOgogICAgICBlbGlm IGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxM ICIkMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgoJ ICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCgkg ICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVM TCAiJDAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAy Pi9kZXYvbnVsbGAgJiYKCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmlu ZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgoJQ09ORklHX1NIRUxM PSRPUklHSU5BTF9DT05GSUdfU0hFTEwKCWV4cG9ydCBDT05GSUdfU0hFTEwK CVNIRUxMPSIkQ09ORklHX1NIRUxMIgoJZXhwb3J0IFNIRUxMCgllY2hvPSIk Q09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyIKICAgICAgZWxpZiBl Y2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiJDAiIC0tZmFs bGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKCSAgIHRlc3QgIlgk ZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgoJICAgZWNob190ZXN0 aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVj aG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCgkgICB0 ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0 cmluZyI7IHRoZW4KCWVjaG89IiRDT05GSUdfU0hFTEwgJDAgLS1mYWxsYmFj ay1lY2hvIgogICAgICBlbHNlCgkjIG1heWJlIHdpdGggYSBzbWFsbGVyIHN0 cmluZy4uLgoJcHJldj06CgoJZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2Vk IDJxICIkMCInICdzZWQgMTBxICIkMCInICdzZWQgMjBxICIkMCInICdzZWQg NTBxICIkMCInOyBkbwoJICBpZiAodGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5n IiA9ICJYYGV2YWwgJGNtZGAiKSAyPi9kZXYvbnVsbAoJICB0aGVuCgkgICAg YnJlYWsKCSAgZmkKCSAgcHJldj0iJGNtZCIKCWRvbmUKCglpZiB0ZXN0ICIk cHJldiIgIT0gJ3NlZCA1MHEgIiQwIic7IHRoZW4KCSAgZWNob190ZXN0X3N0 cmluZz1gZXZhbCAkcHJldmAKCSAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcK CSAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVM TC0vYmluL3NofX0gIiQwIiAkezErIiRAIn0KCWVsc2UKCSAgIyBPb3BzLiAg V2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4K CSAgZWNobz1lY2hvCglmaQogICAgICBmaQogICAgZmkKICBmaQpmaQpmaQoK IyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBw YXNzaW5nIHRvIGxpYnRvb2wgZnJvbQojIHRoZSBNYWtlZmlsZSwgaW5zdGVh ZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRl ci4KRUNITz0kZWNobwppZiB0ZXN0ICJYJEVDSE8iID0gIlgkQ09ORklHX1NI RUxMICQwIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KICAgRUNITz0iJENPTkZJ R19TSEVMTCBcXFwkXCQwIC0tZmFsbGJhY2stZWNobyIKZmkKCgoKIyBOYW1l IG9mIHRoZSBob3N0LgojIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZS My4yLCBMaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAojIHNv IHVuYW1lIGdldHMgcnVuIHRvby4KYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8 fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCgpleGVjIDY+JjEK CiMKIyBJbml0aWFsaXphdGlvbnMuCiMKYWNfZGVmYXVsdF9wcmVmaXg9L3Vz ci9sb2NhbAphY19jb25maWdfbGlib2JqX2Rpcj0uCmNyb3NzX2NvbXBpbGlu Zz1ubwpzdWJkaXJzPQpNRkxBR1M9Ck1BS0VGTEFHUz0KU0hFTEw9JHtDT05G SUdfU0hFTEwtL2Jpbi9zaH0KCiMgTWF4aW11bSBudW1iZXIgb2YgbGluZXMg dG8gcHV0IGluIGEgc2hlbGwgaGVyZSBkb2N1bWVudC4KIyBUaGlzIHZhcmlh YmxlIHNlZW1zIG9ic29sZXRlLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlIHJl bW92ZWQsIGFuZAojIG9ubHkgYWNfbWF4X3NlZF9saW5lcyBzaG91bGQgYmUg dXNlZC4KOiAke2FjX21heF9oZXJlX2xpbmVzPTM4fQoKIyBJZGVudGl0eSBv ZiB0aGlzIHBhY2thZ2UuClBBQ0tBR0VfTkFNRT0nUXVpY2tOZXQnClBBQ0tB R0VfVEFSTkFNRT0ncXVpY2tuZXQnClBBQ0tBR0VfVkVSU0lPTj0ndjNfMTEn ClBBQ0tBR0VfU1RSSU5HPSdRdWlja05ldCB2M18xMScKUEFDS0FHRV9CVUdS RVBPUlQ9J3F1aWNrbmV0LWJ1Z3NASUNTSS5CZXJrZWxleS5FRFUnCgphY191 bmlxdWVfZmlsZT0iUXVpY2tOZXQuaCIKYWNfZGVmYXVsdF9wcmVmaXg9L3Vz ci9sb2NhbAojIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3Qg dGVzdHMuCmFjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKI2luY2x1ZGUgPHN0ZGlv Lmg+CiNpZiBIQVZFX1NZU19UWVBFU19ICiMgaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CiNlbmRpZgojaWYgSEFWRV9TWVNfU1RBVF9ICiMgaW5jbHVkZSA8c3lz L3N0YXQuaD4KI2VuZGlmCiNpZiBTVERDX0hFQURFUlMKIyBpbmNsdWRlIDxz dGRsaWIuaD4KIyBpbmNsdWRlIDxzdGRkZWYuaD4KI2Vsc2UKIyBpZiBIQVZF X1NURExJQl9ICiMgIGluY2x1ZGUgPHN0ZGxpYi5oPgojIGVuZGlmCiNlbmRp ZgojaWYgSEFWRV9TVFJJTkdfSAojIGlmICFTVERDX0hFQURFUlMgJiYgSEFW RV9NRU1PUllfSAojICBpbmNsdWRlIDxtZW1vcnkuaD4KIyBlbmRpZgojIGlu Y2x1ZGUgPHN0cmluZy5oPgojZW5kaWYKI2lmIEhBVkVfU1RSSU5HU19ICiMg aW5jbHVkZSA8c3RyaW5ncy5oPgojZW5kaWYKI2lmIEhBVkVfSU5UVFlQRVNf SAojIGluY2x1ZGUgPGludHR5cGVzLmg+CiNlbHNlCiMgaWYgSEFWRV9TVERJ TlRfSAojICBpbmNsdWRlIDxzdGRpbnQuaD4KIyBlbmRpZgojZW5kaWYKI2lm IEhBVkVfVU5JU1REX0gKIyBpbmNsdWRlIDx1bmlzdGQuaD4KI2VuZGlmIgoK YWNfc3Vic3RfdmFycz0nU0hFTEwgUEFUSF9TRVBBUkFUT1IgUEFDS0FHRV9O QU1FIFBBQ0tBR0VfVEFSTkFNRSBQQUNLQUdFX1ZFUlNJT04gUEFDS0FHRV9T VFJJTkcgUEFDS0FHRV9CVUdSRVBPUlQgZXhlY19wcmVmaXggcHJlZml4IHBy b2dyYW1fdHJhbnNmb3JtX25hbWUgYmluZGlyIHNiaW5kaXIgbGliZXhlY2Rp ciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0 ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIg bWFuZGlyIGJ1aWxkX2FsaWFzIGhvc3RfYWxpYXMgdGFyZ2V0X2FsaWFzIERF RlMgRUNIT19DIEVDSE9fTiBFQ0hPX1QgTElCUyBidWlsZCBidWlsZF9jcHUg YnVpbGRfdmVuZG9yIGJ1aWxkX29zIGhvc3QgaG9zdF9jcHUgaG9zdF92ZW5k b3IgaG9zdF9vcyB0YXJnZXQgdGFyZ2V0X2NwdSB0YXJnZXRfdmVuZG9yIHRh cmdldF9vcyBMRCBDQyBDRkxBR1MgTERGTEFHUyBDUFBGTEFHUyBhY19jdF9D QyBFWEVFWFQgT0JKRVhUIENYWCBDWFhGTEFHUyBhY19jdF9DWFggSU5TVEFM TF9QUk9HUkFNIElOU1RBTExfU0NSSVBUIElOU1RBTExfREFUQSBSQU5MSUIg YWNfY3RfUkFOTElCIExOX1MgRUNITyBTVFJJUCBhY19jdF9TVFJJUCBDUFAg RUdSRVAgTElCVE9PTCBQS0dfQ09ORklHIFJUU1RfQ0ZMQUdTIFJUU1RfTElC UyBoYXZlX2xpYnJ0c3QgZGVmYXVsdF9tbHAzX2JsYXMgSU5DUyB0ZXN0ZGF0 YV9kaXIgYWxsX2xpYnMgUU5fQlVJTERfTElCX1NQRUMgUU5fSU5TVEFMTF9M SUJfU1BFQyBRTl9CVUlMRF9JTkNfU1BFQyBRTl9JTlNUQUxMX0lOQ19TUEVD IFFOX1NSQ0RJUiBMSUJPQkpTIExUTElCT0JKUycKYWNfc3Vic3RfZmlsZXM9 JycKCiMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9u cy4KYWNfaW5pdF9oZWxwPQphY19pbml0X3ZlcnNpb249ZmFsc2UKIyBUaGUg dmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMs IHdpdGgKIyBkYXNoZXMgY2hhbmdlZCB0byB1bmRlcmxpbmVzLgpjYWNoZV9m aWxlPS9kZXYvbnVsbApleGVjX3ByZWZpeD1OT05FCm5vX2NyZWF0ZT0Kbm9f cmVjdXJzaW9uPQpwcmVmaXg9Tk9ORQpwcm9ncmFtX3ByZWZpeD1OT05FCnBy b2dyYW1fc3VmZml4PU5PTkUKcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgs eCwKc2lsZW50PQpzaXRlPQpzcmNkaXI9CnZlcmJvc2U9CnhfaW5jbHVkZXM9 Tk9ORQp4X2xpYnJhcmllcz1OT05FCgojIEluc3RhbGxhdGlvbiBkaXJlY3Rv cnkgb3B0aW9ucy4KIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVz ZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCiMgYW5k IGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIGJh c2VkIG9uIGV4ZWNfcHJlZml4CiMgYnkgZGVmYXVsdCB3aWxsIGFjdHVhbGx5 IGNoYW5nZS4KIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1 c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KYmluZGlyPSck e2V4ZWNfcHJlZml4fS9iaW4nCnNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3Ni aW4nCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCmRhdGFk aXI9JyR7cHJlZml4fS9zaGFyZScKc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0 YycKc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCmxvY2Fsc3RhdGVk aXI9JyR7cHJlZml4fS92YXInCmxpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGli JwppbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKb2xkaW5jbHVkZWRp cj0nL3Vzci9pbmNsdWRlJwppbmZvZGlyPScke3ByZWZpeH0vaW5mbycKbWFu ZGlyPScke3ByZWZpeH0vbWFuJwoKYWNfcHJldj0KZm9yIGFjX29wdGlvbgpk bwogICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVu dCwgYXNzaWduIGl0LgogIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgog ICAgZXZhbCAiJGFjX3ByZXY9XCRhY19vcHRpb24iCiAgICBhY19wcmV2PQog ICAgY29udGludWUKICBmaQoKICBhY19vcHRhcmc9YGV4cHIgIngkYWNfb3B0 aW9uIiA6ICd4W149XSo9XCguKlwpJ2AKCiAgIyBBY2NlcHQgdGhlIGltcG9y dGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFn bm9zZSB0eXBvcy4KCiAgY2FzZSAkYWNfb3B0aW9uIGluCgogIC1iaW5kaXIg fCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkp CiAgICBhY19wcmV2PWJpbmRpciA7OwogIC1iaW5kaXI9KiB8IC0tYmluZGly PSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSop CiAgICBiaW5kaXI9JGFjX29wdGFyZyA7OwoKICAtYnVpbGQgfCAtLWJ1aWxk IHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQogICAgYWNfcHJldj1idWlsZF9h bGlhcyA7OwogIC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1idWlsPSogfCAt LWJ1aT0qIHwgLS1idT0qKQogICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7 OwoKICAtY2FjaGUtZmlsZSB8IC0tY2FjaGUtZmlsZSB8IC0tY2FjaGUtZmls IHwgLS1jYWNoZS1maSBcCiAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0t Y2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpCiAgICBhY19w cmV2PWNhY2hlX2ZpbGUgOzsKICAtY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1m aWxlPSogfCAtLWNhY2hlLWZpbD0qIHwgLS1jYWNoZS1maT0qIFwKICB8IC0t Y2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0q IHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQogICAgY2FjaGVfZmlsZT0k YWNfb3B0YXJnIDs7CgogIC0tY29uZmlnLWNhY2hlIHwgLUMpCiAgICBjYWNo ZV9maWxlPWNvbmZpZy5jYWNoZSA7OwoKICAtZGF0YWRpciB8IC0tZGF0YWRp ciB8IC0tZGF0YWRpIHwgLS1kYXRhZCB8IC0tZGF0YSB8IC0tZGF0IHwgLS1k YSkKICAgIGFjX3ByZXY9ZGF0YWRpciA7OwogIC1kYXRhZGlyPSogfCAtLWRh dGFkaXI9KiB8IC0tZGF0YWRpPSogfCAtLWRhdGFkPSogfCAtLWRhdGE9KiB8 IC0tZGF0PSogXAogIHwgLS1kYT0qKQogICAgZGF0YWRpcj0kYWNfb3B0YXJn IDs7CgogIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKICAgIGFjX2ZlYXR1 cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdg CiAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwg dmFyaWFibGUgbmFtZXMuCiAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4q W14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKICAgICAgeyBlY2hv ICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX2Zl YXR1cmUiID4mMgogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KICAgIGFj X2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAog ICAgZXZhbCAiZW5hYmxlXyRhY19mZWF0dXJlPW5vIiA7OwoKICAtZW5hYmxl LSogfCAtLWVuYWJsZS0qKQogICAgYWNfZmVhdHVyZT1gZXhwciAieCRhY19v cHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAogICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVz LgogICAgZXhwciAieCRhY19mZWF0dXJlIiA6ICIuKlteLV8kYXNfY3JfYWxu dW1dIiA+L2Rldi9udWxsICYmCiAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJv cjogaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY19mZWF0dXJlIiA+JjIKICAg eyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICBhY19mZWF0dXJlPWBlY2hv ICRhY19mZWF0dXJlIHwgc2VkICdzLy0vXy9nJ2AKICAgIGNhc2UgJGFjX29w dGlvbiBpbgogICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFy ZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OwogICAgICAqKSBhY19v cHRhcmc9eWVzIDs7CiAgICBlc2FjCiAgICBldmFsICJlbmFibGVfJGFjX2Zl YXR1cmU9JyRhY19vcHRhcmcnIiA7OwoKICAtZXhlYy1wcmVmaXggfCAtLWV4 ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCiAg fCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUgfCAtLWV4ZWMtcHIgfCAtLWV4 ZWMtcCB8IC0tZXhlYy0gXAogIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQog ICAgYWNfcHJldj1leGVjX3ByZWZpeCA7OwogIC1leGVjLXByZWZpeD0qIHwg LS1leGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXBy ZWZpPSogXAogIHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0t ZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcCiAgfCAtLWV4 ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopCiAgICBleGVjX3ByZWZpeD0kYWNf b3B0YXJnIDs7CgogIC1nYXMgfCAtLWdhcyB8IC0tZ2EgfCAtLWcpCiAgICAj IE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4KICAgIHdpdGhfZ2FzPXllcyA7 OwoKICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQogICAg YWNfaW5pdF9oZWxwPWxvbmcgOzsKICAtaGVscD1yKiB8IC0taGVscD1yKiB8 IC0taGVsPXIqIHwgLS1oZT1yKiB8IC1ociopCiAgICBhY19pbml0X2hlbHA9 cmVjdXJzaXZlIDs7CiAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1z KiB8IC0taGU9cyogfCAtaHMqKQogICAgYWNfaW5pdF9oZWxwPXNob3J0IDs7 CgogIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQogICAgYWNfcHJl dj1ob3N0X2FsaWFzIDs7CiAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9 KiB8IC0taG89KikKICAgIGhvc3RfYWxpYXM9JGFjX29wdGFyZyA7OwoKICAt aW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1p bmNsdWRlZCB8IC0taW5jbHVkZSBcCiAgfCAtLWluY2x1ZCB8IC0taW5jbHUg fCAtLWluY2wgfCAtLWluYykKICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7Owog IC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRp PSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcCiAgfCAtLWluY2x1 ZD0qIHwgLS1pbmNsdT0qIHwgLS1pbmNsPSogfCAtLWluYz0qKQogICAgaW5j bHVkZWRpcj0kYWNfb3B0YXJnIDs7CgogIC1pbmZvZGlyIHwgLS1pbmZvZGly IHwgLS1pbmZvZGkgfCAtLWluZm9kIHwgLS1pbmZvIHwgLS1pbmYpCiAgICBh Y19wcmV2PWluZm9kaXIgOzsKICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSog fCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0q KQogICAgaW5mb2Rpcj0kYWNfb3B0YXJnIDs7CgogIC1saWJkaXIgfCAtLWxp YmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCiAgICBhY19wcmV2PWxpYmRpciA7 OwogIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxp YmQ9KikKICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7CgogIC1saWJleGVjZGly IHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwg LS1saWJleGVjIFwKICB8IC0tbGliZXhlIHwgLS1saWJleCB8IC0tbGliZSkK ICAgIGFjX3ByZXY9bGliZXhlY2RpciA7OwogIC1saWJleGVjZGlyPSogfCAt LWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSog fCAtLWxpYmV4ZWM9KiBcCiAgfCAtLWxpYmV4ZT0qIHwgLS1saWJleD0qIHwg LS1saWJlPSopCiAgICBsaWJleGVjZGlyPSRhY19vcHRhcmcgOzsKCiAgLWxv Y2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVk aSB8IC0tbG9jYWxzdGF0ZWQgXAogIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2Nh bHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IFwKICB8IC0tbG9jYWxz IHwgLS1sb2NhbCB8IC0tbG9jYSB8IC0tbG9jIHwgLS1sbykKICAgIGFjX3By ZXY9bG9jYWxzdGF0ZWRpciA7OwogIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxv Y2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3Rh dGVkPSogXAogIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwg LS1sb2NhbHN0YT0qIHwgLS1sb2NhbHN0PSogXAogIHwgLS1sb2NhbHM9KiB8 IC0tbG9jYWw9KiB8IC0tbG9jYT0qIHwgLS1sb2M9KiB8IC0tbG89KikKICAg IGxvY2Fsc3RhdGVkaXI9JGFjX29wdGFyZyA7OwoKICAtbWFuZGlyIHwgLS1t YW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1t KQogICAgYWNfcHJldj1tYW5kaXIgOzsKICAtbWFuZGlyPSogfCAtLW1hbmRp cj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0q IHwgLS1tPSopCiAgICBtYW5kaXI9JGFjX29wdGFyZyA7OwoKICAtbmZwIHwg LS1uZnAgfCAtLW5mKQogICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1m cC4KICAgIHdpdGhfZnA9bm8gOzsKCiAgLW5vLWNyZWF0ZSB8IC0tbm8tY3Jl YXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKICB8 IC0tbm8tY3IgfCAtLW5vLWMgfCAtbikKICAgIG5vX2NyZWF0ZT15ZXMgOzsK CiAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1 cnNpbyB8IC0tbm8tcmVjdXJzaSBcCiAgfCAtLW5vLXJlY3VycyB8IC0tbm8t cmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5v LXIpCiAgICBub19yZWN1cnNpb249eWVzIDs7CgogIC1vbGRpbmNsdWRlZGly IHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGlu Y2x1ZGVkIFwKICB8IC0tb2xkaW5jbHVkZSB8IC0tb2xkaW5jbHVkIHwgLS1v bGRpbmNsdSB8IC0tb2xkaW5jbCB8IC0tb2xkaW5jIFwKICB8IC0tb2xkaW4g fCAtLW9sZGkgfCAtLW9sZCB8IC0tb2wgfCAtLW8pCiAgICBhY19wcmV2PW9s ZGluY2x1ZGVkaXIgOzsKICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNs dWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0q IFwKICB8IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xk aW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwgLS1vbGRpbmM9KiBcCiAgfCAtLW9s ZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikK ICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwoKICAtcHJlZml4IHwg LS1wcmVmaXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwg LS1wKQogICAgYWNfcHJldj1wcmVmaXggOzsKICAtcHJlZml4PSogfCAtLXBy ZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1w cj0qIHwgLS1wPSopCiAgICBwcmVmaXg9JGFjX29wdGFyZyA7OwoKICAtcHJv Z3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXBy ZWZpIHwgLS1wcm9ncmFtLXByZWYgXAogIHwgLS1wcm9ncmFtLXByZSB8IC0t cHJvZ3JhbS1wciB8IC0tcHJvZ3JhbS1wKQogICAgYWNfcHJldj1wcm9ncmFt X3ByZWZpeCA7OwogIC1wcm9ncmFtLXByZWZpeD0qIHwgLS1wcm9ncmFtLXBy ZWZpeD0qIHwgLS1wcm9ncmFtLXByZWZpPSogXAogIHwgLS1wcm9ncmFtLXBy ZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1w cm9ncmFtLXA9KikKICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsK CiAgLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJv Z3JhbS1zdWZmaSB8IC0tcHJvZ3JhbS1zdWZmIFwKICB8IC0tcHJvZ3JhbS1z dWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKICAgIGFjX3ByZXY9 cHJvZ3JhbV9zdWZmaXggOzsKICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJv Z3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKICB8IC0tcHJv Z3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9 KiB8IC0tcHJvZ3JhbS1zPSopCiAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0 YXJnIDs7CgogIC1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lIHwgLS1wcm9ncmFt LXRyYW5zZm9ybS1uYW1lIFwKICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFt IHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcCiAgfCAtLXByb2dyYW0tdHJh bnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCiAgfCAtLXByb2dy YW0tdHJhbnNmb3JtIHwgLS1wcm9ncmFtLXRyYW5zZm9yIFwKICB8IC0tcHJv Z3JhbS10cmFuc2ZvIHwgLS1wcm9ncmFtLXRyYW5zZiBcCiAgfCAtLXByb2dy YW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCiAgfCAtLXByb2dyLXRyYSB8 IC0tcHJvZ3JhbS10ciB8IC0tcHJvZ3JhbS10KQogICAgYWNfcHJldj1wcm9n cmFtX3RyYW5zZm9ybV9uYW1lIDs7CiAgLXByb2dyYW0tdHJhbnNmb3JtLW5h bWU9KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKICB8IC0tcHJv Z3JhbS10cmFuc2Zvcm0tbmFtPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5h PSogXAogIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uPSogfCAtLXByb2dyYW0t dHJhbnNmb3JtLT0qIFwKICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm09KiB8IC0t cHJvZ3JhbS10cmFuc2Zvcj0qIFwKICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSog fCAtLXByb2dyYW0tdHJhbnNmPSogXAogIHwgLS1wcm9ncmFtLXRyYW5zPSog fCAtLXByb2dyYW0tdHJhbj0qIFwKICB8IC0tcHJvZ3ItdHJhPSogfCAtLXBy b2dyYW0tdHI9KiB8IC0tcHJvZ3JhbS10PSopCiAgICBwcm9ncmFtX3RyYW5z Zm9ybV9uYW1lPSRhY19vcHRhcmcgOzsKCiAgLXEgfCAtcXVpZXQgfCAtLXF1 aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKICB8IC1zaWxl bnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKICAg IHNpbGVudD15ZXMgOzsKCiAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNi aW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCiAgICBh Y19wcmV2PXNiaW5kaXIgOzsKICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSog fCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXAogIHwgLS1z Ymk9KiB8IC0tc2I9KikKICAgIHNiaW5kaXI9JGFjX29wdGFyZyA7OwoKICAt c2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRz dGF0ZWRpIFwKICB8IC0tc2hhcmVkc3RhdGVkIHwgLS1zaGFyZWRzdGF0ZSB8 IC0tc2hhcmVkc3RhdCB8IC0tc2hhcmVkc3RhIFwKICB8IC0tc2hhcmVkc3Qg fCAtLXNoYXJlZHMgfCAtLXNoYXJlZCB8IC0tc2hhcmUgfCAtLXNoYXIgXAog IHwgLS1zaGEgfCAtLXNoKQogICAgYWNfcHJldj1zaGFyZWRzdGF0ZWRpciA7 OwogIC1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRpcj0qIHwg LS1zaGFyZWRzdGF0ZWRpPSogXAogIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0t c2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9 KiBcCiAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVk PSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCiAgfCAtLXNoYT0qIHwgLS1z aD0qKQogICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7OwoKICAtc2l0 ZSB8IC0tc2l0ZSB8IC0tc2l0KQogICAgYWNfcHJldj1zaXRlIDs7CiAgLXNp dGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikKICAgIHNpdGU9JGFjX29wdGFy ZyA7OwoKICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNk IHwgLS1zcmMgfCAtLXNyKQogICAgYWNfcHJldj1zcmNkaXIgOzsKICAtc3Jj ZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAt LXNyYz0qIHwgLS1zcj0qKQogICAgc3JjZGlyPSRhY19vcHRhcmcgOzsKCiAg LXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0t c3lzY29uZmQgfCAtLXN5c2NvbmYgXAogIHwgLS1zeXNjb24gfCAtLXN5c2Nv IHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQogICAgYWNfcHJldj1zeXNjb25m ZGlyIDs7CiAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1z eXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwKICB8 IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSog fCAtLXN5PSopCiAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsKCiAgLXRh cmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwg LS10YSB8IC0tdCkKICAgIGFjX3ByZXY9dGFyZ2V0X2FsaWFzIDs7CiAgLXRh cmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwg LS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQogICAgdGFyZ2V0X2FsaWFzPSRh Y19vcHRhcmcgOzsKCiAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0t dmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKICAgIHZlcmJvc2U9eWVzIDs7 CgogIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNp IHwgLS12ZXJzIHwgLVYpCiAgICBhY19pbml0X3ZlcnNpb249OiA7OwoKICAt d2l0aC0qIHwgLS13aXRoLSopCiAgICBhY19wYWNrYWdlPWBleHByICJ4JGFj X29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAogICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVz LgogICAgZXhwciAieCRhY19wYWNrYWdlIiA6ICIuKlteLV8kYXNfY3JfYWxu dW1dIiA+L2Rldi9udWxsICYmCiAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJv cjogaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKICAg eyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICBhY19wYWNrYWdlPWBlY2hv ICRhY19wYWNrYWdlfCBzZWQgJ3MvLS9fL2cnYAogICAgY2FzZSAkYWNfb3B0 aW9uIGluCiAgICAgICo9KikgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJn IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CiAgICAgICopIGFjX29w dGFyZz15ZXMgOzsKICAgIGVzYWMKICAgIGV2YWwgIndpdGhfJGFjX3BhY2th Z2U9JyRhY19vcHRhcmcnIiA7OwoKICAtd2l0aG91dC0qIHwgLS13aXRob3V0 LSopCiAgICBhY19wYWNrYWdlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0q d2l0aG91dC1cKC4qXCknYAogICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUg bm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgZXhwciAieCRh Y19wYWNrYWdlIiA6ICIuKlteLV8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxs ICYmCiAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBwYWNr YWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKICAgeyAoZXhpdCAxKTsgZXhp dCAxOyB9OyB9CiAgICBhY19wYWNrYWdlPWBlY2hvICRhY19wYWNrYWdlIHwg c2VkICdzLy0vXy9nJ2AKICAgIGV2YWwgIndpdGhfJGFjX3BhY2thZ2U9bm8i IDs7CgogIC0teCkKICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4KICAg IHdpdGhfeD15ZXMgOzsKCiAgLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZXMg fCAtLXgtaW5jbHVkZSB8IC0teC1pbmNsdWQgfCAtLXgtaW5jbHUgXAogIHwg LS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWluIHwgLS14LWkpCiAgICBhY19w cmV2PXhfaW5jbHVkZXMgOzsKICAteC1pbmNsdWRlcz0qIHwgLS14LWluY2x1 ZGVzPSogfCAtLXgtaW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWlu Y2x1PSogXAogIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0q IHwgLS14LWk9KikKICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OwoKICAt eC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwg LS14LWxpYnJhcmkgXAogIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0t eC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQogICAgYWNfcHJl dj14X2xpYnJhcmllcyA7OwogIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJh cmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwKICB8 IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0t eC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKICAgIHhfbGlicmFyaWVz PSRhY19vcHRhcmcgOzsKCiAgLSopIHsgZWNobyAiJGFzX21lOiBlcnJvcjog dW5yZWNvZ25pemVkIG9wdGlvbjogJGFjX29wdGlvbgpUcnkgXGAkMCAtLWhl bHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyCiAgIHsgKGV4aXQgMSk7 IGV4aXQgMTsgfTsgfQogICAgOzsKCiAgKj0qKQogICAgYWNfZW52dmFyPWBl eHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYAogICAgIyBSZWpl Y3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5h bWVzLgogICAgZXhwciAieCRhY19lbnZ2YXIiIDogIi4qW15fJGFzX2NyX2Fs bnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICB7IGVjaG8gIiRhc19tZTogZXJy b3I6IGludmFsaWQgdmFyaWFibGUgbmFtZTogJGFjX2VudnZhciIgPiYyCiAg IHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogICAgYWNfb3B0YXJnPWBlY2hv ICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYAogICAg ZXZhbCAiJGFjX2VudnZhcj0nJGFjX29wdGFyZyciCiAgICBleHBvcnQgJGFj X2VudnZhciA7OwoKICAqKQogICAgIyBGSVhNRTogc2hvdWxkIGJlIHJlbW92 ZWQgaW4gYXV0b2NvbmYgMy4wLgogICAgZWNobyAiJGFzX21lOiBXQVJOSU5H OiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+ JjIKICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2Fs bnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICBlY2hvICIkYXNfbWU6IFdBUk5J Tkc6IGludmFsaWQgaG9zdCB0eXBlOiAkYWNfb3B0aW9uIiA+JjIKICAgIDog JHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29w dGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KICAgIDs7CgogIGVz YWMKZG9uZQoKaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCiAgYWNfb3B0 aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAogIHsgZWNo byAiJGFzX21lOiBlcnJvcjogbWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0 aW9uIiA+JjIKICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmZpCgojIEJl IHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KZm9yIGFjX3ZhciBpbiBl eGVjX3ByZWZpeCBwcmVmaXgKZG8KICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFj X3ZhcmAKICBjYXNlICRhY192YWwgaW4KICAgIFtcXC8kXSogfCA/OltcXC9d KiB8IE5PTkUgfCAnJyApIDs7CiAgICAqKSAgeyBlY2hvICIkYXNfbWU6IGVy cm9yOiBleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3Ig LS0kYWNfdmFyOiAkYWNfdmFsIiA+JjIKICAgeyAoZXhpdCAxKTsgZXhpdCAx OyB9OyB9OzsKICBlc2FjCmRvbmUKCiMgQmUgc3VyZSB0byBoYXZlIGFic29s dXRlIHBhdGhzLgpmb3IgYWNfdmFyIGluIGJpbmRpciBzYmluZGlyIGxpYmV4 ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIFwKICAg ICAgICAgICAgICBsb2NhbHN0YXRlZGlyIGxpYmRpciBpbmNsdWRlZGlyIG9s ZGluY2x1ZGVkaXIgaW5mb2RpciBtYW5kaXIKZG8KICBldmFsIGFjX3ZhbD0k YGVjaG8gJGFjX3ZhcmAKICBjYXNlICRhY192YWwgaW4KICAgIFtcXC8kXSog fCA/OltcXC9dKiApIDs7CiAgICAqKSAgeyBlY2hvICIkYXNfbWU6IGVycm9y OiBleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0k YWNfdmFyOiAkYWNfdmFsIiA+JjIKICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9 OyB9OzsKICBlc2FjCmRvbmUKCiMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdo byBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcK IyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMuCiMg RklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KYnVpbGQ9JGJ1aWxkX2FsaWFz Cmhvc3Q9JGhvc3RfYWxpYXMKdGFyZ2V0PSR0YXJnZXRfYWxpYXMKCiMgRklY TUU6IFRvIHJlbW92ZSBzb21lIGRheS4KaWYgdGVzdCAieCRob3N0X2FsaWFz IiAhPSB4OyB0aGVuCiAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0 aGVuCiAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKICAgIGVjaG8gIiRhc19t ZTogV0FSTklORzogSWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQg dHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KICAgIElmIGEgY3Jvc3MgY29tcGls ZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBi ZSB1c2VkLiIgPiYyCiAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAi eCRob3N0X2FsaWFzIjsgdGhlbgogICAgY3Jvc3NfY29tcGlsaW5nPXllcwog IGZpCmZpCgphY190b29sX3ByZWZpeD0KdGVzdCAtbiAiJGhvc3RfYWxpYXMi ICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQoKdGVzdCAiJHNpbGVu dCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAoKCiMgRmluZCB0aGUgc291 cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KaWYg dGVzdCAteiAiJHNyY2RpciI7IHRoZW4KICBhY19zcmNkaXJfZGVmYXVsdGVk PXllcwogICMgVHJ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNj cmlwdCwgdGhlbiBpdHMgcGFyZW50LgogIGFjX2NvbmZkaXI9YChkaXJuYW1l ICIkMCIpIDI+L2Rldi9udWxsIHx8CiRhc19leHByIFgiJDAiIDogJ1hcKC4q W14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCiAgICAgICAgIFgiJDAiIDog J1hcKC8vXClbXi9dJyBcfCBcCiAgICAgICAgIFgiJDAiIDogJ1hcKC8vXCkk JyBcfCBcCiAgICAgICAgIFgiJDAiIDogJ1hcKC9cKScgXHwgXAogICAgICAg ICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKZWNobyBYIiQwIiB8 CiAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBz Ly9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsg cTsgfQogIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQogIAkgIC9e WFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8uLzsgcSdgCiAg c3JjZGlyPSRhY19jb25mZGlyCiAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFj X3VuaXF1ZV9maWxlOyB0aGVuCiAgICBzcmNkaXI9Li4KICBmaQplbHNlCiAg YWNfc3JjZGlyX2RlZmF1bHRlZD1ubwpmaQppZiB0ZXN0ICEgLXIgJHNyY2Rp ci8kYWNfdW5pcXVlX2ZpbGU7IHRoZW4KICBpZiB0ZXN0ICIkYWNfc3JjZGly X2RlZmF1bHRlZCIgPSB5ZXM7IHRoZW4KICAgIHsgZWNobyAiJGFzX21lOiBl cnJvcjogY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBp biAkYWNfY29uZmRpciBvciAuLiIgPiYyCiAgIHsgKGV4aXQgMSk7IGV4aXQg MTsgfTsgfQogIGVsc2UKICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fu bm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGly IiA+JjIKICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgZmkKZmkKKGNk ICRzcmNkaXIgJiYgdGVzdCAtciAuLyRhY191bmlxdWVfZmlsZSkgMj4vZGV2 L251bGwgfHwKICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IHNvdXJjZXMgYXJl IGluICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsi ID4mMgogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0Kc3JjZGlyPWBlY2hv ICIkc3JjZGlyIiB8IHNlZCAncyVcKFteXFwvXVwpW1xcL10qJCVcMSUnYAph Y19lbnZfYnVpbGRfYWxpYXNfc2V0PSR7YnVpbGRfYWxpYXMrc2V0fQphY19l bnZfYnVpbGRfYWxpYXNfdmFsdWU9JGJ1aWxkX2FsaWFzCmFjX2N2X2Vudl9i dWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9CmFjX2N2X2Vudl9i dWlsZF9hbGlhc192YWx1ZT0kYnVpbGRfYWxpYXMKYWNfZW52X2hvc3RfYWxp YXNfc2V0PSR7aG9zdF9hbGlhcytzZXR9CmFjX2Vudl9ob3N0X2FsaWFzX3Zh bHVlPSRob3N0X2FsaWFzCmFjX2N2X2Vudl9ob3N0X2FsaWFzX3NldD0ke2hv c3RfYWxpYXMrc2V0fQphY19jdl9lbnZfaG9zdF9hbGlhc192YWx1ZT0kaG9z dF9hbGlhcwphY19lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlh cytzZXR9CmFjX2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlh cwphY19jdl9lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlhcytz ZXR9CmFjX2N2X2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlh cwphY19lbnZfTERfc2V0PSR7TEQrc2V0fQphY19lbnZfTERfdmFsdWU9JExE CmFjX2N2X2Vudl9MRF9zZXQ9JHtMRCtzZXR9CmFjX2N2X2Vudl9MRF92YWx1 ZT0kTEQKYWNfZW52X0NDX3NldD0ke0NDK3NldH0KYWNfZW52X0NDX3ZhbHVl PSRDQwphY19jdl9lbnZfQ0Nfc2V0PSR7Q0Mrc2V0fQphY19jdl9lbnZfQ0Nf dmFsdWU9JENDCmFjX2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KYWNf ZW52X0NGTEFHU192YWx1ZT0kQ0ZMQUdTCmFjX2N2X2Vudl9DRkxBR1Nfc2V0 PSR7Q0ZMQUdTK3NldH0KYWNfY3ZfZW52X0NGTEFHU192YWx1ZT0kQ0ZMQUdT CmFjX2Vudl9MREZMQUdTX3NldD0ke0xERkxBR1Mrc2V0fQphY19lbnZfTERG TEFHU192YWx1ZT0kTERGTEFHUwphY19jdl9lbnZfTERGTEFHU19zZXQ9JHtM REZMQUdTK3NldH0KYWNfY3ZfZW52X0xERkxBR1NfdmFsdWU9JExERkxBR1MK YWNfZW52X0NQUEZMQUdTX3NldD0ke0NQUEZMQUdTK3NldH0KYWNfZW52X0NQ UEZMQUdTX3ZhbHVlPSRDUFBGTEFHUwphY19jdl9lbnZfQ1BQRkxBR1Nfc2V0 PSR7Q1BQRkxBR1Mrc2V0fQphY19jdl9lbnZfQ1BQRkxBR1NfdmFsdWU9JENQ UEZMQUdTCmFjX2Vudl9DWFhfc2V0PSR7Q1hYK3NldH0KYWNfZW52X0NYWF92 YWx1ZT0kQ1hYCmFjX2N2X2Vudl9DWFhfc2V0PSR7Q1hYK3NldH0KYWNfY3Zf ZW52X0NYWF92YWx1ZT0kQ1hYCmFjX2Vudl9DWFhGTEFHU19zZXQ9JHtDWFhG TEFHUytzZXR9CmFjX2Vudl9DWFhGTEFHU192YWx1ZT0kQ1hYRkxBR1MKYWNf Y3ZfZW52X0NYWEZMQUdTX3NldD0ke0NYWEZMQUdTK3NldH0KYWNfY3ZfZW52 X0NYWEZMQUdTX3ZhbHVlPSRDWFhGTEFHUwphY19lbnZfQ1BQX3NldD0ke0NQ UCtzZXR9CmFjX2Vudl9DUFBfdmFsdWU9JENQUAphY19jdl9lbnZfQ1BQX3Nl dD0ke0NQUCtzZXR9CmFjX2N2X2Vudl9DUFBfdmFsdWU9JENQUAoKIwojIFJl cG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuCiMKaWYgdGVzdCAiJGFjX2luaXRf aGVscCIgPSAibG9uZyI7IHRoZW4KICAjIE9taXQgc29tZSBpbnRlcm5hbCBv ciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBv c2luZy4KICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0 cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgY2F0IDw8X0FDRU9GClxgY29u ZmlndXJlJyBjb25maWd1cmVzIFF1aWNrTmV0IHYzXzExIHRvIGFkYXB0IHRv IG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KClVzYWdlOiAkMCBbT1BUSU9OXS4u LiBbVkFSPVZBTFVFXS4uLgoKVG8gYXNzaWduIGVudmlyb25tZW50IHZhcmlh YmxlcyAoZS5nLiwgQ0MsIENGTEFHUy4uLiksIHNwZWNpZnkgdGhlbSBhcwpW QVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21l IG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgoKRGVmYXVsdHMgZm9yIHRoZSBv cHRpb25zIGFyZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMuCgpDb25maWd1cmF0 aW9uOgogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBo ZWxwIGFuZCBleGl0CiAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxh eSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQogICAgICAtLWhl bHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxs IHRoZSBpbmNsdWRlZCBwYWNrYWdlcwogIC1WLCAtLXZlcnNpb24gICAgICAg ICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAogIC1x LCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5n Li4uJyBtZXNzYWdlcwogICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hl IHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KICAtQywgLS1jb25m aWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmln LmNhY2hlJwogIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVh dGUgb3V0cHV0IGZpbGVzCiAgICAgIC0tc3JjZGlyPURJUiAgICAgICAgZmlu ZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgXGAuLidd CgpfQUNFT0YKCiAgY2F0IDw8X0FDRU9GCkluc3RhbGxhdGlvbiBkaXJlY3Rv cmllczoKICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hp dGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKICAgICAgICAg ICAgICAgICAgICAgICAgICBbJGFjX2RlZmF1bHRfcHJlZml4XQogIC0tZXhl Yy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVu ZGVudCBmaWxlcyBpbiBFUFJFRklYCiAgICAgICAgICAgICAgICAgICAgICAg ICAgW1BSRUZJWF0KCkJ5IGRlZmF1bHQsIFxgbWFrZSBpbnN0YWxsJyB3aWxs IGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbgpcYCRhY19kZWZhdWx0X3ByZWZp eC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBj YW4gc3BlY2lmeQphbiBpbnN0YWxsYXRpb24gcHJlZml4IG90aGVyIHRoYW4g XGAkYWNfZGVmYXVsdF9wcmVmaXgnIHVzaW5nIFxgLS1wcmVmaXgnLApmb3Ig aW5zdGFuY2UgXGAtLXByZWZpeD1cJEhPTUUnLgoKRm9yIGJldHRlciBjb250 cm9sLCB1c2UgdGhlIG9wdGlvbnMgYmVsb3cuCgpGaW5lIHR1bmluZyBvZiB0 aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgogIC0tYmluZGlyPURJUiAg ICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dCiAgLS1z YmluZGlyPURJUiAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMg W0VQUkVGSVgvc2Jpbl0KICAtLWxpYmV4ZWNkaXI9RElSICAgICAgIHByb2dy YW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KICAtLWRhdGFkaXI9 RElSICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRl bnQgZGF0YSBbUFJFRklYL3NoYXJlXQogIC0tc3lzY29uZmRpcj1ESVIgICAg ICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNd CiAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICBtb2RpZmlhYmxlIGFyY2hpdGVj dHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQogIC0tbG9jYWxz dGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRh IFtQUkVGSVgvdmFyXQogIC0tbGliZGlyPURJUiAgICAgICAgICAgb2JqZWN0 IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KICAtLWluY2x1ZGVkaXI9 RElSICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KICAt LW9sZGluY2x1ZGVkaXI9RElSICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24t Z2NjIFsvdXNyL2luY2x1ZGVdCiAgLS1pbmZvZGlyPURJUiAgICAgICAgICBp bmZvIGRvY3VtZW50YXRpb24gW1BSRUZJWC9pbmZvXQogIC0tbWFuZGlyPURJ UiAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW1BSRUZJWC9tYW5dCl9B Q0VPRgoKICBjYXQgPDxcX0FDRU9GCgpQcm9ncmFtIG5hbWVzOgogIC0tcHJv Z3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVuZCBQUkVGSVgg dG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMKICAtLXByb2dyYW0tc3VmZml4 PVNVRkZJWCAgICAgICAgICAgIGFwcGVuZCBTVUZGSVggdG8gaW5zdGFsbGVk IHByb2dyYW0gbmFtZXMKICAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9UFJP R1JBTSAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBu YW1lcwoKU3lzdGVtIHR5cGVzOgogIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZp Z3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCiAgLS1ob3N0 PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0 byBydW4gb24gSE9TVCBbQlVJTERdCiAgLS10YXJnZXQ9VEFSR0VUICAgY29u ZmlndXJlIGZvciBidWlsZGluZyBjb21waWxlcnMgZm9yIFRBUkdFVCBbSE9T VF0KX0FDRU9GCmZpCgppZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhl bgogIGNhc2UgJGFjX2luaXRfaGVscCBpbgogICAgIHNob3J0IHwgcmVjdXJz aXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBRdWlja05ldCB2M18xMToi OzsKICAgZXNhYwogIGNhdCA8PFxfQUNFT0YKCk9wdGlvbmFsIEZlYXR1cmVz OgogIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZF QVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAtLWVuYWJs ZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCiAg LS1lbmFibGUtc2hhcmVkPVBLR1MgIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMg ZGVmYXVsdD1ubwogIC0tZW5hYmxlLXN0YXRpYz1QS0dTICBidWlsZCBzdGF0 aWMgbGlicmFyaWVzIGRlZmF1bHQ9eWVzCiAgLS1lbmFibGUtZmFzdC1pbnN0 YWxsPVBLR1MgIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBkZWZh dWx0PXllcwogIC0tZGlzYWJsZS1saWJ0b29sLWxvY2sgIGF2b2lkIGxvY2tp bmcgKG1pZ2h0IGJyZWFrIHBhcmFsbGVsIGJ1aWxkcykKICAtLWRpc2FibGUt bGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCgpP cHRpb25hbCBQYWNrYWdlczoKICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1 c2UgUEFDS0FHRSBbQVJHPXllc10KICAtLXdpdGhvdXQtUEFDS0FHRSAgICAg ICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9 bm8pCiAgLS13aXRoLWJsYXM9QVJHICAgICAgICAgdXNlIGJsYXMgbGlicmFy eSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgbm8oZGVmYXVsdCksYmxh cyxjYmxhcyxhdGxhcyxwdGF0bGFzLGVzc2wsZXNzbHNtcCxzdW5wZXJmLGFj bWwsbWFjb3MKICAtLXdpdGgtdmVjbGliPUFSRyAgICAgICB1c2UgdmVjdG9y IGxpYnJhcnkgLSBubyhkZWZhdWx0KSxtYXNzCiAgLS13aXRoLXRlc3RkYXRh PUFSRyAgICAgZmluZCBRdWlja05ldCB0ZXN0IGRhdGEgaW4gc3BlY2lmaWVk IGRpcmVjdG9yeQogIC0td2l0aC1ydHN0PUFSRyAgICAgICAgIGZpbmQgcnRz dCB0ZXN0IGxpYnJhcnkgaW4gc3BlY2lmaWVkIGRpcmVjdG9yeQogIC0td2l0 aC1wdGhyZWFkPUFSRyAgICAgIHVzZSBQb3NpeCBUaHJlYWRzIGRlZmF1bHQ9 eWVzCiAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNv bXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KICAtLXdpdGgtcGljICAg ICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0 cyBkZWZhdWx0PXVzZSBib3RoCgpTb21lIGluZmx1ZW50aWFsIGVudmlyb25t ZW50IHZhcmlhYmxlczoKICBMRCAgICAgICAgICBMaW5rZXIgY29tbWFuZAog IENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAogIENGTEFHUyAgICAg IEMgY29tcGlsZXIgZmxhZ3MKICBMREZMQUdTICAgICBsaW5rZXIgZmxhZ3Ms IGUuZy4gLUw8bGliIGRpcj4gaWYgeW91IGhhdmUgbGlicmFyaWVzIGluIGEK ICAgICAgICAgICAgICBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGxpYiBkaXI+ CiAgQ1BQRkxBR1MgICAgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcu IC1JPGluY2x1ZGUgZGlyPiBpZiB5b3UgaGF2ZQogICAgICAgICAgICAgIGhl YWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGly PgogIENYWCAgICAgICAgIEMrKyBjb21waWxlciBjb21tYW5kCiAgQ1hYRkxB R1MgICAgQysrIGNvbXBpbGVyIGZsYWdzCiAgQ1BQICAgICAgICAgQyBwcmVw cm9jZXNzb3IKClVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhl IGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCml0IHRv IGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJk IG5hbWVzL2xvY2F0aW9ucy4KClJlcG9ydCBidWdzIHRvIDxxdWlja25ldC1i dWdzQElDU0kuQmVya2VsZXkuRURVPi4KX0FDRU9GCmZpCgppZiB0ZXN0ICIk YWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCiAgIyBJZiB0aGVy ZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4K ICBhY19wb3BkaXI9YHB3ZGAKICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRp cnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQog ICAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCiAgICBhY19idWlsZGRp cj0uCgppZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCiAgYWNfZGlyX3N1 ZmZpeD0vYGVjaG8gIiRhY19kaXIiIHwgc2VkICdzLF5cLltcXC9dLCwnYAog ICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZm aXguCiAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCIg fCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAplbHNlCiAgYWNfZGlyX3N1ZmZp eD0gYWNfdG9wX2J1aWxkZGlyPQpmaQoKY2FzZSAkc3JjZGlyIGluCiAgLikg ICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBs YWNlLgogICAgYWNfc3JjZGlyPS4KICAgIGlmIHRlc3QgLXogIiRhY190b3Bf YnVpbGRkaXIiOyB0aGVuCiAgICAgICBhY190b3Bfc3JjZGlyPS4KICAgIGVs c2UKICAgICAgIGFjX3RvcF9zcmNkaXI9YGVjaG8gJGFjX3RvcF9idWlsZGRp ciB8IHNlZCAncywvJCwsJ2AKICAgIGZpIDs7CiAgW1xcL10qIHwgPzpbXFwv XSogKSAgIyBBYnNvbHV0ZSBwYXRoLgogICAgYWNfc3JjZGlyPSRzcmNkaXIk YWNfZGlyX3N1ZmZpeDsKICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7Owog ICopICMgUmVsYXRpdmUgcGF0aC4KICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1 aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4CiAgICBhY190b3Bfc3JjZGly PSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7CmVzYWMKIyBEb24ndCBibGlu ZGx5IHBlcmZvcm0gYSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdkYCBz aW5jZSAkYWNfZm9vIGNhbiBiZQojIGFic29sdXRlLgphY19hYnNfYnVpbGRk aXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfYnVpbGRkaXIgJiYgcHdkYAph Y19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHthY190 b3BfYnVpbGRkaXJ9LiAmJiBwd2RgCmFjX2Fic19zcmNkaXI9YGNkICIkYWNf ZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKYWNfYWJzX3RvcF9zcmNk aXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfdG9wX3NyY2RpciAmJiBwd2Rg CgogICAgY2QgJGFjX2RpcgogICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25m aWd1cmU7IG90aGVyd2lzZSBnZXQgQ3lnbnVzIHN0eWxlIGNvbmZpZ3VyZS4K ICAgIGlmIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuZ251OyB0aGVu CiAgICAgIGVjaG8KICAgICAgJFNIRUxMICRhY19zcmNkaXIvY29uZmlndXJl LmdudSAgLS1oZWxwPXJlY3Vyc2l2ZQogICAgZWxpZiB0ZXN0IC1mICRhY19z cmNkaXIvY29uZmlndXJlOyB0aGVuCiAgICAgIGVjaG8KICAgICAgJFNIRUxM ICRhY19zcmNkaXIvY29uZmlndXJlICAtLWhlbHA9cmVjdXJzaXZlCiAgICBl bGlmIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuYWMgfHwKICAgICAg ICAgICB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmluOyB0aGVuCiAg ICAgIGVjaG8KICAgICAgJGFjX2NvbmZpZ3VyZSAtLWhlbHAKICAgIGVsc2UK ICAgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiBubyBjb25maWd1cmF0aW9u IGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mMgogICAgZmkKICAgIGNk ICRhY19wb3BkaXIKICBkb25lCmZpCgp0ZXN0IC1uICIkYWNfaW5pdF9oZWxw IiAmJiBleGl0IDAKaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogIGNhdCA8 PFxfQUNFT0YKUXVpY2tOZXQgY29uZmlndXJlIHYzXzExCmdlbmVyYXRlZCBi eSBHTlUgQXV0b2NvbmYgMi41NwoKQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5 OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIK RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgY29uZmlndXJl IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uCmdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHks IGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KX0FDRU9GCiAgZXhpdCAwCmZp CmV4ZWMgNT5jb25maWcubG9nCmNhdCA+JjUgPDxfQUNFT0YKVGhpcyBmaWxl IGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMg d2hpbGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYg Y29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVkIGJ5 IFF1aWNrTmV0ICRhc19tZSB2M18xMSwgd2hpY2ggd2FzCmdlbmVyYXRlZCBi eSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5l IHdhcwoKICAkICQwICRACgpfQUNFT0YKewpjYXQgPDxfQVNVTkFNRQojIyAt LS0tLS0tLS0gIyMKIyMgUGxhdGZvcm0uICMjCiMjIC0tLS0tLS0tLSAjIwoK aG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVs bCB8IHNlZCAxcWAKdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVs bCB8fCBlY2hvIHVua25vd25gCnVuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4v ZGV2L251bGwgfHwgZWNobyB1bmtub3duYAp1bmFtZSAtcyA9IGAodW5hbWUg LXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKdW5hbWUgLXYgPSBg KHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCgovdXNy L2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9u dWxsIHx8IGVjaG8gdW5rbm93bmAKL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9i aW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25g CgovYmluL2FyY2ggICAgICAgICAgICAgID0gYCgvYmluL2FyY2gpIDI+L2Rl di9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi91c3IvYmlu L2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9u dWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9jb252ZXgvZ2V0c3lz aW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwg fHwgZWNobyB1bmtub3duYApob3N0aW5mbyAgICAgICAgICAgICAgID0gYCho b3N0aW5mbykgMj4vZGV2L251bGwgICAgICAgICAgICAgICB8fCBlY2hvIHVu a25vd25gCi9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGlu ZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vz ci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4v ZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAovYmluL3VuaXZlcnNl ICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbCAgICAg ICAgICB8fCBlY2hvIHVua25vd25gCgpfQVNVTkFNRQoKYXNfc2F2ZV9JRlM9 JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRI CmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYm IGFzX2Rpcj0uCiAgZWNobyAiUEFUSDogJGFzX2RpciIKZG9uZQoKfSA+JjUK CmNhdCA+JjUgPDxfQUNFT0YKCgojIyAtLS0tLS0tLS0tLSAjIwojIyBDb3Jl IHRlc3RzLiAjIwojIyAtLS0tLS0tLS0tLSAjIwoKX0FDRU9GCgoKIyBLZWVw IGEgdHJhY2Ugb2YgdGhlIGNvbW1hbmQgbGluZS4KIyBTdHJpcCBvdXQgLS1u by1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBp bGUgdXAuCiMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qg d2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgojIEFsc28gcXVv dGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhLWNoYXJhY3RlcnMu CiMgTWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGlj YXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgphY19jb25maWd1cmVfYXJncz0K YWNfY29uZmlndXJlX2FyZ3MwPQphY19jb25maWd1cmVfYXJnczE9CmFjX3Nl cD0KYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UKZm9yIGFjX3Bhc3MgaW4gMSAy CmRvCiAgZm9yIGFjX2FyZwogIGRvCiAgICBjYXNlICRhY19hcmcgaW4KICAg IC1uby1jcmVhdGUgfCAtLW5vLWMqIHwgLW4gfCAtbm8tcmVjdXJzaW9uIHwg LS1uby1yKikgY29udGludWUgOzsKICAgIC1xIHwgLXF1aWV0IHwgLS1xdWll dCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCiAgICB8IC1zaWxl bnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKICAg ICAgY29udGludWUgOzsKICAgICoiICIqfCoiCSIqfCpbXFtcXVx+XCNcJFxe XCZcKlwoXClce1x9XFxcfFw7XDxcPlw/XCJcJ10qKQogICAgICBhY19hcmc9 YGVjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7 CiAgICBlc2FjCiAgICBjYXNlICRhY19wYXNzIGluCiAgICAxKSBhY19jb25m aWd1cmVfYXJnczA9IiRhY19jb25maWd1cmVfYXJnczAgJyRhY19hcmcnIiA7 OwogICAgMikKICAgICAgYWNfY29uZmlndXJlX2FyZ3MxPSIkYWNfY29uZmln dXJlX2FyZ3MxICckYWNfYXJnJyIKICAgICAgaWYgdGVzdCAkYWNfbXVzdF9r ZWVwX25leHQgPSB0cnVlOyB0aGVuCiAgICAgICAgYWNfbXVzdF9rZWVwX25l eHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgogICAgICBl bHNlCiAgICAgICAgY2FzZSAkYWNfYXJnIGluCiAgICAgICAgICAqPSogfCAt LWNvbmZpZy1jYWNoZSB8IC1DIHwgLWRpc2FibGUtKiB8IC0tZGlzYWJsZS0q IFwKICAgICAgICAgIHwgLWVuYWJsZS0qIHwgLS1lbmFibGUtKiB8IC1nYXMg fCAtLWcqIHwgLW5mcCB8IC0tbmYqIFwKICAgICAgICAgIHwgLXEgfCAtcXVp ZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwK ICAgICAgICAgIHwgLXdpdGgtKiB8IC0td2l0aC0qIHwgLXdpdGhvdXQtKiB8 IC0td2l0aG91dC0qIHwgLS14KQogICAgICAgICAgICBjYXNlICIkYWNfY29u ZmlndXJlX2FyZ3MwICIgaW4KICAgICAgICAgICAgICAiJGFjX2NvbmZpZ3Vy ZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7OwogICAgICAg ICAgICBlc2FjCiAgICAgICAgICAgIDs7CiAgICAgICAgICAtKiApIGFjX211 c3Rfa2VlcF9uZXh0PXRydWUgOzsKICAgICAgICBlc2FjCiAgICAgIGZpCiAg ICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MkYWNf c2VwJyRhY19hcmcnIgogICAgICAjIEdldCByaWQgb2YgdGhlIGxlYWRpbmcg c3BhY2UuCiAgICAgIGFjX3NlcD0iICIKICAgICAgOzsKICAgIGVzYWMKICBk b25lCmRvbmUKJGFzX3Vuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMCB8fCB0ZXN0 ICIke2FjX2NvbmZpZ3VyZV9hcmdzMCtzZXR9IiAhPSBzZXQgfHwgeyBhY19j b25maWd1cmVfYXJnczA9OyBleHBvcnQgYWNfY29uZmlndXJlX2FyZ3MwOyB9 CiRhc191bnNldCBhY19jb25maWd1cmVfYXJnczEgfHwgdGVzdCAiJHthY19j b25maWd1cmVfYXJnczErc2V0fSIgIT0gc2V0IHx8IHsgYWNfY29uZmlndXJl X2FyZ3MxPTsgZXhwb3J0IGFjX2NvbmZpZ3VyZV9hcmdzMTsgfQoKIyBXaGVu IGludGVycnVwdGVkIG9yIGV4aXQnZCwgY2xlYW51cCB0ZW1wb3JhcnkgZmls ZXMsIGFuZCBjb21wbGV0ZQojIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29t bWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQojIHdv dWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KIyBXQVJOSU5HOiBC ZSBzdXJlIG5vdCB0byB1c2Ugc2luZ2xlIHF1b3RlcyBpbiB0aGVyZSwgYXMg c29tZSBzaGVsbHMsCiMgc3VjaCBhcyBvdXIgRFUgNS4wIGZyaWVuZCwgd2ls bCB0aGVuIGBjbG9zZScgdGhlIHRyYXAuCnRyYXAgJ2V4aXRfc3RhdHVzPSQ/ CiAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9uIHRo YXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuCiAgewogICAgZWNobwoKICAg IGNhdCA8PFxfQVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBDYWNo ZSB2YXJpYWJsZXMuICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKX0FTQk9Y CiAgICBlY2hvCiAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcg dGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAp7CiAg KHNldCkgMj4mMSB8CiAgICBjYXNlIGAoYWNfc3BhY2U9JyInIicgJyInIic7 IHNldCB8IGdyZXAgYWNfc3BhY2UpIDI+JjFgIGluCiAgICAqYWNfc3BhY2U9 XCAqKQogICAgICBzZWQgLW4gXAogICAgICAgICJzLyciJyInLyciJyInXFxc XCciJyInJyInIicvZzsKICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpf Y3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9JyInIidcXDIn IiciJy9wIgogICAgICA7OwogICAgKikKICAgICAgc2VkIC1uIFwKICAgICAg ICAicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0q XFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKICAgICAgOzsKICAgIGVzYWM7Cn0K ICAgIGVjaG8KCiAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0t LS0tICMjCiMjIE91dHB1dCB2YXJpYWJsZXMuICMjCiMjIC0tLS0tLS0tLS0t LS0tLS0tICMjCl9BU0JPWAogICAgZWNobwogICAgZm9yIGFjX3ZhciBpbiAk YWNfc3Vic3RfdmFycwogICAgZG8KICAgICAgZXZhbCBhY192YWw9JGBlY2hv ICRhY192YXJgCiAgICAgIGVjaG8gIiRhY192YXI9JyInIickYWNfdmFsJyIn IiciCiAgICBkb25lIHwgc29ydAogICAgZWNobwoKICAgIGlmIHRlc3QgLW4g IiRhY19zdWJzdF9maWxlcyI7IHRoZW4KICAgICAgY2F0IDw8XF9BU0JPWAoj IyAtLS0tLS0tLS0tLS0tICMjCiMjIE91dHB1dCBmaWxlcy4gIyMKIyMgLS0t LS0tLS0tLS0tLSAjIwpfQVNCT1gKICAgICAgZWNobwogICAgICBmb3IgYWNf dmFyIGluICRhY19zdWJzdF9maWxlcwogICAgICBkbwoJZXZhbCBhY192YWw9 JGBlY2hvICRhY192YXJgCiAgICAgICAgZWNobyAiJGFjX3Zhcj0nIiciJyRh Y192YWwnIiciJyIKICAgICAgZG9uZSB8IHNvcnQKICAgICAgZWNobwogICAg ZmkKCiAgICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4KICAgICAgY2F0 IDw8XF9BU0JPWAojIyAtLS0tLS0tLS0tLSAjIwojIyBjb25mZGVmcy5oLiAj IwojIyAtLS0tLS0tLS0tLSAjIwpfQVNCT1gKICAgICAgZWNobwogICAgICBz ZWQgIi9eJC9kIiBjb25mZGVmcy5oIHwgc29ydAogICAgICBlY2hvCiAgICBm aQogICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgogICAgICBlY2hvICIk YXNfbWU6IGNhdWdodCBzaWduYWwgJGFjX3NpZ25hbCIKICAgIGVjaG8gIiRh c19tZTogZXhpdCAkZXhpdF9zdGF0dXMiCiAgfSA+JjUKICBybSAtZiBjb3Jl IGNvcmUuKiAqLmNvcmUgJiYKICBybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZz KiBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJgogICAgZXhpdCAkZXhpdF9z dGF0dXMKICAgICAnIDAKZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRv CiAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgeyAoZXhpdCAxKTsg ZXhpdCAxOyB9JyAkYWNfc2lnbmFsCmRvbmUKYWNfc2lnbmFsPTAKCiMgY29u ZmRlZnMuaCBhdm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMg dGhhdCBERUZTIGNhbiBleGNlZWQuCnJtIC1yZiBjb25mdGVzdCogY29uZmRl ZnMuaAojIEFJWCBjcHAgbG9zZXMgb24gYW4gZW1wdHkgZmlsZSwgc28gbWFr ZSBzdXJlIGl0IGNvbnRhaW5zIGF0IGxlYXN0IGEgbmV3bGluZS4KZWNobyA+ Y29uZmRlZnMuaAoKIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJs ZXMuCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgUEFDS0FH RV9OQU1FICIkUEFDS0FHRV9OQU1FIgpfQUNFT0YKCgpjYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCiNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FH RV9UQVJOQU1FIgpfQUNFT0YKCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G CiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgpf QUNFT0YKCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgUEFD S0FHRV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKX0FDRU9GCgoKY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JU ICIkUEFDS0FHRV9CVUdSRVBPUlQiCl9BQ0VPRgoKCiMgTGV0IHRoZSBzaXRl IGZpbGUgc2VsZWN0IGFuIGFsdGVybmF0ZSBjYWNoZSBmaWxlIGlmIGl0IHdh bnRzIHRvLgojIFByZWZlciBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8g YXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgppZiB0ZXN0IC16ICIkQ09O RklHX1NJVEUiOyB0aGVuCiAgaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05F OyB0aGVuCiAgICBDT05GSUdfU0lURT0iJHByZWZpeC9zaGFyZS9jb25maWcu c2l0ZSAkcHJlZml4L2V0Yy9jb25maWcuc2l0ZSIKICBlbHNlCiAgICBDT05G SUdfU0lURT0iJGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRl ICRhY19kZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUiCiAgZmkKZmkK Zm9yIGFjX3NpdGVfZmlsZSBpbiAkQ09ORklHX1NJVEU7IGRvCiAgaWYgdGVz dCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KICAgIHsgZWNobyAiJGFzX21l OiRMSU5FTk86IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIg PiY1CmVjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0 ZV9maWxlIiA+JjY7fQogICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmls ZSIgPiY1CiAgICAuICIkYWNfc2l0ZV9maWxlIgogIGZpCmRvbmUKCmlmIHRl c3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgogICMgU29tZSB2ZXJzaW9ucyBv ZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFs CiAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQu CiAgaWYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuCiAgICB7IGVjaG8g IiRhc19tZTokTElORU5POiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+ JjUKZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+ JjY7fQogICAgY2FzZSAkY2FjaGVfZmlsZSBpbgogICAgICBbXFwvXSogfCA/ OltcXC9dKiApIC4gJGNhY2hlX2ZpbGU7OwogICAgICAqKSAgICAgICAgICAg ICAgICAgICAgICAuIC4vJGNhY2hlX2ZpbGU7OwogICAgZXNhYwogIGZpCmVs c2UKICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjcmVhdGluZyBjYWNoZSAk Y2FjaGVfZmlsZSIgPiY1CmVjaG8gIiRhc19tZTogY3JlYXRpbmcgY2FjaGUg JGNhY2hlX2ZpbGUiID4mNjt9CiAgPiRjYWNoZV9maWxlCmZpCgojIENoZWNr IHRoYXQgdGhlIHByZWNpb3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2Fj aGUgaGF2ZSBrZXB0IHRoZSBzYW1lCiMgdmFsdWUuCmFjX2NhY2hlX2NvcnJ1 cHRlZD1mYWxzZQpmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwKICAgICAg ICAgICAgICAgc2VkIC1uICdzL15hY19lbnZfXChbYS16QS1aXzAtOV0qXClf c2V0PS4qL1wxL3AnYDsgZG8KICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9l bnZfJHthY192YXJ9X3NldAogIGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8k e2FjX3Zhcn1fc2V0CiAgZXZhbCBhY19vbGRfdmFsPSJcJGFjX2N2X2Vudl8k e2FjX3Zhcn1fdmFsdWUiCiAgZXZhbCBhY19uZXdfdmFsPSJcJGFjX2Vudl8k e2FjX3Zhcn1fdmFsdWUiCiAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3Nl dCBpbgogICAgc2V0LCkKICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog ZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBp biB0aGUgcHJldmlvdXMgcnVuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjog XGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBw cmV2aW91cyBydW4iID4mMjt9CiAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06 IDs7CiAgICAsc2V0KQogICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBl cnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMg cnVuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMg bm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQogICAgICBhY19j YWNoZV9jb3JydXB0ZWQ9OiA7OwogICAgLCk7OwogICAgKikKICAgICAgaWYg dGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgog ICAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192 YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUK ZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBz aW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KICAgICAgICB7IGVjaG8g IiRhc19tZTokTElORU5POiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFs IiA+JjUKZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRf dmFsIiA+JjI7fQogICAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86ICAg Y3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mNQplY2hvICIkYXNfbWU6 ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mMjt9CiAgICAgICAg YWNfY2FjaGVfY29ycnVwdGVkPToKICAgICAgZmk7OwogIGVzYWMKICAjIFBh c3MgcHJlY2lvdXMgdmFyaWFibGVzIHRvIGNvbmZpZy5zdGF0dXMuCiAgaWYg dGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCiAgICBjYXNlICRhY19u ZXdfdmFsIGluCiAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpc KFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKICAgICAgYWNfYXJnPSRhY192 YXI9YGVjaG8gIiRhY19uZXdfdmFsIiB8IHNlZCAicy8nLydcXFxcXFxcXCcn L2ciYCA7OwogICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25ld192YWwgOzsK ICAgIGVzYWMKICAgIGNhc2UgIiAkYWNfY29uZmlndXJlX2FyZ3MgIiBpbgog ICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBv ZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KICAgICAgKikgYWNfY29uZmln dXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciIDs7CiAg ICBlc2FjCiAgZmkKZG9uZQppZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVu CiAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNoYW5nZXMgaW4g dGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiY1 CmVjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25t ZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KICB7IHsgZWNo byAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBydW4gXGBtYWtlIGRpc3RjbGVh bicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiA+ JjUKZWNobyAiJGFzX21lOiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4n IGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiYy O30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmZpCgphY19leHQ9Ywph Y19jcHA9JyRDUFAgJENQUEZMQUdTJwphY19jb21waWxlPSckQ0MgLWMgJENG TEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCmFjX2xpbms9 JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1Mg JExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCmFjX2NvbXBp bGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgpxbl9leGVjX3ByZWZpeD0ke2V4ZWNfcHJlZml4fQp0 ZXN0ICJ4JHFuX2V4ZWNfcHJlZml4IiA9IHhOT05FICYmIHFuX2V4ZWNfcHJl Zml4PSR7cHJlZml4fQphY19hdXhfZGlyPQpmb3IgYWNfZGlyIGluICRzcmNk aXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uOyBkbwogIGlmIHRlc3QgLWYg JGFjX2Rpci9pbnN0YWxsLXNoOyB0aGVuCiAgICBhY19hdXhfZGlyPSRhY19k aXIKICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2gg LWMiCiAgICBicmVhawogIGVsaWYgdGVzdCAtZiAkYWNfZGlyL2luc3RhbGwu c2g7IHRoZW4KICAgIGFjX2F1eF9kaXI9JGFjX2RpcgogICAgYWNfaW5zdGFs bF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKICAgIGJyZWFrCiAg ZWxpZiB0ZXN0IC1mICRhY19kaXIvc2h0b29sOyB0aGVuCiAgICBhY19hdXhf ZGlyPSRhY19kaXIKICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3No dG9vbCBpbnN0YWxsIC1jIgogICAgYnJlYWsKICBmaQpkb25lCmlmIHRlc3Qg LXogIiRhY19hdXhfZGlyIjsgdGhlbgogIHsgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFs bC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiY1 CmVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2gg b3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8u Li8uLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmZpCmFj X2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVz cyIKYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5z dWIiCmFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3Vy ZSIgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgoKIyBNYWtl IHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgokYWNfY29uZmlnX3N1YiBz dW40ID4vZGV2L251bGwgMj4mMSB8fAogIHsgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogZXJyb3I6IGNhbm5vdCBydW4gJGFjX2NvbmZpZ19zdWIiID4mNQpl Y2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3Vi IiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KCmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4g JEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBz ZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4m NgplbHNlCiAgYWNfY3ZfYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCnRlc3Qg LXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKICBhY19jdl9idWlsZF9hbGlh cz1gJGFjX2NvbmZpZ19ndWVzc2AKdGVzdCAteiAiJGFjX2N2X2J1aWxkX2Fs aWFzIiAmJgogIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNh bm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIg PiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0 eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiYyO30KICAgeyAoZXhpdCAx KTsgZXhpdCAxOyB9OyB9CmFjX2N2X2J1aWxkPWAkYWNfY29uZmlnX3N1YiAk YWNfY3ZfYnVpbGRfYWxpYXNgIHx8CiAgeyB7IGVjaG8gIiRhc19tZTokTElO RU5POiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFz IGZhaWxlZCIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdf c3ViICRhY19jdl9idWlsZF9hbGlhcyBmYWlsZWQiID4mMjt9CiAgIHsgKGV4 aXQgMSk7IGV4aXQgMTsgfTsgfQoKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFj X2N2X2J1aWxkIiA+JjYKYnVpbGQ9JGFjX2N2X2J1aWxkCmJ1aWxkX2NwdT1g ZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0q XCktXCguKlwpJC9cMS8nYApidWlsZF92ZW5kb3I9YGVjaG8gJGFjX2N2X2J1 aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIv J2AKYnVpbGRfb3M9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFte LV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKCgplY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAkRUNIT19D IiA+JjYKaWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVu CiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQog IGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMKdGVzdCAteiAiJGFjX2N2 X2hvc3RfYWxpYXMiICYmCiAgYWNfY3ZfaG9zdF9hbGlhcz0kYWNfY3ZfYnVp bGRfYWxpYXMKYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hv c3RfYWxpYXNgIHx8CiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJv cjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXMgZmFpbGVkIiA+ JjUKZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2 X2hvc3RfYWxpYXMgZmFpbGVkIiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0 IDE7IH07IH0KCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRh Y19jdl9ob3N0IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hvc3QiID4m Ngpob3N0PSRhY19jdl9ob3N0Cmhvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0 IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AK aG9zdF92ZW5kb3I9YGVjaG8gJGFjX2N2X2hvc3QgfCBzZWQgJ3MvXlwoW14t XSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYApob3N0X29zPWBlY2hvICRh Y19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipc KSQvXDMvJ2AKCgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgdGFy Z2V0IHN5c3RlbSB0eXBlIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyB0 YXJnZXQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7 YWNfY3ZfdGFyZ2V0K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19O ICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGFjX2N2X3RhcmdldF9h bGlhcz0kdGFyZ2V0X2FsaWFzCnRlc3QgIngkYWNfY3ZfdGFyZ2V0X2FsaWFz IiA9ICJ4IiAmJgogIGFjX2N2X3RhcmdldF9hbGlhcz0kYWNfY3ZfaG9zdF9h bGlhcwphY19jdl90YXJnZXQ9YCRhY19jb25maWdfc3ViICRhY19jdl90YXJn ZXRfYWxpYXNgIHx8CiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJv cjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhcyBmYWlsZWQi ID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNf Y3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiYyO30KICAgeyAoZXhpdCAxKTsg ZXhpdCAxOyB9OyB9CgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkYWNfY3ZfdGFyZ2V0IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Rh cmdldCIgPiY2CnRhcmdldD0kYWNfY3ZfdGFyZ2V0CnRhcmdldF9jcHU9YGVj aG8gJGFjX2N2X3RhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpc KS1cKC4qXCkkL1wxLydgCnRhcmdldF92ZW5kb3I9YGVjaG8gJGFjX2N2X3Rh cmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wy LydgCnRhcmdldF9vcz1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15c KFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKCgojIFRoZSBhbGlh c2VzIHNhdmUgdGhlIG5hbWVzIHRoZSB1c2VyIHN1cHBsaWVkLCB3aGlsZSAk aG9zdCBldGMuCiMgd2lsbCBnZXQgY2Fub25pY2FsaXplZC4KdGVzdCAtbiAi JHRhcmdldF9hbGlhcyIgJiYKICB0ZXN0ICIkcHJvZ3JhbV9wcmVmaXgkcHJv Z3JhbV9zdWZmaXgkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgPSBcCiAgICBO T05FTk9ORXMseCx4LCAmJgogIHByb2dyYW1fcHJlZml4PSR7dGFyZ2V0X2Fs aWFzfS0KdGVzdCAiJHByb2dyYW1fcHJlZml4IiAhPSBOT05FICYmCiAgcHJv Z3JhbV90cmFuc2Zvcm1fbmFtZT0icyxeLCRwcm9ncmFtX3ByZWZpeCw7JHBy b2dyYW1fdHJhbnNmb3JtX25hbWUiCiMgVXNlIGEgZG91YmxlICQgc28gbWFr ZSBpZ25vcmVzIGl0Lgp0ZXN0ICIkcHJvZ3JhbV9zdWZmaXgiICE9IE5PTkUg JiYKICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSJzLFwkLCRwcm9ncmFtX3N1 ZmZpeCw7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCiMgRG91YmxlIGFueSBc IG9yICQuICBlY2hvIG1pZ2h0IGludGVycHJldCBiYWNrc2xhc2hlcy4KIyBC eSBkZWZhdWx0IHdhcyBgcyx4LHgnLCByZW1vdmUgaXQgaWYgdXNlbGVzcy4K Y2F0IDw8XF9BQ0VPRiA+Y29uZnRlc3Quc2VkCnMvW1xcJF0vJiYvZztzLztz LHgseCwkLy8KX0FDRU9GCnByb2dyYW1fdHJhbnNmb3JtX25hbWU9YGVjaG8g JHByb2dyYW1fdHJhbnNmb3JtX25hbWUgfCBzZWQgLWYgY29uZnRlc3Quc2Vk YApybSBjb25mdGVzdC5zZWQKCgoKCmFjX2N2X3VzZV9ibGFzPW5vCgojIENo ZWNrIHdoZXRoZXIgLS13aXRoLWJsYXMgb3IgLS13aXRob3V0LWJsYXMgd2Fz IGdpdmVuLgppZiB0ZXN0ICIke3dpdGhfYmxhcytzZXR9IiA9IHNldDsgdGhl bgogIHdpdGh2YWw9IiR3aXRoX2JsYXMiCiAgYWNfY3ZfdXNlX2JsYXM9JHdp dGh2YWwKZWxzZQogIGFjX2N2X3VzZV9ibGFzPW5vCmZpOwpjYXNlICRhY19j dl91c2VfYmxhcyBpbgogIG5vfGJsYXN8Y2JsYXN8YXRsYXN8cHRhdGxhc3xl c3NsfGVzc2xzbXB8c3VucGVyZnxhY21sfG1hY29zKQogICAgOzsKICAqKQog ICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogaW52YWxpZCB2 YWx1ZSBmb3IgLS13aXRoLWJsYXMiID4mNQplY2hvICIkYXNfbWU6IGVycm9y OiBpbnZhbGlkIHZhbHVlIGZvciAtLXdpdGgtYmxhcyIgPiYyO30KICAgeyAo ZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICA7Owplc2FjCgoKIyBDaGVjayB3 aGV0aGVyIC0td2l0aC12ZWNsaWIgb3IgLS13aXRob3V0LXZlY2xpYiB3YXMg Z2l2ZW4uCmlmIHRlc3QgIiR7d2l0aF92ZWNsaWIrc2V0fSIgPSBzZXQ7IHRo ZW4KICB3aXRodmFsPSIkd2l0aF92ZWNsaWIiCiAgYWNfY3ZfdXNlX3ZlY2xp Yj0kd2l0aHZhbAplbHNlCiAgYWNfY3ZfdXNlX3ZlY2xpYj1ubwpmaTsKY2Fz ZSAkYWNfY3ZfdXNlX3ZlY2xpYiBpbgogIG5vfG1hc3MpCiAgICA7OwogICop CiAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBpbnZhbGlk IHZhbHVlIGZvciAtLXdpdGgtdmVjbGliIiA+JjUKZWNobyAiJGFzX21lOiBl cnJvcjogaW52YWxpZCB2YWx1ZSBmb3IgLS13aXRoLXZlY2xpYiIgPiYyO30K ICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICA7Owplc2FjCgoKIyBD aGVjayB3aGV0aGVyIC0td2l0aC10ZXN0ZGF0YSBvciAtLXdpdGhvdXQtdGVz dGRhdGEgd2FzIGdpdmVuLgppZiB0ZXN0ICIke3dpdGhfdGVzdGRhdGErc2V0 fSIgPSBzZXQ7IHRoZW4KICB3aXRodmFsPSIkd2l0aF90ZXN0ZGF0YSIKICBh Y19jdl90ZXN0ZGF0YT0kd2l0aHZhbAplbHNlCiAgYWNfY3ZfdGVzdGRhdGE9 JHtwcmVmaXh9L3NoYXJlL3F1aWNrbmV0X3Rlc3RkYXRhCmZpOwoKCiMgQ2hl Y2sgd2hldGhlciAtLXdpdGgtcnRzdCBvciAtLXdpdGhvdXQtcnRzdCB3YXMg Z2l2ZW4uCmlmIHRlc3QgIiR7d2l0aF9ydHN0K3NldH0iID0gc2V0OyB0aGVu CiAgd2l0aHZhbD0iJHdpdGhfcnRzdCIKICBhY19jdl9ydHN0PSR3aXRodmFs CmVsc2UKICBhY19jdl9ydHN0PSR7cW5fZXhlY19wcmVmaXh9L2xpYgpmaTsK CgojIENoZWNrIHdoZXRoZXIgLS13aXRoLXJ0c3Qgb3IgLS13aXRob3V0LXJ0 c3Qgd2FzIGdpdmVuLgppZiB0ZXN0ICIke3dpdGhfcnRzdCtzZXR9IiA9IHNl dDsgdGhlbgogIHdpdGh2YWw9IiR3aXRoX3J0c3QiCiAgYWNfY3ZfcnRzdD0k d2l0aHZhbAplbHNlCiAgYWNfY3ZfcnRzdD0ke3FuX2V4ZWNfcHJlZml4fS9s aWIKZmk7CgoKIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wdGhyZWFkIG9yIC0t d2l0aG91dC1wdGhyZWFkIHdhcyBnaXZlbi4KaWYgdGVzdCAiJHt3aXRoX3B0 aHJlYWQrc2V0fSIgPSBzZXQ7IHRoZW4KICB3aXRodmFsPSIkd2l0aF9wdGhy ZWFkIgogIHdpdGhfcHRocmVhZD0kd2l0aHZhbAplbHNlCiAgd2l0aF9wdGhy ZWFkPSJ5ZXMiCmZpOwoKICAgICAgICAgIGFjX2NvbmZpZ19oZWFkZXJzPSIk YWNfY29uZmlnX2hlYWRlcnMgY29uZmlnLmgiCgoKCmFjX2V4dD1jCmFjX2Nw cD0nJENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdT ICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKYWNfbGluaz0nJEND IC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERG TEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKYWNfY29tcGlsZXJf Z251PSRhY19jdl9jX2NvbXBpbGVyX2dudQppZiB0ZXN0IC1uICIkYWNfdG9v bF9wcmVmaXgiOyB0aGVuCiAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dy YW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4 fWdjYzsgYWNfd29yZD0kMgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgZm9yICRhY193b3JkIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBm b3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3Zf cHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkQ0MiOyB0 aGVuCiAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVy cmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9JGFz X3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9u czsgZG8KICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19DQz0iJHthY190 b29sX3ByZWZpeH1nY2MiCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVh ayAyCiAgZmkKZG9uZQpkb25lCgpmaQpmaQpDQz0kYWNfY3ZfcHJvZ19DQwpp ZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJENDIiA+JjUKZWNobyAiJHtFQ0hPX1R9JENDIiA+JjYKZWxz ZQogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKZWNo byAiJHtFQ0hPX1R9bm8iID4mNgpmaQoKZmkKaWYgdGVzdCAteiAiJGFjX2N2 X3Byb2dfQ0MiOyB0aGVuCiAgYWNfY3RfQ0M9JENDCiAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLgpzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCmVj aG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m NQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNI T19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0i ID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KICBh Y19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJRlM7IElG Uz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwogIElG Uz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgogIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRl bnNpb25zOyBkbwogIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wcm9nX2FjX2N0 X0NDPSJnY2MiCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAg ZmkKZG9uZQpkb25lCgpmaQpmaQphY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19j dF9DQwppZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCiAgZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKZWNobyAiJHtF Q0hPX1R9JGFjX2N0X0NDIiA+JjYKZWxzZQogIGVjaG8gIiRhc19tZTokTElO RU5POiByZXN1bHQ6IG5vIiA+JjUKZWNobyAiJHtFQ0hPX1R9bm8iID4mNgpm aQoKICBDQz0kYWNfY3RfQ0MKZWxzZQogIENDPSIkYWNfY3ZfcHJvZ19DQyIK ZmkKCmlmIHRlc3QgLXogIiRDQyI7IHRoZW4KICBpZiB0ZXN0IC1uICIkYWNf dG9vbF9wcmVmaXgiOyB0aGVuCiAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk IG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVm aXh9Y2M7IGFjX3dvcmQ9JDIKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg Zm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2 X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihj YWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJENDIjsg dGhlbgogIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRh c19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCiAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNf dG9vbF9wcmVmaXh9Y2MiCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVh ayAyCiAgZmkKZG9uZQpkb25lCgpmaQpmaQpDQz0kYWNfY3ZfcHJvZ19DQwpp ZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJENDIiA+JjUKZWNobyAiJHtFQ0hPX1R9JENDIiA+JjYKZWxz ZQogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKZWNo byAiJHtFQ0hPX1R9bm8iID4mNgpmaQoKZmkKaWYgdGVzdCAteiAiJGFjX2N2 X3Byb2dfQ0MiOyB0aGVuCiAgYWNfY3RfQ0M9JENDCiAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSBjYzsgYWNfd29yZD0kMgplY2hv ICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUK ZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9f QyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9 IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIg PiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCiAgYWNf Y3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBv dmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9 JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4K ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19hY19jdF9D Qz0iY2MiCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkK ZG9uZQpkb25lCgpmaQpmaQphY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9D QwppZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCiAgZWNobyAiJGFzX21l OiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKZWNobyAiJHtFQ0hP X1R9JGFjX2N0X0NDIiA+JjYKZWxzZQogIGVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6IG5vIiA+JjUKZWNobyAiJHtFQ0hPX1R9bm8iID4mNgpmaQoK ICBDQz0kYWNfY3RfQ0MKZWxzZQogIENDPSIkYWNfY3ZfcHJvZ19DQyIKZmkK CmZpCmlmIHRlc3QgLXogIiRDQyI7IHRoZW4KICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l IHdpdGggYXJncy4Kc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQplY2hv ICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+ JjYKaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVu CiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQog IGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KICBhY19jdl9wcm9nX0NDPSIkQ0Mi ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgplbHNlCiAgYWNf cHJvZ19yZWplY3RlZD1ubwphc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9JGFzX3Nh dmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICBmb3Ig YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg ZG8KICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IjsgdGhlbgogICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuCiAgICAgICBh Y19wcm9nX3JlamVjdGVkPXllcwogICAgICAgY29udGludWUKICAgICBmaQog ICAgYWNfY3ZfcHJvZ19DQz0iY2MiCiAgICBlY2hvICIkYXNfbWU6JExJTkVO TzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAg ICBicmVhayAyCiAgZmkKZG9uZQpkb25lCgppZiB0ZXN0ICRhY19wcm9nX3Jl amVjdGVkID0geWVzOyB0aGVuCiAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRo ZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgogIHNldCBk dW1teSAkYWNfY3ZfcHJvZ19DQwogIHNoaWZ0CiAgaWYgdGVzdCAkIyAhPSAw OyB0aGVuCiAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNvbXBpbGVyIGZy b20gdGhlIGJvZ3VzIG9uZS4KICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBz YW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KICAg ICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1 c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgogICAgc2hpZnQKICAgIGFjX2N2X3By b2dfQ0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRAIgogIGZpCmZpCmZp CmZpCkNDPSRhY19jdl9wcm9nX0NDCmlmIHRlc3QgLW4gIiRDQyI7IHRoZW4K ICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQplY2hv ICIke0VDSE9fVH0kQ0MiID4mNgplbHNlCiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IHJlc3VsdDogbm8iID4mNQplY2hvICIke0VDSE9fVH1ubyIgPiY2CmZp CgpmaQppZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCiAgaWYgdGVzdCAtbiAiJGFj X3Rvb2xfcHJlZml4IjsgdGhlbgogIGZvciBhY19wcm9nIGluIGNsCiAgZG8K ICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJl Zml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0 aCBhcmdzLgpzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFj X3dvcmQ9JDIKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAk YWNfd29yZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193 b3JkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mr c2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRF Q0hPX0MiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgogIGFj X2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl IHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFS QVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZlX0lG UwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgZm9yIGFjX2V4 ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAg aWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IHRoZW4KICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZp eCRhY19wcm9nIgogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgYnJlYWsgMgog IGZpCmRvbmUKZG9uZQoKZmkKZmkKQ0M9JGFjX2N2X3Byb2dfQ0MKaWYgdGVz dCAtbiAiJENDIjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1 bHQ6ICRDQyIgPiY1CmVjaG8gIiR7RUNIT19UfSRDQyIgPiY2CmVsc2UKICBl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1CmVjaG8gIiR7 RUNIT19UfW5vIiA+JjYKZmkKCiAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFr CiAgZG9uZQpmaQppZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCiAgYWNfY3RfQ0M9 JENDCiAgZm9yIGFjX3Byb2cgaW4gY2wKZG8KICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh bSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3Jk PSQyCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dv cmQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4u LiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0ND K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAk RUNIT19DIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRo ZW4KICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApk bwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBh c19kaXI9LgogIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwogIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wcm9n X2FjX2N0X0NDPSIkYWNfcHJvZyIKICAgIGVjaG8gIiRhc19tZTokTElORU5P OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAg IGJyZWFrIDIKICBmaQpkb25lCmRvbmUKCmZpCmZpCmFjX2N0X0NDPSRhY19j dl9wcm9nX2FjX2N0X0NDCmlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4K ICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfQ0MiID4m NQplY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgplbHNlCiAgZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQplY2hvICIke0VDSE9f VH1ubyIgPiY2CmZpCgogIHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsK ZG9uZQoKICBDQz0kYWNfY3RfQ0MKZmkKCmZpCgoKdGVzdCAteiAiJENDIiAm JiB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBubyBhY2NlcHRh YmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRIClNlZSBcYGNvbmZpZy5s b2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJv cjogbm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSApT ZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KICAg eyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CgojIFByb3ZpZGUgc29tZSBpbmZv cm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCmVjaG8gIiRhc19tZTokTElO RU5POiIgXAogICAgICJjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9u IiA+JjUKYWNfY29tcGlsZXI9YHNldCBYICRhY19jb21waWxlOyBlY2hvICQy YAp7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxl ciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQogIChldmFsICRh Y19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjUpIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0KeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZXIgLXYgPC9kZXYv bnVsbCA+JjVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlciAtdiA8L2Rl di9udWxsID4mNSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfQp7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y19jb21waWxlciAtViA8L2Rldi9udWxsID4mNVwiIikgPiY1CiAgKGV2YWwg JGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1KSAyPiY1CiAgYWNfc3Rh dHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0 dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9CgpjYXQgPmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgov KiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29u ZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCmludAptYWluICgpCnsKCiAgOwog IHJldHVybiAwOwp9Cl9BQ0VPRgphY19jbGVhbl9maWxlc19zYXZlPSRhY19j bGVhbl9maWxlcwphY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEu b3V0IGEuZXhlIGIub3V0IgojIFRyeSB0byBjcmVhdGUgYW4gZXhlY3V0YWJs ZSB3aXRob3V0IC1vIGZpcnN0LCBkaXNyZWdhcmQgYS5vdXQuCiMgSXQgd2ls bCBoZWxwIHVzIGRpYWdub3NlIGJyb2tlbiBjb21waWxlcnMsIGFuZCBmaW5k aW5nIG91dCBhbiBpbnR1aXRpb24KIyBvZiBleGVleHQuCmVjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91 dHB1dCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEMgY29tcGls ZXIgZGVmYXVsdCBvdXRwdXQuLi4gJEVDSE9fQyIgPiY2CmFjX2xpbmtfZGVm YXVsdD1gZWNobyAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3Rb XiBdKi8vJ2AKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIk YWNfbGlua19kZWZhdWx0XCIiKSA+JjUKICAoZXZhbCAkYWNfbGlua19kZWZh dWx0KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9OyB0aGVuCiAgIyBGaW5kIHRoZSBvdXRwdXQsIHN0YXJ0aW5nIGZyb20g dGhlIG1vc3QgbGlrZWx5LiAgVGhpcyBzY2hlbWUgaXMKIyBub3Qgcm9idXN0 IHRvIGp1bmsgaW4gYC4nLCBoZW5jZSBnbyB0byB3aWxkY2FyZHMgKGEuKikg b25seSBhcyBhIGxhc3QKIyByZXNvcnQuCgojIEJlIGNhcmVmdWwgdG8gaW5p dGlhbGl6ZSB0aGlzIHZhcmlhYmxlLCBzaW5jZSBpdCB1c2VkIHRvIGJlIGNh Y2hlZC4KIyBPdGhlcndpc2UgYW4gb2xkIGNhY2hlIHZhbHVlIG9mIGBubycg bGVkIHRvIGBFWEVFWFQgPSBubycgaW4gYSBNYWtlZmlsZS4KYWNfY3ZfZXhl ZXh0PQojIGIub3V0IGlzIGNyZWF0ZWQgYnkgaTk2MCBjb21waWxlcnMuCmZv ciBhY19maWxlIGluIGFfb3V0LmV4ZSBhLmV4ZSBjb25mdGVzdC5leGUgYS5v dXQgY29uZnRlc3QgYS4qIGNvbmZ0ZXN0LiogYi5vdXQKZG8KICB0ZXN0IC1m ICIkYWNfZmlsZSIgfHwgY29udGludWUKICBjYXNlICRhY19maWxlIGluCiAg ICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8 ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubyB8ICoub2JqICkKICAgICAg ICA7OwogICAgY29uZnRlc3QuJGFjX2V4dCApCiAgICAgICAgIyBUaGlzIGlz IHRoZSBzb3VyY2UgZmlsZS4KICAgICAgICA7OwogICAgW2FiXS5vdXQgKQog ICAgICAgICMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0 IGV4ZWV4dD0nJyBpcyBtb3N0CiAgICAgICAgIyBjZXJ0YWlubHkgcmlnaHQu CiAgICAgICAgYnJlYWs7OwogICAgKi4qICkKICAgICAgICBhY19jdl9leGVl eHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKICAgICAg ICAjIEZJWE1FOiBJIGJlbGlldmUgd2UgZXhwb3J0IGFjX2N2X2V4ZWV4dCBm b3IgTGlidG9vbCwKICAgICAgICAjIGJ1dCBpdCB3b3VsZCBiZSBjb29sIHRv IGZpbmQgb3V0IGlmIGl0J3MgdHJ1ZS4gIERvZXMgYW55Ym9keQogICAgICAg ICMgbWFpbnRhaW4gTGlidG9vbD8gLS1ha2ltLgogICAgICAgIGV4cG9ydCBh Y19jdl9leGVleHQKICAgICAgICBicmVhazs7CiAgICAqICkKICAgICAgICBi cmVhazs7CiAgZXNhYwpkb25lCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxl ZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRh Y19leHQgPiY1Cgp7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBD IGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKU2VlIFxgY29u ZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNfbWU6 IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMK U2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9CiAg IHsgKGV4aXQgNzcpOyBleGl0IDc3OyB9OyB9CmZpCgphY19leGVleHQ9JGFj X2N2X2V4ZWV4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNf ZmlsZSIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19maWxlIiA+JjYKCiMgQ2hl Y2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBy dW4uICBJZiBub3QsIGVpdGhlcgojIHRoZSBjb21waWxlciBpcyBicm9rZW4s IG9yIHdlIGNyb3NzIGNvbXBpbGUuCmVjaG8gIiRhc19tZTokTElORU5POiBj aGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdv cmtzLi4uICRFQ0hPX0MiID4mNgojIEZJWE1FOiBUaGVzZSBjcm9zcyBjb21w aWxlciBoYWNrcyBzaG91bGQgYmUgcmVtb3ZlZCBmb3IgQXV0b2NvbmYgMy4w CiMgSWYgbm90IGNyb3NzIGNvbXBpbGluZywgY2hlY2sgdGhhdCB3ZSBjYW4g cnVuIGEgc2ltcGxlIHByb2dyYW0uCmlmIHRlc3QgIiRjcm9zc19jb21waWxp bmciICE9IHllczsgdGhlbgogIGlmIHsgYWNfdHJ5PScuLyRhY19maWxlJwog IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikg PiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVj aG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAo ZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogICAgY3Jvc3NfY29tcGls aW5nPW5vCiAgZWxzZQogICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIg PSBtYXliZTsgdGhlbgoJY3Jvc3NfY29tcGlsaW5nPXllcwogICAgZWxzZQoJ eyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IHJ1biBD IGNvbXBpbGVkIHByb2dyYW1zLgpJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29t cGlsZSwgdXNlIFxgLS1ob3N0Jy4KU2VlIFxgY29uZmlnLmxvZycgZm9yIG1v cmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3Qg cnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCklmIHlvdSBtZWFudCB0byBjcm9z cyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgpTZWUgXGBjb25maWcubG9nJyBm b3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAx OyB9OyB9CiAgICBmaQogIGZpCmZpCmVjaG8gIiRhc19tZTokTElORU5POiBy ZXN1bHQ6IHllcyIgPiY1CmVjaG8gIiR7RUNIT19UfXllcyIgPiY2CgpybSAt ZiBhLm91dCBhLmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQgYi5vdXQKYWNf Y2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKIyBDaGVjayB0aGUg Y29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElm IG5vdCwgZWl0aGVyCiMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2Ug Y3Jvc3MgY29tcGlsZS4KZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5n IHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyIgPiY1CmVjaG8gJEVD SE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5n Li4uICRFQ0hPX0MiID4mNgplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkY3Jvc3NfY29tcGlsaW5nIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGNyb3Nz X2NvbXBpbGluZyIgPiY2CgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcyIgPiY1CmVjaG8gJEVDSE9f TiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcy4uLiAkRUNI T19DIiA+JjYKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIk YWNfbGlua1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19z dGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0 YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KICAjIElm IGJvdGggYGNvbmZ0ZXN0LmV4ZScgYW5kIGBjb25mdGVzdCcgYXJlIGBwcmVz ZW50JyAod2VsbCwgb2JzZXJ2YWJsZSkKIyBjYXRjaCBgY29uZnRlc3QuZXhl Jy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5Z3dpbiwgYGxzIGNvbmZ0ZXN0JyB3 aWxsCiMgd29yayBwcm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0 LmV4ZScpLCB3aGlsZSBpdCB3b24ndCB3aXRoCiMgYHJtJy4KZm9yIGFjX2Zp bGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCiAg dGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCiAgY2FzZSAkYWNfZmls ZSBpbgogICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwg Ki5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm8gfCAqLm9iaiAp IDs7CiAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6 ICdbXi5dKlwoXC4uKlwpJ2AKICAgICAgICAgIGV4cG9ydCBhY19jdl9leGVl eHQKICAgICAgICAgIGJyZWFrOzsKICAgICogKSBicmVhazs7CiAgZXNhYwpk b25lCmVsc2UKICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBj YW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBj b21waWxlIGFuZCBsaW5rClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRl dGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1 dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQg bGluawpTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYy O30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmZpCgpybSAtZiBjb25m dGVzdCRhY19jdl9leGVleHQKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3Vs dDogJGFjX2N2X2V4ZWV4dCIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19jdl9l eGVleHQiID4mNgoKcm0gLWYgY29uZnRlc3QuJGFjX2V4dApFWEVFWFQ9JGFj X2N2X2V4ZWV4dAphY19leGVleHQ9JEVYRUVYVAplY2hvICIkYXNfbWU6JExJ TkVOTzogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMiID4m NQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0 IGZpbGVzLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X29iamV4 dCtzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkg JEVDSE9fQyIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxf QUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5o LiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4 dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9 Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iagppZiB7IChl dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+ JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0kPwog IGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK ICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgogIGZvciBhY19maWxlIGlu IGAobHMgY29uZnRlc3QubyBjb25mdGVzdC5vYmo7IGxzIGNvbmZ0ZXN0Liop IDI+L2Rldi9udWxsYDsgZG8KICBjYXNlICRhY19maWxlIGluCiAgICAqLiRh Y19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZ TSB8ICouYmIgfCAqLmJiZyApIDs7CiAgICAqKSBhY19jdl9vYmpleHQ9YGV4 cHIgIiRhY19maWxlIiA6ICcuKlwuXCguKlwpJ2AKICAgICAgIGJyZWFrOzsK ICBlc2FjCmRvbmUKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dy YW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+ JjUKCnsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBj b21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxl ClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKZWNo byAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9i amVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKU2VlIFxgY29uZmlnLmxvZycg Zm9yIG1vcmUgZGV0YWlscy4iID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQg MTsgfTsgfQpmaQoKcm0gLWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25m dGVzdC4kYWNfZXh0CmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 ICRhY19jdl9vYmpleHQiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3Zfb2Jq ZXh0IiA+JjYKT0JKRVhUPSRhY19jdl9vYmpleHQKYWNfb2JqZXh0PSRPQkpF WFQKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgd2Ug YXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CmVjaG8gJEVDSE9f TiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNv bXBpbGVyLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X2NfY29t cGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNv bmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVz dC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyog ZW5kIGNvbmZkZWZzLmguICAqLwoKaW50Cm1haW4gKCkKewojaWZuZGVmIF9f R05VQ19fCiAgICAgICBjaG9rZSBtZQojZW5kaWYKCiAgOwogIHJldHVybiAw Owp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4m NQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0 ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNf dHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9OyB9OyB0aGVuCiAgYWNfY29tcGlsZXJfZ251PXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY29tcGlsZXJfZ251PW5v CmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4 dAphY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CgpmaQpl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxl cl9nbnUiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfY19jb21waWxlcl9n bnUiID4mNgpHQ0M9YHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllcyAmJiBl Y2hvIHllc2AKYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQphY19zYXZl X0NGTEFHUz0kQ0ZMQUdTCkNGTEFHUz0iLWciCmVjaG8gIiRhc19tZTokTElO RU5POiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4u ICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9 IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9f QyIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YK I2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8K X0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQg Pj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5o LiAgKi8KCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP RgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFs ICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRh Y19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNv bmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0 aGVuCiAgYWNfY3ZfcHJvZ19jY19nPXllcwplbHNlCiAgZWNobyAiJGFzX21l OiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25m dGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfcHJvZ19jY19nPW5vCmZpCnJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQplY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY2NfZyIgPiY2CmlmIHRl c3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KICBDRkxBR1M9JGFj X3NhdmVfQ0ZMQUdTCmVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVz OyB0aGVuCiAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgIENGTEFH Uz0iLWcgLU8yIgogIGVsc2UKICAgIENGTEFHUz0iLWciCiAgZmkKZWxzZQog IGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICBDRkxBR1M9Ii1PMiIK ICBlbHNlCiAgICBDRkxBR1M9CiAgZmkKZmkKZWNobyAiJGFzX21lOiRMSU5F Tk86IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMi ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRv IGFjY2VwdCBBTlNJIEMuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNf Y3ZfcHJvZ19jY19zdGRjK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNI T19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGFjX2N2X3Byb2df Y2Nfc3RkYz1ubwphY19zYXZlX0NDPSRDQwpjYXQgPmNvbmZ0ZXN0LiRhY19l eHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25m ZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3Qu JGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGFyZy5oPgojaW5jbHVk ZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8 c3lzL3N0YXQuaD4KLyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFy ZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYuc2guICAqLwpzdHJ1 Y3QgYnVmIHsgaW50IHg7IH07CkZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3Qg YnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7CnN0YXRpYyBjaGFyICplIChw LCBpKQogICAgIGNoYXIgKipwOwogICAgIGludCBpOwp7CiAgcmV0dXJuIHBb aV07Cn0Kc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBp bnQpLCBjaGFyICoqcCwgLi4uKQp7CiAgY2hhciAqczsKICB2YV9saXN0IHY7 CiAgdmFfc3RhcnQgKHYscCk7CiAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQp KTsKICB2YV9lbmQgKHYpOwogIHJldHVybiBzOwp9CmludCB0ZXN0IChpbnQg aSwgZG91YmxlIHgpOwpzdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsK c3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CmludCBwYWlybmFt ZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3Ry dWN0IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOwppbnQgYXJnYzsKY2hhciAq KmFyZ3Y7CmludAptYWluICgpCnsKcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9 IGFyZ3ZbMF0gIHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOwogIDsK ICByZXR1cm4gMDsKfQpfQUNFT0YKIyBEb24ndCB0cnkgZ2NjIC1hbnNpOyB0 aGF0IHR1cm5zIG9mZiB1c2VmdWwgZXh0ZW5zaW9ucyBhbmQKIyBicmVha3Mg c29tZSBzeXN0ZW1zJyBoZWFkZXIgZmlsZXMuCiMgQUlYCQkJLXFsYW5nbHZs PWFuc2kKIyBVbHRyaXggYW5kIE9TRi8xCS1zdGQxCiMgSFAtVVggMTAuMjAg YW5kIGxhdGVyCS1BZQojIEhQLVVYIG9sZGVyIHZlcnNpb25zCS1BYSAtRF9I UFVYX1NPVVJDRQojIFNWUjQJCQktWGMgLURfX0VYVEVOU0lPTlNfXwpmb3Ig YWNfYXJnIGluICIiIC1xbGFuZ2x2bD1hbnNpIC1zdGQxIC1BZSAiLUFhIC1E X0hQVVhfU09VUkNFIiAiLVhjIC1EX19FWFRFTlNJT05TX18iCmRvCiAgQ0M9 IiRhY19zYXZlX0NDICRhY19hcmciCiAgcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X3Byb2dfY2Nfc3Rk Yz0kYWNfYXJnCmJyZWFrCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBw cm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19l eHQgPiY1CgpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmRvbmUKcm0g LWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0CkNDPSRh Y19zYXZlX0NDCgpmaQoKY2FzZSAieCRhY19jdl9wcm9nX2NjX3N0ZGMiIGlu CiAgeHx4bm8pCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBu b25lIG5lZWRlZCIgPiY1CmVjaG8gIiR7RUNIT19UfW5vbmUgbmVlZGVkIiA+ JjYgOzsKICAqKQogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDog JGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19j dl9wcm9nX2NjX3N0ZGMiID4mNgogICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19j Y19zdGRjIiA7Owplc2FjCgojIFNvbWUgcGVvcGxlIHVzZSBhIEMrKyBjb21w aWxlciB0byBjb21waWxlIEMuICBTaW5jZSB3ZSB1c2UgYGV4aXQnLAojIGlu IEMrKyB3ZSBuZWVkIHRvIGRlY2xhcmUgaXQuICBJbiBjYXNlIHNvbWVvbmUg dXNlcyB0aGUgc2FtZSBjb21waWxlcgojIGZvciBib3RoIGNvbXBpbGluZyBD IGFuZCBDKysgd2UgbmVlZCB0byBoYXZlIHRoZSBDKysgY29tcGlsZXIgZGVj aWRlCiMgdGhlIGRlY2xhcmF0aW9uIG9mIGV4aXQsIHNpbmNlIGl0J3MgdGhl IG1vc3QgZGVtYW5kaW5nIGVudmlyb25tZW50LgpjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKI2lmbmRlZiBfX2NwbHVzcGx1cwogIGNob2tlIG1l CiNlbmRpZgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAppZiB7 IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIi KSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0k PwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+ JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3Ry eT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwg JGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTok TElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3Rh dHVzKTsgfTsgfTsgdGhlbgogIGZvciBhY19kZWNsYXJhdGlvbiBpbiBcCiAg ICcnXAogICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAogICAnZXh0ZXJuICJD IiB2b2lkIHN0ZDo6ZXhpdCAoaW50KSB0aHJvdyAoKTsgdXNpbmcgc3RkOjpl eGl0OycgXAogICAnZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhpdCAoaW50KTsg dXNpbmcgc3RkOjpleGl0OycgXAogICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQg KGludCkgdGhyb3cgKCk7JyBcCiAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAo aW50KTsnIFwKICAgJ3ZvaWQgZXhpdCAoaW50KTsnCmRvCiAgY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3Vy ZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRsaWIu aD4KJGFjX2RlY2xhcmF0aW9uCmludAptYWluICgpCnsKZXhpdCAoNDIpOwog IDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIDoKZWxzZQogIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycg Y29uZnRlc3QuJGFjX2V4dCA+JjUKCmNvbnRpbnVlCmZpCnJtIC1mIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogIGNhdCA+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUi Ci8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5j b25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNF T0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfZGVjbGFyYXRpb24KaW50 Cm1haW4gKCkKewpleGl0ICg0Mik7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP RgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFs ICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRh Y19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNv bmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0 aGVuCiAgYnJlYWsKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dy YW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+ JjUKCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dApkb25lCnJtIC1mIGNvbmZ0ZXN0KgppZiB0ZXN0IC1uICIkYWNfZGVj bGFyYXRpb24iOyB0aGVuCiAgZWNobyAnI2lmZGVmIF9fY3BsdXNwbHVzJyA+ PmNvbmZkZWZzLmgKICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29u ZmRlZnMuaAogIGVjaG8gJyNlbmRpZicgICAgICAgICAgICAgPj5jb25mZGVm cy5oCmZpCgplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoK ZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0 CmFjX2V4dD1jCmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9 JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4m NScKYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdT ICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4m NScKYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoKYWNf ZXh0PWNjCmFjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9 JyRDWFggLWMgJENYWEZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0 ID4mNScKYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENY WEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRM SUJTID4mNScKYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJf Z251CmlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICBmb3Ig YWNfcHJvZyBpbiAkQ0NDIGcrKyBjKysgZ3BwIGFDQyBDQyBjeHggY2MrKyBj bCBGQ0MgS0NDIFJDQyB4bENfciB4bEMKICBkbwogICAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNv IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1t eSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgplY2hvICIk YXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIg PiY2CmlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DWFgrc2V0fSIgPSBzZXQ7IHRo ZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNl CiAgaWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KICBhY19jdl9wcm9nX0NYWD0i JENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UK YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNf ZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgaWYgJGFzX2V4ZWN1 dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4K ICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIK ICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFrIDIKICBmaQpkb25lCmRv bmUKCmZpCmZpCkNYWD0kYWNfY3ZfcHJvZ19DWFgKaWYgdGVzdCAtbiAiJENY WCI7IHRoZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ1hY IiA+JjUKZWNobyAiJHtFQ0hPX1R9JENYWCIgPiY2CmVsc2UKICBlY2hvICIk YXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1CmVjaG8gIiR7RUNIT19U fW5vIiA+JjYKZmkKCiAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhawogIGRv bmUKZmkKaWYgdGVzdCAteiAiJENYWCI7IHRoZW4KICBhY19jdF9DWFg9JENY WAogIGZvciBhY19wcm9nIGluICRDQ0MgZysrIGMrKyBncHAgYUNDIENDIGN4 eCBjYysrIGNsIEZDQyBLQ0MgUkNDIHhsQ19yIHhsQwpkbwogICMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUg YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpzZXQgZHVtbXkgJGFjX3Byb2c7 IGFjX3dvcmQ9JDIKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3Byb2df YWNfY3RfQ1hYK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRhY19j dF9DWFgiOyB0aGVuCiAgYWNfY3ZfcHJvZ19hY19jdF9DWFg9IiRhY19jdF9D WFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgplbHNlCmFz X3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2Rp ciBpbiAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9LgogIGZvciBhY19leGVjX2V4dCBpbiAnJyAk YWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmICRhc19leGVjdXRh YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAg ICBhY19jdl9wcm9nX2FjX2N0X0NYWD0iJGFjX3Byb2ciCiAgICBlY2hvICIk YXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQpkb25lCgpmaQpmaQph Y19jdF9DWFg9JGFjX2N2X3Byb2dfYWNfY3RfQ1hYCmlmIHRlc3QgLW4gIiRh Y19jdF9DWFgiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3Vs dDogJGFjX2N0X0NYWCIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19jdF9DWFgi ID4mNgplbHNlCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8i ID4mNQplY2hvICIke0VDSE9fVH1ubyIgPiY2CmZpCgogIHRlc3QgLW4gIiRh Y19jdF9DWFgiICYmIGJyZWFrCmRvbmUKdGVzdCAtbiAiJGFjX2N0X0NYWCIg fHwgYWNfY3RfQ1hYPSJnKysiCgogIENYWD0kYWNfY3RfQ1hYCmZpCgoKIyBQ cm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgpl Y2hvICIkYXNfbWU6JExJTkVOTzoiIFwKICAgICAiY2hlY2tpbmcgZm9yIEMr KyBjb21waWxlciB2ZXJzaW9uIiA+JjUKYWNfY29tcGlsZXI9YHNldCBYICRh Y19jb21waWxlOyBlY2hvICQyYAp7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVc IiIpID4mNQogIChldmFsICRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYv bnVsbCA+JjUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0 YXR1cyk7IH0KeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNf Y29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQogIChldmFsICRh Y19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQogIGFjX3N0YXR1 cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfQp7IChldmFsIGVjaG8gIiRh c19tZTokTElORU5POiBcIiRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4m NVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwg PiY1KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9CgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB3 ZSBhcmUgdXNpbmcgdGhlIEdOVSBDKysgY29tcGlsZXIiID4mNQplY2hvICRF Q0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUg QysrIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2 X2N4eF9jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRF Q0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3Vy ZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFpbiAoKQp7CiNp Zm5kZWYgX19HTlVDX18KICAgICAgIGNob2tlIG1lCiNlbmRpZgoKICA7CiAg cmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQK aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGls ZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBh Y190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChl dmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19jb21waWxlcl9nbnU9eWVzCmVs c2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jb21waWxl cl9nbnU9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CmFjX2N2X2N4eF9jb21waWxlcl9nbnU9JGFjX2NvbXBpbGVy X2dudQoKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2 X2N4eF9jb21waWxlcl9nbnUiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3Zf Y3h4X2NvbXBpbGVyX2dudSIgPiY2CkdYWD1gdGVzdCAkYWNfY29tcGlsZXJf Z251ID0geWVzICYmIGVjaG8geWVzYAphY190ZXN0X0NYWEZMQUdTPSR7Q1hY RkxBR1Mrc2V0fQphY19zYXZlX0NYWEZMQUdTPSRDWFhGTEFHUwpDWFhGTEFH Uz0iLWciCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVy ICRDWFggYWNjZXB0cyAtZyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg d2hldGhlciAkQ1hYIGFjY2VwdHMgLWcuLi4gJEVDSE9fQyIgPiY2CmlmIHRl c3QgIiR7YWNfY3ZfcHJvZ19jeHhfZytzZXR9IiA9IHNldDsgdGhlbgogIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBjYXQg PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29u ZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVm cy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0 IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCmludAptYWluICgp CnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4k YWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi JGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAg ICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQn CiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi KSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfcHJvZ19j eHhfZz15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0g d2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK CmFjX2N2X3Byb2dfY3h4X2c9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRhY19jdl9wcm9nX2N4eF9nIiA+JjUKZWNobyAiJHtFQ0hP X1R9JGFjX2N2X3Byb2dfY3h4X2ciID4mNgppZiB0ZXN0ICIkYWNfdGVzdF9D WFhGTEFHUyIgPSBzZXQ7IHRoZW4KICBDWFhGTEFHUz0kYWNfc2F2ZV9DWFhG TEFHUwplbGlmIHRlc3QgJGFjX2N2X3Byb2dfY3h4X2cgPSB5ZXM7IHRoZW4K ICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogICAgQ1hYRkxBR1M9Ii1n IC1PMiIKICBlbHNlCiAgICBDWFhGTEFHUz0iLWciCiAgZmkKZWxzZQogIGlm IHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAgICBDWFhGTEFHUz0iLU8yIgog IGVsc2UKICAgIENYWEZMQUdTPQogIGZpCmZpCmZvciBhY19kZWNsYXJhdGlv biBpbiBcCiAgICcnXAogICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAogICAn ZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhpdCAoaW50KSB0aHJvdyAoKTsgdXNp bmcgc3RkOjpleGl0OycgXAogICAnZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhp dCAoaW50KTsgdXNpbmcgc3RkOjpleGl0OycgXAogICAnZXh0ZXJuICJDIiB2 b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCiAgICdleHRlcm4gIkMiIHZv aWQgZXhpdCAoaW50KTsnIFwKICAgJ3ZvaWQgZXhpdCAoaW50KTsnCmRvCiAg Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8g ImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRl IDxzdGRsaWIuaD4KJGFjX2RlY2xhcmF0aW9uCmludAptYWluICgpCnsKZXhp dCAoNDIpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRl c3QuJGFjX29iamV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P OiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkg Mj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBc JD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAm JgogICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2Jq ZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3Ry eVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0k PwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+ JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIDoKZWxzZQog IGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAn cy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmNvbnRpbnVlCmZpCnJt IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogIGNh dCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJj b25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZk ZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19l eHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfZGVjbGFy YXRpb24KaW50Cm1haW4gKCkKewpleGl0ICg0Mik7CiAgOwogIHJldHVybiAw Owp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4m NQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0 ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNf dHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9OyB9OyB0aGVuCiAgYnJlYWsKZWxzZQogIGVjaG8gIiRhc19tZTogZmFp bGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3Qu JGFjX2V4dCA+JjUKCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuJGFjX2V4dApkb25lCnJtIC1mIGNvbmZ0ZXN0KgppZiB0ZXN0IC1u ICIkYWNfZGVjbGFyYXRpb24iOyB0aGVuCiAgZWNobyAnI2lmZGVmIF9fY3Bs dXNwbHVzJyA+PmNvbmZkZWZzLmgKICBlY2hvICRhY19kZWNsYXJhdGlvbiAg ICAgID4+Y29uZmRlZnMuaAogIGVjaG8gJyNlbmRpZicgICAgICAgICAgICAg Pj5jb25mZGVmcy5oCmZpCgphY19leHQ9YwphY19jcHA9JyRDUFAgJENQUEZM QUdTJwphY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29u ZnRlc3QuJGFjX2V4dCA+JjUnCmFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRh Y19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3Qu JGFjX2V4dCAkTElCUyA+JjUnCmFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19j b21waWxlcl9nbnUKCnRlc3QgLXogIiRMRCIgJiYgTEQ9JyR7Q1hYfScKIyBG aW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHBy b2dyYW0gKGZhc3RlciksCiMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFz IGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgojIGluY29tcGF0 aWJsZSB2ZXJzaW9uczoKIyBTeXNWIC9ldGMvaW5zdGFsbCwgL3Vzci9zYmlu L2luc3RhbGwKIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCiMgSVJJWCAvc2Jp bi9pbnN0YWxsCiMgQUlYIC9iaW4vaW5zdGFsbAojIEFtaWdhT1MgL0MvaW5z dGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlz Y3MKIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0 IHdvcmsgd2l0aG91dCBhIC1nIGZsYWcKIyBBRlMgL3Vzci9hZnN3cy9iaW4v aW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlzdGVudCBhcmdzCiMg U1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhl IG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKIyAuL2luc3RhbGwsIHdoaWNo IGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2lu c3RhbGwuc2guCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Ig YSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKZWNobyAkRUNIT19OICJj aGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICRFQ0hP X0MiID4mNgppZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KaWYgdGVzdCAi JHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hv ICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgYXNfc2F2 ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGlu ICRQQVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCiAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1 dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCmNhc2UgJGFz X2Rpci8gaW4KICAuLyB8IC4vLyB8IC9jQy8qIHwgXAogIC9ldGMvKiB8IC91 c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dz L2Jpbi8qIHwgXAogIC91c3IvdWNiLyogKSA7OwogICopCiAgICAjIE9TRjEg YW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0 YWxsLgogICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBzaW5j ZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290CiAgICAjIGJ5IGRlZmF1bHQu CiAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7 IGRvCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwogICAgICAgIGlmICRhc19leGVjdXRhYmxlX3Ag IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCiAgICAgICAg ICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgogICAgICAgICAgICBn cmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9k ZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgICAgICMgQUlYIGluc3RhbGwu ICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4K ICAgICAgICAgICAgOgogICAgICAgICAgZWxpZiB0ZXN0ICRhY19wcm9nID0g aW5zdGFsbCAmJgogICAgICAgICAgICBncmVwIHB3cGx1cyAiJGFzX2Rpci8k YWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAg ICAgICAgICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1 c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgogICAgICAgICAgICA6CiAg ICAgICAgICBlbHNlCiAgICAgICAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0i JGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCAtYyIKICAgICAgICAgICAg YnJlYWsgMwogICAgICAgICAgZmkKICAgICAgICBmaQogICAgICBkb25lCiAg ICBkb25lCiAgICA7Owplc2FjCmRvbmUKCgpmaQogIGlmIHRlc3QgIiR7YWNf Y3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCiAgICBJTlNUQUxM PSRhY19jdl9wYXRoX2luc3RhbGwKICBlbHNlCiAgICAjIEFzIGEgbGFzdCBy ZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVsbCBzY3JpcHQuICBXZSBkb24ndCBj YWNoZSBhCiAgICAjIHBhdGggZm9yIElOU1RBTEwgd2l0aGluIGEgc291cmNl IGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKICAgICMgYnJlYWsgb3Ro ZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5 IGlzCiAgICAjIHJlbW92ZWQsIG9yIGlmIHRoZSBwYXRoIGlzIHJlbGF0aXZl LgogICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAogIGZpCmZpCmVjaG8gIiRh c19tZTokTElORU5POiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKZWNobyAiJHtF Q0hPX1R9JElOU1RBTEwiID4mNgoKIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1 bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNlcyBpbiAke3Zhci12YWx9LgojIEl0 IHRoaW5rcyB0aGUgZmlyc3QgY2xvc2UgYnJhY2UgZW5kcyB0aGUgdmFyaWFi bGUgc3Vic3RpdHV0aW9uLgp0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAm JiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCgp0ZXN0IC16ICIkSU5T VEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JwoK dGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lO U1RBTEx9IC1tIDY0NCcKCmlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7 IHRoZW4KICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9v bF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1l IHdpdGggYXJncy4Kc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFubGli OyBhY193b3JkPSQyCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAk YWNfd29yZC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9wcm9n X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkUkFOTElC IjsgdGhlbgogIGFjX2N2X3Byb2dfUkFOTElCPSIkUkFOTElCIiAjIExldCB0 aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZlX0lGUz0k SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgK ZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8KICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJv Z19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIgogICAgZWNobyAi JGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUKZG9uZQoKZmkKZmkK UkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQgppZiB0ZXN0IC1uICIkUkFOTElC IjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSQU5M SUIiID4mNQplY2hvICIke0VDSE9fVH0kUkFOTElCIiA+JjYKZWxzZQogIGVj aG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKZWNobyAiJHtF Q0hPX1R9bm8iID4mNgpmaQoKZmkKaWYgdGVzdCAteiAiJGFjX2N2X3Byb2df UkFOTElCIjsgdGhlbgogIGFjX2N0X1JBTkxJQj0kUkFOTElCCiAgIyBFeHRy YWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUg YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpzZXQgZHVtbXkgcmFubGliOyBh Y193b3JkPSQyCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNf d29yZC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9wcm9nX2Fj X2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAi KGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkYWNf Y3RfUkFOTElCIjsgdGhlbgogIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSIk YWNfY3RfUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVz dC4KZWxzZQphc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S CmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiAk YXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9InJhbmxpYiIK ICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFrIDIKICBmaQpkb25lCmRv bmUKCiAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCIiAmJiBh Y19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iOiIKZmkKZmkKYWNfY3RfUkFOTElC PSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQgppZiB0ZXN0IC1uICIkYWNfY3Rf UkFOTElCIjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 ICRhY19jdF9SQU5MSUIiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3RfUkFO TElCIiA+JjYKZWxzZQogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 IG5vIiA+JjUKZWNobyAiJHtFQ0hPX1R9bm8iID4mNgpmaQoKICBSQU5MSUI9 JGFjX2N0X1JBTkxJQgplbHNlCiAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5M SUIiCmZpCgojIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc2hhcmVkIG9yIC0t ZGlzYWJsZS1zaGFyZWQgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJsZV9z aGFyZWQrc2V0fSIgPSBzZXQ7IHRoZW4KICBlbmFibGV2YWw9IiRlbmFibGVf c2hhcmVkIgogIHA9JHtQQUNLQUdFLWRlZmF1bHR9CmNhc2UgJGVuYWJsZXZh bCBpbgp5ZXMpIGVuYWJsZV9zaGFyZWQ9eWVzIDs7Cm5vKSBlbmFibGVfc2hh cmVkPW5vIDs7CiopCiAgZW5hYmxlX3NoYXJlZD1ubwogICMgTG9vayBhdCB0 aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxp c3Qgc2VwYXJhdG9ycy4KICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZz PSIkSUZTIjsgSUZTPSIke0lGU306LCIKICBmb3IgcGtnIGluICRlbmFibGV2 YWw7IGRvCiAgICBpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgogICAg ICBlbmFibGVfc2hhcmVkPXllcwogICAgZmkKICBkb25lCiAgSUZTPSIkYWNf c2F2ZV9pZnMiCiAgOzsKZXNhYwplbHNlCiAgZW5hYmxlX3NoYXJlZD1ubwpm aTsKIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN0YXRpYyBvciAtLWRpc2Fi bGUtc3RhdGljIHdhcyBnaXZlbi4KaWYgdGVzdCAiJHtlbmFibGVfc3RhdGlj K3NldH0iID0gc2V0OyB0aGVuCiAgZW5hYmxldmFsPSIkZW5hYmxlX3N0YXRp YyIKICBwPSR7UEFDS0FHRS1kZWZhdWx0fQpjYXNlICRlbmFibGV2YWwgaW4K eWVzKSBlbmFibGVfc3RhdGljPXllcyA7OwpubykgZW5hYmxlX3N0YXRpYz1u byA7OwoqKQogIGVuYWJsZV9zdGF0aWM9bm8KICAjIExvb2sgYXQgdGhlIGFy Z3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNl cGFyYXRvcnMuCiAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElG UyI7IElGUz0iJHtJRlN9OiwiCiAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBk bwogICAgaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KICAgICAgZW5h YmxlX3N0YXRpYz15ZXMKICAgIGZpCiAgZG9uZQogIElGUz0iJGFjX3NhdmVf aWZzIgogIDs7CmVzYWMKZWxzZQogIGVuYWJsZV9zdGF0aWM9eWVzCmZpOwoj IENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZmFzdC1pbnN0YWxsIG9yIC0tZGlz YWJsZS1mYXN0LWluc3RhbGwgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJs ZV9mYXN0X2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KICBlbmFibGV2YWw9 IiRlbmFibGVfZmFzdF9pbnN0YWxsIgogIHA9JHtQQUNLQUdFLWRlZmF1bHR9 CmNhc2UgJGVuYWJsZXZhbCBpbgp5ZXMpIGVuYWJsZV9mYXN0X2luc3RhbGw9 eWVzIDs7Cm5vKSBlbmFibGVfZmFzdF9pbnN0YWxsPW5vIDs7CiopCiAgZW5h YmxlX2Zhc3RfaW5zdGFsbD1ubwogICMgTG9vayBhdCB0aGUgYXJndW1lbnQg d2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9y cy4KICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZT PSIke0lGU306LCIKICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCiAgICBp ZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgogICAgICBlbmFibGVfZmFz dF9pbnN0YWxsPXllcwogICAgZmkKICBkb25lCiAgSUZTPSIkYWNfc2F2ZV9p ZnMiCiAgOzsKZXNhYwplbHNlCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbD15ZXMK Zmk7CiMgRmluZCB0aGUgY29ycmVjdCBQQVRIIHNlcGFyYXRvci4gIFVzdWFs bHkgdGhpcyBpcyBgOicsIGJ1dAojIERKR1BQIHVzZXMgYDsnIGxpa2UgRE9T LgppZiB0ZXN0ICJYJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBYc2V0OyB0 aGVuCiAgVU5BTUU9JHtVTkFNRS1gdW5hbWUgMj4vZGV2L251bGxgfQogIGNh c2UgWCRVTkFNRSBpbgogICAgKi1ET1MpIGx0X2N2X3N5c19wYXRoX3NlcGFy YXRvcj0nOycgOzsKICAgICopICAgICBsdF9jdl9zeXNfcGF0aF9zZXBhcmF0 b3I9JzonIDs7CiAgZXNhYwogIFBBVEhfU0VQQVJBVE9SPSRsdF9jdl9zeXNf cGF0aF9zZXBhcmF0b3IKZmkKCgojIENoZWNrIHdoZXRoZXIgLS13aXRoLWdu dS1sZCBvciAtLXdpdGhvdXQtZ251LWxkIHdhcyBnaXZlbi4KaWYgdGVzdCAi JHt3aXRoX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbgogIHdpdGh2YWw9IiR3 aXRoX2dudV9sZCIKICB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2du dV9sZD15ZXMKZWxzZQogIHdpdGhfZ251X2xkPW5vCmZpOwphY19wcm9nPWxk CmlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgIyBDaGVjayBpZiBnY2Mg LXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCiAgZWNobyAiJGFz X21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5IEdDQyIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgR0NDLi4u ICRFQ0hPX0MiID4mNgogIGNhc2UgJGhvc3QgaW4KICAqLSotbWluZ3cqKQog ICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdo aWNoIHVwc2V0cyBtaW5ndwogICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJv Zy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwogICopCiAgICBh Y19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CiAg ZXNhYwogIGNhc2UgJGFjX3Byb2cgaW4KICAgICMgQWNjZXB0IGFic29sdXRl IHBhdGhzLgogICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKQogICAgICBy ZV9kaXJlbHQ9Jy9bXi9dW14vXSovXC5cLi8nCiAgICAgICMgQ2Fub25pY2Fs aXplIHRoZSBwYXRoIG9mIGxkCiAgICAgIGFjX3Byb2c9YGVjaG8gJGFjX3By b2d8IHNlZCAncyVcXFxcJS8lZydgCiAgICAgIHdoaWxlIGVjaG8gJGFjX3By b2cgfCBncmVwICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbwoJ YWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgc2VkICJzJSRyZV9kaXJlbHQlLyUi YAogICAgICBkb25lCiAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19w cm9nIgogICAgICA7OwogICIiKQogICAgIyBJZiBpdCBmYWlscywgdGhlbiBw cmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCiAgICBhY19wcm9nPWxkCiAg ICA7OwogICopCiAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJj aCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCiAgICB3aXRoX2dudV9sZD11 bmtub3duCiAgICA7OwogIGVzYWMKZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQi ID0geWVzOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5n IGZvciBHTlUgbGQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBH TlUgbGQuLi4gJEVDSE9fQyIgPiY2CmVsc2UKICBlY2hvICIkYXNfbWU6JExJ TkVOTzogY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQiID4mNQplY2hvICRFQ0hP X04gImNoZWNraW5nIGZvciBub24tR05VIGxkLi4uICRFQ0hPX0MiID4mNgpm aQppZiB0ZXN0ICIke2x0X2N2X3BhdGhfTEQrc2V0fSIgPSBzZXQ7IHRoZW4K ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAg aWYgdGVzdCAteiAiJExEIjsgdGhlbgogIElGUz0iJHtJRlM9IAl9IjsgYWNf c2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgZm9yIGFj X2RpciBpbiAkUEFUSDsgZG8KICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFj X2Rpcj0uCiAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0 ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KICAg ICAgbHRfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKICAgICAgIyBD aGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJh dGhlciB1c2UgLS12ZXJzaW9uLAogICAgICAjIGJ1dCBhcHBhcmVudGx5IHNv bWUgR05VIGxkJ3Mgb25seSBhY2NlcHQgLXYuCiAgICAgICMgQnJlYWsgb25s eSBpZiBpdCB3YXMgdGhlIEdOVS9ub24tR05VIGxkIHRoYXQgd2UgcHJlZmVy LgogICAgICBpZiAiJGx0X2N2X3BhdGhfTEQiIC12IDI+JjEgPCAvZGV2L251 bGwgfCBlZ3JlcCAnKEdOVXx3aXRoIEJGRCknID4gL2Rldi9udWxsOyB0aGVu Cgl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCiAgICAgIGVs c2UKCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYmIGJyZWFrCiAgICAg IGZpCiAgICBmaQogIGRvbmUKICBJRlM9IiRhY19zYXZlX2lmcyIKZWxzZQog IGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg dGhlIHRlc3Qgd2l0aCBhIHBhdGguCmZpCmZpCgpMRD0iJGx0X2N2X3BhdGhf TEQiCmlmIHRlc3QgLW4gIiRMRCI7IHRoZW4KICBlY2hvICIkYXNfbWU6JExJ TkVOTzogcmVzdWx0OiAkTEQiID4mNQplY2hvICIke0VDSE9fVH0kTEQiID4m NgplbHNlCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4m NQplY2hvICIke0VDSE9fVH1ubyIgPiY2CmZpCnRlc3QgLXogIiRMRCIgJiYg eyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogbm8gYWNjZXB0YWJs ZSBsZCBmb3VuZCBpbiBcJFBBVEgiID4mNQplY2hvICIkYXNfbWU6IGVycm9y OiBubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSCIgPiYyO30KICAg eyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmVjaG8gIiRhc19tZTokTElORU5P OiBjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZCIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBp cyBHTlUgbGQuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7bHRfY3ZfcHJv Z19nbnVfbGQrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihj YWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgIyBJJ2QgcmF0aGVyIHVzZSAt LXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGQncyBv bmx5IGFjY2VwdCAtdi4KaWYgJExEIC12IDI+JjEgPC9kZXYvbnVsbCB8IGVn cmVwICcoR05VfHdpdGggQkZEKScgMT4mNTsgdGhlbgogIGx0X2N2X3Byb2df Z251X2xkPXllcwplbHNlCiAgbHRfY3ZfcHJvZ19nbnVfbGQ9bm8KZmkKZmkK ZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGx0X2N2X3Byb2dfZ251 X2xkIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGx0X2N2X3Byb2dfZ251X2xkIiA+ JjYKd2l0aF9nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkCgoKZWNobyAiJGFz X21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9h ZCBvYmplY3QgZmlsZXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZv ciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gJEVDSE9f QyIgPiY2CmlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIg PSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgplbHNlCiAgbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJwpmaQplY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkbHRfY3ZfbGRfcmVsb2FkX2Zs YWciID4mNQplY2hvICIke0VDSE9fVH0kbHRfY3ZfbGRfcmVsb2FkX2ZsYWci ID4mNgpyZWxvYWRfZmxhZz0kbHRfY3ZfbGRfcmVsb2FkX2ZsYWcKdGVzdCAt biAiJHJlbG9hZF9mbGFnIiAmJiByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxh ZyIKCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgQlNELWNv bXBhdGlibGUgbm0iID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBC U0QtY29tcGF0aWJsZSBubS4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHts dF9jdl9wYXRoX05NK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19O ICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRO TSI7IHRoZW4KICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K ICBsdF9jdl9wYXRoX05NPSIkTk0iCmVsc2UKICBJRlM9IiR7SUZTPSAJfSI7 IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgogIGZv ciBhY19kaXIgaW4gJFBBVEggL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47 IGRvCiAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgogICAgdG1w X25tPSRhY19kaXIvJHthY190b29sX3ByZWZpeH1ubQogICAgaWYgdGVzdCAt ZiAkdG1wX25tIHx8IHRlc3QgLWYgJHRtcF9ubSRhY19leGVleHQgOyB0aGVu CiAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNE LWNvbXBhdCBmbGFnLgogICAgICAjIEFkZGluZyB0aGUgYHNlZCAxcScgcHJl dmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIEhQLVVYLCB3aGljaCBzYXlzOgog ICAgICAjICAgbm06IHVua25vd24gb3B0aW9uICJCIiBpZ25vcmVkCiAgICAg ICMgVHJ1NjQncyBubSBjb21wbGFpbnMgdGhhdCAvZGV2L251bGwgaXMgYW4g aW52YWxpZCBvYmplY3QgZmlsZQogICAgICBpZiAoJHRtcF9ubSAtQiAvZGV2 L251bGwgMj4mMSB8IHNlZCAnMXEnOyBleGl0IDApIHwgZWdyZXAgJygvZGV2 L251bGx8SW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlKScgPi9kZXYvbnVs bDsgdGhlbgoJbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtQiIKCWJyZWFrCiAg ICAgIGVsaWYgKCR0bXBfbm0gLXAgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFx JzsgZXhpdCAwKSB8IGVncmVwIC9kZXYvbnVsbCA+L2Rldi9udWxsOyB0aGVu CglsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1wIgoJYnJlYWsKICAgICAgZWxz ZQoJbHRfY3ZfcGF0aF9OTT0ke2x0X2N2X3BhdGhfTk09IiR0bXBfbm0ifSAj IGtlZXAgdGhlIGZpcnN0IG1hdGNoLCBidXQKCWNvbnRpbnVlICMgc28gdGhh dCB3ZSBjYW4gdHJ5IHRvIGZpbmQgb25lIHRoYXQgc3VwcG9ydHMgQlNEIGZs YWdzCiAgICAgIGZpCiAgICBmaQogIGRvbmUKICBJRlM9IiRhY19zYXZlX2lm cyIKICB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9OTSIgJiYgbHRfY3ZfcGF0aF9O TT1ubQpmaQpmaQoKTk09IiRsdF9jdl9wYXRoX05NIgplY2hvICIkYXNfbWU6 JExJTkVOTzogcmVzdWx0OiAkTk0iID4mNQplY2hvICIke0VDSE9fVH0kTk0i ID4mNgoKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBhIHNl ZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CmVjaG8gJEVD SE9fTiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNh dGUgb3V0cHV0Li4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2x0X2N2X3Bh dGhfU0VEK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2Fj aGVkKSAkRUNIT19DIiA+JjYKZWxzZQogICMgTG9vcCB0aHJvdWdoIHRoZSB1 c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3Igc2VkIGFuZCBnc2VkLgojIFRoZW4g dXNlIHRoYXQgbGlzdCBvZiBzZWQncyBhcyBvbmVzIHRvIHRlc3QgZm9yIHRy dW5jYXRpb24uCmFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQ QVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIi ICYmIGFzX2Rpcj0uCiAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCiAg ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KICAgICAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfcHJvZyRhY19leGVjX2V4dCI7IHRoZW4KICAgICAgICBfc2VkX2xpc3Q9 IiRfc2VkX2xpc3QgJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKICAg ICAgZmkKICAgIGRvbmUKICBkb25lCmRvbmUKCiAgIyBDcmVhdGUgYSB0ZW1w b3JhcnkgZGlyZWN0b3J5LCBhbmQgaG9vayBmb3IgaXRzIHJlbW92YWwgdW5s ZXNzIGRlYnVnZ2luZy4KJGRlYnVnIHx8CnsKICB0cmFwICdleGl0X3N0YXR1 cz0kPzsgcm0gLXJmICR0bXAgJiYgZXhpdCAkZXhpdF9zdGF0dXMnIDAKICB0 cmFwICd7IChleGl0IDEpOyBleGl0IDE7IH0nIDEgMiAxMyAxNQp9CgojIENy ZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4K OiAke1RNUERJUj0vdG1wfQp7CiAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVt cCAtZCAtcSAiJFRNUERJUi9zZWRYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYK ICB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIgp9ICB8fAp7CiAg dG1wPSRUTVBESVIvc2VkJCQtJFJBTkRPTQogICh1bWFzayAwNzcgJiYgbWtk aXIgJHRtcCkKfSB8fAp7CiAgIGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBh IHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyCiAgIHsgKGV4 aXQgMSk7IGV4aXQgMTsgfQp9CiAgX21heD0wCiAgX2NvdW50PTAKICAjIEFk ZCAvdXNyL3hwZzQvYmluL3NlZCBhcyBpdCBpcyB0eXBpY2FsbHkgZm91bmQg b24gU29sYXJpcwogICMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5j YXRlcyBvdXRwdXQuCiAgZm9yIF9zZWQgaW4gJF9zZWRfbGlzdCAvdXNyL3hw ZzQvYmluL3NlZDsgZG8KICAgIHRlc3QgISAtZiAke19zZWR9ICYmIGJyZWFr CiAgICBjYXQgL2Rldi9udWxsID4gIiR0bXAvc2VkLmluIgogICAgX2NvdW50 PTAKICAgIGVjaG8gJHtFQ0hPX04tJGFjX259ICIwMTIzNDU2Nzg5JHtFQ0hP X0MtJGFjX2N9IiA+IiR0bXAvc2VkLmluIgogICAgIyBDaGVjayBmb3IgR05V IHNlZCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgogICAgaWYgIiR7 X3NlZH0iIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZWdyZXAgJyhH TlUpJyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBsdF9jdl9wYXRoX1NFRD0k e19zZWR9CiAgICAgIGJyZWFrCiAgICBmaQogICAgd2hpbGUgdHJ1ZTsgZG8K ICAgICAgY2F0ICIkdG1wL3NlZC5pbiIgIiR0bXAvc2VkLmluIiA+IiR0bXAv c2VkLnRtcCIKICAgICAgbXYgIiR0bXAvc2VkLnRtcCIgIiR0bXAvc2VkLmlu IgogICAgICBjcCAiJHRtcC9zZWQuaW4iICIkdG1wL3NlZC5ubCIKICAgICAg ZWNobyA+PiIkdG1wL3NlZC5ubCIKICAgICAgJHtfc2VkfSAtZSAncy9hJC8v JyA8ICIkdG1wL3NlZC5ubCIgPiIkdG1wL3NlZC5vdXQiIHx8IGJyZWFrCiAg ICAgIGNtcCAtcyAiJHRtcC9zZWQub3V0IiAiJHRtcC9zZWQubmwiIHx8IGJy ZWFrCiAgICAgICMgNDAwMDAgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0 aGFuIGVub3VnaAogICAgICB0ZXN0ICRfY291bnQgLWd0IDEwICYmIGJyZWFr CiAgICAgIF9jb3VudD1gZXhwciAkX2NvdW50ICsgMWAKICAgICAgaWYgdGVz dCAkX2NvdW50IC1ndCAkX21heDsgdGhlbgogICAgICAgIF9tYXg9JF9jb3Vu dAogICAgICAgIGx0X2N2X3BhdGhfU0VEPSRfc2VkCiAgICAgIGZpCiAgICBk b25lCiAgZG9uZQogIHJtIC1yZiAiJHRtcCIKCmZpCgppZiB0ZXN0ICJYJFNF RCIgIT0gIlgiOyB0aGVuCiAgbHRfY3ZfcGF0aF9TRUQ9JFNFRAplbHNlCiAg U0VEPSRsdF9jdl9wYXRoX1NFRApmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiAkU0VEIiA+JjUKZWNobyAiJHtFQ0hPX1R9JFNFRCIgPiY2Cgpl Y2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciBsbiAtcyB3 b3JrcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBsbiAt cyB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKTE5fUz0kYXNfbG5fcwppZiB0ZXN0 ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IHJlc3VsdDogeWVzIiA+JjUKZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYK ZWxzZQogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vLCB1c2lu ZyAkTE5fUyIgPiY1CmVjaG8gIiR7RUNIT19UfW5vLCB1c2luZyAkTE5fUyIg PiY2CmZpCgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgaG93IHRv IHJlY29nbmlzZSBkZXBlbmRlbnQgbGlicmFyaWVzIiA+JjUKZWNobyAkRUNI T19OICJjaGVja2luZyBob3cgdG8gcmVjb2duaXNlIGRlcGVuZGVudCBsaWJy YXJpZXMuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7bHRfY3ZfZGVwbGli c19jaGVja19tZXRob2Qrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hP X04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgbHRfY3ZfZmlsZV9t YWdpY19jbWQ9JyRNQUdJQ19DTUQnCmx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9m aWxlPQpsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0ndW5rbm93bicKIyBO ZWVkIHRvIHNldCB0aGUgcHJlY2VkaW5nIHZhcmlhYmxlIG9uIGFsbCBwbGF0 Zm9ybXMgdGhhdCBzdXBwb3J0CiMgaW50ZXJsaWJyYXJ5IGRlcGVuZGVuY2ll cy4KIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCiMg YHVua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0 IHdlIHJlYWxseSBkb24ndCBrbm93LgojICdwYXNzX2FsbCcgLS0gYWxsIGRl cGVuZGVuY2llcyBwYXNzZWQgd2l0aCBubyBjaGVja3MuCiMgJ3Rlc3RfY29t cGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KIyAnZmls ZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZp bGVzIGluIGxpYnJhcnkgcGF0aAojIHdoaWNoIHJlc3BvbmRzIHRvIHRoZSAk ZmlsZV9tYWdpY19jbWQgd2l0aCBhIGdpdmVuIGVncmVwIHJlZ2V4LgojIElm IHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVt IGFuZCB5b3UncmUgbm90IHN1cmUKIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2ls bCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4K CmNhc2UgJGhvc3Rfb3MgaW4KYWl4NCogfCBhaXg1KikKICBsdF9jdl9kZXBs aWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogIDs7CgpiZW9zKikKICBsdF9j dl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogIDs7Cgpic2RpNCop CiAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxG IFswLTldWzAtOV0qLWJpdCBbTUxdU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1p YyBsaWIpJwogIGx0X2N2X2ZpbGVfbWFnaWNfY21kPScvdXNyL2Jpbi9maWxl IC1MJwogIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9zaGxpYi9saWJj LnNvCiAgOzsKCmN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKICBsdF9jdl9k ZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBw ZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKICBsdF9jdl9maWxl X21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgOzsKCmRhcndpbiogfCByaGFw c29keSopCiAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFn aWMgTWFjaC1PIGR5bmFtaWNhbGx5IGxpbmtlZCBzaGFyZWQgbGlicmFyeScK ICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL3Vzci9iaW4vZmlsZSAtTCcKICBj YXNlICIkaG9zdF9vcyIgaW4KICByaGFwc29keSogfCBkYXJ3aW4xLlswMTJd KQogICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL1N5c3Rl bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9WZXJzaW9u cy8qL1N5c3RlbSB8IGhlYWQgLTFgCiAgICA7OwogICopICMgRGFyd2luIDEu MyBvbgogICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9Jy91c3IvbGli L2xpYlN5c3RlbS5keWxpYicKICAgIDs7CiAgZXNhYwogIDs7CgpmcmVlYnNk KikKICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZf XyA+IC9kZXYvbnVsbDsgdGhlbgogICAgY2FzZSAkaG9zdF9jcHUgaW4KICAg IGkqODYgKQogICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgdGhlIHByZXNlbmNl IG9mIE9wZW5CU0QgaGVyZSB3YXMgYSBtaXN0YWtlLgogICAgICAjIExldCdz IGFjY2VwdCBib3RoIG9mIHRoZW0gdW50aWwgdGhpcyBpcyBjbGVhcmVkIHVw LgogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdp YyAoRnJlZUJTRHxPcGVuQlNEKS9pWzMtOV04NiAoY29tcGFjdCApP2RlbWFu ZCBwYWdlZCBzaGFyZWQgbGlicmFyeScKICAgICAgbHRfY3ZfZmlsZV9tYWdp Y19jbWQ9L3Vzci9iaW4vZmlsZQogICAgICBsdF9jdl9maWxlX21hZ2ljX3Rl c3RfZmlsZT1gZWNobyAvdXNyL2xpYi9saWJjLnNvLipgCiAgICAgIDs7CiAg ICBlc2FjCiAgZWxzZQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9 cGFzc19hbGwKICBmaQogIDs7CgpnbnUqKQogIGx0X2N2X2RlcGxpYnNfY2hl Y2tfbWV0aG9kPXBhc3NfYWxsCiAgOzsKCmhwdXgxMC4yMCp8aHB1eDExKikK ICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1sw LTldWzAtOV1bMC05XXxQQS1SSVNDWzAtOV0uWzAtOV0pIHNoYXJlZCBsaWJy YXJ5JwogIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKICBs dF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAg OzsKCmlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgY2FzZSAkaG9z dF9vcyBpbgogIGlyaXg1KiB8IG5vbnN0b3B1eCopCiAgICAjIHRoaXMgd2ls bCBiZSBvdmVycmlkZGVuIHdpdGggcGFzc19hbGwsIGJ1dCBsZXQgdXMga2Vl cCBpdCBqdXN0IGluIGNhc2UKICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0 aG9kPSJmaWxlX21hZ2ljIEVMRiAzMi1iaXQgTVNCIGR5bmFtaWMgbGliIE1J UFMgLSB2ZXJzaW9uIDEiCiAgICA7OwogICopCiAgICBjYXNlICRMRCBpbgog ICAgKi0zMnwqIi0zMiAiKSBsaWJtYWdpYz0zMi1iaXQ7OwogICAgKi1uMzJ8 KiItbjMyICIpIGxpYm1hZ2ljPU4zMjs7CiAgICAqLTY0fCoiLTY0ICIpIGxp Ym1hZ2ljPTY0LWJpdDs7CiAgICAqKSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7 CiAgICBlc2FjCiAgICAjIHRoaXMgd2lsbCBiZSBvdmVycmlkZGVuIHdpdGgg cGFzc19hbGwsIGJ1dCBsZXQgdXMga2VlcCBpdCBqdXN0IGluIGNhc2UKICAg IGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSJmaWxlX21hZ2ljIEVMRiAk e2xpYm1hZ2ljfSBNU0IgbWlwcy1bMTIzNF0gZHluYW1pYyBsaWIgTUlQUyAt IHZlcnNpb24gMSIKICAgIDs7CiAgZXNhYwogIGx0X2N2X2ZpbGVfbWFnaWNf dGVzdF9maWxlPWBlY2hvIC9saWIke2xpYnN1ZmZ9L2xpYmMuc28qYAogIGx0 X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgOzsKCiMgVGhp cyBtdXN0IGJlIExpbnV4IEVMRi4KbGludXgtZ251KikKICBjYXNlICRob3N0 X2NwdSBpbgogIGFscGhhKiB8IGhwcGEqIHwgaSo4NiB8IG1pcHMgfCBtaXBz ZWwgfCBwb3dlcnBjKiB8IHNwYXJjKiB8IGlhNjQqIHwgczM5MCogfCB4ODZf NjQqKQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwg OzsKICAqKQogICAgIyBnbGliYyB1cCB0byAyLjEuMSBkb2VzIG5vdCBwZXJm b3JtIHNvbWUgcmVsb2NhdGlvbnMgb24gQVJNCiAgICBsdF9jdl9kZXBsaWJz X2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgWzAtOV1bMC05XSotYml0 IFtMTV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYiApJyA7OwogIGVz YWMKICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xp YmMuc28qIC9saWIvbGliYy0qLnNvYAogIDs7CgpuZXRic2QqKQogIGlmIGVj aG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4gL2Rldi9u dWxsOyB0aGVuCiAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0 Y2hfcGF0dGVybiAvbGliW14vXC5dK1wuc29cLlswLTldK1wuWzAtOV0rJCcK ICBlbHNlCiAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hf cGF0dGVybiAvbGliW14vXC5dK1wuc28kJwogIGZpCiAgOzsKCm5ld29zNiop CiAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxG IFswLTldWzAtOV0qLWJpdCBbTUxdU0IgKGV4ZWN1dGFibGV8ZHluYW1pYyBs aWIpJwogIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKICBs dF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJubHMuc28K ICA7OwoKb3BlbmJzZCopCiAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9i aW4vZmlsZQogIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC91 c3IvbGliL2xpYmMuc28uKmAKICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9f IHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9v cy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KICAg IGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBb MC05XVswLTldKi1iaXQgW0xNXVNCIHNoYXJlZCBvYmplY3QnCiAgZWxzZQog ICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgT3Bl bkJTRC4qIHNoYXJlZCBsaWJyYXJ5JwogIGZpCiAgOzsKCm9zZjMqIHwgb3Nm NCogfCBvc2Y1KikKICAjIHRoaXMgd2lsbCBiZSBvdmVycmlkZGVuIHdpdGgg cGFzc19hbGwsIGJ1dCBsZXQgdXMga2VlcCBpdCBqdXN0IGluIGNhc2UKICBs dF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBDT0ZGIGZv cm1hdCBhbHBoYSBzaGFyZWQgbGlicmFyeScKICBsdF9jdl9maWxlX21hZ2lj X3Rlc3RfZmlsZT0vc2hsaWIvbGliYy5zbwogIGx0X2N2X2RlcGxpYnNfY2hl Y2tfbWV0aG9kPXBhc3NfYWxsCiAgOzsKCnNjbzMuMnY1KikKICBsdF9jdl9k ZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogIDs7Cgpzb2xhcmlzKikK ICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogIGx0X2N2 X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9saWIvbGliYy5zbwogIDs7CgpzeXN2 NXV3Wzc4XSogfCBzeXN2NCp1dzIqKQogIGx0X2N2X2RlcGxpYnNfY2hlY2tf bWV0aG9kPXBhc3NfYWxsCiAgOzsKCnN5c3Y0IHwgc3lzdjQuMnV3MiogfCBz eXN2NC4zKiB8IHN5c3Y1KikKICBjYXNlICRob3N0X3ZlbmRvciBpbgogIG1v dG9yb2xhKQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVf bWFnaWMgRUxGIFswLTldWzAtOV0qLWJpdCBbTUxdU0IgKHNoYXJlZCBvYmpl Y3R8ZHluYW1pYyBsaWIpIE1bMC05XVswLTldKiBWZXJzaW9uIFswLTldJwog ICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIv bGliYy5zbypgCiAgICA7OwogIG5jcikKICAgIGx0X2N2X2RlcGxpYnNfY2hl Y2tfbWV0aG9kPXBhc3NfYWxsCiAgICA7OwogIHNlcXVlbnQpCiAgICBsdF9j dl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJwogICAgbHRfY3ZfZGVwbGli c19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFswLTldWzAtOV0qLWJp dCBbTE1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIgKScKICAgIDs7 CiAgc25pKQogICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy9iaW4vZmlsZScK ICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSJmaWxlX21hZ2ljIEVM RiBbMC05XVswLTldKi1iaXQgW0xNXVNCIGR5bmFtaWMgbGliIgogICAgbHRf Y3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L2xpYi9saWJjLnNvCiAgICA7Owog IHNpZW1lbnMpCiAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNz X2FsbAogICAgOzsKICBlc2FjCiAgOzsKZXNhYwoKZmkKZWNobyAiJGFzX21l OiRMSU5FTk86IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9k IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0 aG9kIiA+JjYKZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21k CmRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21l dGhvZAoKCgoKCgoKCiMgQ2hlY2sgZm9yIGNvbW1hbmQgdG8gZ3JhYiB0aGUg cmF3IHN5bWJvbCBuYW1lIGZvbGxvd2VkIGJ5IEMgc3ltYm9sIGZyb20gbm0u CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBjb21tYW5kIHRvIHBh cnNlICROTSBvdXRwdXQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGNv bW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dC4uLiAkRUNIT19DIiA+JjYKaWYg dGVzdCAiJHtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlK3NldH0iID0g c2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+ JjYKZWxzZQoKIyBUaGVzZSBhcmUgc2FuZSBkZWZhdWx0cyB0aGF0IHdvcmsg b24gYXQgbGVhc3QgYSBmZXcgb2xkIHN5c3RlbXMuCiMgW1RoZXkgY29tZSBm cm9tIFVsdHJpeC4gIFdoYXQgY291bGQgYmUgb2xkZXIgdGhhbiBVbHRyaXg/ ISEgOyldCgojIENoYXJhY3RlciBjbGFzcyBkZXNjcmliaW5nIE5NIGdsb2Jh bCBzeW1ib2wgY29kZXMuCnN5bWNvZGU9J1tCQ0RFR1JTVF0nCgojIFJlZ2V4 cCB0byBtYXRjaCBzeW1ib2xzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGRpcmVj dGx5IGZyb20gQy4Kc3ltcGF0PSdcKFtfQS1aYS16XVtfQS1aYS16MC05XSpc KScKCiMgVHJhbnNmb3JtIHRoZSBhYm92ZSBpbnRvIGEgcmF3IHN5bWJvbCBh bmQgYSBDIHN5bWJvbC4Kc3lteGZybT0nXDEgXDJcMyBcMycKCiMgVHJhbnNm b3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIGEgcHJvcGVyIEMg ZGVjbGFyYXRpb24KbHRfY3ZfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2Vk IC1uIC1lICdzL14uIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgoK IyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3lt Ym9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCmx0X2N2X2dsb2JhbF9zeW1i b2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0q XCkgJC8gIHtcXFwiXDFcXFwiLCAobHRfcHRyKSAwfSwvcCcgLWUgJ3MvXiRz eW1jb2RlIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKGx0X3B0 cikgXCZcMn0sL3AnIgoKIyBEZWZpbmUgc3lzdGVtLXNwZWNpZmljIHZhcmlh Ymxlcy4KY2FzZSAkaG9zdF9vcyBpbgphaXgqKQogIHN5bWNvZGU9J1tCQ0RU XScKICA7OwpjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCiAgc3ltY29kZT0n W0FCQ0RHSVNUV10nCiAgOzsKaHB1eCopICMgSXRzIGxpbmtlciBkaXN0aW5n dWlzaGVzIGRhdGEgZnJvbSBjb2RlIHN5bWJvbHMKICBsdF9jdl9nbG9iYWxf c3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9l eHRlcm4gY2hhciBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipc KSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIGx0X2N2X2dsb2JhbF9zeW1ib2xf dG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkg JC8gIHtcXFwiXDFcXFwiLCAobHRfcHRyKSAwfSwvcCcgLWUgJ3MvXiRzeW1j b2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsIChsdF9wdHIp IFwmXDJ9LC9wJyIKICA7Owppcml4KiB8IG5vbnN0b3B1eCopCiAgc3ltY29k ZT0nW0JDREVHUlNUXScKICA7Owpvc2YqKQogIHN5bWNvZGU9J1tCQ0RFR1FS U1RdJwogIDs7CnNvbGFyaXMqIHwgc3lzdjUqKQogIHN5bWNvZGU9J1tCRFRd JwogIDs7CnN5c3Y0KQogIHN5bWNvZGU9J1tERk5TVFVdJwogIDs7CmVzYWMK CiMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgpvcHRfY3I9CmNh c2UgJGhvc3Rfb3MgaW4KbWluZ3cqKQogIG9wdF9jcj1gZWNobyAneFx7MCwx XH0nIHwgdHIgeCAnXDAxNSdgICMgb3B0aW9uIGNyIGluIHJlZ2V4cAogIDs7 CmVzYWMKCiMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHVzZSBpdHMg c3RhbmRhcmQgc3ltYm9sIGNvZGVzLgppZiAkTk0gLVYgMj4mMSB8IGVncmVw ICcoR05VfHdpdGggQkZEKScgPiAvZGV2L251bGw7IHRoZW4KICBzeW1jb2Rl PSdbQUJDREdJU1RXXScKZmkKCiMgVHJ5IHdpdGhvdXQgYSBwcmVmaXggdW5k ZXJjb3JlLCB0aGVuIHdpdGggaXQuCmZvciBhY19zeW1wcmZ4IGluICIiICJf IjsgZG8KCiAgIyBXcml0ZSB0aGUgcmF3IGFuZCBDIGlkZW50aWZpZXJzLgps dF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4q WyAJXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsgCV1bIAldKlwoJGFjX3N5bXBy ZnhcKSRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKCiAgIyBDaGVjayB0 byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgcGlwZV93 b3Jrcz1ubwogIHJtIC1mIGNvbmZ0ZXN0KgogIGNhdCA+IGNvbmZ0ZXN0LiRh Y19leHQgPDxFT0YKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewoj ZW5kaWYKY2hhciBubV90ZXN0X3ZhcjsKdm9pZCBubV90ZXN0X2Z1bmMoKXt9 CiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgppbnQgbWFpbigpe25tX3Rl c3RfdmFyPSdhJztubV90ZXN0X2Z1bmMoKTtyZXR1cm4oMCk7fQpFT0YKCiAg aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGls ZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KICAgICMgTm93 IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgogICAgbmxpc3Q9Y29uZnRlc3Qu bm0KICAgIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJE5N IGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3lt Ym9sX3BpcGUgXD4gJG5saXN0XCIiKSA+JjUKICAoZXZhbCAkTk0gY29uZnRl c3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlw ZSBcPiAkbmxpc3QpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgogICAgICAj IFRyeSBzb3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgogICAg ICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgoJ bXYgLWYgIiRubGlzdCJUICIkbmxpc3QiCiAgICAgIGVsc2UKCXJtIC1mICIk bmxpc3QiVAogICAgICBmaQoKICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBz bmFnZ2VkIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVkLgogICAgICBpZiBlZ3Jl cCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgoJ aWYgZWdyZXAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxs OyB0aGVuCgkgIGNhdCA8PEVPRiA+IGNvbmZ0ZXN0LiRhY19leHQKI2lmZGVm IF9fY3BsdXNwbHVzCmV4dGVybiAiQyIgewojZW5kaWYKCkVPRgoJICAjIE5v dyBnZW5lcmF0ZSB0aGUgc3ltYm9sIGZpbGUuCgkgIGV2YWwgIiRsdF9jdl9n bG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IiA+PiBjb25mdGVz dC4kYWNfZXh0JwoKCSAgY2F0IDw8RU9GID4+IGNvbmZ0ZXN0LiRhY19leHQK I2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXwojIGRlZmluZSBs dF9wdHIgdm9pZCAqCiNlbHNlCiMgZGVmaW5lIGx0X3B0ciBjaGFyICoKIyBk ZWZpbmUgY29uc3QKI2VuZGlmCgovKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5 bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gKi8KY29uc3Qgc3RydWN0IHsKICBj b25zdCBjaGFyICpuYW1lOwogIGx0X3B0ciBhZGRyZXNzOwp9Cmx0X3ByZWxv YWRlZF9zeW1ib2xzW10gPQp7CkVPRgoJICBzZWQgInMvXiRzeW1jb2RlJHN5 bWNvZGUqIFwoLipcKSBcKC4qXCkkLyAge1wiXDJcIiwgKGx0X3B0cikgXCZc Mn0sLyIgPCAiJG5saXN0IiA+PiBjb25mdGVzdC4kYWNfZXh0CgkgIGNhdCA8 PFxFT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIHswLCAobHRfcHRyKSAwfQp9 OwoKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmCkVPRgoJICAjIE5vdyB0 cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgoJICBtdiBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKCSAgc2F2ZV9MSUJTPSIkTElC UyIKCSAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCgkgIExJQlM9ImNvbmZ0c3Rt LiRhY19vYmpleHQiCgkgIENGTEFHUz0iJENGTEFHUyRub19idWlsdGluX2Zs YWciCgkgIGlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFj X2xpbmtcIiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNfc3Rh dHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0 dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHRlc3QgLXMgY29u ZnRlc3QkYWNfZXhlZXh0OyB0aGVuCgkgICAgcGlwZV93b3Jrcz15ZXMKCSAg ZmkKCSAgTElCUz0iJHNhdmVfTElCUyIKCSAgQ0ZMQUdTPSIkc2F2ZV9DRkxB R1MiCgllbHNlCgkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBp biAkbmxpc3QiID4mNQoJZmkKICAgICAgZWxzZQoJZWNobyAiY2Fubm90IGZp bmQgbm1fdGVzdF92YXIgaW4gJG5saXN0IiA+JjUKICAgICAgZmkKICAgIGVs c2UKICAgICAgZWNobyAiY2Fubm90IHJ1biAkbHRfY3Zfc3lzX2dsb2JhbF9z eW1ib2xfcGlwZSIgPiY1CiAgICBmaQogIGVsc2UKICAgIGVjaG8gIiRwcm9n bmFtZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CiAgICBjYXQgY29uZnRl c3QuJGFjX2V4dCA+JjUKICBmaQogIHJtIC1mIGNvbmZ0ZXN0KiBjb25mdHN0 KgoKICAjIERvIG5vdCB1c2UgdGhlIGdsb2JhbF9zeW1ib2xfcGlwZSB1bmxl c3MgaXQgd29ya3MuCiAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0 aGVuCiAgICBicmVhawogIGVsc2UKICAgIGx0X2N2X3N5c19nbG9iYWxfc3lt Ym9sX3BpcGU9CiAgZmkKZG9uZQoKZmkKCmdsb2JhbF9zeW1ib2xfcGlwZT0i JGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiCmlmIHRlc3QgLXogIiRs dF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgogIGdsb2JhbF9z eW1ib2xfdG9fY2RlY2w9CiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRk cmVzcz0KZWxzZQogIGdsb2JhbF9zeW1ib2xfdG9fY2RlY2w9IiRsdF9jdl9n bG9iYWxfc3ltYm9sX3RvX2NkZWNsIgogIGdsb2JhbF9zeW1ib2xfdG9fY19u YW1lX2FkZHJlc3M9IiRsdF9jdl9nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9h ZGRyZXNzIgpmaQppZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlJGds b2JhbF9zeW1ib2xfdG9fY2RlYyRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9h ZGRyZXNzIjsKdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 IGZhaWxlZCIgPiY1CmVjaG8gIiR7RUNIT19UfWZhaWxlZCIgPiY2CmVsc2UK ICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBvayIgPiY1CmVjaG8g IiR7RUNIT19UfW9rIiA+JjYKZmkKCmFjX2V4dD1jCmFjX2NwcD0nJENQUCAk Q1BQRkxBR1MnCmFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFH UyBjb25mdGVzdC4kYWNfZXh0ID4mNScKYWNfbGluaz0nJENDIC1vIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25m dGVzdC4kYWNfZXh0ICRMSUJTID4mNScKYWNfY29tcGlsZXJfZ251PSRhY19j dl9jX2NvbXBpbGVyX2dudQplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQplY2hvICRF Q0hPX04gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29y Li4uICRFQ0hPX0MiID4mNgojIE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5h bWVzIGEgZGlyZWN0b3J5LgppZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1k ICIkQ1BQIjsgdGhlbgogIENQUD0KZmkKaWYgdGVzdCAteiAiJENQUCI7IHRo ZW4KICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0 aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxz ZQogICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8g YmUgZXhwYW5kZWQKICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAt dHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCiAgICBkbwogICAgICBhY19w cmVwcm9jX29rPWZhbHNlCmZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGlu ICcnIHllcwpkbwogICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3 aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKICAjIHdpdGggYSBmcmVz aCBjcm9zcy1jb21waWxlciB3b3Jrcy4KICAjIFByZWZlciA8bGltaXRzLmg+ IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UK ICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNv bXBpbGVycy4KICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2Rl IHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAogICMgbm90IGp1c3Qg dGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2gg dGhpcyBjYXNlLgogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgoj bGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpf QUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+ PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmgu ICAqLwojaWZkZWYgX19TVERDX18KIyBpbmNsdWRlIDxsaW1pdHMuaD4KI2Vs c2UKIyBpbmNsdWRlIDxhc3NlcnQuaD4KI2VuZGlmCiAgICAgICAgICAgICAg ICAgICAgIFN5bnRheCBlcnJvcgpfQUNFT0YKaWYgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIp ID4mNQogIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25m dGVzdC5lcjEKICBhY19zdGF0dXM9JD8KICBncmVwIC12ICdeICorJyBjb25m dGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgogIHJtIC1mIGNvbmZ0ZXN0LmVyMQog IGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 ID4vZGV2L251bGw7IHRoZW4KICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsg dGhlbgogICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwog IGVsc2UKICAgIGFjX2NwcF9lcnI9CiAgZmkKZWxzZQogIGFjX2NwcF9lcnI9 eWVzCmZpCmlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgogIDoKZWxz ZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCiAgIyBCcm9rZW46 IGZhaWxzIG9uIHZhbGlkIGlucHV0Lgpjb250aW51ZQpmaQpybSAtZiBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoKICAjIE9LLCB3b3JrcyBvbiBz YW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhl YWRlcnMKICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgogIGNhdCA+Y29u ZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1 cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmgg Pj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxf QUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8YWNfbm9u ZXhpc3RlbnQuaD4KX0FDRU9GCmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRM SU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKICAo ZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIx CiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIx ID5jb25mdGVzdC5lcnIKICBybSAtZiBjb25mdGVzdC5lcjEKICBjYXQgY29u ZnRlc3QuZXJyID4mNQogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9u dWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAg IGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKICBlbHNlCiAg ICBhY19jcHBfZXJyPQogIGZpCmVsc2UKICBhY19jcHBfZXJyPXllcwpmaQpp ZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KICAjIEJyb2tlbjogc3Vj Y2VzcyBvbiBpbnZhbGlkIGlucHV0Lgpjb250aW51ZQplbHNlCiAgZWNobyAi JGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAv JyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKICAjIFBhc3NlcyBib3RoIHRlc3Rz LgphY19wcmVwcm9jX29rPToKYnJlYWsKZmkKcm0gLWYgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19leHQKCmRvbmUKIyBCZWNhdXNlIG9mIGBicmVhaycs IF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBw ZWQuCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CmlmICRh Y19wcmVwcm9jX29rOyB0aGVuCiAgYnJlYWsKZmkKCiAgICBkb25lCiAgICBh Y19jdl9wcm9nX0NQUD0kQ1BQCgpmaQogIENQUD0kYWNfY3ZfcHJvZ19DUFAK ZWxzZQogIGFjX2N2X3Byb2dfQ1BQPSRDUFAKZmkKZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogJENQUCIgPiY1CmVjaG8gIiR7RUNIT19UfSRDUFAi ID4mNgphY19wcmVwcm9jX29rPWZhbHNlCmZvciBhY19jX3ByZXByb2Nfd2Fy bl9mbGFnIGluICcnIHllcwpkbwogICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhh dCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKICAjIHdp dGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KICAjIFByZWZlciA8 bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5l ZCwgc2luY2UKICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0 YW5kaW5nIGNvbXBpbGVycy4KICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5z IHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAogICMg bm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUg dG8gY2F0Y2ggdGhpcyBjYXNlLgogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8 PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZz LmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNf ZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNv bmZkZWZzLmguICAqLwojaWZkZWYgX19TVERDX18KIyBpbmNsdWRlIDxsaW1p dHMuaD4KI2Vsc2UKIyBpbmNsdWRlIDxhc3NlcnQuaD4KI2VuZGlmCiAgICAg ICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgpfQUNFT0YKaWYgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRh Y19leHRcIiIpID4mNQogIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4 dCkgMj5jb25mdGVzdC5lcjEKICBhY19zdGF0dXM9JD8KICBncmVwIC12ICde ICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgogIHJtIC1mIGNvbmZ0 ZXN0LmVyMQogIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICBpZiB0ZXN0IC1zIGNvbmZ0 ZXN0LmVycjsgdGhlbgogICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dh cm5fZmxhZwogIGVsc2UKICAgIGFjX2NwcF9lcnI9CiAgZmkKZWxzZQogIGFj X2NwcF9lcnI9eWVzCmZpCmlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhl bgogIDoKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCiAg IyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0Lgpjb250aW51ZQpmaQpy bSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoKICAjIE9LLCB3 b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4 aXN0ZW50IGhlYWRlcnMKICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93Lgog IGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5P ICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNv bmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk ZSA8YWNfbm9uZXhpc3RlbnQuaD4KX0FDRU9GCmlmIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIi KSA+JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29u ZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAtdiAnXiAqKycgY29u ZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAtZiBjb25mdGVzdC5lcjEK ICBjYXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsg fSA+L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7 IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcK ICBlbHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVsc2UKICBhY19jcHBfZXJy PXllcwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KICAjIEJy b2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0Lgpjb250aW51ZQplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKICAjIFBhc3NlcyBi b3RoIHRlc3RzLgphY19wcmVwcm9jX29rPToKYnJlYWsKZmkKcm0gLWYgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKCmRvbmUKIyBCZWNhdXNlIG9m IGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUg d2FzIHNraXBwZWQuCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf ZXh0CmlmICRhY19wcmVwcm9jX29rOyB0aGVuCiAgOgplbHNlCiAgeyB7IGVj aG8gIiRhc19tZTokTElORU5POiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIk Q1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrClNlZSBcYGNvbmZpZy5sb2cnIGZv ciBtb3JlIGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogQyBw cmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrClNlZSBc YGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQogICB7IChl eGl0IDEpOyBleGl0IDE7IH07IH0KZmkKCmFjX2V4dD1jCmFjX2NwcD0nJENQ UCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBG TEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKYWNfbGluaz0nJENDIC1vIGNv bmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBj b25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKYWNfY29tcGlsZXJfZ251PSRh Y19jdl9jX2NvbXBpbGVyX2dudQoKCmVjaG8gIiRhc19tZTokTElORU5POiBj aGVja2luZyBmb3IgZWdyZXAiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5n IGZvciBlZ3JlcC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9w cm9nX2VncmVwK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGlmIGVjaG8gYSB8IChncmVw IC1FICcoYXxiKScpID4vZGV2L251bGwgMj4mMQogICAgdGhlbiBhY19jdl9w cm9nX2VncmVwPSdncmVwIC1FJwogICAgZWxzZSBhY19jdl9wcm9nX2VncmVw PSdlZ3JlcCcKICAgIGZpCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1 bHQ6ICRhY19jdl9wcm9nX2VncmVwIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFj X2N2X3Byb2dfZWdyZXAiID4mNgogRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAK CgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIEFOU0kgQyBo ZWFkZXIgZmlsZXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBB TlNJIEMgaGVhZGVyIGZpbGVzLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIk e2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAk RUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGNhdCA+Y29u ZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1 cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmgg Pj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxf QUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RkbGli Lmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoj aW5jbHVkZSA8ZmxvYXQuaD4KCmludAptYWluICgpCnsKCiAgOwogIHJldHVy biAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIp ID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/ CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m NQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5 PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAk YWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCmVsc2UK ICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQg J3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9oZWFkZXJf c3RkYz1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LiRhY19leHQKCmlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0 aGVuCiAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBt ZW0qLCBjb250cmFyeSB0byBBTlNJLgogIGNhdCA+Y29uZnRlc3QuJGFjX2V4 dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZk ZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4k YWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5k IGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RyaW5nLmg+CgpfQUNFT0YK aWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAog ICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICA6CmVs c2UKICBhY19jdl9oZWFkZXJfc3RkYz1ubwpmaQpybSAtZiBjb25mdGVzdCoK CmZpCgppZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgog ICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwg Y29udHJhcnkgdG8gQU5TSS4KICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxf QUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5o LiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4 dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKX0FDRU9GCmlmIChl dmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAkRUdS RVAgImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbgogIDoKZWxzZQogIGFj X2N2X2hlYWRlcl9zdGRjPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKZmkKCmlm IHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgIyAvYmlu L2NjIGluIElyaXgtNC4wLjUgZ2V0cyBub24tQU5TSSBjdHlwZSBtYWNyb3Mg dW5sZXNzIHVzaW5nIC1hbnNpLgogIGlmIHRlc3QgIiRjcm9zc19jb21waWxp bmciID0geWVzOyB0aGVuCiAgOgplbHNlCiAgY2F0ID5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29u ZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0 LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBl bmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxjdHlwZS5oPgojaWYgKCgn ICcgJiAweDBGRikgPT0gMHgwMjApCiMgZGVmaW5lIElTTE9XRVIoYykgKCdh JyA8PSAoYykgJiYgKGMpIDw9ICd6JykKIyBkZWZpbmUgVE9VUFBFUihjKSAo SVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMpKQojZWxzZQoj IGRlZmluZSBJU0xPV0VSKGMpIFwKICAgICAgICAgICAgICAgICAgICgoJ2En IDw9IChjKSAmJiAoYykgPD0gJ2knKSBcCiAgICAgICAgICAgICAgICAgICAg IHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKICAgICAgICAgICAg ICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCiMgZGVm aW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAo YykpCiNlbmRpZgoKI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkg fHwgKCEoZSkgJiYgKGYpKSkKaW50Cm1haW4gKCkKewogIGludCBpOwogIGZv ciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgIGlmIChYT1IgKGlzbG93ZXIg KGkpLCBJU0xPV0VSIChpKSkKICAgICAgICB8fCB0b3VwcGVyIChpKSAhPSBU T1VQUEVSIChpKSkKICAgICAgZXhpdCgyKTsKICBleGl0ICgwKTsKfQpfQUNF T0YKcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChldmFsICRh Y19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7 IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4m NQogIChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4 aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICA6CmVsc2UKICBlY2hvICIk YXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMi ID4mNQplY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgooIGV4aXQgJGFj X3N0YXR1cyApCmFjX2N2X2hlYWRlcl9zdGRjPW5vCmZpCnJtIC1mIGNvcmUg Y29yZS4qICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl ZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpm aQpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVh ZGVyX3N0ZGMiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0 ZGMiID4mNgppZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhl bgoKY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBTVERDX0hF QURFUlMgMQpfQUNFT0YKCmZpCgojIE9uIElSSVggNS4zLCBzeXMvdHlwZXMg YW5kIGludHR5cGVzLmggYXJlIGNvbmZsaWN0aW5nLgoKCgoKCgoKCgpmb3Ig YWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmgg c3RyaW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKICAgICAgICAgICAgICAg ICAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaApkbwphc19hY19IZWFk ZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9z aGAKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVh ZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRl ci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19I ZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0ZXN0LiRhY19l eHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25m ZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3Qu JGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKCiNpbmNs dWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGV2YWwgIiRhc19hY19IZWFk ZXI9eWVzIgplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoK ZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKZmkKcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmVjaG8gIiRhc19tZTokTElO RU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdg IiA+JjUKZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hl YWRlcid9J2AiID4mNgppZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19I ZWFkZXInfSdgID0geWVzOyB0aGVuCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgojZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3Ry X2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgoKCmZvciBhY19oZWFkZXIgaW4g ZGxmY24uaApkbwphc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8k YWNfaGVhZGVyIiB8ICRhc190cl9zaGAKaWYgZXZhbCAidGVzdCBcIlwkeyRh c19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIg PiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9 IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBl Y2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19U fWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKZWxzZQog ICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwplY2hvICIkYXNfbWU6JExJ TkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4mNQplY2hv ICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5Li4uICRF Q0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xp bmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FD RU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5j b25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKI2luY2x1ZGUgPCRhY19oZWFkZXI+ Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQog IChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0 IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5 KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 OyB9OyB0aGVuCiAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfaGVhZGVyX2NvbXBpbGVy PW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVy X2NvbXBpbGVyIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21w aWxlciIgPiY2CgojIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KZWNobyAiJGFz X21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UiID4m NQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2Uu Li4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VP RgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAq LwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNh dCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZz LmguICAqLwojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4k YWNfZXh0XCIiKSA+JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l eHQpIDI+Y29uZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAtdiAn XiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAtZiBjb25m dGVzdC5lcjEKICBjYXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBjb25m dGVzdC5lcnI7IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193 YXJuX2ZsYWcKICBlbHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVsc2UKICBh Y19jcHBfZXJyPXllcwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRo ZW4KICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKZWxzZQogIGVjaG8gIiRhc19t ZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29u ZnRlc3QuJGFjX2V4dCA+JjUKCiAgYWNfaGVhZGVyX3ByZXByb2M9bm8KZmkK cm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUK ZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKCiMgU28/ ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwpjYXNlICRhY19oZWFkZXJfY29t cGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCiAgeWVzOm5vICkKICAgIHsg ZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFj Y2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXBy b2Nlc3NvciEiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFk ZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhl IHByZXByb2Nlc3NvciEiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElO RU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhl IHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19tZTogV0FS TklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9j ZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8PFxfQVNC T1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj CiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwoj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKX0FT Qk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAg ICAgLyIgPiYyCiAgICA7OwogIG5vOnllcyApCiAgICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBj YW5ub3QgYmUgY29tcGlsZWQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIg PiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRh Y19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk ZXJzPyIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjog Y2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7 fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1 bHQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHBy b2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7 fQogICAgKAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBi dWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNl ZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKZXNh YwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFk ZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVy Li4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hl YWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2Fj aGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGV2YWwgIiRhc19hY19IZWFkZXI9 JGFjX2hlYWRlcl9wcmVwcm9jIgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1 CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXIn fSdgIiA+JjYKCmZpCmlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hl YWRlcid9J2AgPSB5ZXM7IHRoZW4KICBjYXQgPj5jb25mZGVmcy5oIDw8X0FD RU9GCiNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJf Y3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCgoKCgoKIyBPbmx5IHBlcmZvcm0g dGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVp cmVzIGl0CmNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCmZpbGVfbWFn aWMqKQogIGlmIHRlc3QgIiRmaWxlX21hZ2ljX2NtZCIgPSAnJE1BR0lDX0NN RCc7IHRoZW4KICAgIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBm b3IgJHthY190b29sX3ByZWZpeH1maWxlIiA+JjUKZWNobyAkRUNIT19OICJj aGVja2luZyBmb3IgJHthY190b29sX3ByZWZpeH1maWxlLi4uICRFQ0hPX0Mi ID4mNgppZiB0ZXN0ICIke2x0X2N2X3BhdGhfTUFHSUNfQ01EK3NldH0iID0g c2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+ JjYKZWxzZQogIGNhc2UgJE1BR0lDX0NNRCBpbgogIC8qKQogIGx0X2N2X3Bh dGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVy cmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICA7OwogID86LyopCiAgbHRf Y3ZfcGF0aF9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBkb3MgcGF0aC4KICA7OwogICop CiAgYWNfc2F2ZV9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiCiAgSUZTPSIke0lG Uz0gICB9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCiAgYWNfZHVt bXk9Ii91c3IvYmluOiRQQVRIIgogIGZvciBhY19kaXIgaW4gJGFjX2R1bW15 OyBkbwogICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgIGlm IHRlc3QgLWYgJGFjX2Rpci8ke2FjX3Rvb2xfcHJlZml4fWZpbGU7IHRoZW4K ICAgICAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRhY19kaXIvJHthY190b29s X3ByZWZpeH1maWxlIgogICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190 ZXN0X2ZpbGUiOyB0aGVuCgljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBp bgoJImZpbGVfbWFnaWMgIiopCgkgIGZpbGVfbWFnaWNfcmVnZXg9ImBleHBy IFwiJGRlcGxpYnNfY2hlY2tfbWV0aG9kXCIgOiBcImZpbGVfbWFnaWMgXCgu KlwpXCJgIgoJICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIK CSAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCRmaWxlX21hZ2ljX3Rlc3Rf ZmlsZSAyPiAvZGV2L251bGwgfAoJICAgIGVncmVwICIkZmlsZV9tYWdpY19y ZWdleCIgPiAvZGV2L251bGw7IHRoZW4KCSAgICA6CgkgIGVsc2UKCSAgICBj YXQgPDxFT0YgMT4mMgoKKioqIFdhcm5pbmc6IHRoZSBjb21tYW5kIGxpYnRv b2wgdXNlcyB0byBkZXRlY3Qgc2hhcmVkIGxpYnJhcmllcywKKioqICRmaWxl X21hZ2ljX2NtZCwgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbGlidG9vbCBjYW5u b3QgcmVjb2duaXplLgoqKiogVGhlIHJlc3VsdCBpcyB0aGF0IGxpYnRvb2wg bWF5IGZhaWwgdG8gcmVjb2duaXplIHNoYXJlZCBsaWJyYXJpZXMKKioqIGFz IHN1Y2guICBUaGlzIHdpbGwgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiBsaWJ0 b29sIGxpYnJhcmllcyB0aGF0CioqKiBkZXBlbmQgb24gc2hhcmVkIGxpYnJh cmllcywgYnV0IHByb2dyYW1zIGxpbmtlZCB3aXRoIHN1Y2ggbGlidG9vbAoq KiogbGlicmFyaWVzIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHRoaXMgcHJv YmxlbS4gIE5ldmVydGhlbGVzcywgeW91CioqKiBtYXkgd2FudCB0byByZXBv cnQgdGhlIHByb2JsZW0gdG8geW91ciBzeXN0ZW0gbWFuYWdlciBhbmQvb3Ig dG8KKioqIGJ1Zy1saWJ0b29sQGdudS5vcmcKCkVPRgoJICBmaSA7OwoJZXNh YwogICAgICBmaQogICAgICBicmVhawogICAgZmkKICBkb25lCiAgSUZTPSIk YWNfc2F2ZV9pZnMiCiAgTUFHSUNfQ01EPSIkYWNfc2F2ZV9NQUdJQ19DTUQi CiAgOzsKZXNhYwpmaQoKTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19D TUQiCmlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJE1BR0lDX0NNRCIgPiY1CmVjaG8gIiR7 RUNIT19UfSRNQUdJQ19DTUQiID4mNgplbHNlCiAgZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogbm8iID4mNQplY2hvICIke0VDSE9fVH1ubyIgPiY2 CmZpCgppZiB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiOyB0aGVu CiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBmaWxlIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyBmb3IgZmlsZS4uLiAkRUNIT19DIiA+JjYK aWYgdGVzdCAiJHtsdF9jdl9wYXRoX01BR0lDX0NNRCtzZXR9IiA9IHNldDsg dGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVs c2UKICBjYXNlICRNQUdJQ19DTUQgaW4KICAvKikKICBsdF9jdl9wYXRoX01B R0lDX0NNRD0iJE1BR0lDX0NNRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg dGhlIHRlc3Qgd2l0aCBhIHBhdGguCiAgOzsKICA/Oi8qKQogIGx0X2N2X3Bh dGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVy cmlkZSB0aGUgdGVzdCB3aXRoIGEgZG9zIHBhdGguCiAgOzsKICAqKQogIGFj X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgogIElGUz0iJHtJRlM9ICAg fSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgogIGFjX2R1bW15PSIv dXNyL2JpbjokUEFUSCIKICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8K ICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICBpZiB0ZXN0 IC1mICRhY19kaXIvZmlsZTsgdGhlbgogICAgICBsdF9jdl9wYXRoX01BR0lD X0NNRD0iJGFjX2Rpci9maWxlIgogICAgICBpZiB0ZXN0IC1uICIkZmlsZV9t YWdpY190ZXN0X2ZpbGUiOyB0aGVuCgljYXNlICRkZXBsaWJzX2NoZWNrX21l dGhvZCBpbgoJImZpbGVfbWFnaWMgIiopCgkgIGZpbGVfbWFnaWNfcmVnZXg9 ImBleHByIFwiJGRlcGxpYnNfY2hlY2tfbWV0aG9kXCIgOiBcImZpbGVfbWFn aWMgXCguKlwpXCJgIgoJICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lD X0NNRCIKCSAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCRmaWxlX21hZ2lj X3Rlc3RfZmlsZSAyPiAvZGV2L251bGwgfAoJICAgIGVncmVwICIkZmlsZV9t YWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KCSAgICA6CgkgIGVsc2UK CSAgICBjYXQgPDxFT0YgMT4mMgoKKioqIFdhcm5pbmc6IHRoZSBjb21tYW5k IGxpYnRvb2wgdXNlcyB0byBkZXRlY3Qgc2hhcmVkIGxpYnJhcmllcywKKioq ICRmaWxlX21hZ2ljX2NtZCwgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbGlidG9v bCBjYW5ub3QgcmVjb2duaXplLgoqKiogVGhlIHJlc3VsdCBpcyB0aGF0IGxp YnRvb2wgbWF5IGZhaWwgdG8gcmVjb2duaXplIHNoYXJlZCBsaWJyYXJpZXMK KioqIGFzIHN1Y2guICBUaGlzIHdpbGwgYWZmZWN0IHRoZSBjcmVhdGlvbiBv ZiBsaWJ0b29sIGxpYnJhcmllcyB0aGF0CioqKiBkZXBlbmQgb24gc2hhcmVk IGxpYnJhcmllcywgYnV0IHByb2dyYW1zIGxpbmtlZCB3aXRoIHN1Y2ggbGli dG9vbAoqKiogbGlicmFyaWVzIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHRo aXMgcHJvYmxlbS4gIE5ldmVydGhlbGVzcywgeW91CioqKiBtYXkgd2FudCB0 byByZXBvcnQgdGhlIHByb2JsZW0gdG8geW91ciBzeXN0ZW0gbWFuYWdlciBh bmQvb3IgdG8KKioqIGJ1Zy1saWJ0b29sQGdudS5vcmcKCkVPRgoJICBmaSA7 OwoJZXNhYwogICAgICBmaQogICAgICBicmVhawogICAgZmkKICBkb25lCiAg SUZTPSIkYWNfc2F2ZV9pZnMiCiAgTUFHSUNfQ01EPSIkYWNfc2F2ZV9NQUdJ Q19DTUQiCiAgOzsKZXNhYwpmaQoKTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9N QUdJQ19DTUQiCmlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgZWNo byAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJE1BR0lDX0NNRCIgPiY1CmVj aG8gIiR7RUNIT19UfSRNQUdJQ19DTUQiID4mNgplbHNlCiAgZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQplY2hvICIke0VDSE9fVH1u byIgPiY2CmZpCgogIGVsc2UKICAgIE1BR0lDX0NNRD06CiAgZmkKZmkKCiAg ZmkKICA7Owplc2FjCgppZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0 aGVuCiAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xf cHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3 aXRoIGFyZ3MuCnNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsg YWNfd29yZD0kMgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFj X3dvcmQuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19S QU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNo ZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7 IHRoZW4KICBhY19jdl9wcm9nX1JBTkxJQj0iJFJBTkxJQiIgIyBMZXQgdGhl IHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRv CiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCiAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCiAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFjX2N2X3Byb2df UkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKICAgIGVjaG8gIiRh c19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IiA+JjUKICAgIGJyZWFrIDIKICBmaQpkb25lCmRvbmUKCmZpCmZpClJB TkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKaWYgdGVzdCAtbiAiJFJBTkxJQiI7 IHRoZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkUkFOTElC IiA+JjUKZWNobyAiJHtFQ0hPX1R9JFJBTkxJQiIgPiY2CmVsc2UKICBlY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1CmVjaG8gIiR7RUNI T19UfW5vIiA+JjYKZmkKCmZpCmlmIHRlc3QgLXogIiRhY19jdl9wcm9nX1JB TkxJQiI7IHRoZW4KICBhY19jdF9SQU5MSUI9JFJBTkxJQgogICMgRXh0cmFj dCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEg cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15IHJhbmxpYjsgYWNf d29yZD0kMgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dv cmQuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19j dF9SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihj YWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJGFjX2N0 X1JBTkxJQiI7IHRoZW4KICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFj X2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qu CmVsc2UKYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpm b3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRl c3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgaWYgJGFz X2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7 IHRoZW4KICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCiAg ICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQpkb25l CgogIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQiIgJiYgYWNf Y3ZfcHJvZ19hY19jdF9SQU5MSUI9IjoiCmZpCmZpCmFjX2N0X1JBTkxJQj0k YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKaWYgdGVzdCAtbiAiJGFjX2N0X1JB TkxJQiI7IHRoZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAk YWNfY3RfUkFOTElCIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1JBTkxJ QiIgPiY2CmVsc2UKICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBu byIgPiY1CmVjaG8gIiR7RUNIT19UfW5vIiA+JjYKZmkKCiAgUkFOTElCPSRh Y19jdF9SQU5MSUIKZWxzZQogIFJBTkxJQj0iJGFjX2N2X3Byb2dfUkFOTElC IgpmaQoKaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1z dHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu CnNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQy CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQi ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAk RUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9wcm9nX1NUUklQK3NldH0i ID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KICBhY19j dl9wcm9nX1NUUklQPSIkU1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl IHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T RVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwogIElGUz0kYXNfc2F2 ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogIGZvciBh Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bwogIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wcm9nX1NUUklQPSIke2FjX3Rv b2xfcHJlZml4fXN0cmlwIgogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZv dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgYnJl YWsgMgogIGZpCmRvbmUKZG9uZQoKZmkKZmkKU1RSSVA9JGFjX2N2X3Byb2df U1RSSVAKaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgogIGVjaG8gIiRhc19t ZTokTElORU5POiByZXN1bHQ6ICRTVFJJUCIgPiY1CmVjaG8gIiR7RUNIT19U fSRTVFJJUCIgPiY2CmVsc2UKICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiBubyIgPiY1CmVjaG8gIiR7RUNIT19UfW5vIiA+JjYKZmkKCmZpCmlm IHRlc3QgLXogIiRhY19jdl9wcm9nX1NUUklQIjsgdGhlbgogIGFjX2N0X1NU UklQPSRTVFJJUAogICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3Ry aXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpz ZXQgZHVtbXkgc3RyaXA7IGFjX3dvcmQ9JDIKZWNobyAiJGFzX21lOiRMSU5F Tk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CmVjaG8gJEVDSE9fTiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0 ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4K ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAg aWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgogIGFjX2N2X3Byb2df YWNfY3RfU1RSSVA9IiRhY19jdF9TVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3Zl cnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRh c19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCiAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFjX2N2X3Byb2dfYWNfY3RfU1RS SVA9InN0cmlwIgogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgYnJlYWsgMgog IGZpCmRvbmUKZG9uZQoKICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19hY19jdF9T VFJJUCIgJiYgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0iOiIKZmkKZmkKYWNf Y3RfU1RSSVA9JGFjX2N2X3Byb2dfYWNfY3RfU1RSSVAKaWYgdGVzdCAtbiAi JGFjX2N0X1NUUklQIjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiBy ZXN1bHQ6ICRhY19jdF9TVFJJUCIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19j dF9TVFJJUCIgPiY2CmVsc2UKICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiBubyIgPiY1CmVjaG8gIiR7RUNIT19UfW5vIiA+JjYKZmkKCiAgU1RS SVA9JGFjX2N0X1NUUklQCmVsc2UKICBTVFJJUD0iJGFjX2N2X3Byb2dfU1RS SVAiCmZpCgoKZW5hYmxlX2Rsb3Blbj1ubwplbmFibGVfd2luMzJfZGxsPW5v CgojIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIG9yIC0t ZGlzYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2Vu YWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4KICBlbmFibGV2 YWw9IiRlbmFibGVfbGlidG9vbF9sb2NrIgoKZmk7CnRlc3QgIngkZW5hYmxl X2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9 eWVzCgojIFNvbWUgZmxhZ3MgbmVlZCB0byBiZSBwcm9wYWdhdGVkIHRvIHRo ZSBjb21waWxlciBvciBsaW5rZXIgZm9yIGdvb2QKIyBsaWJ0b29sIHN1cHBv cnQuCmNhc2UgJGhvc3QgaW4KKi0qLWlyaXg2KikKICAjIEZpbmQgb3V0IHdo aWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgZWNobyAnI2xpbmUgNDY3NSAiY29u ZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgaWYgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2 YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQg JGFjX3N0YXR1cyk7IH07IHRoZW4KICAgIGNhc2UgYC91c3IvYmluL2ZpbGUg Y29uZnRlc3QuJGFjX29iamV4dGAgaW4KICAgICozMi1iaXQqKQogICAgICBM RD0iJHtMRC1sZH0gLTMyIgogICAgICA7OwogICAgKk4zMiopCiAgICAgIExE PSIke0xELWxkfSAtbjMyIgogICAgICA7OwogICAgKjY0LWJpdCopCiAgICAg IExEPSIke0xELWxkfSAtNjQiCiAgICAgIDs7CiAgICBlc2FjCiAgZmkKICBy bSAtcmYgY29uZnRlc3QqCiAgOzsKCiotKi1zY28zLjJ2NSopCiAgIyBPbiBT Q08gT3BlblNlcnZlciA1LCB3ZSBuZWVkIC1iZWxmIHRvIGdldCBmdWxsLWZl YXR1cmVkIGJpbmFyaWVzLgogIFNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgogIENG TEFHUz0iJENGTEFHUyAtYmVsZiIKICBlY2hvICIkYXNfbWU6JExJTkVOTzog Y2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZiIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21w aWxlciBuZWVkcyAtYmVsZi4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHts dF9jdl9jY19uZWVkc19iZWxmK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAk RUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQoKCiAgICAgYWNf ZXh0PWMKYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKYWNfY29tcGlsZT0nJEND IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1Jwph Y19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQ UEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1Jwph Y19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CgogICAgIGNh dCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJj b25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZk ZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19l eHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKaW50Cm1haW4g KCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChldmFs ICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P OiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4K ICBsdF9jdl9jY19uZWVkc19iZWxmPXllcwplbHNlCiAgZWNobyAiJGFzX21l OiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25m dGVzdC4kYWNfZXh0ID4mNQoKbHRfY3ZfY2NfbmVlZHNfYmVsZj1ubwpmaQpy bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj b25mdGVzdC4kYWNfZXh0CiAgICAgYWNfZXh0PWMKYWNfY3BwPSckQ1BQICRD UFBGTEFHUycKYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdT IGNvbmZ0ZXN0LiRhY19leHQgPiY1JwphY19saW5rPSckQ0MgLW8gY29uZnRl c3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0 ZXN0LiRhY19leHQgJExJQlMgPiY1JwphY19jb21waWxlcl9nbnU9JGFjX2N2 X2NfY29tcGlsZXJfZ251CgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiAkbHRfY3ZfY2NfbmVlZHNfYmVsZiIgPiY1CmVjaG8gIiR7RUNIT19U fSRsdF9jdl9jY19uZWVkc19iZWxmIiA+JjYKICBpZiB0ZXN0IHgiJGx0X2N2 X2NjX25lZWRzX2JlbGYiICE9IHgieWVzIjsgdGhlbgogICAgIyB0aGlzIGlz IHByb2JhYmx5IGdjYyAyLjguMCwgZWdjcyAxLjAgb3IgbmV3ZXI7IG5vIG5l ZWQgZm9yIC1iZWxmCiAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKICBmaQog IDs7CgoKZXNhYwoKIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMg ZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwojIG1ldGFj aGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91Ymxl LXF1b3RlZCBzdHJpbmdzLgpYc2VkPSdzZWQgLWUgcy9eWC8vJwpzZWRfcXVv dGVfc3Vic3Q9J3MvXChbXFwiXFxgJFxcXFxdXCkvXFxcMS9nJwoKIyBTYW1l IGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5j ZXMuCmRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtcXCJcXGBcXFxcXVwpL1xc XDEvZycKCiMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24g b2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCiMgZG91YmxlX3F1 b3RlX3N1YnN0J2VkIHN0cmluZy4KZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3Mv XFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKCiMgQ29uc3RhbnRzOgpybT0icm0g LWYiCgojIEdsb2JhbCB2YXJpYWJsZXM6CmRlZmF1bHRfb2ZpbGU9bGlidG9v bApjYW5fYnVpbGRfc2hhcmVkPXllcwoKIyBBbGwga25vd24gbGlua2VycyBy ZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhj ZXB0IE0kVkMsCiMgd2hpY2ggbmVlZHMgJy5saWInKS4KbGliZXh0PWEKbHRt YWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCm9maWxlPSIkZGVmYXVsdF9v ZmlsZSIKd2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKbmVlZF9s b2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCgpvbGRfQ0M9IiRDQyIKb2xk X0NGTEFHUz0iJENGTEFHUyIKCiMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZh cmlvdXMgdmFyaWFibGVzCnRlc3QgLXogIiRBUiIgJiYgQVI9YXIKdGVzdCAt eiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKdGVzdCAteiAiJEFTIiAm JiBBUz1hcwp0ZXN0IC16ICIkQ0MiICYmIENDPWNjCnRlc3QgLXogIiRETExU T09MIiAmJiBETExUT09MPWRsbHRvb2wKdGVzdCAteiAiJExEIiAmJiBMRD1s ZAp0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCnRlc3QgLXogIiRN QUdJQ19DTUQiICYmIE1BR0lDX0NNRD1maWxlCnRlc3QgLXogIiROTSIgJiYg Tk09bm0KdGVzdCAteiAiJE9CSkRVTVAiICYmIE9CSkRVTVA9b2JqZHVtcAp0 ZXN0IC16ICIkUkFOTElCIiAmJiBSQU5MSUI9Ogp0ZXN0IC16ICIkU1RSSVAi ICYmIFNUUklQPToKdGVzdCAteiAiJGFjX29iamV4dCIgJiYgYWNfb2JqZXh0 PW8KCmlmIHRlc3QgeCIkaG9zdCIgIT0geCIkYnVpbGQiOyB0aGVuCiAgYWNf dG9vbF9wcmVmaXg9JHtob3N0X2FsaWFzfS0KZWxzZQogIGFjX3Rvb2xfcHJl Zml4PQpmaQoKIyBUcmFuc2Zvcm0gbGludXgqIHRvICotKi1saW51eC1nbnUq LCB0byBzdXBwb3J0IG9sZCBjb25maWd1cmUgc2NyaXB0cy4KY2FzZSAkaG9z dF9vcyBpbgpsaW51eC1nbnUqKSA7OwpsaW51eCopIGhvc3Q9YGVjaG8gJGhv c3QgfCBzZWQgJ3MvXlwoLiotLiotbGludXhcKVwoLipcKSQvXDEtZ251XDIv J2AKZXNhYwoKY2FzZSAkaG9zdF9vcyBpbgphaXgzKikKICAjIEFJWCBzb21l dGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9n cmFtLiAgRm9yIHNvbWUKICAjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xM RUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMK ICAjIHZhbmlzaCBpbiBhIHB1ZmYgb2Ygc21va2UuCiAgaWYgdGVzdCAiWCR7 Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCiAgICBDT0xMRUNU X05BTUVTPQogICAgZXhwb3J0IENPTExFQ1RfTkFNRVMKICBmaQogIDs7CmVz YWMKCiMgRGV0ZXJtaW5lIGNvbW1hbmRzIHRvIGNyZWF0ZSBvbGQtc3R5bGUg c3RhdGljIGFyY2hpdmVzLgpvbGRfYXJjaGl2ZV9jbWRzPSckQVIgJEFSX0ZM QUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKb2xkX3Bvc3RpbnN0 YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwpvbGRfcG9zdHVuaW5zdGFs bF9jbWRzPQoKaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICBjYXNlICRo b3N0X29zIGluCiAgb3BlbmJzZCopCiAgICBvbGRfcG9zdGluc3RhbGxfY21k cz0iXCRSQU5MSUIgLXQgXCRvbGRsaWJ+JG9sZF9wb3N0aW5zdGFsbF9jbWRz IgogICAgOzsKICAqKQogICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IlwkUkFO TElCIFwkb2xkbGlifiRvbGRfcG9zdGluc3RhbGxfY21kcyIKICAgIDs7CiAg ZXNhYwogIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwk UkFOTElCIFwkb2xkbGliIgpmaQoKIyBBbGxvdyBDQyB0byBiZSBhIHByb2dy YW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4Kc2V0IGR1bW15ICRDQwpjb21waWxl cj0iJDIiCgojIyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBt YWNybwojIwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG9i amRpciIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG9iamRpci4u LiAkRUNIT19DIiA+JjYKcm0gLWYgLmxpYnMgMj4vZGV2L251bGwKbWtkaXIg LmxpYnMgMj4vZGV2L251bGwKaWYgdGVzdCAtZCAubGliczsgdGhlbgogIG9i amRpcj0ubGlicwplbHNlCiAgIyBNUy1ET1MgZG9lcyBub3QgYWxsb3cgZmls ZW5hbWVzIHRoYXQgYmVnaW4gd2l0aCBhIGRvdC4KICBvYmpkaXI9X2xpYnMK ZmkKcm1kaXIgLmxpYnMgMj4vZGV2L251bGwKZWNobyAiJGFzX21lOiRMSU5F Tk86IHJlc3VsdDogJG9iamRpciIgPiY1CmVjaG8gIiR7RUNIT19UfSRvYmpk aXIiID4mNgojIwojIyBFTkQgRklYTUUKCgojIyBGSVhNRTogdGhpcyBzaG91 bGQgYmUgYSBzZXBhcmF0ZSBtYWNybwojIwoKIyBDaGVjayB3aGV0aGVyIC0t d2l0aC1waWMgb3IgLS13aXRob3V0LXBpYyB3YXMgZ2l2ZW4uCmlmIHRlc3Qg IiR7d2l0aF9waWMrc2V0fSIgPSBzZXQ7IHRoZW4KICB3aXRodmFsPSIkd2l0 aF9waWMiCiAgcGljX21vZGU9IiR3aXRodmFsIgplbHNlCiAgcGljX21vZGU9 ZGVmYXVsdApmaTsKdGVzdCAteiAiJHBpY19tb2RlIiAmJiBwaWNfbW9kZT1k ZWZhdWx0CgojIFdlIGFzc3VtZSBoZXJlIHRoYXQgdGhlIHZhbHVlIGZvciBs dF9jdl9wcm9nX2NjX3BpYyB3aWxsIG5vdCBiZSBjYWNoZWQKIyBpbiBpc29s YXRpb24sIGFuZCB0aGF0IHNlZWluZyBpdCBzZXQgKGZyb20gdGhlIGNhY2hl KSBpbmRpY2F0ZXMgdGhhdAojIHRoZSBhc3NvY2lhdGVkIHZhbHVlcyBhcmUg c2V0IChpbiB0aGUgY2FjaGUpIGNvcnJlY3RseSB0b28uCmVjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBw cm9kdWNlIFBJQyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRj b21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gJEVDSE9fQyIgPiY2 CmlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jY19waWMrc2V0fSIgPSBzZXQ7IHRo ZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNl CiAgIGx0X2N2X3Byb2dfY2NfcGljPQogIGx0X2N2X3Byb2dfY2Nfc2hsaWI9 CiAgbHRfY3ZfcHJvZ19jY193bD0KICBsdF9jdl9wcm9nX2NjX3N0YXRpYz0K ICBsdF9jdl9wcm9nX2NjX25vX2J1aWx0aW49CiAgbHRfY3ZfcHJvZ19jY19j YW5fYnVpbGRfc2hhcmVkPSRjYW5fYnVpbGRfc2hhcmVkCgogIGlmIHRlc3Qg IiRHQ0MiID0geWVzOyB0aGVuCiAgICBsdF9jdl9wcm9nX2NjX3dsPSctV2ws JwogICAgbHRfY3ZfcHJvZ19jY19zdGF0aWM9Jy1zdGF0aWMnCgogICAgY2Fz ZSAkaG9zdF9vcyBpbgogICAgYWl4KikKICAgICAgIyBCZWxvdyB0aGVyZSBp cyBhIGRpcnR5IGhhY2sgdG8gZm9yY2Ugbm9ybWFsIHN0YXRpYyBsaW5raW5n IHdpdGggLWxkbAogICAgICAjIFRoZSBwcm9ibGVtIGlzIGJlY2F1c2UgbGli ZGwgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggYm90aCBsaWJjIGFuZAogICAg ICAjIGxpYkMgKEFJWCBDKysgbGlicmFyeSksIHdoaWNoIG9idmlvdXNseSBk b2Vzbid0IGluY2x1ZGVkIGluIGxpYnJhcmllcwogICAgICAjIGxpc3QgYnkg Z2NjLiBUaGlzIGNhdXNlIHVuZGVmaW5lZCBzeW1ib2xzIHdpdGggLXN0YXRp YyBmbGFncy4KICAgICAgIyBUaGlzIGhhY2sgYWxsb3dzIEMgcHJvZ3JhbXMg dG8gYmUgbGlua2VkIHdpdGggIi1zdGF0aWMgLWxkbCIsIGJ1dAogICAgICAj IG5vdCBzdXJlIGFib3V0IEMrKyBwcm9ncmFtcy4KICAgICAgbHRfY3ZfcHJv Z19jY19zdGF0aWM9IiRsdF9jdl9wcm9nX2NjX3N0YXRpYyAke2x0X2N2X3By b2dfY2Nfd2x9LWxDIgogICAgICA7OwogICAgYW1pZ2FvcyopCiAgICAgICMg RklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBz aGFyZWQgbGlicmFyaWVzLCBidXQKICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4 MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBi ZXR0ZXIsCiAgICAgICMgbGlrZSBgLW02ODA0MCcuCiAgICAgIGx0X2N2X3By b2dfY2NfcGljPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3Rv cmUtYTQnCiAgICAgIDs7CiAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8 IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgICAgICMg UElDIGlzIHRoZSBkZWZhdWx0IGZvciB0aGVzZSBPU2VzLgogICAgICA7Owog ICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgIyBQSUMgaXMgdGhlIGRl ZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQogICAgICAjIENvbW1vbiBzeW1ib2xz IG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCiAgICAgIGx0X2N2X3By b2dfY2NfcGljPSctZm5vLWNvbW1vbicKICAgICAgOzsKICAgIGN5Z3dpbiog fCBtaW5ndyogfCBwdzMyKiB8IG9zMiopCiAgICAgICMgVGhpcyBoYWNrIGlz IHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQg aXMgYmVpbmcKICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxs IChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KICAg ICAgbHRfY3ZfcHJvZ19jY19waWM9Jy1ERExMX0VYUE9SVCcKICAgICAgOzsK ICAgIHN5c3Y0Kk1QKikKICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhl bgoJIGx0X2N2X3Byb2dfY2NfcGljPS1LY29uZm9ybV9waWMKICAgICAgZmkK ICAgICAgOzsKICAgICopCiAgICAgIGx0X2N2X3Byb2dfY2NfcGljPSctZlBJ QycKICAgICAgOzsKICAgIGVzYWMKICBlbHNlCiAgICAjIFBPUlRNRSBDaGVj ayBmb3IgUElDIGZsYWdzIGZvciB0aGUgc3lzdGVtIGNvbXBpbGVyLgogICAg Y2FzZSAkaG9zdF9vcyBpbgogICAgYWl4MyogfCBhaXg0KiB8IGFpeDUqKQog ICAgICBsdF9jdl9wcm9nX2NjX3dsPSctV2wsJwogICAgICAjIEFsbCBBSVgg Y29kZSBpcyBQSUMuCiAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0 OyB0aGVuCgkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgoJ bHRfY3ZfcHJvZ19jY19zdGF0aWM9Jy1Cc3RhdGljJwogICAgICBlbHNlCgls dF9jdl9wcm9nX2NjX3N0YXRpYz0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMu ZXhwJwogICAgICBmaQogICAgICA7OwoKICAgIGhwdXg5KiB8IGhwdXgxMCog fCBocHV4MTEqKQogICAgICAjIElzIHRoZXJlIGEgYmV0dGVyIGx0X2N2X3By b2dfY2Nfc3RhdGljIHRoYXQgd29ya3Mgd2l0aCB0aGUgYnVuZGxlZCBDQz8K ICAgICAgbHRfY3ZfcHJvZ19jY193bD0nLVdsLCcKICAgICAgbHRfY3ZfcHJv Z19jY19zdGF0aWM9IiR7bHRfY3ZfcHJvZ19jY193bH0tYSAke2x0X2N2X3By b2dfY2Nfd2x9YXJjaGl2ZSIKICAgICAgbHRfY3ZfcHJvZ19jY19waWM9Jyta JwogICAgICA7OwoKICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCop CiAgICAgIGx0X2N2X3Byb2dfY2Nfd2w9Jy1XbCwnCiAgICAgIGx0X2N2X3By b2dfY2Nfc3RhdGljPSctbm9uX3NoYXJlZCcKICAgICAgIyBQSUMgKHdpdGgg LUtQSUMpIGlzIHRoZSBkZWZhdWx0LgogICAgICA7OwoKICAgIGN5Z3dpbiog fCBtaW5ndyogfCBwdzMyKiB8IG9zMiopCiAgICAgICMgVGhpcyBoYWNrIGlz IHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQg aXMgYmVpbmcKICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxs IChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KICAg ICAgbHRfY3ZfcHJvZ19jY19waWM9Jy1ERExMX0VYUE9SVCcKICAgICAgOzsK CiAgICBuZXdzb3M2KQogICAgICBsdF9jdl9wcm9nX2NjX3BpYz0nLUtQSUMn CiAgICAgIGx0X2N2X3Byb2dfY2Nfc3RhdGljPSctQnN0YXRpYycKICAgICAg OzsKCiAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgICAgICMgQWxsIE9T Ri8xIGNvZGUgaXMgUElDLgogICAgICBsdF9jdl9wcm9nX2NjX3dsPSctV2ws JwogICAgICBsdF9jdl9wcm9nX2NjX3N0YXRpYz0nLW5vbl9zaGFyZWQnCiAg ICAgIDs7CgogICAgc2NvMy4ydjUqKQogICAgICBsdF9jdl9wcm9nX2NjX3Bp Yz0nLUtwaWMnCiAgICAgIGx0X2N2X3Byb2dfY2Nfc3RhdGljPSctZG4nCiAg ICAgIGx0X2N2X3Byb2dfY2Nfc2hsaWI9Jy1iZWxmJwogICAgICA7OwoKICAg IHNvbGFyaXMqKQogICAgICBsdF9jdl9wcm9nX2NjX3BpYz0nLUtQSUMnCiAg ICAgIGx0X2N2X3Byb2dfY2Nfc3RhdGljPSctQnN0YXRpYycKICAgICAgbHRf Y3ZfcHJvZ19jY193bD0nLVdsLCcKICAgICAgOzsKCiAgICBzdW5vczQqKQog ICAgICBsdF9jdl9wcm9nX2NjX3BpYz0nLVBJQycKICAgICAgbHRfY3ZfcHJv Z19jY19zdGF0aWM9Jy1Cc3RhdGljJwogICAgICBsdF9jdl9wcm9nX2NjX3ds PSctUW9wdGlvbiBsZCAnCiAgICAgIDs7CgogICAgc3lzdjQgfCBzeXN2NC4y dXcyKiB8IHN5c3Y0LjMqIHwgc3lzdjUqKQogICAgICBsdF9jdl9wcm9nX2Nj X3BpYz0nLUtQSUMnCiAgICAgIGx0X2N2X3Byb2dfY2Nfc3RhdGljPSctQnN0 YXRpYycKICAgICAgbHRfY3ZfcHJvZ19jY193bD0nLVdsLCcKICAgICAgOzsK CiAgICB1dHM0KikKICAgICAgbHRfY3ZfcHJvZ19jY19waWM9Jy1waWMnCiAg ICAgIGx0X2N2X3Byb2dfY2Nfc3RhdGljPSctQnN0YXRpYycKICAgICAgOzsK CiAgICBzeXN2NCpNUCopCiAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3Ro ZW4KCWx0X2N2X3Byb2dfY2NfcGljPSctS2NvbmZvcm1fcGljJwoJbHRfY3Zf cHJvZ19jY19zdGF0aWM9Jy1Cc3RhdGljJwogICAgICBmaQogICAgICA7OwoK ICAgICopCiAgICAgIGx0X2N2X3Byb2dfY2NfY2FuX2J1aWxkX3NoYXJlZD1u bwogICAgICA7OwogICAgZXNhYwogIGZpCgpmaQoKaWYgdGVzdCAteiAiJGx0 X2N2X3Byb2dfY2NfcGljIjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6IG5vbmUiID4mNQplY2hvICIke0VDSE9fVH1ub25lIiA+JjYK ZWxzZQogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRsdF9jdl9w cm9nX2NjX3BpYyIgPiY1CmVjaG8gIiR7RUNIT19UfSRsdF9jdl9wcm9nX2Nj X3BpYyIgPiY2CgogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBwaWNfZmxh ZyBhY3R1YWxseSB3b3Jrcy4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRsdF9jdl9wcm9nX2NjX3Bp YyB3b3JrcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJGNvbXBp bGVyIFBJQyBmbGFnICRsdF9jdl9wcm9nX2NjX3BpYyB3b3Jrcy4uLiAkRUNI T19DIiA+JjYKICBpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY2NfcGljX3dvcmtz K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAk RUNIT19DIiA+JjYKZWxzZQogICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIK ICAgIENGTEFHUz0iJENGTEFHUyAkbHRfY3ZfcHJvZ19jY19waWMgLURQSUMi CiAgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJ TkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNh dCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVz dC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCmlu dAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBj b25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRM SU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFsICRhY19jb21w aWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRh Y19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIk YWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3Rh dHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0 dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgICAg ICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBocHV4OSogfCBocHV4MTAqIHwg aHB1eDExKikKCSMgT24gSFAtVVgsIGJvdGggQ0MgYW5kIEdDQyBvbmx5IHdh cm4gdGhhdCBQSUMgaXMgc3VwcG9ydGVkLi4uIHRoZW4KCSMgdGhleSBjcmVh dGUgbm9uLVBJQyBvYmplY3RzLiAgU28sIGlmIHRoZXJlIHdlcmUgYW55IHdh cm5pbmdzLCB3ZQoJIyBhc3N1bWUgdGhhdCBQSUMgaXMgbm90IHN1cHBvcnRl ZC4KCWlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCgkgIGx0X2N2X3By b2dfY2NfcGljX3dvcmtzPW5vCgllbHNlCgkgIGx0X2N2X3Byb2dfY2NfcGlj X3dvcmtzPXllcwoJZmkKCTs7CiAgICAgICopCglsdF9jdl9wcm9nX2NjX3Bp Y193b3Jrcz15ZXMKCTs7CiAgICAgIGVzYWMKCmVsc2UKICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNv bmZ0ZXN0LiRhY19leHQgPiY1CgogICAgICBsdF9jdl9wcm9nX2NjX3BpY193 b3Jrcz1ubwoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CiAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKCmZpCgoKICBp ZiB0ZXN0ICJYJGx0X2N2X3Byb2dfY2NfcGljX3dvcmtzIiA9IFhubzsgdGhl bgogICAgbHRfY3ZfcHJvZ19jY19waWM9CiAgICBsdF9jdl9wcm9nX2NjX2Nh bl9idWlsZF9zaGFyZWQ9bm8KICBlbHNlCiAgICBsdF9jdl9wcm9nX2NjX3Bp Yz0iICRsdF9jdl9wcm9nX2NjX3BpYyIKICBmaQoKICBlY2hvICIkYXNfbWU6 JExJTkVOTzogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jY19waWNfd29ya3MiID4m NQplY2hvICIke0VDSE9fVH0kbHRfY3ZfcHJvZ19jY19waWNfd29ya3MiID4m NgpmaQojIwojIyBFTkQgRklYTUUKCiMgQ2hlY2sgZm9yIGFueSBzcGVjaWFs IHNoYXJlZCBsaWJyYXJ5IGNvbXBpbGF0aW9uIGZsYWdzLgppZiB0ZXN0IC1u ICIkbHRfY3ZfcHJvZ19jY19zaGxpYiI7IHRoZW4KICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiBcYCRDQycgcmVxdWlyZXMgXGAkbHRfY3Zf cHJvZ19jY19zaGxpYicgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyIgPiY1 CmVjaG8gIiRhc19tZTogV0FSTklORzogXGAkQ0MnIHJlcXVpcmVzIFxgJGx0 X2N2X3Byb2dfY2Nfc2hsaWInIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMi ID4mMjt9CiAgaWYgZWNobyAiJG9sZF9DQyAkb2xkX0NGTEFHUyAiIHwgZWdy ZXAgLWUgIlsgCV0kbHRfY3ZfcHJvZ19jY19zaGxpYlsgCV0iID4vZGV2L251 bGw7IHRoZW4gOgogIGVsc2UKICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog V0FSTklORzogYWRkIFxgJGx0X2N2X3Byb2dfY2Nfc2hsaWInIHRvIHRoZSBD QyBvciBDRkxBR1MgZW52IHZhcmlhYmxlIGFuZCByZWNvbmZpZ3VyZSIgPiY1 CmVjaG8gIiRhc19tZTogV0FSTklORzogYWRkIFxgJGx0X2N2X3Byb2dfY2Nf c2hsaWInIHRvIHRoZSBDQyBvciBDRkxBR1MgZW52IHZhcmlhYmxlIGFuZCBy ZWNvbmZpZ3VyZSIgPiYyO30KICAgIGx0X2N2X3Byb2dfY2NfY2FuX2J1aWxk X3NoYXJlZD1ubwogIGZpCmZpCgojIyBGSVhNRTogdGhpcyBzaG91bGQgYmUg YSBzZXBhcmF0ZSBtYWNybwojIwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgaWYgJGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF9jdl9wcm9nX2Nj X3N0YXRpYyB3b3JrcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYg JGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF9jdl9wcm9nX2NjX3N0YXRpYyB3 b3Jrcy4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2Nj X3N0YXRpY193b3JrcytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9f TiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICAgIGx0X2N2X3Byb2df Y2Nfc3RhdGljX3dvcmtzPW5vCiAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIK ICBMREZMQUdTPSIkTERGTEFHUyAkbHRfY3ZfcHJvZ19jY19zdGF0aWMiCiAg Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8g ImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFp biAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYgeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1CiAgKGV2 YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29u ZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQog IGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhl bgogIGx0X2N2X3Byb2dfY2Nfc3RhdGljX3dvcmtzPXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKZmkKcm0gLWYgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4 dAogIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCgpmaQoKCiMgQmVsdCAqYW5k KiBicmFjZXMgdG8gc3RvcCBteSB0cm91c2VycyBmYWxsaW5nIGRvd246CnRl c3QgIlgkbHRfY3ZfcHJvZ19jY19zdGF0aWNfd29ya3MiID0gWG5vICYmIGx0 X2N2X3Byb2dfY2Nfc3RhdGljPQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiAkbHRfY3ZfcHJvZ19jY19zdGF0aWNfd29ya3MiID4mNQplY2hvICIk e0VDSE9fVH0kbHRfY3ZfcHJvZ19jY19zdGF0aWNfd29ya3MiID4mNgoKcGlj X2ZsYWc9IiRsdF9jdl9wcm9nX2NjX3BpYyIKc3BlY2lhbF9zaGxpYl9jb21w aWxlX2ZsYWdzPSIkbHRfY3ZfcHJvZ19jY19zaGxpYiIKd2w9IiRsdF9jdl9w cm9nX2NjX3dsIgpsaW5rX3N0YXRpY19mbGFnPSIkbHRfY3ZfcHJvZ19jY19z dGF0aWMiCm5vX2J1aWx0aW5fZmxhZz0iJGx0X2N2X3Byb2dfY2Nfbm9fYnVp bHRpbiIKY2FuX2J1aWxkX3NoYXJlZD0iJGx0X2N2X3Byb2dfY2NfY2FuX2J1 aWxkX3NoYXJlZCIKIyMKIyMgRU5EIEZJWE1FCgoKIyMgRklYTUU6IHRoaXMg c2hvdWxkIGJlIGEgc2VwYXJhdGUgbWFjcm8KIyMKIyBDaGVjayB0byBzZWUg aWYgb3B0aW9ucyAtbyBhbmQgLWMgYXJlIHNpbXVsdGFuZW91c2x5IHN1cHBv cnRlZCBieSBjb21waWxlcgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4 dCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1 cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dC4uLiAkRUNIT19DIiA+JjYK aWYgdGVzdCAiJHtsdF9jdl9jb21waWxlcl9jX28rc2V0fSIgPSBzZXQ7IHRo ZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNl Cgokcm0gLXIgY29uZnRlc3QgMj4vZGV2L251bGwKbWtkaXIgY29uZnRlc3QK Y2QgY29uZnRlc3QKZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBj b25mdGVzdC4kYWNfZXh0Cm1rZGlyIG91dAojIEFjY29yZGluZyB0byBUb20g VHJvbWV5LCBJYW4gTGFuY2UgVGF5bG9yIHJlcG9ydGVkIHRoZXJlIGFyZSBD IGNvbXBpbGVycwojIHRoYXQgd2lsbCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGVz IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSByZWdhcmRsZXNzIG9mCiMgdGhl IG91dHB1dCBkaXJlY3RvcnkuICBUaHVzLCBtYWtpbmcgQ1dEIHJlYWQtb25s eSB3aWxsIGNhdXNlIHRoaXMgdGVzdAojIHRvIGZhaWwsIGVuYWJsaW5nIGxv Y2tpbmcgb3IgYXQgbGVhc3Qgd2FybmluZyB0aGUgdXNlciBub3QgdG8gZG8g cGFyYWxsZWwKIyBidWlsZHMuCmNobW9kIC13IC4Kc2F2ZV9DRkxBR1M9IiRD RkxBR1MiCkNGTEFHUz0iJENGTEFHUyAtbyBvdXQvY29uZnRlc3QyLiRhY19v YmpleHQiCmNvbXBpbGVyX2Nfbz1ubwppZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjUyMTg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+b3V0L2NvbmZ0ZXN0LmVycjsgfSAmJiB0ZXN0IC1zIG91dC9j b25mdGVzdDIuJGFjX29iamV4dDsgdGhlbgogICMgVGhlIGNvbXBpbGVyIGNh biBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNv Z25pemVkCiAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCiAg aWYgdGVzdCAtcyBvdXQvY29uZnRlc3QuZXJyOyB0aGVuCiAgICBsdF9jdl9j b21waWxlcl9jX289bm8KICBlbHNlCiAgICBsdF9jdl9jb21waWxlcl9jX289 eWVzCiAgZmkKZWxzZQogICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNv bmZpZy5sb2cuCiAgY2F0IG91dC9jb25mdGVzdC5lcnIgMT4mNQogIGx0X2N2 X2NvbXBpbGVyX2Nfbz1ubwpmaQpDRkxBR1M9IiRzYXZlX0NGTEFHUyIKY2ht b2QgdSt3IC4KJHJtIGNvbmZ0ZXN0KiBvdXQvKgpybWRpciBvdXQKY2QgLi4K cm1kaXIgY29uZnRlc3QKJHJtIC1yIGNvbmZ0ZXN0IDI+L2Rldi9udWxsCgpm aQoKY29tcGlsZXJfY19vPSRsdF9jdl9jb21waWxlcl9jX28KZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGNvbXBpbGVyX2NfbyIgPiY1CmVjaG8g IiR7RUNIT19UfSRjb21waWxlcl9jX28iID4mNgoKaWYgdGVzdCB4IiRjb21w aWxlcl9jX28iID0geCJ5ZXMiOyB0aGVuCiAgIyBDaGVjayB0byBzZWUgaWYg d2UgY2FuIHdyaXRlIHRvIGEgLmxvCiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLmxv IiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3Vw cG9ydHMgLWMgLW8gZmlsZS5sby4uLiAkRUNIT19DIiA+JjYKICBpZiB0ZXN0 ICIke2x0X2N2X2NvbXBpbGVyX29fbG8rc2V0fSIgPSBzZXQ7IHRoZW4KICBl Y2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCgogIGx0 X2N2X2NvbXBpbGVyX29fbG89bm8KICBzYXZlX0NGTEFHUz0iJENGTEFHUyIK ICBDRkxBR1M9IiRDRkxBR1MgLWMgLW8gY29uZnRlc3QubG8iCiAgc2F2ZV9v YmpleHQ9IiRhY19vYmpleHQiCiAgYWNfb2JqZXh0PWxvCiAgY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3Vy ZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFpbiAoKQp7Cmlu dCBzb21lX3ZhcmlhYmxlID0gMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9G CnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwg JGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29u ZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUK ICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g JGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRo ZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdu b3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICMgU28gc2F5 IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwogICAgaWYgdGVzdCAtcyBjb25m dGVzdC5lcnI7IHRoZW4KICAgICAgbHRfY3ZfY29tcGlsZXJfb19sbz1ubwog ICAgZWxzZQogICAgICBsdF9jdl9jb21waWxlcl9vX2xvPXllcwogICAgZmkK CmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4m NQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgpmaQpybSAt ZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICBhY19v YmpleHQ9IiRzYXZlX29iamV4dCIKICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIK CmZpCgogIGNvbXBpbGVyX29fbG89JGx0X2N2X2NvbXBpbGVyX29fbG8KICBl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkY29tcGlsZXJfb19sbyIg PiY1CmVjaG8gIiR7RUNIT19UfSRjb21waWxlcl9vX2xvIiA+JjYKZWxzZQog IGNvbXBpbGVyX29fbG89bm8KZmkKIyMKIyMgRU5EIEZJWE1FCgojIyBGSVhN RTogdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBtYWNybwojIwojIENoZWNr IHRvIHNlZSBpZiB3ZSBjYW4gZG8gaGFyZCBsaW5rcyB0byBsb2NrIHNvbWUg ZmlsZXMgaWYgbmVlZGVkCmhhcmRfbGlua3M9Im5vdHRlc3RlZCIKaWYgdGVz dCAiJGNvbXBpbGVyX2NfbyIgPSBubyAmJiB0ZXN0ICIkbmVlZF9sb2NrcyIg IT0gbm87IHRoZW4KICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9m IG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJk IGxpbmtzIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBpZiB3ZSBjYW4g bG9jayB3aXRoIGhhcmQgbGlua3MuLi4gJEVDSE9fQyIgPiY2CiAgaGFyZF9s aW5rcz15ZXMKICAkcm0gY29uZnRlc3QqCiAgbG4gY29uZnRlc3QuYSBjb25m dGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KICB0b3VjaCBj b25mdGVzdC5hCiAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwg aGFyZF9saW5rcz1ubwogIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9k ZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IHJlc3VsdDogJGhhcmRfbGlua3MiID4mNQplY2hvICIke0VDSE9fVH0k aGFyZF9saW5rcyIgPiY2CiAgaWYgdGVzdCAiJGhhcmRfbGlua3MiID0gbm87 IHRoZW4KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IFxg JENDJyBkb2VzIG5vdCBzdXBwb3J0IFxgLWMgLW8nLCBzbyBcYG1ha2UgLWon IG1heSBiZSB1bnNhZmUiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6IFxg JENDJyBkb2VzIG5vdCBzdXBwb3J0IFxgLWMgLW8nLCBzbyBcYG1ha2UgLWon IG1heSBiZSB1bnNhZmUiID4mMjt9CiAgICBuZWVkX2xvY2tzPXdhcm4KICBm aQplbHNlCiAgbmVlZF9sb2Nrcz1ubwpmaQojIwojIyBFTkQgRklYTUUKCiMj IEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG1hY3JvCiMjCmlm IHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgIyBDaGVjayB0byBzZWUgaWYg b3B0aW9ucyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIGFyZSBzdXBwb3J0 ZWQgYnkgY29tcGlsZXIKICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2Vw dGlvbnMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGlmICRjb21waWxl ciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zLi4uICRFQ0hP X0MiID4mNgogIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29u ZnRlc3QuJGFjX2V4dAogIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgogIENGTEFH Uz0iJENGTEFHUyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIC1jIGNvbmZ0 ZXN0LiRhY19leHQiCiAgY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPW5vCiAg Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8g ImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFp biAoKQp7CmludCBzb21lX3ZhcmlhYmxlID0gMDsKICA7CiAgcmV0dXJuIDA7 Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1 CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAg KGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rl c3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVjaG8gIiRh c19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190 cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7 IH07IH07IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2Fy biBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAg ICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwogICAgaWYgdGVz dCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgY29tcGlsZXJfcnR0aV9l eGNlcHRpb25zPW5vCiAgICBlbHNlCiAgICAgIGNvbXBpbGVyX3J0dGlfZXhj ZXB0aW9ucz15ZXMKICAgIGZpCgplbHNlCiAgZWNobyAiJGFzX21lOiBmYWls ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0CiAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCiAgZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGNvbXBpbGVyX3J0dGlfZXhjZXB0 aW9ucyIgPiY1CmVjaG8gIiR7RUNIT19UfSRjb21waWxlcl9ydHRpX2V4Y2Vw dGlvbnMiID4mNgoKICBpZiB0ZXN0ICIkY29tcGlsZXJfcnR0aV9leGNlcHRp b25zIiA9ICJ5ZXMiOyB0aGVuCiAgICBub19idWlsdGluX2ZsYWc9JyAtZm5v LWJ1aWx0aW4gLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucycKICBlbHNlCiAg ICBub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nCiAgZmkKZmkKIyMK IyMgRU5EIEZJWE1FCgojIyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSBzZXBh cmF0ZSBtYWNybwojIwojIFNlZSBpZiB0aGUgbGlua2VyIHN1cHBvcnRzIGJ1 aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCmVjaG8gIiRhc19tZTokTElORU5P OiBjaGVja2luZyB3aGV0aGVyIHRoZSBsaW5rZXIgKCRMRCkgc3VwcG9ydHMg c2hhcmVkIGxpYnJhcmllcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg d2hldGhlciB0aGUgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJy YXJpZXMuLi4gJEVDSE9fQyIgPiY2CgphbGxvd191bmRlZmluZWRfZmxhZz0K bm9fdW5kZWZpbmVkX2ZsYWc9Cm5lZWRfbGliX3ByZWZpeD11bmtub3duCm5l ZWRfdmVyc2lvbj11bmtub3duCiMgd2hlbiB5b3Ugc2V0IG5lZWRfdmVyc2lv biB0byBubywgbWFrZSBzdXJlIGl0IGRvZXMgbm90IGNhdXNlIC1zZXRfdmVy c2lvbgojIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKYXJj aGl2ZV9jbWRzPQphcmNoaXZlX2V4cHN5bV9jbWRzPQpvbGRfYXJjaGl2ZV9m cm9tX25ld19jbWRzPQpvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0K ZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPQp3aG9sZV9hcmNoaXZlX2ZsYWdf c3BlYz0KdGhyZWFkX3NhZmVfZmxhZ19zcGVjPQpoYXJkY29kZV9pbnRvX2xp YnM9bm8KaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KaGFyZGNvZGVfbGli ZGlyX3NlcGFyYXRvcj0KaGFyZGNvZGVfZGlyZWN0PW5vCmhhcmRjb2RlX21p bnVzX0w9bm8KaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj11bnN1cHBvcnRlZApy dW5wYXRoX3Zhcj0KbGlua19hbGxfZGVwbGlicz11bmtub3duCmFsd2F5c19l eHBvcnRfc3ltYm9scz1ubwpleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxp Ym9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8IHNl ZCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3lt Ym9scycKIyBpbmNsdWRlX2V4cHN5bXMgc2hvdWxkIGJlIGEgbGlzdCBvZiBz cGFjZS1zZXBhcmF0ZWQgc3ltYm9scyB0byBiZSAqYWx3YXlzKgojIGluY2x1 ZGVkIGluIHRoZSBzeW1ib2wgbGlzdAppbmNsdWRlX2V4cHN5bXM9CiMgZXhj bHVkZV9leHBzeW1zIGNhbiBiZSBhbiBlZ3JlcCByZWd1bGFyIGV4cHJlc3Np b24gb2Ygc3ltYm9scyB0byBleGNsdWRlCiMgaXQgd2lsbCBiZSB3cmFwcGVk IGJ5IGAgKCcgYW5kIGApJCcsIHNvIG9uZSBtdXN0IG5vdCBtYXRjaCBiZWdp bm5pbmcgb3IKIyBlbmQgb2YgbGluZS4gIEV4YW1wbGU6IGBhfGJjfC4qZC4q JyB3aWxsIGV4Y2x1ZGUgdGhlIHN5bWJvbHMgYGEnIGFuZCBgYmMnLAojIGFz IHdlbGwgYXMgYW55IHN5bWJvbCB0aGF0IGNvbnRhaW5zIGBkJy4KZXhjbHVk ZV9leHBzeW1zPSJfR0xPQkFMX09GRlNFVF9UQUJMRV8iCiMgQWx0aG91Z2gg X0dMT0JBTF9PRkZTRVRfVEFCTEVfIGlzIGEgdmFsaWQgc3ltYm9sIEMgbmFt ZSwgbW9zdCBhLm91dAojIHBsYXRmb3JtcyAoYWIpdXNlIGl0IGluIFBJQyBj b2RlLCBidXQgdGhlaXIgbGlua2VycyBnZXQgY29uZnVzZWQgaWYKIyB0aGUg c3ltYm9sIGlzIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4gIFNpbmNlIHBvcnRh YmxlIGNvZGUgY2Fubm90CiMgcmVseSBvbiB0aGlzIHN5bWJvbCBuYW1lLCBp dCdzIHByb2JhYmx5IGZpbmUgdG8gbmV2ZXIgaW5jbHVkZSBpdCBpbgojIHBy ZWxvYWRlZCBzeW1ib2wgdGFibGVzLgpleHRyYWN0X2V4cHN5bXNfY21kcz0K CmNhc2UgJGhvc3Rfb3MgaW4KY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQog ICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQg aW4gYSBsb29vb25nIHRpbWUKICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2Ug Y3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwogICMgTWljcm9z b2Z0IFZpc3VhbCBDKysuCiAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVu CiAgICB3aXRoX2dudV9sZD1ubwogIGZpCiAgOzsKb3BlbmJzZCopCiAgd2l0 aF9nbnVfbGQ9bm8KICA7Owplc2FjCgpsZF9zaGxpYnM9eWVzCmlmIHRlc3Qg IiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KICAjIElmIGFyY2hpdmVfY21k cyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQogIHds YXJjPScke3dsfScKCiAgIyBTZWUgaWYgR05VIGxkIHN1cHBvcnRzIHNoYXJl ZCBsaWJyYXJpZXMuCiAgY2FzZSAkaG9zdF9vcyBpbgogIGFpeDMqIHwgYWl4 NCogfCBhaXg1KikKICAgICMgT24gQUlYLCB0aGUgR05VIGxpbmtlciBpcyB2 ZXJ5IGJyb2tlbgogICAgIyBOb3RlOkNoZWNrIEdOVSBsaW5rZXIgb24gQUlY IDUtSUE2NCB3aGVuL2lmIGl0IGJlY29tZXMgYXZhaWxhYmxlLgogICAgbGRf c2hsaWJzPW5vCiAgICBjYXQgPDxFT0YgMT4mMgoKKioqIFdhcm5pbmc6IHRo ZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuOS4xLCBp cyByZXBvcnRlZAoqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0 ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KKioqIFRoZXJlZm9yZSwgbGli dG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAg SWYgeW91CioqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywg eW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKKioqIHNvIHRoYXQg YSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4K CkVPRgogICAgOzsKCiAgYW1pZ2FvcyopCiAgICBhcmNoaXZlX2NtZHM9JyRy bSAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVm aW5lIE5BTUUgJGxpYm5hbWUiID4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJh cnkuZGF0YX4kZWNobyAiI2RlZmluZSBMSUJSQVJZX0lEIDEiID4+ICRvdXRw dXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgVkVS U0lPTiAkbWFqb3IiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRh dGF+JGVjaG8gIiNkZWZpbmUgUkVWSVNJT04gJHJldmlzaW9uIiA+PiAkb3V0 cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRBUiAkQVJfRkxBR1MgJGxp YiAkbGlib2Jqc34kUkFOTElCICRsaWJ+KGNkICRvdXRwdXRfb2JqZGlyICYm IGEyaXhsaWJyYXJ5IC0zMiknCiAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19z cGVjPSctTCRsaWJkaXInCiAgICBoYXJkY29kZV9taW51c19MPXllcwoKICAg ICMgU2FtdWVsIEEuIEZhbHZvIElJIDxrYzV0amFAZG9scGhpbi5vcGVucHJv amVjdHMubmV0PiByZXBvcnRzCiAgICAjIHRoYXQgdGhlIHNlbWFudGljcyBv ZiBkeW5hbWljIGxpYnJhcmllcyBvbiBBbWlnYU9TLCBhdCBsZWFzdCB1cAog ICAgIyB0byB2ZXJzaW9uIDQsIGlzIHRvIHNoYXJlIGRhdGEgYW1vbmcgbXVs dGlwbGUgcHJvZ3JhbXMgbGlua2VkCiAgICAjIHdpdGggdGhlIHNhbWUgZHlu YW1pYyBsaWJyYXJ5LiAgU2luY2UgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZQog ICAgIyBiZWhhdmlvciBvZiBzaGFyZWQgbGlicmFyaWVzIG9uIG90aGVyIHBs YXRmb3Jtcywgd2UgY2FuIHVzZQogICAgIyB0aGVtLgogICAgbGRfc2hsaWJz PW5vCiAgICA7OwoKICBiZW9zKikKICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8 IGVncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251 bGw7IHRoZW4KICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0 ZWQKICAgICAgIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4g c2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwogICAgICAjIHN1cHBvcnQgLS11 bmRlZmluZWQuICBUaGlzIGRlc2VydmVzIHNvbWUgaW52ZXN0aWdhdGlvbi4g IEZJWE1FCiAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1ub3N0YXJ0ICRsaWJv YmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHds JHNvbmFtZSAtbyAkbGliJwogICAgZWxzZQogICAgICBsZF9zaGxpYnM9bm8K ICAgIGZpCiAgICA7OwoKICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCiAg ICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVh bmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAjIG5vIHNlYXJjaCBwYXRoIGZv ciBETExzLgogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGli ZGlyJwogICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAg IGFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKCiAgICBleHRyYWN0X2V4cHN5 bXNfY21kcz0ndGVzdCAtZiAkb3V0cHV0X29iamRpci9pbXBnZW4uYyB8fCBc CiAgICAgIHNlZCAtZSAiL14jIFwvXCogaW1wZ2VuXC5jIHN0YXJ0cyBoZXJl IFwqXC8vLC9eIyBcL1wqIGltcGdlbi5jIGVuZHMgaGVyZSBcKlwvLyB7IHMv XiMgLy87cy9eIyAqJC8vOyBwOyB9IiAtZSBkIDwgJCcnMCA+ICRvdXRwdXRf b2JqZGlyL2ltcGdlbi5jfgogICAgICB0ZXN0IC1mICRvdXRwdXRfb2JqZGly L2ltcGdlbi5leGUgfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmIFwKICAgICAg aWYgdGVzdCAieCRIT1NUX0NDIiAhPSAieCIgOyB0aGVuICRIT1NUX0NDIC1v IGltcGdlbiBpbXBnZW4uYyA7IFwKICAgICAgZWxzZSAkQ0MgLW8gaW1wZ2Vu IGltcGdlbi5jIDsgZmkpfgogICAgICAkb3V0cHV0X29iamRpci9pbXBnZW4g JGRpci8kc29yb290ID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS1kZWYnCgog ICAgb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9JyRETExUT09MIC0t YXM9JEFTIC0tZGxsbmFtZSAkc29uYW1lIC0tZGVmICRvdXRwdXRfb2JqZGly LyRzb25hbWUtZGVmIC0tb3V0cHV0LWxpYiAkb3V0cHV0X29iamRpci8kbmV3 bGliJwoKICAgICMgY3lnd2luIGFuZCBtaW5ndyBkbGxzIGhhdmUgZGlmZmVy ZW50IGVudHJ5IHBvaW50cyBhbmQgc2V0cyBvZiBzeW1ib2xzCiAgICAjIHRv IGV4Y2x1ZGUuCiAgICAjIEZJWE1FOiB3aGF0IGFib3V0IHZhbHVlcyBmb3Ig TVNWQz8KICAgIGRsbF9lbnRyeT1fX2N5Z3dpbl9kbGxfZW50cnlAMTIKICAg IGRsbF9leGNsdWRlX3N5bWJvbHM9RGxsTWFpbkAxMixfY3lnd2luX2RsbF9l bnRyeUAxMixfY3lnd2luX25vbmN5Z3dpbl9kbGxfZW50cnlAMTJ+CiAgICBj YXNlICRob3N0X29zIGluCiAgICBtaW5ndyopCiAgICAgICMgbWluZ3cgdmFs dWVzCiAgICAgIGRsbF9lbnRyeT1fRGxsTWFpbkNSVFN0YXJ0dXBAMTIKICAg ICAgZGxsX2V4Y2x1ZGVfc3ltYm9scz1EbGxNYWluQDEyLERsbE1haW5DUlRT dGFydHVwQDEyLERsbEVudHJ5UG9pbnRAMTJ+CiAgICAgIDs7CiAgICBlc2Fj CgogICAgIyBtaW5ndyBhbmQgY3lnd2luIGRpZmZlciwgYW5kIGl0J3Mgc2lt cGxlc3QgdG8ganVzdCBleGNsdWRlIHRoZSB1bmlvbgogICAgIyBvZiB0aGUg dHdvIHN5bWJvbCBzZXRzLgogICAgZGxsX2V4Y2x1ZGVfc3ltYm9scz1EbGxN YWluQDEyLF9jeWd3aW5fZGxsX2VudHJ5QDEyLF9jeWd3aW5fbm9uY3lnd2lu X2RsbF9lbnRyeUAxMixEbGxNYWluQ1JUU3RhcnR1cEAxMixEbGxFbnRyeVBv aW50QDEyCgogICAgIyByZWNlbnQgY3lnd2luIGFuZCBtaW5ndyBzeXN0ZW1z IHN1cHBseSBhIHN0dWIgRGxsTWFpbiB3aGljaCB0aGUgdXNlcgogICAgIyBj YW4gb3ZlcnJpZGUsIGJ1dCBvbiBvbGRlciBzeXN0ZW1zIHdlIGhhdmUgdG8g c3VwcGx5IG9uZSAoaW4gbHRkbGwuYykKICAgIGlmIHRlc3QgIngkbHRfY3Zf bmVlZF9kbGxtYWluIiA9ICJ4eWVzIjsgdGhlbgogICAgICBsdGRsbF9vYmo9 JyRvdXRwdXRfb2JqZGlyLyRzb25hbWUtbHRkbGwuJyIkYWNfb2JqZXh0ICIK ICAgICAgbHRkbGxfY21kcz0ndGVzdCAtZiAkb3V0cHV0X29iamRpci8kc29u YW1lLWx0ZGxsLmMgfHwgc2VkIC1lICIvXiMgXC9cKiBsdGRsbFwuYyBzdGFy dHMgaGVyZSBcKlwvLywvXiMgXC9cKiBsdGRsbC5jIGVuZHMgaGVyZSBcKlwv LyB7IHMvXiMgLy87IHA7IH0iIC1lIGQgPCAkJycwID4gJG91dHB1dF9vYmpk aXIvJHNvbmFtZS1sdGRsbC5jfgoJdGVzdCAtZiAkb3V0cHV0X29iamRpci8k c29uYW1lLWx0ZGxsLiRhY19vYmpleHQgfHwgKGNkICRvdXRwdXRfb2JqZGly ICYmICRDQyAtYyAkc29uYW1lLWx0ZGxsLmMpficKICAgIGVsc2UKICAgICAg bHRkbGxfb2JqPQogICAgICBsdGRsbF9jbWRzPQogICAgZmkKCiAgICAjIEV4 dHJhY3QgdGhlIHN5bWJvbCBleHBvcnQgbGlzdCBmcm9tIGFuIGAtLWV4cG9y dC1hbGwnIGRlZiBmaWxlLAogICAgIyB0aGVuIHJlZ2VuZXJhdGUgdGhlIGRl ZiBmaWxlIGZyb20gdGhlIHN5bWJvbCBleHBvcnQgbGlzdCwgc28gdGhhdAog ICAgIyB0aGUgY29tcGlsZWQgZGxsIG9ubHkgZXhwb3J0cyB0aGUgc3ltYm9s IGV4cG9ydCBsaXN0LgogICAgIyBCZSBjYXJlZnVsIG5vdCB0byBzdHJpcCB0 aGUgREFUQSB0YWcgbGVmdCBiZSBuZXdlciBkbGx0b29scy4KICAgIGV4cG9y dF9zeW1ib2xzX2NtZHM9IiRsdGRsbF9jbWRzIicKICAgICAgJERMTFRPT0wg LS1leHBvcnQtYWxsIC0tZXhjbHVkZS1zeW1ib2xzICckZGxsX2V4Y2x1ZGVf c3ltYm9scycgLS1vdXRwdXQtZGVmICRvdXRwdXRfb2JqZGlyLyRzb25hbWUt ZGVmICckbHRkbGxfb2JqJyRsaWJvYmpzICRjb252ZW5pZW5jZX4KICAgICAg c2VkIC1lICIxLC9FWFBPUlRTL2QiIC1lICJzLyBAIFswLTldKi8vIiAtZSAi cy8gKjsuKiQvLyIgPCAkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZiA+ICRl eHBvcnRfc3ltYm9scycKCiAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBm aWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCiAgICAjIGlz IEVYUE9SVFMpLCB1c2UgaXQgYXMgaXMuCiAgICAjIElmIERBVEEgdGFncyBm cm9tIGEgcmVjZW50IGRsbHRvb2wgYXJlIHByZXNlbnQsIGhvbm91ciB0aGVt IQogICAgYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGBzZWQgMXEg JGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgoJY3AgJGV4cG9y dF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUtZGVmOwogICAgICBl bHNlCgllY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLWRl ZjsKCV9sdF9oaW50PTE7CgljYXQgJGV4cG9ydF9zeW1ib2xzIHwgd2hpbGUg cmVhZCBzeW1ib2w7IGRvCgkgc2V0IGR1bW15IFwkc3ltYm9sOwoJIGNhc2Ug XCQjIGluCgkgICAyKSBlY2hvICIgICBcJDIgQCBcJF9sdF9oaW50IDsgIiA+ PiAkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZjs7CgkgICA0KSBlY2hvICIg ICBcJDIgXCQzIFwkNCA7ICIgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS1k ZWY7IF9sdF9oaW50PWBleHByIFwkX2x0X2hpbnQgLSAxYDs7CgkgICAqKSBl Y2hvICIgICAgIFwkMiBAIFwkX2x0X2hpbnQgXCQzIDsgIiA+PiAkb3V0cHV0 X29iamRpci8kc29uYW1lLWRlZjs7CgkgZXNhYzsKCSBfbHRfaGludD1gZXhw ciAxICsgXCRfbHRfaGludGA7Cglkb25lOwogICAgICBmaX4KICAgICAgJyIk bHRkbGxfY21kcyInCiAgICAgICRDQyAtV2wsLS1iYXNlLWZpbGUsJG91dHB1 dF9vYmpkaXIvJHNvbmFtZS1iYXNlICckbHRfY3ZfY2NfZGxsX3N3aXRjaCcg LVdsLC1lLCckZGxsX2VudHJ5JyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1l ICckbHRkbGxfb2JqJyRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFn c34KICAgICAgJERMTFRPT0wgLS1hcz0kQVMgLS1kbGxuYW1lICRzb25hbWUg LS1leGNsdWRlLXN5bWJvbHMgJyRkbGxfZXhjbHVkZV9zeW1ib2xzJyAtLWRl ZiAkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZiAtLWJhc2UtZmlsZSAkb3V0 cHV0X29iamRpci8kc29uYW1lLWJhc2UgLS1vdXRwdXQtZXhwICRvdXRwdXRf b2JqZGlyLyRzb25hbWUtZXhwfgogICAgICAkQ0MgLVdsLC0tYmFzZS1maWxl LCRvdXRwdXRfb2JqZGlyLyRzb25hbWUtYmFzZSAkb3V0cHV0X29iamRpci8k c29uYW1lLWV4cCAnJGx0X2N2X2NjX2RsbF9zd2l0Y2gnIC1XbCwtZSwnJGRs bF9lbnRyeScgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAnJGx0ZGxsX29i aickbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+CiAgICAgICRE TExUT09MIC0tYXM9JEFTIC0tZGxsbmFtZSAkc29uYW1lIC0tZXhjbHVkZS1z eW1ib2xzICckZGxsX2V4Y2x1ZGVfc3ltYm9scycgLS1kZWYgJG91dHB1dF9v YmpkaXIvJHNvbmFtZS1kZWYgLS1iYXNlLWZpbGUgJG91dHB1dF9vYmpkaXIv JHNvbmFtZS1iYXNlIC0tb3V0cHV0LWV4cCAkb3V0cHV0X29iamRpci8kc29u YW1lLWV4cCAtLW91dHB1dC1saWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUu ZGxsLmF+CiAgICAgICRDQyAkb3V0cHV0X29iamRpci8kc29uYW1lLWV4cCAn JGx0X2N2X2NjX2RsbF9zd2l0Y2gnIC1XbCwtZSwnJGRsbF9lbnRyeScgLW8g JG91dHB1dF9vYmpkaXIvJHNvbmFtZSAnJGx0ZGxsX29iaickbGlib2JqcyAk ZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICA7OwoKICBuZXRic2QqKQog ICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18g Pi9kZXYvbnVsbDsgdGhlbgogICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNo YXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRs aWInCiAgICAgIHdsYXJjPQogICAgZWxzZQogICAgICBhcmNoaXZlX2NtZHM9 JyRDQyAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzICRsaWJvYmpzICRkZXBsaWJz ICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAk bGliJwogICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAt bm9kZWZhdWx0bGlicyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxh Z3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJv bHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgIGZpCiAg ICA7OwoKICBzb2xhcmlzKiB8IHN5c3Y1KikKICAgIGlmICRMRCAtdiAyPiYx IHwgZWdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBs ZF9zaGxpYnM9bm8KICAgICAgY2F0IDw8RU9GIDE+JjIKCioqKiBXYXJuaW5n OiBUaGUgcmVsZWFzZXMgMi44Liogb2YgdGhlIEdOVSBsaW5rZXIgY2Fubm90 IHJlbGlhYmx5CioqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xh cmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKioqIGlzIGRpc2Fi bGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBXZSB1cmdlIHlvdSB0 byB1cGdyYWRlIEdOVQoqKiogYmludXRpbHMgdG8gcmVsZWFzZSAyLjkuMSBv ciBuZXdlci4gIEFub3RoZXIgb3B0aW9uIGlzIHRvIG1vZGlmeQoqKiogeW91 ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUg bmF0aXZlIGxpbmtlciBpcwoqKiogdXNlZCwgYW5kIHRoZW4gcmVzdGFydC4K CkVPRgogICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBlZ3JlcCAnOiBzdXBw b3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCiAgICAg IGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMg JGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRs aWInCiAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRs aWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUg JHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBv cnRfc3ltYm9scyAtbyAkbGliJwogICAgZWxzZQogICAgICBsZF9zaGxpYnM9 bm8KICAgIGZpCiAgICA7OwoKICBzdW5vczQqKQogICAgYXJjaGl2ZV9jbWRz PSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzaGFyZWFibGUgLW8gJGxpYiAk bGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgd2xhcmM9CiAg ICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICBoYXJkY29kZV9zaGxpYnBhdGhf dmFyPW5vCiAgICA7OwoKICAqKQogICAgaWYgJExEIC0taGVscCAyPiYxIHwg ZWdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVs bDsgdGhlbgogICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJv YmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHds JHNvbmFtZSAtbyAkbGliJwogICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSck Q0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3Mg JHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMt ZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgIGVsc2UKICAg ICAgbGRfc2hsaWJzPW5vCiAgICBmaQogICAgOzsKICBlc2FjCgogIGlmIHRl c3QgIiRsZF9zaGxpYnMiID0geWVzOyB0aGVuCiAgICBydW5wYXRoX3Zhcj1M RF9SVU5fUEFUSAogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3 bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKICAgIGV4cG9ydF9keW5hbWljX2Zs YWdfc3BlYz0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwogICAgY2FzZSAkaG9z dF9vcyBpbgogICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQogICAgICAj IGRsbHRvb2wgZG9lc24ndCB1bmRlcnN0YW5kIC0td2hvbGUtYXJjaGl2ZSBl dC4gYWwuCiAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQogICAgICA7 OwogICAgKikKICAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9y dCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgogICAgICBpZiAkTEQgLS1oZWxw IDI+JjEgfCBlZ3JlcCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7 IHRoZW4KCXdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSIkd2xhcmMiJy0td2hv bGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1h cmNoaXZlJwogICAgICBlbHNlCgl3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0K ICAgICAgZmkKICAgICAgOzsKICAgIGVzYWMKICBmaQplbHNlCiAgIyBQT1JU TUUgZmlsbCBpbiBhIGRlc2NyaXB0aW9uIG9mIHlvdXIgc3lzdGVtJ3MgbGlu a2VyIChub3QgR05VIGxkKQogIGNhc2UgJGhvc3Rfb3MgaW4KICBhaXgzKikK ICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICBhbHdh eXNfZXhwb3J0X3N5bWJvbHM9eWVzCiAgICBhcmNoaXZlX2V4cHN5bV9jbWRz PSckTEQgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVw bGlicyAkbGlua2VyX2ZsYWdzIC1iRTokZXhwb3J0X3N5bWJvbHMgLVQ1MTIg LUg1MTIgLWJNOlNSRX4kQVIgJEFSX0ZMQUdTICRsaWIgJG91dHB1dF9vYmpk aXIvJHNvbmFtZScKICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVz IHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCiAgICAjIGFy ZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCiAgICBoYXJkY29k ZV9taW51c19MPXllcwogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVz dCAteiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCiAgICAgICMgTmVpdGhl ciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3Vw cG9ydGVkIHdpdGggYQogICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KICAgICAg aGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCiAgICBmaQogICAgOzsKCiAg YWl4NCogfCBhaXg1KikKICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0 OyB0aGVuCiAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0 aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKICAgICAgIyBo YXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCiAgICAgIGFpeF91c2VfcnVu dGltZWxpbmtpbmc9bm8KICAgICAgZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcK ICAgICAgbm9fZW50cnlfZmxhZz0iIgogICAgZWxzZQogICAgICBhaXhfdXNl X3J1bnRpbWVsaW5raW5nPW5vCgogICAgICAjIFRlc3QgaWYgd2UgYXJlIHRy eWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKICAgICAg IyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGlu IExERkxBR1MsIHdlCiAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtp bmcuCiAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIz XS4qfGFpeDUqKQoJZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCgkgIGNh c2UgJGxkX2ZsYWcgaW4KCSAgKi1icnRsKikKCSAgICBhaXhfdXNlX3J1bnRp bWVsaW5raW5nPXllcwoJICAgIGJyZWFrCgkgIDs7CgkgIGVzYWMKCWRvbmUK ICAgICAgZXNhYwoKICAgICAgZXhwX3N5bV9mbGFnPSctYmV4cG9ydCcKICAg ICAgbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JwogICAgZmkKCiAgICAjIFdo ZW4gbGFyZ2UgZXhlY3V0YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMgYXJlIGJ1 aWx0LCBBSVggbGQgY2FuCiAgICAjIGhhdmUgcHJvYmxlbXMgY3JlYXRpbmcg dGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgSWYgbGlua2luZyBhIGxpYnJhcnkK ICAgICMgb3IgcHJvZ3JhbSByZXN1bHRzIGluICJlcnJvciBUT0Mgb3ZlcmZs b3ciIGFkZCAtbW1pbmltYWwtdG9jIHRvCiAgICAjIENYWEZMQUdTL0NGTEFH UyBmb3IgZysrL2djYy4gIEluIHRoZSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5v dAogICAgIyBlbm91Z2ggdG8gZml4IHRoZSBwcm9ibGVtLCBhZGQgLVdsLC1i YmlndG9jIHRvIExERkxBR1MuCgogICAgaGFyZGNvZGVfZGlyZWN0PXllcwog ICAgYXJjaGl2ZV9jbWRzPScnCiAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJh dG9yPSc6JwogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAg Y2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKCWNv bGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAK CWlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKCSAgc3RyaW5ncyAi JGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYv bnVsbAoJdGhlbgoJICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKCSAg aGFyZGNvZGVfZGlyZWN0PXllcwoJZWxzZQoJICAjIFdlIGhhdmUgb2xkIGNv bGxlY3QyCgkgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAoJICAjIEl0 IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhl IHVuaW5zdGFsbGVkCgkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBs aWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCgkgICMgdG8gdW5z dXBwb3J0ZWQgZm9yY2VzIHJlbGlua2luZwoJICBoYXJkY29kZV9taW51c19M PXllcwoJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXIn CgkgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CglmaQogICAgICBlc2Fj CgogICAgICBzaGFyZWRfZmxhZz0nLXNoYXJlZCcKICAgIGVsc2UKICAgICAg IyBub3QgdXNpbmcgZ2NjCiAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBp YTY0OyB0aGVuCglzaGFyZWRfZmxhZz0nJHt3bH0tRycKICAgICAgZWxzZQoJ aWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVu CgkgIHNoYXJlZF9mbGFnPScke3dsfS1HJwoJZWxzZQoJICBzaGFyZWRfZmxh Zz0nJHt3bH0tYk06U1JFJwoJZmkKICAgICAgZmkKICAgIGZpCgogICAgIyBJ dCBzZWVtcyB0aGF0IC1iZXhwYWxsIGNhbiBkbyBzdHJhbmdlIHRoaW5ncywg c28gaXQgaXMgYmV0dGVyIHRvCiAgICAjIGdlbmVyYXRlIGEgbGlzdCBvZiBz eW1ib2xzIHRvIGV4cG9ydC4KICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz15 ZXMKICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHll czsgdGhlbgogICAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBv dGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKICAgICAgIyAt YmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVj ZSBhIGJyb2tlbiBsaWJyYXJ5LgogICAgICBhbGxvd191bmRlZmluZWRfZmxh Zz0nLWJlcm9rJwogICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSck e3dsfS1ibGlicGF0aDokbGliZGlyOi91c3IvbGliOi9saWInCiAgICAgIGFy Y2hpdmVfZXhwc3ltX2NtZHM9IlwkQ0MiJyAtbyAkb3V0cHV0X29iamRpci8k c29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyBgaWYg dGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4g ZWNobyAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsg ZmlgICciXCR7d2x9JG5vX2VudHJ5X2ZsYWcgXCR7d2x9JGV4cF9zeW1fZmxh ZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgIGVsc2UKICAg ICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KCWhhcmRjb2Rl X2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjov bGliJwoJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Ii16IG5vZGVmcyIKCWFyY2hp dmVfZXhwc3ltX2NtZHM9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1 dF9vYmpkaXIvJHNvbmFtZSAke3dsfS1oJHNvbmFtZSAkbGlib2JqcyAkZGVw bGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9m bGFnfSAnIlwke3dsfSRub19lbnRyeV9mbGFnIFwke3dsfSRleHBfc3ltX2Zs YWc6XCRleHBvcnRfc3ltYm9scyIKICAgICAgZWxzZQoJaGFyZGNvZGVfbGli ZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYm5vbGlicGF0aCAke3dsfS1ibGlicGF0 aDokbGliZGlyOi91c3IvbGliOi9saWInCgkjIFdhcm5pbmcgLSB3aXRob3V0 IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAoJIyAt YmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVj ZSBhIGJyb2tlbiBsaWJyYXJ5LgoJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyR7 d2x9LWJlcm9rJwoJIyBUaGlzIGlzIGEgYml0IHN0cmFuZ2UsIGJ1dCBpcyBz aW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMKCSMgaXQn cyBzaGFyZWQgbGlicmFyaWVzLgoJYXJjaGl2ZV9leHBzeW1fY21kcz0iXCRD QyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRs aWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke2FsbG93X3VuZGVm aW5lZF9mbGFnfSAnIlwke3dsfSRub19lbnRyeV9mbGFnIFwke3dsfSRleHBf c3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyInIH4kQVIgLWNybG8gJG9iamRp ci8kbGlibmFtZSRyZWxlYXNlLmEgJG9iamRpci8kc29uYW1lJwogICAgICBm aQogICAgZmkKICAgIDs7CgogIGFtaWdhb3MqKQogICAgYXJjaGl2ZV9jbWRz PSckcm0gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAi I2RlZmluZSBOQU1FICRsaWJuYW1lIiA+ICRvdXRwdXRfb2JqZGlyL2EyaXhs aWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgTElCUkFSWV9JRCAxIiA+PiAk b3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5l IFZFUlNJT04gJG1ham9yIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFy eS5kYXRhfiRlY2hvICIjZGVmaW5lIFJFVklTSU9OICRyZXZpc2lvbiIgPj4g JG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kQVIgJEFSX0ZMQUdT ICRsaWIgJGxpYm9ianN+JFJBTkxJQiAkbGlifihjZCAkb3V0cHV0X29iamRp ciAmJiBhMml4bGlicmFyeSAtMzIpJwogICAgaGFyZGNvZGVfbGliZGlyX2Zs YWdfc3BlYz0nLUwkbGliZGlyJwogICAgaGFyZGNvZGVfbWludXNfTD15ZXMK ICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgZGlmZmVyZW50IHNlbWFudGljcyBv biB0aGUgR05VIGxkIHNlY3Rpb24KICAgIGxkX3NobGlicz1ubwogICAgOzsK CiAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQogICAgIyBXaGVuIG5vdCB1 c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNp bmcKICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAjIGhhcmRjb2Rl X2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFz IHRoZXJlIGlzCiAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAg aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKICAgIGFsbG93X3VuZGVm aW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAjIFRlbGwgbHRtYWluIHRvIG1h a2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgogICAgbGliZXh0PWxpYgog ICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBo YWNrLgogICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAk Y29tcGlsZXJfZmxhZ3MgYGVjaG8gIiRkZXBsaWJzIiB8IHNlZCAtZSAnXCcn cy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwogICAgIyBU aGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmls ZSBpZiB3ZSBidWlsZCBhIERMTC4KICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3 X2NtZHM9J3RydWUnCiAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2Vy IHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgogICAgb2xkX2FyY2hpdmVfY21k cz0nbGliIC9PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwogICAg Zml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCiAg ICA7OwoKICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQogICAgY2FzZSAiJGhvc3Rf b3MiIGluCiAgICByaGFwc29keSogfCBkYXJ3aW4xLlswMTJdKQogICAgICBh bGxvd191bmRlZmluZWRfZmxhZz0nLXVuZGVmaW5lZCBzdXBwcmVzcycKICAg ICAgOzsKICAgICopICMgRGFyd2luIDEuMyBvbgogICAgICBhbGxvd191bmRl ZmluZWRfZmxhZz0nLWZsYXRfbmFtZXNwYWNlIC11bmRlZmluZWQgc3VwcHJl c3MnCiAgICAgIDs7CiAgICBlc2FjCiAgICAjIEZJWE1FOiBSZWx5aW5nIG9u IHBvc2l4eSAkKCkgd2lsbCBjYXVzZSBwcm9ibGVtcyBmb3IKICAgICMgICAg ICAgIGNyb3NzLWNvbXBpbGF0aW9uLCBidXQgdW5mb3J0dW5hdGVseSB0aGUg ZWNobyB0ZXN0cyBkbyBub3QKICAgICMgICAgICAgIHlldCBkZXRlY3QgenNo IGVjaG8ncyByZW1vdmFsIG9mIFwgZXNjYXBlcy4gIEFsc28genNoIG1hbmds ZXMKICAgICMJICAgICBgIicgcXVvdGVzIGlmIHdlIHB1dCB0aGVtIGluIGhl cmUuLi4gc28gZG9uJ3QhCiAgICBhcmNoaXZlX2NtZHM9JyRDQyAtciAta2Vl cF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vICR7bGlifS1tYXN0ZXIu byAkbGlib2JqcyAmJiAkQ0MgJCh0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBl Y2hvIC1idW5kbGUgfHwgZWNobyAtZHluYW1pY2xpYikgJGFsbG93X3VuZGVm aW5lZF9mbGFnIC1vICRsaWIgJHtsaWJ9LW1hc3Rlci5vICRkZXBsaWJzJGxp bmtlcl9mbGFncyAkKHRlc3QgLiRtb2R1bGUgIT0gLnllcyAmJiBlY2hvIC1p bnN0YWxsX25hbWUgJHJwYXRoLyRzb25hbWUgJHZlcnN0cmluZyknCiAgICAj IFdlIG5lZWQgdG8gYWRkICdfJyB0byB0aGUgc3ltYm9scyBpbiAkZXhwb3J0 X3N5bWJvbHMgZmlyc3QKICAgICNhcmNoaXZlX2V4cHN5bV9jbWRzPSIkYXJj aGl2ZV9jbWRzIicgJiYgc3RyaXAgLXMgJGV4cG9ydF9zeW1ib2xzJwogICAg aGFyZGNvZGVfZGlyZWN0PXllcwogICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zh cj1ubwogICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy1hbGxfbG9hZCAk Y29udmVuaWVuY2UnCiAgICA7OwoKICBmcmVlYnNkMSopCiAgICBsZF9zaGxp YnM9bm8KICAgIDs7CgogICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVz IHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3Rvcgog ICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRp Y2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwogICMgZG9lcyBub3Qg YnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0 aGUgY29zdCBvZiBhIGxpdHRsZQogICMgZXh0cmEgc3BhY2UpLgogIGZyZWVi c2QyLjIqKQogICAgYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgLW8g JGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC91c3IvbGli L2MrK3J0MC5vJwogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIk bGliZGlyJwogICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgaGFyZGNvZGVf c2hsaWJwYXRoX3Zhcj1ubwogICAgOzsKCiAgIyBVbmZvcnR1bmF0ZWx5LCBv bGRlciB2ZXJzaW9ucyBvZiBGcmVlQlNEIDIgZG8gbm90IGhhdmUgdGhpcyBm ZWF0dXJlLgogIGZyZWVic2QyKikKICAgIGFyY2hpdmVfY21kcz0nJExEIC1C c2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9m bGFncycKICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgIGhhcmRjb2RlX21p bnVzX0w9eWVzCiAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICA7 OwoKICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVk IHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgZnJlZWJzZCopCiAgICBhcmNo aXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxp YnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdf c3BlYz0nLVIkbGliZGlyJwogICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAg aGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgOzsKCiAgaHB1eDkqIHwg aHB1eDEwKiB8IGhwdXgxMSopCiAgICBjYXNlICRob3N0X29zIGluCiAgICBo cHV4OSopIGFyY2hpdmVfY21kcz0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25h bWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRp ci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVz dCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0 X29iamRpci8kc29uYW1lICRsaWInIDs7CiAgICAqKSBhcmNoaXZlX2NtZHM9 JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGli ICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnIDs7CiAgICBlc2Fj CiAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9 JGxpYmRpcicKICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgogICAg aGFyZGNvZGVfZGlyZWN0PXllcwogICAgaGFyZGNvZGVfbWludXNfTD15ZXMg IyBOb3QgaW4gdGhlIHNlYXJjaCBQQVRILCBidXQgYXMgdGhlIGRlZmF1bHQK CQkJICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCiAgICBleHBvcnRfZHlu YW1pY19mbGFnX3NwZWM9JyR7d2x9LUUnCiAgICA7OwoKICBpcml4NSogfCBp cml4NiogfCBub25zdG9wdXgqKQogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7 IHRoZW4KICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2Jq cyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9 JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1z ZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdp c3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRs aWInCiAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJw YXRoICR7d2x9JGxpYmRpcicKICAgIGVsc2UKICAgICAgYXJjaGl2ZV9jbWRz PSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdz IC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNo byAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAk e291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICBo YXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKICAg IGZpCiAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKICAgIGxpbmtf YWxsX2RlcGxpYnM9eWVzCiAgICA7OwoKICBuZXRic2QqKQogICAgaWYgZWNo byBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18gPi9kZXYvbnVs bDsgdGhlbgogICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAt byAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEu b3V0CiAgICBlbHNlCiAgICAgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQg LW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgICAg ICMgRUxGCiAgICBmaQogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0n LVIkbGliZGlyJwogICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgaGFyZGNv ZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgOzsKCiAgbmV3c29zNikKICAgIGFy Y2hpdmVfY21kcz0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2Jq cyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgaGFyZGNvZGVfZGlyZWN0 PXllcwogICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBh dGggJHt3bH0kbGliZGlyJwogICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRv cj06CiAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICA7OwoKICBv cGVuYnNkKikKICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgIGhhcmRjb2Rl X3NobGlicGF0aF92YXI9bm8KICAgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxG X18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0 X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgog ICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAk bGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAg aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRp cicKICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS1FJwog ICAgZWxzZQogICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgb3BlbmJz ZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikK CWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9i anMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKCWhhcmRjb2RlX2xpYmRpcl9m bGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICA7OwogICAgICAqKQogICAg ICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRs aWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAg IGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJk aXInCiAgICAgICAgOzsKICAgICAgZXNhYwogICAgZmkKICAgIDs7CgogIG9z MiopCiAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXIn CiAgICBoYXJkY29kZV9taW51c19MPXllcwogICAgYWxsb3dfdW5kZWZpbmVk X2ZsYWc9dW5zdXBwb3J0ZWQKICAgIGFyY2hpdmVfY21kcz0nJGVjaG8gIkxJ QlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGly LyRsaWJuYW1lLmRlZn4kZWNobyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwi IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gREFUQSA+ PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gIiBTSU5HTEUg Tk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVj aG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14 ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4k Q0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAk Y29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwog ICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nZW14aW1wIC1vICRvdXRw dXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUu ZGVmJwogICAgOzsKCiAgb3NmMyopCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHll czsgdGhlbgogICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4 cGVjdF91bnJlc29sdmVkICR7d2x9XConCiAgICAgIGFyY2hpdmVfY21kcz0n JENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAk ZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNv bmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRf dmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdpc3Ry eSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWIn CiAgICBlbHNlCiAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVj dF91bnJlc29sdmVkIFwqJwogICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hh cmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMg JGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJz dHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRh dGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8g JGxpYicKICAgIGZpCiAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSck e3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICBoYXJkY29kZV9saWJkaXJf c2VwYXJhdG9yPToKICAgIDs7CgogIG9zZjQqIHwgb3NmNSopCSMgYXMgb3Nm Myogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgaWYgdGVz dCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgYWxsb3dfdW5kZWZpbmVkX2Zs YWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwogICAgICBh cmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxh Z30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1z eW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0 cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJp bmdgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRp cn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgIGhhcmRjb2RlX2xpYmRp cl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgIGVs c2UKICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVz b2x2ZWQgXConCiAgICAgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQke2Fs bG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2Vy X2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0 cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0 ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAk bGliJwogICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdmb3IgaSBpbiBgY2F0 ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiLWV4cG9ydGVkX3N5bWJv bCAiID4+ICRsaWIuZXhwOyBlY2hvICJcJGkiID4+ICRsaWIuZXhwOyBkb25l OyBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgogICAgICAkTEQgLXNoYXJl ZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1pbnB1dCAkbGliLmV4cCAkbGlu a2VyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBg dGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZl cnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke29iamRpcn0vc29fbG9jYXRp b25zIC1vICRsaWJ+JHJtICRsaWIuZXhwJwoKICAgICAgI0JvdGggYyBhbmQg Y3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAgICAgIGhh cmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJwogICAg ZmkKICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgogICAgOzsKCiAg c2NvMy4ydjUqKQogICAgYXJjaGl2ZV9jbWRzPSckTEQgLUcgLWggJHNvbmFt ZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAg ICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICBydW5wYXRoX3Zhcj1M RF9SVU5fUEFUSAogICAgaGFyZGNvZGVfcnVucGF0aF92YXI9eWVzCiAgICBl eHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LUJleHBvcnQnCiAgICA7 OwoKICBzb2xhcmlzKikKICAgICMgZ2NjIC0tdmVyc2lvbiA8IDMuMCB3aXRo b3V0IGJpbnV0aWxzIGNhbm5vdCBjcmVhdGUgc2VsZiBjb250YWluZWQKICAg ICMgc2hhcmVkIGxpYnJhcmllcyByZWxpYWJseSwgcmVxdWlyaW5nIGxpYmdj Yy5hIHRvIHJlc29sdmUgc29tZSBvZgogICAgIyB0aGUgb2JqZWN0IHN5bWJv bHMgZ2VuZXJhdGVkIGluIHNvbWUgY2FzZXMuICBMaWJyYXJpZXMgdGhhdCB1 c2UKICAgICMgYXNzZXJ0IG5lZWQgbGliZ2NjLmEgdG8gcmVzb2x2ZSBfX2Vw cmludGYsIGZvciBleGFtcGxlLiAgTGlua2luZwogICAgIyBhIGNvcHkgb2Yg bGliZ2NjLmEgaW50byBldmVyeSBzaGFyZWQgbGlicmFyeSB0byBndWFyYW50 ZWUgcmVzb2x2aW5nCiAgICAjIHN1Y2ggc3ltYm9scyBjYXVzZXMgb3RoZXIg cHJvYmxlbXM6ICBBY2NvcmRpbmcgdG8gVGltIFZhbiBIb2xkZXIKICAgICMg PHRpbS52YW4uaG9sZGVyQHBhbmRvcmEuYmU+LCBDKysgbGlicmFyaWVzIGVu ZCB1cCB3aXRoIGEgc2VwYXJhdGUKICAgICMgKHRvIHRoZSBhcHBsaWNhdGlv bikgZXhjZXB0aW9uIHN0YWNrIGZvciBvbmUgdGhpbmcuCiAgICBub191bmRl ZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHll czsgdGhlbgogICAgICBjYXNlIGAkQ0MgLS12ZXJzaW9uIDI+L2Rldi9udWxs YCBpbgogICAgICBbMTJdLiopCgljYXQgPDxFT0YgMT4mMgoKKioqIFdhcm5p bmc6IFJlbGVhc2VzIG9mIEdDQyBlYXJsaWVyIHRoYW4gdmVyc2lvbiAzLjAg Y2Fubm90IHJlbGlhYmx5CioqKiBjcmVhdGUgc2VsZiBjb250YWluZWQgc2hh cmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMsIHdpdGhvdXQKKioq IGludHJvZHVjaW5nIGEgZGVwZW5kZW5jeSBvbiBsaWJnY2MuYS4gIFRoZXJl Zm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcKKioqIC1uby11bmRlZmluZWQg c3VwcG9ydCwgd2hpY2ggd2lsbCBhdCBsZWFzdCBhbGxvdyB5b3UgdG8gYnVp bGQgc2hhcmVkCioqKiBsaWJyYXJpZXMuICBIb3dldmVyLCB5b3UgbWF5IGZp bmQgdGhhdCB3aGVuIHlvdSBsaW5rIHN1Y2ggbGlicmFyaWVzCioqKiBpbnRv IGFuIGFwcGxpY2F0aW9uIHdpdGhvdXQgdXNpbmcgR0NDLCB5b3UgaGF2ZSB0 byBtYW51YWxseSBhZGQKKioqIFxgZ2NjIC0tcHJpbnQtbGliZ2NjLWZpbGUt bmFtZVxgIHRvIHRoZSBsaW5rIGNvbW1hbmQuICBXZSB1cmdlIHlvdSB0bwoq KiogdXBncmFkZSB0byBhIG5ld2VyIHZlcnNpb24gb2YgR0NDLiAgQW5vdGhl ciBvcHRpb24gaXMgdG8gcmVidWlsZCB5b3VyCioqKiBjdXJyZW50IEdDQyB0 byB1c2UgdGhlIEdOVSBsaW5rZXIgZnJvbSBHTlUgYmludXRpbHMgMi45LjEg b3IgbmV3ZXIuCgpFT0YKICAgICAgICBub191bmRlZmluZWRfZmxhZz0KCTs7 CiAgICAgIGVzYWMKICAgIGZpCiAgICAjICRDQyAtc2hhcmVkIHdpdGhvdXQg R05VIGxkIHdpbGwgbm90IGNyZWF0ZSBhIGxpYnJhcnkgZnJvbSBDKysKICAg ICMgb2JqZWN0IGZpbGVzIGFuZCBhIHN0YXRpYyBsaWJzdGRjKyssIGJldHRl ciBhdm9pZCBpdCBieSBub3cKICAgIGFyY2hpdmVfY21kcz0nJExEIC1HJHth bGxvd191bmRlZmluZWRfZmxhZ30gLWggJHNvbmFtZSAtbyAkbGliICRsaWJv YmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICBhcmNoaXZlX2V4cHN5 bV9jbWRzPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhw b3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIu ZXhwfiRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgoJCSRMRCAt RyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1NICRsaWIuZXhwIC1oICRzb25h bWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfiRy bSAkbGliLmV4cCcKICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1S JGxpYmRpcicKICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KICAgIGNh c2UgJGhvc3Rfb3MgaW4KICAgIHNvbGFyaXMyLlswLTVdIHwgc29sYXJpczIu WzAtNV0uKikgOzsKICAgICopICMgU3VwcG9ydGVkIHNpbmNlIFNvbGFyaXMg Mi42IChtYXliZSAyLjUuMT8pCiAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19z cGVjPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRy YWN0JyA7OwogICAgZXNhYwogICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAg IDs7CgogIHN1bm9zNCopCiAgICBpZiB0ZXN0ICJ4JGhvc3RfdmVuZG9yIiA9 IHhzZXF1ZW50OyB0aGVuCiAgICAgICMgVXNlICRDQyB0byBsaW5rIHVuZGVy IHNlcXVlbnQsIGJlY2F1c2UgaXQgdGhyb3dzIGluIHNvbWUgZXh0cmEgLm8K ICAgICAgIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rp b25zIHdvcmsuCiAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1HICR7d2x9LWgg JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9m bGFncycKICAgIGVsc2UKICAgICAgYXJjaGl2ZV9jbWRzPSckTEQgLWFzc2Vy dCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGli cyAkbGlua2VyX2ZsYWdzJwogICAgZmkKICAgIGhhcmRjb2RlX2xpYmRpcl9m bGFnX3NwZWM9Jy1MJGxpYmRpcicKICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMK ICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCiAgICBoYXJkY29kZV9zaGxpYnBh dGhfdmFyPW5vCiAgICA7OwoKICBzeXN2NCkKICAgIGNhc2UgJGhvc3RfdmVu ZG9yIGluCiAgICAgIHNuaSkKICAgICAgICBhcmNoaXZlX2NtZHM9JyRMRCAt RyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtl cl9mbGFncycKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzICMgaXMgdGhp cyByZWFsbHkgdHJ1ZT8/PwogICAgICAgIDs7CiAgICAgIHNpZW1lbnMpCiAg ICAgICAgIyMgTEQgaXMgbGQgaXQgbWFrZXMgYSBQTEFNTElCCiAgICAgICAg IyMgQ0MganVzdCBtYWtlcyBhIEdyb3NzTW9kdWxlLgogICAgICAgIGFyY2hp dmVfY21kcz0nJExEIC1HIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxp bmtlcl9mbGFncycKICAgICAgICByZWxvYWRfY21kcz0nJENDIC1yIC1vICRv dXRwdXQkcmVsb2FkX29ianMnCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5v CiAgICAgICAgOzsKICAgICAgbW90b3JvbGEpCiAgICAgICAgYXJjaGl2ZV9j bWRzPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBs aWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5v ICNNb3Rvcm9sYSBtYW51YWwgc2F5cyB5ZXMsIGJ1dCBteSB0ZXN0cyBzYXkg dGhleSBsaWUKICAgICAgICA7OwogICAgZXNhYwogICAgcnVucGF0aF92YXI9 J0xEX1JVTl9QQVRIJwogICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwog ICAgOzsKCiAgc3lzdjQuMyopCiAgICBhcmNoaXZlX2NtZHM9JyRMRCAtRyAt aCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9m bGFncycKICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KICAgIGV4cG9y dF9keW5hbWljX2ZsYWdfc3BlYz0nLUJleHBvcnQnCiAgICA7OwoKICBzeXN2 NSopCiAgICBub191bmRlZmluZWRfZmxhZz0nIC16IHRleHQnCiAgICAjICRD QyAtc2hhcmVkIHdpdGhvdXQgR05VIGxkIHdpbGwgbm90IGNyZWF0ZSBhIGxp YnJhcnkgZnJvbSBDKysKICAgICMgb2JqZWN0IGZpbGVzIGFuZCBhIHN0YXRp YyBsaWJzdGRjKyssIGJldHRlciBhdm9pZCBpdCBieSBub3cKICAgIGFyY2hp dmVfY21kcz0nJExEIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWggJHNv bmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3Mn CiAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckZWNobyAieyBnbG9iYWw6IiA+ ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCgu KlwpL1wxOy8iID4+ICRsaWIuZXhwfiRlY2hvICJsb2NhbDogKjsgfTsiID4+ ICRsaWIuZXhwfgoJCSRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1N ICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGli cyAkbGlua2VyX2ZsYWdzfiRybSAkbGliLmV4cCcKICAgIGhhcmRjb2RlX2xp YmRpcl9mbGFnX3NwZWM9CiAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5v CiAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAgICA7OwoKICB1dHM0 KikKICAgIGFyY2hpdmVfY21kcz0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxp YiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgaGFyZGNv ZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwogICAgaGFyZGNvZGVf c2hsaWJwYXRoX3Zhcj1ubwogICAgOzsKCiAgZGd1eCopCiAgICBhcmNoaXZl X2NtZHM9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRl cGxpYnMgJGxpbmtlcl9mbGFncycKICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFn X3NwZWM9Jy1MJGxpYmRpcicKICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9 bm8KICAgIDs7CgogIHN5c3Y0Kk1QKikKICAgIGlmIHRlc3QgLWQgL3Vzci9u ZWM7IHRoZW4KICAgICAgYXJjaGl2ZV9jbWRzPSckTEQgLUcgLWggJHNvbmFt ZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAg ICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KICAgICAgcnVucGF0aF92 YXI9TERfUlVOX1BBVEgKICAgICAgaGFyZGNvZGVfcnVucGF0aF92YXI9eWVz CiAgICAgIGxkX3NobGlicz15ZXMKICAgIGZpCiAgICA7OwoKICBzeXN2NC4y dXcyKikKICAgIGFyY2hpdmVfY21kcz0nJExEIC1HIC1vICRsaWIgJGxpYm9i anMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgIGhhcmRjb2RlX2RpcmVj dD15ZXMKICAgIGhhcmRjb2RlX21pbnVzX0w9bm8KICAgIGhhcmRjb2RlX3No bGlicGF0aF92YXI9bm8KICAgIGhhcmRjb2RlX3J1bnBhdGhfdmFyPXllcwog ICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKICAgIDs7CgogIHN5c3Y1dXc3 KiB8IHVuaXh3YXJlNyopCiAgICBub191bmRlZmluZWRfZmxhZz0nJHt3bH0t eiAke3dsfXRleHQnCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgog ICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LWggJHt3bH0k c29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2Zs YWdzJwogICAgZWxzZQogICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtRyAke3ds fS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRj b21waWxlcl9mbGFncycKICAgIGZpCiAgICBydW5wYXRoX3Zhcj0nTERfUlVO X1BBVEgnCiAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICA7OwoK ICAqKQogICAgbGRfc2hsaWJzPW5vCiAgICA7OwogIGVzYWMKZmkKZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGxkX3NobGlicyIgPiY1CmVjaG8g IiR7RUNIT19UfSRsZF9zaGxpYnMiID4mNgp0ZXN0ICIkbGRfc2hsaWJzIiA9 IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIyMKIyMgRU5EIEZJWE1FCgoj IyBGSVhNRTogdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBtYWNybwojIwoj IENoZWNrIGhhcmRjb2RpbmcgYXR0cmlidXRlcy4KZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nIGhvdyB0byBoYXJkY29kZSBsaWJyYXJ5IHBhdGhz IGludG8gcHJvZ3JhbXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGhv dyB0byBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gcHJvZ3JhbXMuLi4g JEVDSE9fQyIgPiY2CmhhcmRjb2RlX2FjdGlvbj0KaWYgdGVzdCAtbiAiJGhh cmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHx8IFwKICAgdGVzdCAtbiAiJHJ1 bnBhdGhfdmFyIjsgdGhlbgoKICAjIFdlIGNhbiBoYXJkY29kZSBub24tZXhp c3RhbnQgZGlyZWN0b3JpZXMuCiAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVj dCIgIT0gbm8gJiYKICAgICAjIElmIHRoZSBvbmx5IG1lY2hhbmlzbSB0byBh dm9pZCBoYXJkY29kaW5nIGlzIHNobGlicGF0aF92YXIsIHdlCiAgICAgIyBo YXZlIHRvIHJlbGluaywgb3RoZXJ3aXNlIHdlIG1pZ2h0IGxpbmsgd2l0aCBh biBpbnN0YWxsZWQgbGlicmFyeQogICAgICMgd2hlbiB3ZSBzaG91bGQgYmUg bGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKICAgICAj IyB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgIT0gbm8gJiYKICAg ICB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KICAgICMg TGlua2luZyBhbHdheXMgaGFyZGNvZGVzIHRoZSB0ZW1wb3JhcnkgbGlicmFy eSBkaXJlY3RvcnkuCiAgICBoYXJkY29kZV9hY3Rpb249cmVsaW5rCiAgZWxz ZQogICAgIyBXZSBjYW4gbGluayB3aXRob3V0IGhhcmRjb2RpbmcsIGFuZCB3 ZSBjYW4gaGFyZGNvZGUgbm9uZXhpc3RpbmcgZGlycy4KICAgIGhhcmRjb2Rl X2FjdGlvbj1pbW1lZGlhdGUKICBmaQplbHNlCiAgIyBXZSBjYW5ub3QgaGFy ZGNvZGUgYW55dGhpbmcsIG9yIGVsc2Ugd2UgY2FuIG9ubHkgaGFyZGNvZGUg ZXhpc3RpbmcKICAjIGRpcmVjdG9yaWVzLgogIGhhcmRjb2RlX2FjdGlvbj11 bnN1cHBvcnRlZApmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAk aGFyZGNvZGVfYWN0aW9uIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGhhcmRjb2Rl X2FjdGlvbiIgPiY2CiMjCiMjIEVORCBGSVhNRQoKIyMgRklYTUU6IHRoaXMg c2hvdWxkIGJlIGEgc2VwYXJhdGUgbWFjcm8KIyMKc3RyaXBsaWI9Cm9sZF9z dHJpcGxpYj0KZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRo ZXIgc3RyaXBwaW5nIGxpYnJhcmllcyBpcyBwb3NzaWJsZSIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBzdHJpcHBpbmcgbGlicmFyaWVz IGlzIHBvc3NpYmxlLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0IC1uICIkU1RS SVAiICYmICRTVFJJUCAtViAyPiYxIHwgZ3JlcCAiR05VIHN0cmlwIiA+L2Rl di9udWxsOyB0aGVuCiAgdGVzdCAteiAiJG9sZF9zdHJpcGxpYiIgJiYgb2xk X3N0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC1kZWJ1ZyIKICB0ZXN0IC16ICIk c3RyaXBsaWIiICYmIHN0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC11bm5lZWRl ZCIKICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4mNQpl Y2hvICIke0VDSE9fVH15ZXMiID4mNgplbHNlCiAgZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogbm8iID4mNQplY2hvICIke0VDSE9fVH1ubyIgPiY2 CmZpCiMjCiMjIEVORCBGSVhNRQoKcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRf ZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwp0ZXN0IC16ICIkZGVwbGli c19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25v d24KCiMjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG1hY3Jv CiMjCiMgUE9SVE1FIEZpbGwgaW4geW91ciBsZC5zbyBjaGFyYWN0ZXJpc3Rp Y3MKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGR5bmFtaWMgbGlu a2VyIGNoYXJhY3RlcmlzdGljcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tp bmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzLi4uICRFQ0hPX0Mi ID4mNgpsaWJyYXJ5X25hbWVzX3NwZWM9CmxpYm5hbWVfc3BlYz0nbGliJG5h bWUnCnNvbmFtZV9zcGVjPQpwb3N0aW5zdGFsbF9jbWRzPQpwb3N0dW5pbnN0 YWxsX2NtZHM9CmZpbmlzaF9jbWRzPQpmaW5pc2hfZXZhbD0Kc2hsaWJwYXRo X3Zhcj0Kc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXVua25vd24KdmVy c2lvbl90eXBlPW5vbmUKZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNv IgpzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiIK c3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3Iv bG9jYWwvbGliIgoKY2FzZSAkaG9zdF9vcyBpbgphaXgzKikKICB2ZXJzaW9u X3R5cGU9bGludXgKICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0k e3JlbGVhc2V9LnNvJHZlcnN1ZmZpeCAkbGlibmFtZS5hJwogIHNobGlicGF0 aF92YXI9TElCUEFUSAoKICAjIEFJWCBoYXMgbm8gdmVyc2lvbmluZyBzdXBw b3J0LCBzbyB3ZSBhcHBlbmQgYSBtYWpvciB2ZXJzaW9uIHRvIHRoZSBuYW1l LgogIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpv cicKICA7OwoKYWl4NCogfCBhaXg1KikKICB2ZXJzaW9uX3R5cGU9bGludXgK ICBuZWVkX2xpYl9wcmVmaXg9bm8KICBuZWVkX3ZlcnNpb249bm8KICBoYXJk Y29kZV9pbnRvX2xpYnM9eWVzCiAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlh NjQ7IHRoZW4KICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAogICAgbGlicmFy eV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpvciAk e2xpYm5hbWV9JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXggJGxpYm5hbWUuc28n CiAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogIGVsc2UKICAg ICMgV2l0aCBHQ0MgdXAgdG8gMi45NS54LCBjb2xsZWN0MiB3b3VsZCBjcmVh dGUgYW4gaW1wb3J0IGZpbGUKICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFy aWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKICAgICMg dGhlIGxpbmUgYCMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJh dGVkIGxpYnJhcnkgdG8KICAgICMgZGVwZW5kIG9uIGAuJywgYWx3YXlzIGFu IGludmFsaWQgbGlicmFyeS4gIFRoaXMgd2FzIGZpeGVkIGluCiAgICAjIGRl dmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAg Y2FzZSAkaG9zdF9vcyBpbgogICAgICBhaXg0IHwgYWl4NC5bMDFdIHwgYWl4 NC5bMDFdLiopCglpZiB7IGVjaG8gJyNpZiBfX0dOVUNfXyA+IDIgfHwgKF9f R05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gOTcpJwoJICAgICBl Y2hvICcgeWVzICcKCSAgICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1F IC0gfCBncmVwIHllcyA+IC9kZXYvbnVsbDsgdGhlbgoJICA6CgllbHNlCgkg IGNhbl9idWlsZF9zaGFyZWQ9bm8KCWZpCgk7OwogICAgZXNhYwogICAgIyBB SVggKG9uIFBvd2VyKikgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28g Y3VycmVudGx5IHdlIGNhbgogICAgIyBub3QgaGFyZGNvZGUgY29ycmVjdCBz b25hbWUgaW50byBleGVjdXRhYmxlLiBQcm9iYWJseSB3ZSBjYW4KICAgICMg YWRkIHZlcnNpb25pbmcgc3VwcG9ydCB0byBjb2xsZWN0Miwgc28gYWRkaXRp b25hbCBsaW5rcyBjYW4KICAgICMgYmUgdXNlZnVsIGluIGZ1dHVyZS4KICAg IGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhl bgogICAgICAjIElmIHVzaW5nIHJ1biB0aW1lIGxpbmtpbmcgKG9uIEFJWCA0 LjIgb3IgbGF0ZXIpIHVzZSBsaWI8bmFtZT4uc28KICAgICAgIyBpbnN0ZWFk IG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNl IGFyZSBub3QKICAgICAgIyB0eXBpY2FsIEFJWCBzaGFyZWQgbGlicmFyaWVz LgogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVh c2V9LnNvJHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpv ciAkbGlibmFtZS5zbycKICAgIGVsc2UKICAgICAgIyBXZSBwcmVzZXJ2ZSAu YSBhcyBleHRlbnNpb24gZm9yIHNoYXJlZCBsaWJyYXJpZXMgdGhyb3VnaCBB SVg0LjIKICAgICAgIyBhbmQgbGF0ZXIgd2hlbiB3ZSBhcmUgbm90IGRvaW5n IHJ1biB0aW1lIGxpbmtpbmcuCiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0n JHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJwogICAgICBzb25h bWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28kbWFqb3InCiAgICBm aQogICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgZmkKICBoYXJkY29kZV9p bnRvX2xpYnM9eWVzCiAgOzsKCmFtaWdhb3MqKQogIGxpYnJhcnlfbmFtZXNf c3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgIyBDcmVh dGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGli cy4KICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4 bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRlY2hvICJYJGxp YiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkk JVwxJSdcJydgOyB0ZXN0ICRybSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxp YnJhcnkuYTsgJHNob3cgIihjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAk e2xpYm5hbWV9X2l4bGlicmFyeS5hKSI7IChjZCAvc3lzL2xpYnMgJiYgJExO X1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hKSB8fCBleGl0IDE7IGRv bmUnCiAgOzsKCmJlb3MqKQogIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJu YW1lfS5zbycKICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAg c2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICA7OwoKYnNkaTQqKQogIHZl cnNpb25fdHlwZT1saW51eAogIG5lZWRfdmVyc2lvbj1ubwogIGxpYnJhcnlf bmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28kdmVyc3VmZml4 ICR7bGlibmFtZX0ke3JlbGVhc2V9LnNvJG1ham9yICRsaWJuYW1lLnNvJwog IHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpvcicK ICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAk bGliZGlyJwogIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgc3lz X2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvc2hsaWIgL3Vzci9saWIgL3Vzci9Y MTEvbGliIC91c3IvY29udHJpYi9saWIgL2xpYiAvdXNyL2xvY2FsL2xpYiIK ICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGli IC91c3IvbG9jYWwvbGliIgogIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0t cmR5bmFtaWMKICAjIHRoZSBkZWZhdWx0IGxkLnNvLmNvbmYgYWxzbyBjb250 YWlucyAvdXNyL2NvbnRyaWIvbGliIGFuZAogICMgL3Vzci9YMTFSNi9saWIg KC91c3IvWDExIGlzIGEgbGluayB0byAvdXNyL1gxMVI2KSwgYnV0IGxldCB1 cyBhbGxvdwogICMgbGlidG9vbCB0byBoYXJkLWNvZGUgdGhlc2UgaW50byBw cm9ncmFtcwogIDs7CgpjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCiAgdmVy c2lvbl90eXBlPXdpbmRvd3MKICBuZWVkX3ZlcnNpb249bm8KICBuZWVkX2xp Yl9wcmVmaXg9bm8KICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KICB5ZXMsY3ln d2luKikKICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEn CiAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAn cy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCBzZWQgLWUgJ3MvWy5d Ly0vZydgJHt2ZXJzdWZmaXh9LmRsbCcKICAgIHBvc3RpbnN0YWxsX2NtZHM9 J2RscGF0aD1gYmFzaCAyPiYxIC1jICdcJycuICRkaXIvJHtmaWxlfWk7ZWNo byBcJGRsbmFtZSdcJydgfgogICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFt ZSBcJGRscGF0aGB+CiAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAt cCBcJGRsZGlyfgogICAgICAkaW5zdGFsbF9wcm9nIC5saWJzLyRkbG5hbWUg XCRkbGRpci8kZGxuYW1lJwogICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRs bD1gYmFzaCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wn J2B+CiAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CiAgICAgICAkcm0gXCRk bHBhdGgnCiAgICA7OwogIHllcyxtaW5ndyopCiAgICBsaWJyYXJ5X25hbWVz X3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgc2VkIC1lICdz L1suXS8tL2cnYCR7dmVyc3VmZml4fS5kbGwnCiAgICBzeXNfbGliX3NlYXJj aF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBncmVwICJe bGlicmFyaWVzOiIgfCBzZWQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMv Oy8gL2ciIC1lICJzLD0vLC8sZyJgCiAgICA7OwogIHllcyxwdzMyKikKICAg IGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAt ZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8IHNlZCAtZSAncy8u Ly0vZydgJHt2ZXJzdWZmaXh9LmRsbCcKICAgIDs7CiAgKikKICAgIGxpYnJh cnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCBz ZWQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9LmRsbCAkbGlibmFtZS5s aWInCiAgICA7OwogIGVzYWMKICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQu ZXhlJwogICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQg dGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogIHNobGlicGF0 aF92YXI9UEFUSAogIDs7CgpkYXJ3aW4qIHwgcmhhcHNvZHkqKQogIGR5bmFt aWNfbGlua2VyPSIkaG9zdF9vcyBkeWxkIgogIHZlcnNpb25fdHlwZT1kYXJ3 aW4KICBuZWVkX2xpYl9wcmVmaXg9bm8KICBuZWVkX3ZlcnNpb249bm8KICAj IEZJWE1FOiBSZWx5aW5nIG9uIHBvc2l4eSAkKCkgd2lsbCBjYXVzZSBwcm9i bGVtcyBmb3IKICAjICAgICAgICBjcm9zcy1jb21waWxhdGlvbiwgYnV0IHVu Zm9ydHVuYXRlbHkgdGhlIGVjaG8gdGVzdHMgZG8gbm90CiAgIyAgICAgICAg eWV0IGRldGVjdCB6c2ggZWNobydzIHJlbW92YWwgb2YgXCBlc2NhcGVzLgog IGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3Zl cnN1ZmZpeH0uJCh0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIHNvIHx8 IGVjaG8gZHlsaWIpICR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0uJCh0 ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIHNvIHx8IGVjaG8gZHlsaWIp ICR7bGlibmFtZX0uJCh0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIHNv IHx8IGVjaG8gZHlsaWIpJwogIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHty ZWxlYXNlfSR7bWFqb3J9LiQodGVzdCAuJG1vZHVsZSA9IC55ZXMgJiYgZWNo byBzbyB8fCBlY2hvIGR5bGliKScKICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1 bnBhdGg9eWVzCiAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAog IDs7CgpmcmVlYnNkMSopCiAgZHluYW1pY19saW5rZXI9bm8KICA7OwoKZnJl ZWJzZCopCiAgb2JqZm9ybWF0PWB0ZXN0IC14IC91c3IvYmluL29iamZvcm1h dCAmJiAvdXNyL2Jpbi9vYmpmb3JtYXQgfHwgZWNobyBhb3V0YAogIHZlcnNp b25fdHlwZT1mcmVlYnNkLSRvYmpmb3JtYXQKICBjYXNlICR2ZXJzaW9uX3R5 cGUgaW4KICAgIGZyZWVic2QtZWxmKikKICAgICAgbGlicmFyeV9uYW1lc19z cGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXggJHtsaWJu YW1lfSR7cmVsZWFzZX0uc28gJGxpYm5hbWUuc28nCiAgICAgIG5lZWRfdmVy c2lvbj1ubwogICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgICAgOzsKICAg IGZyZWVic2QtKikKICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5h bWV9JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXggJGxpYm5hbWUuc28kdmVyc3Vm Zml4JwogICAgICBuZWVkX3ZlcnNpb249eWVzCiAgICAgIDs7CiAgZXNhYwog IHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgY2FzZSAkaG9zdF9v cyBpbgogIGZyZWVic2QyKikKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVu cGF0aD15ZXMKICAgIDs7CiAgKikKICAgIHNobGlicGF0aF9vdmVycmlkZXNf cnVucGF0aD1ubwogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsK ICBlc2FjCiAgOzsKCmdudSopCiAgdmVyc2lvbl90eXBlPWxpbnV4CiAgbmVl ZF9saWJfcHJlZml4PW5vCiAgbmVlZF92ZXJzaW9uPW5vCiAgbGlicmFyeV9u YW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXgg JHtsaWJuYW1lfSR7cmVsZWFzZX0uc28ke21ham9yfSAke2xpYm5hbWV9LnNv JwogIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpv cicKICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogIGhhcmRjb2Rl X2ludG9fbGlicz15ZXMKICA7OwoKaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgx MSopCiAgIyBHaXZlIGEgc29uYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1h am9yIHZlcnNpb24gc28gdGhhdCBkbGQuc2wgcmVmdXNlcyB0bwogICMgbGlu ayBhZ2FpbnN0IG90aGVyIHZlcnNpb25zLgogIGR5bmFtaWNfbGlua2VyPSIk aG9zdF9vcyBkbGQuc2wiCiAgdmVyc2lvbl90eXBlPXN1bm9zCiAgbmVlZF9s aWJfcHJlZml4PW5vCiAgbmVlZF92ZXJzaW9uPW5vCiAgc2hsaWJwYXRoX3Zh cj1TSExJQl9QQVRICiAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5v ICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKICBsaWJy YXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9LnNsJHZlcnN1 ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfS5zbCRtYWpvciAkbGlibmFtZS5z bCcKICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc2wkbWFq b3InCiAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hh cmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCiAgcG9zdGluc3RhbGxfY21k cz0nY2htb2QgNTU1ICRsaWInCiAgOzsKCmlyaXg1KiB8IGlyaXg2KiB8IG5v bnN0b3B1eCopCiAgY2FzZSAkaG9zdF9vcyBpbgogICAgbm9uc3RvcHV4Kikg dmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwogICAgKikgICAgICAgICAgdmVy c2lvbl90eXBlPWlyaXggOzsKICBlc2FjCiAgbmVlZF9saWJfcHJlZml4PW5v CiAgbmVlZF92ZXJzaW9uPW5vCiAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0k e3JlbGVhc2V9LnNvJG1ham9yJwogIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHts aWJuYW1lfSR7cmVsZWFzZX0uc28kdmVyc3VmZml4ICR7bGlibmFtZX0ke3Jl bGVhc2V9LnNvJG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9LnNvICRsaWJu YW1lLnNvJwogIGNhc2UgJGhvc3Rfb3MgaW4KICBpcml4NSogfCBub25zdG9w dXgqKQogICAgbGlic3VmZj0gc2hsaWJzdWZmPQogICAgOzsKICAqKQogICAg Y2FzZSAkTEQgaW4gIyBsaWJ0b29sLm00IHdpbGwgYWRkIG9uZSBvZiB0aGVz ZSBzd2l0Y2hlcyB0byBMRAogICAgKi0zMnwqIi0zMiAiKSBsaWJzdWZmPSBz aGxpYnN1ZmY9IGxpYm1hZ2ljPTMyLWJpdDs7CiAgICAqLW4zMnwqIi1uMzIg IikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIGxpYm1hZ2ljPU4zMjs7CiAg ICAqLTY0fCoiLTY0ICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IGxpYm1h Z2ljPTY0LWJpdDs7CiAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IGxpYm1h Z2ljPW5ldmVyLW1hdGNoOzsKICAgIGVzYWMKICAgIDs7CiAgZXNhYwogIHNo bGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICiAgc2hs aWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgc3lzX2xpYl9zZWFyY2hf cGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0g L3Vzci9sb2NhbC9saWIke2xpYnN1ZmZ9IgogIHN5c19saWJfZGxzZWFyY2hf cGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0i CiAgOzsKCiMgTm8gc2hhcmVkIGxpYiBzdXBwb3J0IGZvciBMaW51eCBvbGRs ZCwgYW91dCwgb3IgY29mZi4KbGludXgtZ251b2xkbGQqIHwgbGludXgtZ251 YW91dCogfCBsaW51eC1nbnVjb2ZmKikKICBkeW5hbWljX2xpbmtlcj1ubwog IDs7CgojIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCmxpbnV4LWdudSopCiAg dmVyc2lvbl90eXBlPWxpbnV4CiAgbmVlZF9saWJfcHJlZml4PW5vCiAgbmVl ZF92ZXJzaW9uPW5vCiAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9 JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0u c28kbWFqb3IgJGxpYm5hbWUuc28nCiAgc29uYW1lX3NwZWM9JyR7bGlibmFt ZX0ke3JlbGVhc2V9LnNvJG1ham9yJwogIGZpbmlzaF9jbWRzPSdQQVRIPSJc JFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCiAgc2hsaWJwYXRo X3Zhcj1MRF9MSUJSQVJZX1BBVEgKICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1 bnBhdGg9bm8KICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdo aWNoIGlzIHVuYWNjZXB0YWJsZS4KICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUg bmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKICAjIGJlZm9yZSB0 aGlzIGNhbiBiZSBlbmFibGVkLgogIGhhcmRjb2RlX2ludG9fbGlicz15ZXMK CiAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlz YWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCiAgIyBwb3dlcnBjLCBiZWNhdXNl IE1rTGludXggb25seSBzdXBwb3J0ZWQgc2hhcmVkIGxpYnJhcmllcyB3aXRo IHRoZQogICMgR05VIGR5bmFtaWMgbGlua2VyLiAgU2luY2UgdGhpcyB3YXMg YnJva2VuIHdpdGggY3Jvc3MgY29tcGlsZXJzLAogICMgbW9zdCBwb3dlcnBj LWxpbnV4IGJveGVzIHN1cHBvcnQgZHluYW1pYyBsaW5raW5nIHRoZXNlIGRh eXMgYW5kCiAgIyBwZW9wbGUgY2FuIGFsd2F5cyAtLWRpc2FibGUtc2hhcmVk LCB0aGUgdGVzdCB3YXMgcmVtb3ZlZCwgYW5kIHdlCiAgIyBhc3N1bWUgdGhl IEdOVS9MaW51eCBkeW5hbWljIGxpbmtlciBpcyBpbiB1c2UuCiAgZHluYW1p Y19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKCiAgIyBGaW5kIG91dCB3aGlj aCBBQkkgd2UgYXJlIHVzaW5nIChtdWx0aWxpYiBMaW51eCB4ODZfNjQgaGFj aykuCiAgbGlic3VmZj0KICBjYXNlICIkaG9zdF9jcHUiIGluCiAgeDg2XzY0 KnxzMzkweCopCiAgICBlY2hvICcjbGluZSA2NDI2ICJjb25maWd1cmUiJyA+ IGNvbmZ0ZXN0LiRhY19leHQKICAgIGlmIHsgKGV2YWwgZWNobyAiJGFzX21l OiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFsICRhY19j b21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9OyB0aGVuCiAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRl c3QuJGFjX29iamV4dGAgaW4KICAgICAgKjY0LWJpdCopCiAgICAgICAgbGli c3VmZj02NAogICAgICAgIDs7CiAgICAgIGVzYWMKICAgIGZpCiAgICBybSAt cmYgY29uZnRlc3QqCiAgICA7OwogICopCiAgICA7OwogIGVzYWMKICBzeXNf bGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiR7bGlic3VmZn0gL3Vzci9s aWIke2xpYnN1ZmZ9IgogIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xp YiR7bGlic3VmZn0gL3Vzci9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGli JHtsaWJzdWZmfSIKICA7OwoKbmV0YnNkKikKICB2ZXJzaW9uX3R5cGU9c3Vu b3MKICBuZWVkX2xpYl9wcmVmaXg9bm8KICBuZWVkX3ZlcnNpb249bm8KICBp ZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rl di9udWxsOyB0aGVuCiAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFt ZX0ke3JlbGVhc2V9LnNvJHZlcnN1ZmZpeCAke2xpYm5hbWV9LnNvJHZlcnN1 ZmZpeCcKICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxk Y29uZmlnIC1tICRsaWJkaXInCiAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNE IChhLm91dCkgbGQuc28nCiAgZWxzZQogICAgbGlicmFyeV9uYW1lc19zcGVj PScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyR2ZXJzdWZmaXggJHtsaWJuYW1l fSR7cmVsZWFzZX0uc28kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28g JHtsaWJuYW1lfS5zbycKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHty ZWxlYXNlfS5zbyRtYWpvcicKICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0Qg bGQuZWxmX3NvJwogIGZpCiAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BB VEgKICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgaGFyZGNv ZGVfaW50b19saWJzPXllcwogIDs7CgpuZXdzb3M2KQogIHZlcnNpb25fdHlw ZT1saW51eAogIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVs ZWFzZX0uc28kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9LnNvJG1h am9yICRsaWJuYW1lLnNvJwogIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9Q QVRICiAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogIDs7Cgpv cGVuYnNkKikKICB2ZXJzaW9uX3R5cGU9c3Vub3MKICBuZWVkX2xpYl9wcmVm aXg9bm8KICBuZWVkX3ZlcnNpb249bm8KICBpZiB0ZXN0IC16ICJgZWNobyBf X0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIk aG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRo ZW4KICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgb3BlbmJzZDIuWzg5XSB8 IG9wZW5ic2QyLls4OV0uKikKICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19y dW5wYXRoPW5vCiAgICAgIDs7CiAgICAqKQogICAgICBzaGxpYnBhdGhfb3Zl cnJpZGVzX3J1bnBhdGg9eWVzCiAgICAgIDs7CiAgICBlc2FjCiAgZWxzZQog ICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogIGZpCiAgbGli cmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyR2ZXJz dWZmaXggJHtsaWJuYW1lfS5zbyR2ZXJzdWZmaXgnCiAgZmluaXNoX2NtZHM9 J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICBz aGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogIDs7CgpvczIqKQogIGxp Ym5hbWVfc3BlYz0nJG5hbWUnCiAgbmVlZF9saWJfcHJlZml4PW5vCiAgbGli cmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwgJGxpYm5hbWUuYScKICBk eW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCiAgc2hsaWJwYXRoX3Zhcj1M SUJQQVRICiAgOzsKCm9zZjMqIHwgb3NmNCogfCBvc2Y1KikKICB2ZXJzaW9u X3R5cGU9b3NmCiAgbmVlZF92ZXJzaW9uPW5vCiAgc29uYW1lX3NwZWM9JyR7 bGlibmFtZX0ke3JlbGVhc2V9LnNvJG1ham9yJwogIGxpYnJhcnlfbmFtZXNf c3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28kdmVyc3VmZml4ICR7bGli bmFtZX0ke3JlbGVhc2V9LnNvJG1ham9yICRsaWJuYW1lLnNvJwogIHNobGli cGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgc3lzX2xpYl9zZWFyY2hfcGF0 aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBs cnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKICBz eXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3Bh dGhfc3BlYyIKICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgOzsKCnNjbzMu MnY1KikKICB2ZXJzaW9uX3R5cGU9b3NmCiAgc29uYW1lX3NwZWM9JyR7bGli bmFtZX0ke3JlbGVhc2V9LnNvJG1ham9yJwogIGxpYnJhcnlfbmFtZXNfc3Bl Yz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28kdmVyc3VmZml4ICR7bGlibmFt ZX0ke3JlbGVhc2V9LnNvJG1ham9yICRsaWJuYW1lLnNvJwogIHNobGlicGF0 aF92YXI9TERfTElCUkFSWV9QQVRICiAgOzsKCnNvbGFyaXMqKQogIHZlcnNp b25fdHlwZT1saW51eAogIG5lZWRfbGliX3ByZWZpeD1ubwogIG5lZWRfdmVy c2lvbj1ubwogIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVs ZWFzZX0uc28kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9LnNvJG1h am9yICRsaWJuYW1lLnNvJwogIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHty ZWxlYXNlfS5zbyRtYWpvcicKICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllf UEFUSAogIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICBoYXJk Y29kZV9pbnRvX2xpYnM9eWVzCiAgIyBsZGQgY29tcGxhaW5zIHVubGVzcyBs aWJyYXJpZXMgYXJlIGV4ZWN1dGFibGUKICBwb3N0aW5zdGFsbF9jbWRzPSdj aG1vZCAreCAkbGliJwogIDs7CgpzdW5vczQqKQogIHZlcnNpb25fdHlwZT1z dW5vcwogIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFz ZX0uc28kdmVyc3VmZml4ICR7bGlibmFtZX0uc28kdmVyc3VmZml4JwogIGZp bmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRs aWJkaXInCiAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICBzaGxp YnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgaWYgdGVzdCAiJHdpdGhf Z251X2xkIiA9IHllczsgdGhlbgogICAgbmVlZF9saWJfcHJlZml4PW5vCiAg ZmkKICBuZWVkX3ZlcnNpb249eWVzCiAgOzsKCnN5c3Y0IHwgc3lzdjQuMnV3 MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKICB2ZXJzaW9uX3R5cGU9bGludXgK ICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9LnNv JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpvciAkbGli bmFtZS5zbycKICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0u c28kbWFqb3InCiAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICBj YXNlICRob3N0X3ZlbmRvciBpbgogICAgc25pKQogICAgICBzaGxpYnBhdGhf b3ZlcnJpZGVzX3J1bnBhdGg9bm8KICAgICAgbmVlZF9saWJfcHJlZml4PW5v CiAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tQmxhcmdl ZHluc3ltJwogICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAogICAgICA7 OwogICAgc2llbWVucykKICAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgICAg IDs7CiAgICBtb3Rvcm9sYSkKICAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAg ICAgIG5lZWRfdmVyc2lvbj1ubwogICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVz X3J1bnBhdGg9bm8KICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScv bGliIC91c3IvbGliIC91c3IvY2NzL2xpYicKICAgICAgOzsKICBlc2FjCiAg OzsKCnV0czQqKQogIHZlcnNpb25fdHlwZT1saW51eAogIGxpYnJhcnlfbmFt ZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uc28kdmVyc3VmZml4ICR7 bGlibmFtZX0ke3JlbGVhc2V9LnNvJG1ham9yICRsaWJuYW1lLnNvJwogIHNv bmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5zbyRtYWpvcicKICBz aGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogIDs7CgpkZ3V4KikKICB2 ZXJzaW9uX3R5cGU9bGludXgKICBuZWVkX2xpYl9wcmVmaXg9bm8KICBuZWVk X3ZlcnNpb249bm8KICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0k e3JlbGVhc2V9LnNvJHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfS5z byRtYWpvciAkbGlibmFtZS5zbycKICBzb25hbWVfc3BlYz0nJHtsaWJuYW1l fSR7cmVsZWFzZX0uc28kbWFqb3InCiAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJS QVJZX1BBVEgKICA7OwoKc3lzdjQqTVAqKQogIGlmIHRlc3QgLWQgL3Vzci9u ZWMgO3RoZW4KICAgIHZlcnNpb25fdHlwZT1saW51eAogICAgbGlicmFyeV9u YW1lc19zcGVjPSckbGlibmFtZS5zby4kdmVyc3VmZml4ICRsaWJuYW1lLnNv LiRtYWpvciAkbGlibmFtZS5zbycKICAgIHNvbmFtZV9zcGVjPSckbGlibmFt ZS5zby4kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFU SAogIGZpCiAgOzsKCiopCiAgZHluYW1pY19saW5rZXI9bm8KICA7Owplc2Fj CmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRkeW5hbWljX2xpbmtl ciIgPiY1CmVjaG8gIiR7RUNIT19UfSRkeW5hbWljX2xpbmtlciIgPiY2CnRl c3QgIiRkeW5hbWljX2xpbmtlciIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVk PW5vCiMjCiMjIEVORCBGSVhNRQoKIyMgRklYTUU6IHRoaXMgc2hvdWxkIGJl IGEgc2VwYXJhdGUgbWFjcm8KIyMKIyBSZXBvcnQgdGhlIGZpbmFsIGNvbnNl cXVlbmNlcy4KZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGlmIGxp YnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcyIgPiY1CmVjaG8gJEVD SE9fTiAiY2hlY2tpbmcgaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGli cmFyaWVzLi4uICRFQ0hPX0MiID4mNgplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiAkY2FuX2J1aWxkX3NoYXJlZCIgPiY1CmVjaG8gIiR7RUNIT19U fSRjYW5fYnVpbGRfc2hhcmVkIiA+JjYKIyMKIyMgRU5EIEZJWE1FCgojIyBG SVhNRTogdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBtYWNybwojIwplY2hv ICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBz aGFyZWQgbGlicmFyaWVzIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyB3 aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuLi4gJEVDSE9fQyIg PiY2CnRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxl X3NoYXJlZD1ubwoKIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0 YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCiMg YXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KY2FzZSAiJGhvc3Rfb3MiIGluCmFp eDMqKQogIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVf c3RhdGljPW5vCiAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgIGFy Y2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKICAg IHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKICBmaQogIDs7Cgph aXg0KikKICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAi JGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCiAgICB0ZXN0 ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubwog IGZpCiAgOzsKZXNhYwplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAk ZW5hYmxlX3NoYXJlZCIgPiY1CmVjaG8gIiR7RUNIT19UfSRlbmFibGVfc2hh cmVkIiA+JjYKIyMKIyMgRU5EIEZJWE1FCgojIyBGSVhNRTogdGhpcyBzaG91 bGQgYmUgYSBzZXBhcmF0ZSBtYWNybwojIwplY2hvICIkYXNfbWU6JExJTkVO TzogY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVz IiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxk IHN0YXRpYyBsaWJyYXJpZXMuLi4gJEVDSE9fQyIgPiY2CiMgTWFrZSBzdXJl IGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVz Lgp0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRp Yz15ZXMKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGVuYWJsZV9z dGF0aWMiID4mNQplY2hvICIke0VDSE9fVH0kZW5hYmxlX3N0YXRpYyIgPiY2 CiMjCiMjIEVORCBGSVhNRQoKaWYgdGVzdCAiJGhhcmRjb2RlX2FjdGlvbiIg PSByZWxpbms7IHRoZW4KICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBz dXBwb3J0ZWQKICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCmVsaWYgdGVzdCAi JHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgfHwKICAgICB0 ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSBubzsgdGhlbgogICMgRmFzdCBpbnN0 YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQogIGVuYWJsZV9mYXN0X2luc3Rh bGw9bmVlZGxlc3MKZmkKCnZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQ QVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKaWYgdGVzdCAiJEdD QyIgPSB5ZXM7IHRoZW4KICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0i JHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBD T01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKZmkKCmlmIHRlc3QgIngkZW5h YmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgogIGVuYWJsZV9kbG9wZW49dW5r bm93bgogIGVuYWJsZV9kbG9wZW5fc2VsZj11bmtub3duCiAgZW5hYmxlX2Rs b3Blbl9zZWxmX3N0YXRpYz11bmtub3duCmVsc2UKICBsdF9jdl9kbG9wZW49 bm8KICBsdF9jdl9kbG9wZW5fbGlicz0KCiAgY2FzZSAkaG9zdF9vcyBpbgog IGJlb3MqKQogICAgbHRfY3ZfZGxvcGVuPSJsb2FkX2FkZF9vbiIKICAgIGx0 X2N2X2Rsb3Blbl9saWJzPQogICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCiAg ICA7OwoKICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCiAgICBsdF9jdl9k bG9wZW49IkxvYWRMaWJyYXJ5IgogICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAg IDs7CgogICopCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcg Zm9yIHNobF9sb2FkIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Ig c2hsX2xvYWQuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfZnVu Y19zaGxfbG9hZCtzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAi KGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBj b25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRl c3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLyogU3lzdGVtIGhlYWRlciB0byBkZWZp bmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVz LAogICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaGxfbG9hZCAo KTsgYmVsb3cuCiAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+ IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCiAgICA8bGltaXRzLmg+ IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwoj aWZkZWYgX19TVERDX18KIyBpbmNsdWRlIDxsaW1pdHMuaD4KI2Vsc2UKIyBp bmNsdWRlIDxhc3NlcnQuaD4KI2VuZGlmCi8qIE92ZXJyaWRlIGFueSBnY2My IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiNp ZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCnsKI2VuZGlmCi8qIFdlIHVz ZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlw ZSBvZiBhIGdjYzIKICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBzaGxfbG9h ZCAoKTsKLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBm dW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwogICAgdG8gYWx3YXlzIGZh aWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkg bmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUg bm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCAoX19z dHViX3NobF9sb2FkKSB8fCBkZWZpbmVkIChfX3N0dWJfX19zaGxfbG9hZCkK Y2hva2UgbWUKI2Vsc2UKY2hhciAoKmYpICgpID0gc2hsX2xvYWQ7CiNlbmRp ZgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYKCmludAptYWluICgpCnsK cmV0dXJuIGYgIT0gc2hsX2xvYWQ7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP RgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4 dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5r XCIiKSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0k PwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+ JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3Ry eT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAk YWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfZnVuY19zaGxfbG9hZD15ZXMKZWxz ZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2Z1bmNf c2hsX2xvYWQ9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApmaQplY2hvICIkYXNf bWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZnVuY19zaGxfbG9hZCIgPiY1 CmVjaG8gIiR7RUNIT19UfSRhY19jdl9mdW5jX3NobF9sb2FkIiA+JjYKaWYg dGVzdCAkYWNfY3ZfZnVuY19zaGxfbG9hZCA9IHllczsgdGhlbgogIGx0X2N2 X2Rsb3Blbj0ic2hsX2xvYWQiCmVsc2UKICBlY2hvICIkYXNfbWU6JExJTkVO TzogY2hlY2tpbmcgZm9yIHNobF9sb2FkIGluIC1sZGxkIiA+JjUKZWNobyAk RUNIT19OICJjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQuLi4gJEVD SE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9zaGxfbG9hZCtz ZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVD SE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJT CkxJQlM9Ii1sZGxkICAkTElCUyIKY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8 X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMu aC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19l eHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29u ZmRlZnMuaC4gICovCgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBw cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYgX19jcGx1 c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKLyogV2UgdXNlIGNoYXIgYmVjYXVz ZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgog ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIHNobF9sb2FkICgpOwppbnQKbWFp biAoKQp7CnNobF9sb2FkICgpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YK cm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQK aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wi IikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8K ICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1 CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9 J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFj X3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElO RU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVz KTsgfTsgfTsgdGhlbgogIGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQ9eWVzCmVs c2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9saWJf ZGxkX3NobF9sb2FkPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElCUz0kYWNf Y2hlY2tfbGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY1CmVjaG8gIiR7 RUNIT19UfSRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjYKaWYgdGVzdCAk YWNfY3ZfbGliX2RsZF9zaGxfbG9hZCA9IHllczsgdGhlbgogIGx0X2N2X2Rs b3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItZGxkIgplbHNl CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBkbG9wZW4i ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBkbG9wZW4uLi4gJEVD SE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfZnVuY19kbG9wZW4rc2V0fSIg PSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgplbHNlCiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNs aW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9B Q0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4g ICovCi8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3Mg YW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBj b25mbGljdCB3aXRoIGNoYXIgZGxvcGVuICgpOyBiZWxvdy4KICAgIFByZWZl ciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVm aW5lZCwgc2luY2UKICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJl ZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCiNpZmRlZiBfX1NURENfXwojIGlu Y2x1ZGUgPGxpbWl0cy5oPgojZWxzZQojIGluY2x1ZGUgPGFzc2VydC5oPgoj ZW5kaWYKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBl IHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9fY3BsdXNwbHVzCmV4 dGVybiAiQyIKewojZW5kaWYKLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICBidWls dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwpjaGFyIGRsb3BlbiAoKTsKLyogVGhlIEdOVSBDIGxp YnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1w bGVtZW50cwogICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21l IGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgIHNvbWV0aGluZyBz dGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxp YXMuICAqLwojaWYgZGVmaW5lZCAoX19zdHViX2Rsb3BlbikgfHwgZGVmaW5l ZCAoX19zdHViX19fZGxvcGVuKQpjaG9rZSBtZQojZWxzZQpjaGFyICgqZikg KCkgPSBkbG9wZW47CiNlbmRpZgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5k aWYKCmludAptYWluICgpCnsKcmV0dXJuIGYgIT0gZGxvcGVuOwogIDsKICBy ZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdCRhY19leGVleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfbGlua1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+ JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYK ICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0 JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwi IikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwog IGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK ICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2Z1bmNf ZGxvcGVuPXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4m NQoKYWNfY3ZfZnVuY19kbG9wZW49bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApm aQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZnVuY19k bG9wZW4iID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19kbG9wZW4i ID4mNgppZiB0ZXN0ICRhY19jdl9mdW5jX2Rsb3BlbiA9IHllczsgdGhlbgog IGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgplbHNlCiAgZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICRFQ0hP X0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X2xpYl9kbF9kbG9wZW4rc2V0fSIg PSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgplbHNlCiAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpMSUJT PSItbGRsICAkTElCUyIKY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G CiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICov Cl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0 ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMu aC4gICovCgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5 cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYgX19jcGx1c3BsdXMK ZXh0ZXJuICJDIgojZW5kaWYKLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICBidWls dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLwpjaGFyIGRsb3BlbiAoKTsKaW50Cm1haW4gKCkKewpk bG9wZW4gKCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25m dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAppZiB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKICAo ZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAk YWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBj b25mdGVzdCRhY19leGVleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0 aGVuCiAgYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMKZWxzZQogIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycg Y29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xpYl9kbF9kbG9wZW49bm8K ZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVja19saWJfc2F2ZV9M SUJTCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9s aWJfZGxfZGxvcGVuIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9k bF9kbG9wZW4iID4mNgppZiB0ZXN0ICRhY19jdl9saWJfZGxfZGxvcGVuID0g eWVzOyB0aGVuCiAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Bl bl9saWJzPSItbGRsIgplbHNlCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNo ZWNraW5nIGZvciBkbG9wZW4gaW4gLWxzdmxkIiA+JjUKZWNobyAkRUNIT19O ICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZC4uLiAkRUNIT19DIiA+ JjYKaWYgdGVzdCAiJHthY19jdl9saWJfc3ZsZF9kbG9wZW4rc2V0fSIgPSBz ZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4m NgplbHNlCiAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpMSUJTPSIt bHN2bGQgICRMSUJTIgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YK I2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8K X0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQg Pj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5o LiAgKi8KCi8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlw ZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpl eHRlcm4gIkMiCiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0 aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGls bCBhcHBseS4gICovCmNoYXIgZGxvcGVuICgpOwppbnQKbWFpbiAoKQp7CmRs b3BlbiAoKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChl dmFsICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRh Y19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNv bmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUK ICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g JGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRo ZW4KICBhY19jdl9saWJfc3ZsZF9kbG9wZW49eWVzCmVsc2UKICBlY2hvICIk YXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8n IGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9saWJfc3ZsZF9kbG9wZW49 bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19l eGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVja19saWJfc2F2 ZV9MSUJTCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19j dl9saWJfc3ZsZF9kbG9wZW4iID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3Zf bGliX3N2bGRfZGxvcGVuIiA+JjYKaWYgdGVzdCAkYWNfY3ZfbGliX3N2bGRf ZGxvcGVuID0geWVzOyB0aGVuCiAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0 X2N2X2Rsb3Blbl9saWJzPSItbHN2bGQiCmVsc2UKICBlY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgZm9yIGRsZF9saW5rIGluIC1sZGxkIiA+JjUK ZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQu Li4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9kbGRf bGluaytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hl ZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJT PSRMSUJTCkxJQlM9Ii1sZGxkICAkTElCUyIKY2F0ID5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29u ZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0 LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBl bmQgY29uZmRlZnMuaC4gICovCgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYg X19jcGx1c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKLyogV2UgdXNlIGNoYXIg YmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEg Z2NjMgogICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5 cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIGRsZF9saW5rICgpOwpp bnQKbWFpbiAoKQp7CmRsZF9saW5rICgpOwogIDsKICByZXR1cm4gMDsKfQpf QUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19l eGVleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNf bGlua1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBh Y190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2 YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2xpYl9kbGRfZGxkX2xpbms9 eWVzCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoi ID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19j dl9saWJfZGxkX2RsZF9saW5rPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElC Uz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNfbWU6JExJ TkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY1CmVj aG8gIiR7RUNIT19UfSRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA+JjYKaWYg dGVzdCAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayA9IHllczsgdGhlbgogIGx0 X2N2X2Rsb3Blbj0iZGxkX2xpbmsiIGx0X2N2X2Rsb3Blbl9saWJzPSItZGxk IgpmaQoKCmZpCgoKZmkKCgpmaQoKCmZpCgoKZmkKCiAgICA7OwogIGVzYWMK CiAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgogICAg ZW5hYmxlX2Rsb3Blbj15ZXMKICBlbHNlCiAgICBlbmFibGVfZGxvcGVuPW5v CiAgZmkKCiAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCiAgZGxvcGVuKQogICAg c2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgogICAgICAgIHRlc3QgIngkYWNf Y3ZfaGVhZGVyX2RsZmNuX2giID0geHllcyAmJiBDUFBGTEFHUz0iJENQUEZM QUdTIC1ESEFWRV9ETEZDTl9IIgoKICAgIHNhdmVfTERGTEFHUz0iJExERkxB R1MiCiAgICBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGV4cG9ydF9keW5h bWljX2ZsYWdfc3BlY1wiCgogICAgc2F2ZV9MSUJTPSIkTElCUyIKICAgIExJ QlM9IiRsdF9jdl9kbG9wZW5fbGlicyAkTElCUyIKCiAgICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciBhIHByb2dyYW0gY2FuIGRs b3BlbiBpdHNlbGYiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRo ZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmLi4uICRFQ0hPX0MiID4m NgppZiB0ZXN0ICIke2x0X2N2X2Rsb3Blbl9zZWxmK3NldH0iID0gc2V0OyB0 aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxz ZQogIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVu IDoKICBsdF9jdl9kbG9wZW5fc2VsZj1jcm9zcwplbHNlCiAgICBsdF9kbHVu a25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0y CiAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICBjYXQgPiBjb25mdGVzdC4k YWNfZXh0IDw8RU9GCiNsaW5lIDcxMTIgImNvbmZpZ3VyZSIKI2luY2x1ZGUg ImNvbmZkZWZzLmgiCgojaWYgSEFWRV9ETEZDTl9ICiNpbmNsdWRlIDxkbGZj bi5oPgojZW5kaWYKCiNpbmNsdWRlIDxzdGRpby5oPgoKI2lmZGVmIFJUTERf R0xPQkFMCiMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKI2Vs c2UKIyAgaWZkZWYgRExfR0xPQkFMCiMgICAgZGVmaW5lIExUX0RMR0xPQkFM CQlETF9HTE9CQUwKIyAgZWxzZQojICAgIGRlZmluZSBMVF9ETEdMT0JBTAkJ MAojICBlbmRpZgojZW5kaWYKCi8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBM VF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKICAg ZmluZCBvdXQgaXQgZG9lcyBub3Qgd29yayBpbiBzb21lIHBsYXRmb3JtLiAq LwojaWZuZGVmIExUX0RMTEFaWV9PUl9OT1cKIyAgaWZkZWYgUlRMRF9MQVpZ CiMgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJCVJUTERfTEFaWQojICBl bHNlCiMgICAgaWZkZWYgRExfTEFaWQojICAgICAgZGVmaW5lIExUX0RMTEFa WV9PUl9OT1cJCURMX0xBWlkKIyAgICBlbHNlCiMgICAgICBpZmRlZiBSVExE X05PVwojICAgICAgICBkZWZpbmUgTFRfRExMQVpZX09SX05PVwlSVExEX05P VwojICAgICAgZWxzZQojICAgICAgICBpZmRlZiBETF9OT1cKIyAgICAgICAg ICBkZWZpbmUgTFRfRExMQVpZX09SX05PVwlETF9OT1cKIyAgICAgICAgZWxz ZQojICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKIyAgICAg ICAgZW5kaWYKIyAgICAgIGVuZGlmCiMgICAgZW5kaWYKIyAgZW5kaWYKI2Vu ZGlmCgojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIiB2b2lkIGV4aXQg KGludCk7CiNlbmRpZgoKdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQppbnQg bWFpbiAoKQp7CiAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9C QUx8TFRfRExMQVpZX09SX05PVyk7CiAgaW50IHN0YXR1cyA9ICRsdF9kbHVu a25vd247CgogIGlmIChzZWxmKQogICAgewogICAgICBpZiAoZGxzeW0gKHNl bGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsK ICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMg PSAkbHRfZGxuZWVkX3VzY29yZTsKICAgICAgLyogZGxjbG9zZSAoc2VsZik7 ICovCiAgICB9CgogICAgZXhpdCAoc3RhdHVzKTsKfQpFT0YKICBpZiB7IChl dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUK ICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl eHR9IDI+L2Rldi9udWxsOyB0aGVuCiAgICAoLi9jb25mdGVzdDsgZXhpdDsg KSAyPi9kZXYvbnVsbAogICAgbHRfc3RhdHVzPSQ/CiAgICBjYXNlIHgkbHRf c3RhdHVzIGluCiAgICAgIHgkbHRfZGxub191c2NvcmUpIGx0X2N2X2Rsb3Bl bl9zZWxmPXllcyA7OwogICAgICB4JGx0X2RsbmVlZF91c2NvcmUpIGx0X2N2 X2Rsb3Blbl9zZWxmPXllcyA7OwogICAgICB4JGx0X3Vua25vd258eCopIGx0 X2N2X2Rsb3Blbl9zZWxmPW5vIDs7CiAgICBlc2FjCiAgZWxzZSA6CiAgICAj IGNvbXBpbGF0aW9uIGZhaWxlZAogICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8K ICBmaQpmaQpybSAtZnIgY29uZnRlc3QqCgoKZmkKZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogJGx0X2N2X2Rsb3Blbl9zZWxmIiA+JjUKZWNobyAi JHtFQ0hPX1R9JGx0X2N2X2Rsb3Blbl9zZWxmIiA+JjYKCiAgICBpZiB0ZXN0 ICJ4JGx0X2N2X2Rsb3Blbl9zZWxmIiA9IHh5ZXM7IHRoZW4KICAgICAgTERG TEFHUz0iJExERkxBR1MgJGxpbmtfc3RhdGljX2ZsYWciCiAgICAgIGVjaG8g IiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxs eSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBhIHN0YXRpY2FsbHkgbGlua2Vk IHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYuLi4gJEVDSE9fQyIgPiY2Cmlm IHRlc3QgIiR7bHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljK3NldH0iID0gc2V0 OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYK ZWxzZQogIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0 aGVuIDoKICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9Y3Jvc3MKZWxzZQog ICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVl ZF91c2NvcmU9MgogIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgY2F0ID4g Y29uZnRlc3QuJGFjX2V4dCA8PEVPRgojbGluZSA3MjEwICJjb25maWd1cmUi CiNpbmNsdWRlICJjb25mZGVmcy5oIgoKI2lmIEhBVkVfRExGQ05fSAojaW5j bHVkZSA8ZGxmY24uaD4KI2VuZGlmCgojaW5jbHVkZSA8c3RkaW8uaD4KCiNp ZmRlZiBSVExEX0dMT0JBTAojICBkZWZpbmUgTFRfRExHTE9CQUwJCVJUTERf R0xPQkFMCiNlbHNlCiMgIGlmZGVmIERMX0dMT0JBTAojICAgIGRlZmluZSBM VF9ETEdMT0JBTAkJRExfR0xPQkFMCiMgIGVsc2UKIyAgICBkZWZpbmUgTFRf RExHTE9CQUwJCTAKIyAgZW5kaWYKI2VuZGlmCgovKiBXZSBtYXkgaGF2ZSB0 byBkZWZpbmUgTFRfRExMQVpZX09SX05PVyBpbiB0aGUgY29tbWFuZCBsaW5l IGlmIHdlCiAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBw bGF0Zm9ybS4gKi8KI2lmbmRlZiBMVF9ETExBWllfT1JfTk9XCiMgIGlmZGVm IFJUTERfTEFaWQojICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExE X0xBWlkKIyAgZWxzZQojICAgIGlmZGVmIERMX0xBWlkKIyAgICAgIGRlZmlu ZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCiMgICAgZWxzZQojICAgICAg aWZkZWYgUlRMRF9OT1cKIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9O T1cJUlRMRF9OT1cKIyAgICAgIGVsc2UKIyAgICAgICAgaWZkZWYgRExfTk9X CiMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCiMg ICAgICAgIGVsc2UKIyAgICAgICAgICBkZWZpbmUgTFRfRExMQVpZX09SX05P VwkwCiMgICAgICAgIGVuZGlmCiMgICAgICBlbmRpZgojICAgIGVuZGlmCiMg IGVuZGlmCiNlbmRpZgoKI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIg dm9pZCBleGl0IChpbnQpOwojZW5kaWYKCnZvaWQgZm5vcmQoKSB7IGludCBp PTQyO30KaW50IG1haW4gKCkKewogIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAs IExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwogIGludCBzdGF0dXMg PSAkbHRfZGx1bmtub3duOwoKICBpZiAoc2VsZikKICAgIHsKICAgICAgaWYg KGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxu b191c2NvcmU7CiAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQi KSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CiAgICAgIC8qIGRsY2xv c2UgKHNlbGYpOyAqLwogICAgfQoKICAgIGV4aXQgKHN0YXR1cyk7Cn0KRU9G CiAgaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlu a1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9 JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgdGVzdCAtcyBjb25mdGVz dCR7YWNfZXhlZXh0fSAyPi9kZXYvbnVsbDsgdGhlbgogICAgKC4vY29uZnRl c3Q7IGV4aXQ7ICkgMj4vZGV2L251bGwKICAgIGx0X3N0YXR1cz0kPwogICAg Y2FzZSB4JGx0X3N0YXR1cyBpbgogICAgICB4JGx0X2Rsbm9fdXNjb3JlKSBs dF9jdl9kbG9wZW5fc2VsZl9zdGF0aWM9eWVzIDs7CiAgICAgIHgkbHRfZGxu ZWVkX3VzY29yZSkgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPXllcyA7Owog ICAgICB4JGx0X3Vua25vd258eCopIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRp Yz1ubyA7OwogICAgZXNhYwogIGVsc2UgOgogICAgIyBjb21waWxhdGlvbiBm YWlsZWQKICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1ubwogIGZpCmZp CnJtIC1mciBjb25mdGVzdCoKCgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiAkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIiA+JjUKZWNobyAi JHtFQ0hPX1R9JGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYyIgPiY2CiAgICBm aQoKICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKICAgIExERkxBR1M9 IiRzYXZlX0xERkxBR1MiCiAgICBMSUJTPSIkc2F2ZV9MSUJTIgogICAgOzsK ICBlc2FjCgogIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmIGluCiAgeWVzfG5v KSBlbmFibGVfZGxvcGVuX3NlbGY9JGx0X2N2X2Rsb3Blbl9zZWxmIDs7CiAg KikgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24gOzsKICBlc2FjCgogIGNh c2UgJGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYyBpbgogIHllc3xubykgZW5h YmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0kbHRfY3ZfZGxvcGVuX3NlbGZfc3Rh dGljIDs7CiAgKikgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3du IDs7CiAgZXNhYwpmaQoKCiMjIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBhIHNl cGFyYXRlIG1hY3JvCiMjCmlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHll cyAmJiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIGNhc2UgJGFyY2hpdmVf Y21kcyBpbgogIConficqKQogICAgIyBGSVhNRTogd2UgbWF5IGhhdmUgdG8g ZGVhbCB3aXRoIG11bHRpLWNvbW1hbmQgc2VxdWVuY2VzLgogICAgOzsKICAn JENDICcqKQogICAgIyBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIGltcGxp Y2l0bHkgbGlua3Mgd2l0aCAtbGMgc2luY2Ugb24gc29tZQogICAgIyBzeXN0 ZW1zLCAtbGdjYyBoYXMgdG8gY29tZSBiZWZvcmUgLWxjLiBJZiBnY2MgYWxy ZWFkeSBwYXNzZXMgLWxjCiAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJl Zm9yZSAtbGdjYy4KICAgIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2lu ZyB3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW4i ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgLWxjIHNob3Vs ZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbi4uLiAkRUNIT19DIiA+JjYKICAg IGlmIHRlc3QgIiR7bHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMrc2V0fSIg PSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgplbHNlCiAgJHJtIGNvbmZ0ZXN0KgogICAgZWNobyAnc3RhdGljIGlu dCBkdW1teTsnID4gY29uZnRlc3QuJGFjX2V4dAoKICAgIGlmIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQog IChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCiAgICAgIHNvbmFtZT1jb25mdGVz dAogICAgICBsaWI9Y29uZnRlc3QKICAgICAgbGlib2Jqcz1jb25mdGVzdC4k YWNfb2JqZXh0CiAgICAgIGRlcGxpYnM9CiAgICAgIHdsPSRsdF9jdl9wcm9n X2NjX3dsCiAgICAgIGNvbXBpbGVyX2ZsYWdzPS12CiAgICAgIGxpbmtlcl9m bGFncz0tdgogICAgICB2ZXJzdHJpbmc9CiAgICAgIG91dHB1dF9vYmpkaXI9 LgogICAgICBsaWJuYW1lPWNvbmZ0ZXN0CiAgICAgIHNhdmVfYWxsb3dfdW5k ZWZpbmVkX2ZsYWc9JGFsbG93X3VuZGVmaW5lZF9mbGFnCiAgICAgIGFsbG93 X3VuZGVmaW5lZF9mbGFnPQogICAgICBpZiB7IChldmFsIGVjaG8gIiRhc19t ZTokTElORU5POiBcIiRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8IGdyZXAgXCIg LWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMVwiIikgPiY1CiAgKGV2YWwgJGFy Y2hpdmVfY21kcyAyXD5cJjEgXHwgZ3JlcCBcIiAtbGMgXCIgXD4vZGV2L251 bGwgMlw+XCYxKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9CiAgICAgIHRoZW4KCWx0X2N2X2FyY2hpdmVfY21kc19uZWVk X2xjPW5vCiAgICAgIGVsc2UKCWx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xj PXllcwogICAgICBmaQogICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0kc2F2 ZV9hbGxvd191bmRlZmluZWRfZmxhZwogICAgZWxzZQogICAgICBjYXQgY29u ZnRlc3QuZXJyIDE+JjUKICAgIGZpCmZpCgogICAgZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogJGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjIiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xj IiA+JjYKICAgIDs7CiAgZXNhYwpmaQpuZWVkX2xjPSR7bHRfY3ZfYXJjaGl2 ZV9jbWRzX25lZWRfbGMteWVzfQojIwojIyBFTkQgRklYTUUKCiMjIEZJWE1F OiB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG1hY3JvCiMjCiMgVGhlIHNl Y29uZCBjbGF1c2Ugc2hvdWxkIG9ubHkgZmlyZSB3aGVuIGJvb3RzdHJhcHBp bmcgdGhlCiMgbGlidG9vbCBkaXN0cmlidXRpb24sIG90aGVyd2lzZSB5b3Ug Zm9yZ290IHRvIHNoaXAgbHRtYWluLnNoCiMgd2l0aCB5b3VyIHBhY2thZ2Us IGFuZCB5b3Ugd2lsbCBnZXQgY29tcGxhaW50cyB0aGF0IHRoZXJlIGFyZQoj IG5vIHJ1bGVzIHRvIGdlbmVyYXRlIGx0bWFpbi5zaC4KaWYgdGVzdCAtZiAi JGx0bWFpbiI7IHRoZW4KICA6CmVsc2UKICAjIElmIHRoZXJlIGlzIG5vIE1h a2VmaWxlIHlldCwgd2UgcmVseSBvbiBhIG1ha2UgcnVsZSB0byBleGVjdXRl CiAgIyBgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2snIHRvIHJlcnVuIHRoZXNl IHRlc3RzIGFuZCBjcmVhdGUgdGhlCiAgIyBsaWJ0b29sIHNjcmlwdCB0aGVu LgogIHRlc3QgLWYgTWFrZWZpbGUgJiYgbWFrZSAiJGx0bWFpbiIKZmkKCmlm IHRlc3QgLWYgIiRsdG1haW4iOyB0aGVuCiAgdHJhcCAiJHJtIFwiJHtvZmls ZX1UXCI7IGV4aXQgMSIgMSAyIDE1CiAgJHJtIC1mICIke29maWxlfVQiCgog IGVjaG8gY3JlYXRpbmcgJG9maWxlCgogICMgTm93IHF1b3RlIGFsbCB0aGUg dGhpbmdzIHRoYXQgbWF5IGNvbnRhaW4gbWV0YWNoYXJhY3RlcnMgd2hpbGUg YmVpbmcKICAjIGNhcmVmdWwgbm90IHRvIG92ZXJxdW90ZSB0aGUgQUNfU1VC U1RlZCB2YWx1ZXMuICBXZSB0YWtlIGNvcGllcyBvZiB0aGUKICAjIHZhcmlh YmxlcyBhbmQgcXVvdGUgdGhlIGNvcGllcyBmb3IgZ2VuZXJhdGlvbiBvZiB0 aGUgbGlidG9vbCBzY3JpcHQuCiAgZm9yIHZhciBpbiBlY2hvIG9sZF9DQyBv bGRfQ0ZMQUdTIFNFRCBcCiAgICBBUiBBUl9GTEFHUyBDQyBMRCBMTl9TIE5N IFNIRUxMIFwKICAgIHJlbG9hZF9mbGFnIHJlbG9hZF9jbWRzIHdsIFwKICAg IHBpY19mbGFnIGxpbmtfc3RhdGljX2ZsYWcgbm9fYnVpbHRpbl9mbGFnIGV4 cG9ydF9keW5hbWljX2ZsYWdfc3BlYyBcCiAgICB0aHJlYWRfc2FmZV9mbGFn X3NwZWMgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMgbGlibmFtZV9zcGVjIFwK ICAgIGxpYnJhcnlfbmFtZXNfc3BlYyBzb25hbWVfc3BlYyBcCiAgICBSQU5M SUIgb2xkX2FyY2hpdmVfY21kcyBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRz IG9sZF9wb3N0aW5zdGFsbF9jbWRzIFwKICAgIG9sZF9wb3N0dW5pbnN0YWxs X2NtZHMgYXJjaGl2ZV9jbWRzIGFyY2hpdmVfZXhwc3ltX2NtZHMgcG9zdGlu c3RhbGxfY21kcyBcCiAgICBwb3N0dW5pbnN0YWxsX2NtZHMgZXh0cmFjdF9l eHBzeW1zX2NtZHMgb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMgXAog ICAgb2xkX3N0cmlwbGliIHN0cmlwbGliIGZpbGVfbWFnaWNfY21kIGV4cG9y dF9zeW1ib2xzX2NtZHMgXAogICAgZGVwbGlic19jaGVja19tZXRob2QgYWxs b3dfdW5kZWZpbmVkX2ZsYWcgbm9fdW5kZWZpbmVkX2ZsYWcgXAogICAgZmlu aXNoX2NtZHMgZmluaXNoX2V2YWwgZ2xvYmFsX3N5bWJvbF9waXBlIGdsb2Jh bF9zeW1ib2xfdG9fY2RlY2wgXAogICAgZ2xvYmFsX3N5bWJvbF90b19jX25h bWVfYWRkcmVzcyBcCiAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGhh cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgIFwKICAgIHN5c19saWJfc2VhcmNo X3BhdGhfc3BlYyBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyBcCiAgICBj b21waWxlcl9jX28gY29tcGlsZXJfb19sbyBuZWVkX2xvY2tzIGV4Y2x1ZGVf ZXhwc3ltcyBpbmNsdWRlX2V4cHN5bXM7IGRvCgogICAgY2FzZSAkdmFyIGlu CiAgICByZWxvYWRfY21kcyB8IG9sZF9hcmNoaXZlX2NtZHMgfCBvbGRfYXJj aGl2ZV9mcm9tX25ld19jbWRzIHwgXAogICAgb2xkX3Bvc3RpbnN0YWxsX2Nt ZHMgfCBvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIHwgXAogICAgZXhwb3J0X3N5 bWJvbHNfY21kcyB8IGFyY2hpdmVfY21kcyB8IGFyY2hpdmVfZXhwc3ltX2Nt ZHMgfCBcCiAgICBleHRyYWN0X2V4cHN5bXNfY21kcyB8IG9sZF9hcmNoaXZl X2Zyb21fZXhwc3ltc19jbWRzIHwgXAogICAgcG9zdGluc3RhbGxfY21kcyB8 IHBvc3R1bmluc3RhbGxfY21kcyB8IFwKICAgIGZpbmlzaF9jbWRzIHwgc3lz X2xpYl9zZWFyY2hfcGF0aF9zcGVjIHwgc3lzX2xpYl9kbHNlYXJjaF9wYXRo X3NwZWMpCiAgICAgICMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3Ry aW5ncy4KICAgICAgZXZhbCAibHRfJHZhcj1cXFwiXGBcJGVjaG8gXCJYXCQk dmFyXCIgfCBcJFhzZWQgLWUgXCJcJGRvdWJsZV9xdW90ZV9zdWJzdFwiIC1l IFwiXCRzZWRfcXVvdGVfc3Vic3RcIiAtZSBcIlwkZGVsYXlfdmFyaWFibGVf c3Vic3RcIlxgXFxcIiIKICAgICAgOzsKICAgICopCiAgICAgIGV2YWwgImx0 XyR2YXI9XFxcIlxgXCRlY2hvIFwiWFwkJHZhclwiIHwgXCRYc2VkIC1lIFwi XCRzZWRfcXVvdGVfc3Vic3RcIlxgXFxcIiIKICAgICAgOzsKICAgIGVzYWMK ICBkb25lCgogIGNhdCA8PF9fRU9GX18gPiAiJHtvZmlsZX1UIgojISAkU0hF TEwKCiMgYCRlY2hvICIkb2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJv dmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2Vy dmljZXMuCiMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJFBST0dSQU0g KEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVApCiMgTk9URTogQ2hh bmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQg bHRtYWluLnNoLgojCiMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgT3JpZ2luYWxseSBieSBHb3Jk b24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKIwoj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0CiMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiMg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiMKIyBBcyBhIHNwZWNpYWwgZXhj ZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYg eW91CiMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dy YW0gdGhhdCBjb250YWlucyBhCiMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2Vu ZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIK IyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZv ciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCgojIEEgc2VkIHRoYXQgZG9l cyBub3QgdHJ1bmNhdGUgb3V0cHV0LgpTRUQ9JGx0X1NFRAoKIyBTZWQgdGhh dCBoZWxwcyB1cyBhdm9pZCBhY2NpZGVudGFsbHkgdHJpZ2dlcmluZyBlY2hv KDEpIG9wdGlvbnMgbGlrZSAtbi4KWHNlZD0iJHtTRUR9IC1lIHMvXlgvLyIK CiMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRh cmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0CiMgaWYgQ0RQQVRIIGlzIHNldC4K aWYgdGVzdCAiWFwke0NEUEFUSCtzZXR9IiA9IFhzZXQ7IHRoZW4gQ0RQQVRI PTo7IGV4cG9ydCBDRFBBVEg7IGZpCgojICMjIyBCRUdJTiBMSUJUT09MIENP TkZJRwoKIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0 bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgoKIyBT aGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgpTSEVM TD0kbHRfU0hFTEwKCiMgV2hldGhlciBvciBub3QgdG8gYnVpbGQgc2hhcmVk IGxpYnJhcmllcy4KYnVpbGRfbGlidG9vbF9saWJzPSRlbmFibGVfc2hhcmVk CgojIFdoZXRoZXIgb3Igbm90IHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMu CmJ1aWxkX29sZF9saWJzPSRlbmFibGVfc3RhdGljCgojIFdoZXRoZXIgb3Ig bm90IHRvIGFkZCAtbGMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMu CmJ1aWxkX2xpYnRvb2xfbmVlZF9sYz0kbmVlZF9sYwoKIyBXaGV0aGVyIG9y IG5vdCB0byBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24uCmZhc3Rf aW5zdGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbAoKIyBUaGUgaG9zdCBzeXN0 ZW0uCmhvc3RfYWxpYXM9JGhvc3RfYWxpYXMKaG9zdD0kaG9zdAoKIyBBbiBl Y2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNo ZXMuCmVjaG89JGx0X2VjaG8KCiMgVGhlIGFyY2hpdmVyLgpBUj0kbHRfQVIK QVJfRkxBR1M9JGx0X0FSX0ZMQUdTCgojIFRoZSBkZWZhdWx0IEMgY29tcGls ZXIuCkNDPSRsdF9DQwoKIyBJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBDIGNv bXBpbGVyPwp3aXRoX2djYz0kR0NDCgojIFRoZSBsaW5rZXIgdXNlZCB0byBi dWlsZCBsaWJyYXJpZXMuCkxEPSRsdF9MRAoKIyBXaGV0aGVyIHdlIG5lZWQg aGFyZCBvciBzb2Z0IGxpbmtzLgpMTl9TPSRsdF9MTl9TCgojIEEgQlNELWNv bXBhdGlibGUgbm0gcHJvZ3JhbS4KTk09JGx0X05NCgojIEEgc3ltYm9sIHN0 cmlwcGluZyBwcm9ncmFtClNUUklQPSRTVFJJUAoKIyBVc2VkIHRvIGV4YW1p bmUgbGlicmFyaWVzIHdoZW4gZmlsZV9tYWdpY19jbWQgYmVnaW5zICJmaWxl IgpNQUdJQ19DTUQ9JE1BR0lDX0NNRAoKIyBVc2VkIG9uIGN5Z3dpbjogRExM IGNyZWF0aW9uIHByb2dyYW0uCkRMTFRPT0w9IiRETExUT09MIgoKIyBVc2Vk IG9uIGN5Z3dpbjogb2JqZWN0IGR1bXBlci4KT0JKRFVNUD0iJE9CSkRVTVAi CgojIFVzZWQgb24gY3lnd2luOiBhc3NlbWJsZXIuCkFTPSIkQVMiCgojIFRo ZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3Jh cnkgbGlidG9vbCBmaWxlcy4Kb2JqZGlyPSRvYmpkaXIKCiMgSG93IHRvIGNy ZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4KcmVsb2FkX2ZsYWc9JGx0 X3JlbG9hZF9mbGFnCnJlbG9hZF9jbWRzPSRsdF9yZWxvYWRfY21kcwoKIyBI b3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVy Lgp3bD0kbHRfd2wKCiMgT2JqZWN0IGZpbGUgc3VmZml4IChub3JtYWxseSAi byIpLgpvYmpleHQ9IiRhY19vYmpleHQiCgojIE9sZCBhcmNoaXZlIHN1ZmZp eCAobm9ybWFsbHkgImEiKS4KbGliZXh0PSIkbGliZXh0IgoKIyBFeGVjdXRh YmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIikuCmV4ZWV4dD0iJGV4ZWV4 dCIKCiMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcg bGlicmFyeSBvYmplY3RzLgpwaWNfZmxhZz0kbHRfcGljX2ZsYWcKcGljX21v ZGU9JHBpY19tb2RlCgojIERvZXMgY29tcGlsZXIgc2ltdWx0YW5lb3VzbHkg c3VwcG9ydCAtYyBhbmQgLW8gb3B0aW9ucz8KY29tcGlsZXJfY19vPSRsdF9j b21waWxlcl9jX28KCiMgQ2FuIHdlIHdyaXRlIGRpcmVjdGx5IHRvIGEgLmxv ID8KY29tcGlsZXJfb19sbz0kbHRfY29tcGlsZXJfb19sbwoKIyBNdXN0IHdl IGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbiA/Cm5lZWRfbG9j a3M9JGx0X25lZWRfbG9ja3MKCiMgRG8gd2UgbmVlZCB0aGUgbGliIHByZWZp eCBmb3IgbW9kdWxlcz8KbmVlZF9saWJfcHJlZml4PSRuZWVkX2xpYl9wcmVm aXgKCiMgRG8gd2UgbmVlZCBhIHZlcnNpb24gZm9yIGxpYnJhcmllcz8KbmVl ZF92ZXJzaW9uPSRuZWVkX3ZlcnNpb24KCiMgV2hldGhlciBkbG9wZW4gaXMg c3VwcG9ydGVkLgpkbG9wZW5fc3VwcG9ydD0kZW5hYmxlX2Rsb3BlbgoKIyBX aGV0aGVyIGRsb3BlbiBvZiBwcm9ncmFtcyBpcyBzdXBwb3J0ZWQuCmRsb3Bl bl9zZWxmPSRlbmFibGVfZGxvcGVuX3NlbGYKCiMgV2hldGhlciBkbG9wZW4g b2Ygc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbXMgaXMgc3VwcG9ydGVkLgpk bG9wZW5fc2VsZl9zdGF0aWM9JGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWMK CiMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4K bGlua19zdGF0aWNfZmxhZz0kbHRfbGlua19zdGF0aWNfZmxhZwoKIyBDb21w aWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgpub19i dWlsdGluX2ZsYWc9JGx0X25vX2J1aWx0aW5fZmxhZwoKIyBDb21waWxlciBm bGFnIHRvIGFsbG93IHJlZmxleGl2ZSBkbG9wZW5zLgpleHBvcnRfZHluYW1p Y19mbGFnX3NwZWM9JGx0X2V4cG9ydF9keW5hbWljX2ZsYWdfc3BlYwoKIyBD b21waWxlciBmbGFnIHRvIGdlbmVyYXRlIHNoYXJlZCBvYmplY3RzIGRpcmVj dGx5IGZyb20gYXJjaGl2ZXMuCndob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSRs dF93aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYwoKIyBDb21waWxlciBmbGFnIHRv IGdlbmVyYXRlIHRocmVhZC1zYWZlIG9iamVjdHMuCnRocmVhZF9zYWZlX2Zs YWdfc3BlYz0kbHRfdGhyZWFkX3NhZmVfZmxhZ19zcGVjCgojIExpYnJhcnkg dmVyc2lvbmluZyB0eXBlLgp2ZXJzaW9uX3R5cGU9JHZlcnNpb25fdHlwZQoK IyBGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeC4KbGlibmFtZV9zcGVj PSRsdF9saWJuYW1lX3NwZWMKCiMgTGlzdCBvZiBhcmNoaXZlIG5hbWVzLiAg Rmlyc3QgbmFtZSBpcyB0aGUgcmVhbCBvbmUsIHRoZSByZXN0IGFyZSBsaW5r cy4KIyBUaGUgbGFzdCBuYW1lIGlzIHRoZSBvbmUgdGhhdCB0aGUgbGlua2Vy IGZpbmRzIHdpdGggLWxOQU1FLgpsaWJyYXJ5X25hbWVzX3NwZWM9JGx0X2xp YnJhcnlfbmFtZXNfc3BlYwoKIyBUaGUgY29kZWQgbmFtZSBvZiB0aGUgbGli cmFyeSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgbmFtZS4Kc29uYW1l X3NwZWM9JGx0X3NvbmFtZV9zcGVjCgojIENvbW1hbmRzIHVzZWQgdG8gYnVp bGQgYW5kIGluc3RhbGwgYW4gb2xkLXN0eWxlIGFyY2hpdmUuClJBTkxJQj0k bHRfUkFOTElCCm9sZF9hcmNoaXZlX2NtZHM9JGx0X29sZF9hcmNoaXZlX2Nt ZHMKb2xkX3Bvc3RpbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0aW5zdGFsbF9j bWRzCm9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0dW5pbnN0 YWxsX2NtZHMKCiMgQ3JlYXRlIGFuIG9sZC1zdHlsZSBhcmNoaXZlIGZyb20g YSBzaGFyZWQgYXJjaGl2ZS4Kb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0k bHRfb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcwoKIyBDcmVhdGUgYSB0ZW1w b3Jhcnkgb2xkLXN0eWxlIGFyY2hpdmUgdG8gbGluayBpbnN0ZWFkIG9mIGEg c2hhcmVkIGFyY2hpdmUuCm9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRz PSRsdF9vbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcwoKIyBDb21tYW5k cyB1c2VkIHRvIGJ1aWxkIGFuZCBpbnN0YWxsIGEgc2hhcmVkIGFyY2hpdmUu CmFyY2hpdmVfY21kcz0kbHRfYXJjaGl2ZV9jbWRzCmFyY2hpdmVfZXhwc3lt X2NtZHM9JGx0X2FyY2hpdmVfZXhwc3ltX2NtZHMKcG9zdGluc3RhbGxfY21k cz0kbHRfcG9zdGluc3RhbGxfY21kcwpwb3N0dW5pbnN0YWxsX2NtZHM9JGx0 X3Bvc3R1bmluc3RhbGxfY21kcwoKIyBDb21tYW5kcyB0byBzdHJpcCBsaWJy YXJpZXMuCm9sZF9zdHJpcGxpYj0kbHRfb2xkX3N0cmlwbGliCnN0cmlwbGli PSRsdF9zdHJpcGxpYgoKIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBl bmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KZGVwbGlic19j aGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCgojIENvbW1h bmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gZmlsZV9t YWdpYy4KZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCgojIEZs YWcgdGhhdCBhbGxvd3Mgc2hhcmVkIGxpYnJhcmllcyB3aXRoIHVuZGVmaW5l ZCBzeW1ib2xzIHRvIGJlIGJ1aWx0LgphbGxvd191bmRlZmluZWRfZmxhZz0k bHRfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKCiMgRmxhZyB0aGF0IGZvcmNlcyBu byB1bmRlZmluZWQgc3ltYm9scy4Kbm9fdW5kZWZpbmVkX2ZsYWc9JGx0X25v X3VuZGVmaW5lZF9mbGFnCgojIENvbW1hbmRzIHVzZWQgdG8gZmluaXNoIGEg bGlidG9vbCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiBhIGRpcmVjdG9yeS4K ZmluaXNoX2NtZHM9JGx0X2ZpbmlzaF9jbWRzCgojIFNhbWUgYXMgYWJvdmUs IGJ1dCBhIHNpbmdsZSBzY3JpcHQgZnJhZ21lbnQgdG8gYmUgZXZhbGVkIGJ1 dCBub3Qgc2hvd24uCmZpbmlzaF9ldmFsPSRsdF9maW5pc2hfZXZhbAoKIyBU YWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9m IHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzLgpnbG9iYWxfc3ltYm9sX3BpcGU9 JGx0X2dsb2JhbF9zeW1ib2xfcGlwZQoKIyBUcmFuc2Zvcm0gdGhlIG91dHB1 dCBvZiBubSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uCmdsb2JhbF9zeW1i b2xfdG9fY2RlY2w9JGx0X2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wKCiMgVHJh bnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBw YWlyCmdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2dsb2Jh bF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKCiMgVGhpcyBpcyB0aGUgc2hh cmVkIGxpYnJhcnkgcnVudGltZSBwYXRoIHZhcmlhYmxlLgpydW5wYXRoX3Zh cj0kcnVucGF0aF92YXIKCiMgVGhpcyBpcyB0aGUgc2hhcmVkIGxpYnJhcnkg cGF0aCB2YXJpYWJsZS4Kc2hsaWJwYXRoX3Zhcj0kc2hsaWJwYXRoX3ZhcgoK IyBJcyBzaGxpYnBhdGggc2VhcmNoZWQgYmVmb3JlIHRoZSBoYXJkLWNvZGVk IGxpYnJhcnkgc2VhcmNoIHBhdGg/CnNobGlicGF0aF9vdmVycmlkZXNfcnVu cGF0aD0kc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCgojIEhvdyB0byBo YXJkY29kZSBhIHNoYXJlZCBsaWJyYXJ5IHBhdGggaW50byBhbiBleGVjdXRh YmxlLgpoYXJkY29kZV9hY3Rpb249JGhhcmRjb2RlX2FjdGlvbgoKIyBXaGV0 aGVyIHdlIHNob3VsZCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gbGli cmFyaWVzLgpoYXJkY29kZV9pbnRvX2xpYnM9JGhhcmRjb2RlX2ludG9fbGli cwoKIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkg ZHVyaW5nIGxpbmtpbmcuCiMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxp YmRpciBkb2VzIG5vdCBleGlzdC4KaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3Bl Yz0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYwoKIyBXaGV0aGVyIHdl IG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBh cmd1bWVudC4KaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0kbHRfaGFyZGNv ZGVfbGliZGlyX3NlcGFyYXRvcgoKIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJ Ui9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50 byB0aGUKIyByZXN1bHRpbmcgYmluYXJ5LgpoYXJkY29kZV9kaXJlY3Q9JGhh cmRjb2RlX2RpcmVjdAoKIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJ UiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUK IyByZXN1bHRpbmcgYmluYXJ5LgpoYXJkY29kZV9taW51c19MPSRoYXJkY29k ZV9taW51c19MCgojIFNldCB0byB5ZXMgaWYgdXNpbmcgU0hMSUJQQVRIX1ZB Uj1ESVIgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvCiMgdGhl IHJlc3VsdGluZyBiaW5hcnkuCmhhcmRjb2RlX3NobGlicGF0aF92YXI9JGhh cmRjb2RlX3NobGlicGF0aF92YXIKCiMgVmFyaWFibGVzIHdob3NlIHZhbHVl cyBzaG91bGQgYmUgc2F2ZWQgaW4gbGlidG9vbCB3cmFwcGVyIHNjcmlwdHMg YW5kCiMgcmVzdG9yZWQgYXQgcmVsaW5rIHRpbWUuCnZhcmlhYmxlc19zYXZl ZF9mb3JfcmVsaW5rPSIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiCgoj IFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3Qg YWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KbGlua19hbGxfZGVwbGli cz0kbGlua19hbGxfZGVwbGlicwoKIyBDb21waWxlLXRpbWUgc3lzdGVtIHNl YXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKc3lzX2xpYl9zZWFyY2hfcGF0aF9z cGVjPSRsdF9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKCiMgUnVuLXRpbWUg c3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKc3lzX2xpYl9kbHNl YXJjaF9wYXRoX3NwZWM9JGx0X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVj CgojIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUg Y29tcGlsZXIuCmZpeF9zcmNmaWxlX3BhdGg9IiRmaXhfc3JjZmlsZV9wYXRo IgoKIyBTZXQgdG8geWVzIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVp cmVkLgphbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3lt Ym9scwoKIyBUaGUgY29tbWFuZHMgdG8gbGlzdCBleHBvcnRlZCBzeW1ib2xz LgpleHBvcnRfc3ltYm9sc19jbWRzPSRsdF9leHBvcnRfc3ltYm9sc19jbWRz CgojIFRoZSBjb21tYW5kcyB0byBleHRyYWN0IHRoZSBleHBvcnRlZCBzeW1i b2wgbGlzdCBmcm9tIGEgc2hhcmVkIGFyY2hpdmUuCmV4dHJhY3RfZXhwc3lt c19jbWRzPSRsdF9leHRyYWN0X2V4cHN5bXNfY21kcwoKIyBTeW1ib2xzIHRo YXQgc2hvdWxkIG5vdCBiZSBsaXN0ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1i b2xzLgpleGNsdWRlX2V4cHN5bXM9JGx0X2V4Y2x1ZGVfZXhwc3ltcwoKIyBT eW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWQuCmluY2x1ZGVf ZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCgojICMjIyBFTkQgTElCVE9P TCBDT05GSUcKCl9fRU9GX18KCiAgY2FzZSAkaG9zdF9vcyBpbgogIGFpeDMq KQogICAgY2F0IDw8XEVPRiA+PiAiJHtvZmlsZX1UIgoKIyBBSVggc29tZXRp bWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3Jh bS4gIEZvciBzb21lCiMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1Rf TkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcwojIHZh bmlzaCBpbiBhIHB1ZmYgb2Ygc21va2UuCmlmIHRlc3QgIlgke0NPTExFQ1Rf TkFNRVMrc2V0fSIgIT0gWHNldDsgdGhlbgogIENPTExFQ1RfTkFNRVM9CiAg ZXhwb3J0IENPTExFQ1RfTkFNRVMKZmkKRU9GCiAgICA7OwogIGVzYWMKCiAg Y2FzZSAkaG9zdF9vcyBpbgogIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8 IG9zMiopCiAgICBjYXQgPDwnRU9GJyA+PiAiJHtvZmlsZX1UIgogICAgICAj IFRoaXMgaXMgYSBzb3VyY2UgcHJvZ3JhbSB0aGF0IGlzIHVzZWQgdG8gY3Jl YXRlIGRsbHMgb24gV2luZG93cwogICAgICAjIERvbid0IHJlbW92ZSBub3Ig bW9kaWZ5IHRoZSBzdGFydGluZyBhbmQgY2xvc2luZyBjb21tZW50cwojIC8q IGx0ZGxsLmMgc3RhcnRzIGhlcmUgKi8KIyAjZGVmaW5lIFdJTjMyX0xFQU5f QU5EX01FQU4KIyAjaW5jbHVkZSA8d2luZG93cy5oPgojICN1bmRlZiBXSU4z Ml9MRUFOX0FORF9NRUFOCiMgI2luY2x1ZGUgPHN0ZGlvLmg+CiMKIyAjaWZu ZGVmIF9fQ1lHV0lOX18KIyAjICBpZmRlZiBfX0NZR1dJTjMyX18KIyAjICAg IGRlZmluZSBfX0NZR1dJTl9fIF9fQ1lHV0lOMzJfXwojICMgIGVuZGlmCiMg I2VuZGlmCiMKIyAjaWZkZWYgX19jcGx1c3BsdXMKIyBleHRlcm4gIkMiIHsK IyAjZW5kaWYKIyBCT09MIEFQSUVOVFJZIERsbE1haW4gKEhJTlNUQU5DRSBo SW5zdCwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpOwojICNpZmRl ZiBfX2NwbHVzcGx1cwojIH0KIyAjZW5kaWYKIwojICNpZmRlZiBfX0NZR1dJ Tl9fCiMgI2luY2x1ZGUgPGN5Z3dpbi9jeWd3aW5fZGxsLmg+CiMgREVDTEFS RV9DWUdXSU5fRExMKCBEbGxNYWluICk7CiMgI2VuZGlmCiMgSElOU1RBTkNF IF9faERsbEluc3RhbmNlX2Jhc2U7CiMKIyBCT09MIEFQSUVOVFJZCiMgRGxs TWFpbiAoSElOU1RBTkNFIGhJbnN0LCBEV09SRCByZWFzb24sIExQVk9JRCBy ZXNlcnZlZCkKIyB7CiMgICBfX2hEbGxJbnN0YW5jZV9iYXNlID0gaEluc3Q7 CiMgICByZXR1cm4gVFJVRTsKIyB9CiMgLyogbHRkbGwuYyBlbmRzIGhlcmUg Ki8KCSMgVGhpcyBpcyBhIHNvdXJjZSBwcm9ncmFtIHRoYXQgaXMgdXNlZCB0 byBjcmVhdGUgaW1wb3J0IGxpYnJhcmllcwoJIyBvbiBXaW5kb3dzIGZvciBk bGxzIHdoaWNoIGxhY2sgdGhlbS4gRG9uJ3QgcmVtb3ZlIG5vciBtb2RpZnkg dGhlCgkjIHN0YXJ0aW5nIGFuZCBjbG9zaW5nIGNvbW1lbnRzCiMgLyogaW1w Z2VuLmMgc3RhcnRzIGhlcmUgKi8KIyAvKiAgIENvcHlyaWdodCAoQykgMTk5 OS0yMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgojCiMgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBsaWJ0b29sLgojCiMgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CiMgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCiMKIyAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCiMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQojICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojICBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgojICAqLwojCiMgI2luY2x1ZGUg PHN0ZGlvLmg+CQkvKiBmb3IgcHJpbnRmKCkgKi8KIyAjaW5jbHVkZSA8dW5p c3RkLmg+CQkvKiBmb3Igb3BlbigpLCBsc2VlaygpLCByZWFkKCkgKi8KIyAj aW5jbHVkZSA8ZmNudGwuaD4JCS8qIGZvciBPX1JET05MWSwgT19CSU5BUlkg Ki8KIyAjaW5jbHVkZSA8c3RyaW5nLmg+CQkvKiBmb3Igc3RyZHVwKCkgKi8K IwojIC8qIE9fQklOQVJZIGlzbid0IHJlcXVpcmVkIChvciBldmVuIGRlZmlu ZWQgc29tZXRpbWVzKSB1bmRlciBVbml4ICovCiMgI2lmbmRlZiBPX0JJTkFS WQojICNkZWZpbmUgT19CSU5BUlkgMAojICNlbmRpZgojCiMgc3RhdGljIHVu c2lnbmVkIGludAojIHBlX2dldDE2IChmZCwgb2Zmc2V0KQojICAgICAgaW50 IGZkOwojICAgICAgaW50IG9mZnNldDsKIyB7CiMgICB1bnNpZ25lZCBjaGFy IGJbMl07CiMgICBsc2VlayAoZmQsIG9mZnNldCwgU0VFS19TRVQpOwojICAg cmVhZCAoZmQsIGIsIDIpOwojICAgcmV0dXJuIGJbMF0gKyAoYlsxXTw8OCk7 CiMgfQojCiMgc3RhdGljIHVuc2lnbmVkIGludAojIHBlX2dldDMyIChmZCwg b2Zmc2V0KQojICAgICBpbnQgZmQ7CiMgICAgIGludCBvZmZzZXQ7CiMgewoj ICAgdW5zaWduZWQgY2hhciBiWzRdOwojICAgbHNlZWsgKGZkLCBvZmZzZXQs IFNFRUtfU0VUKTsKIyAgIHJlYWQgKGZkLCBiLCA0KTsKIyAgIHJldHVybiBi WzBdICsgKGJbMV08PDgpICsgKGJbMl08PDE2KSArIChiWzNdPDwyNCk7CiMg fQojCiMgc3RhdGljIHVuc2lnbmVkIGludAojIHBlX2FzMzIgKHB0cikKIyAg ICAgIHZvaWQgKnB0cjsKIyB7CiMgICB1bnNpZ25lZCBjaGFyICpiID0gcHRy OwojICAgcmV0dXJuIGJbMF0gKyAoYlsxXTw8OCkgKyAoYlsyXTw8MTYpICsg KGJbM108PDI0KTsKIyB9CiMKIyBpbnQKIyBtYWluIChhcmdjLCBhcmd2KQoj ICAgICBpbnQgYXJnYzsKIyAgICAgY2hhciAqYXJndltdOwojIHsKIyAgICAg aW50IGRsbDsKIyAgICAgdW5zaWduZWQgbG9uZyBwZV9oZWFkZXJfb2Zmc2V0 LCBvcHRoZHJfb2ZzLCBudW1fZW50cmllcywgaTsKIyAgICAgdW5zaWduZWQg bG9uZyBleHBvcnRfcnZhLCBleHBvcnRfc2l6ZSwgbnNlY3Rpb25zLCBzZWNw dHIsIGV4cHB0cjsKIyAgICAgdW5zaWduZWQgbG9uZyBuYW1lX3J2YXMsIG5l eHA7CiMgICAgIHVuc2lnbmVkIGNoYXIgKmV4cGRhdGEsICplcnZhOwojICAg ICBjaGFyICpmaWxlbmFtZSwgKmRsbF9uYW1lOwojCiMgICAgIGZpbGVuYW1l ID0gYXJndlsxXTsKIwojICAgICBkbGwgPSBvcGVuKGZpbGVuYW1lLCBPX1JE T05MWXxPX0JJTkFSWSk7CiMgICAgIGlmIChkbGwgPCAxKQojIAlyZXR1cm4g MTsKIwojICAgICBkbGxfbmFtZSA9IGZpbGVuYW1lOwojCiMgICAgIGZvciAo aT0wOyBmaWxlbmFtZVtpXTsgaSsrKQojIAlpZiAoZmlsZW5hbWVbaV0gPT0g Jy8nIHx8IGZpbGVuYW1lW2ldID09ICdcXCcgIHx8IGZpbGVuYW1lW2ldID09 ICc6JykKIyAJICAgIGRsbF9uYW1lID0gZmlsZW5hbWUgKyBpICsxOwojCiMg ICAgIHBlX2hlYWRlcl9vZmZzZXQgPSBwZV9nZXQzMiAoZGxsLCAweDNjKTsK IyAgICAgb3B0aGRyX29mcyA9IHBlX2hlYWRlcl9vZmZzZXQgKyA0ICsgMjA7 CiMgICAgIG51bV9lbnRyaWVzID0gcGVfZ2V0MzIgKGRsbCwgb3B0aGRyX29m cyArIDkyKTsKIwojICAgICBpZiAobnVtX2VudHJpZXMgPCAxKSAvKiBubyBl eHBvcnRzICovCiMgCXJldHVybiAxOwojCiMgICAgIGV4cG9ydF9ydmEgPSBw ZV9nZXQzMiAoZGxsLCBvcHRoZHJfb2ZzICsgOTYpOwojICAgICBleHBvcnRf c2l6ZSA9IHBlX2dldDMyIChkbGwsIG9wdGhkcl9vZnMgKyAxMDApOwojICAg ICBuc2VjdGlvbnMgPSBwZV9nZXQxNiAoZGxsLCBwZV9oZWFkZXJfb2Zmc2V0 ICsgNCArMik7CiMgICAgIHNlY3B0ciA9IChwZV9oZWFkZXJfb2Zmc2V0ICsg NCArIDIwICsKIyAJICAgICAgcGVfZ2V0MTYgKGRsbCwgcGVfaGVhZGVyX29m ZnNldCArIDQgKyAxNikpOwojCiMgICAgIGV4cHB0ciA9IDA7CiMgICAgIGZv ciAoaSA9IDA7IGkgPCBuc2VjdGlvbnM7IGkrKykKIyAgICAgewojIAljaGFy IHNuYW1lWzhdOwojIAl1bnNpZ25lZCBsb25nIHNlY3B0cjEgPSBzZWNwdHIg KyA0MCAqIGk7CiMgCXVuc2lnbmVkIGxvbmcgdmFkZHIgPSBwZV9nZXQzMiAo ZGxsLCBzZWNwdHIxICsgMTIpOwojIAl1bnNpZ25lZCBsb25nIHZzaXplID0g cGVfZ2V0MzIgKGRsbCwgc2VjcHRyMSArIDE2KTsKIyAJdW5zaWduZWQgbG9u ZyBmcHRyID0gcGVfZ2V0MzIgKGRsbCwgc2VjcHRyMSArIDIwKTsKIyAJbHNl ZWsoZGxsLCBzZWNwdHIxLCBTRUVLX1NFVCk7CiMgCXJlYWQoZGxsLCBzbmFt ZSwgOCk7CiMgCWlmICh2YWRkciA8PSBleHBvcnRfcnZhICYmIHZhZGRyK3Zz aXplID4gZXhwb3J0X3J2YSkKIyAJewojIAkgICAgZXhwcHRyID0gZnB0ciAr IChleHBvcnRfcnZhIC0gdmFkZHIpOwojIAkgICAgaWYgKGV4cG9ydF9ydmEg KyBleHBvcnRfc2l6ZSA+IHZhZGRyICsgdnNpemUpCiMgCQlleHBvcnRfc2l6 ZSA9IHZzaXplIC0gKGV4cG9ydF9ydmEgLSB2YWRkcik7CiMgCSAgICBicmVh azsKIyAJfQojICAgICB9CiMKIyAgICAgZXhwZGF0YSA9ICh1bnNpZ25lZCBj aGFyKiltYWxsb2MoZXhwb3J0X3NpemUpOwojICAgICBsc2VlayAoZGxsLCBl eHBwdHIsIFNFRUtfU0VUKTsKIyAgICAgcmVhZCAoZGxsLCBleHBkYXRhLCBl eHBvcnRfc2l6ZSk7CiMgICAgIGVydmEgPSBleHBkYXRhIC0gZXhwb3J0X3J2 YTsKIwojICAgICBuZXhwID0gcGVfYXMzMiAoZXhwZGF0YSsyNCk7CiMgICAg IG5hbWVfcnZhcyA9IHBlX2FzMzIgKGV4cGRhdGErMzIpOwojCiMgICAgIHBy aW50ZiAoIkVYUE9SVFNcbiIpOwojICAgICBmb3IgKGkgPSAwOyBpPG5leHA7 IGkrKykKIyAgICAgewojIAl1bnNpZ25lZCBsb25nIG5hbWVfcnZhID0gcGVf YXMzMiAoZXJ2YStuYW1lX3J2YXMraSo0KTsKIyAJcHJpbnRmICgiXHQlcyBA ICVsZCA7XG4iLCBlcnZhK25hbWVfcnZhLCAxKyBpKTsKIyAgICAgfQojCiMg ICAgIHJldHVybiAwOwojIH0KIyAvKiBpbXBnZW4uYyBlbmRzIGhlcmUgKi8K CkVPRgogICAgOzsKICBlc2FjCgogICMgV2UgdXNlIHNlZCBpbnN0ZWFkIG9m IGNhdCBiZWNhdXNlIGJhc2ggb24gREpHUFAgZ2V0cyBjb25mdXNlZCBpZgog ICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBT aW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAjIHRleHQgbW9kZSwgaXQgcHJvcGVy bHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxl bQogICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9u IG9sZCB2ZXJzaW9ucyB0b28/CiAgc2VkICckcScgIiRsdG1haW4iID4+ICIk e29maWxlfVQiIHx8IChybSAtZiAiJHtvZmlsZX1UIjsgZXhpdCAxKQoKICBt diAtZiAiJHtvZmlsZX1UIiAiJG9maWxlIiB8fCBcCiAgICAocm0gLWYgIiRv ZmlsZSIgJiYgY3AgIiR7b2ZpbGV9VCIgIiRvZmlsZSIgJiYgcm0gLWYgIiR7 b2ZpbGV9VCIpCiAgY2htb2QgK3ggIiRvZmlsZSIKZmkKIyMKIyMgRU5EIEZJ WE1FCgoKCgoKIyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlYnVpbGQgbGlidG9v bCB3aGVuIG5lZWRlZApMSUJUT09MX0RFUFM9IiRhY19hdXhfZGlyL2x0bWFp bi5zaCIKCiMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkxJQlRPT0w9 JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwoKIyBQcmV2ZW50 IG11bHRpcGxlIGV4cGFuc2lvbgoKCgojPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoj CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCW1hdGgKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcg Zm9yIHNxcnQgaW4gLWxtIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBm b3Igc3FydCBpbiAtbG0uLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNf Y3ZfbGliX21fc3FydCtzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9f TiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJf c2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1sbSAgJExJQlMiCmNhdCA+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUi Ci8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5j b25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNF T0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUgYW55IGdj YzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8K I2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIKI2VuZGlmCi8qIFdlIHVz ZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlw ZSBvZiBhIGdjYzIKICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQg cHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBzcXJ0ICgp OwppbnQKbWFpbiAoKQp7CnNxcnQgKCk7CiAgOwogIHJldHVybiAwOwp9Cl9B Q0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4 ZWV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19s aW5rXCIiKSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1 cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFj X3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZh bCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfbGliX21fc3FydD15ZXMKZWxz ZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xpYl9t X3NxcnQ9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVja19s aWJfc2F2ZV9MSUJTCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 ICRhY19jdl9saWJfbV9zcXJ0IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2 X2xpYl9tX3NxcnQiID4mNgppZiB0ZXN0ICRhY19jdl9saWJfbV9zcXJ0ID0g eWVzOyB0aGVuCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5l IEhBVkVfTElCTSAxCl9BQ0VPRgoKICBMSUJTPSItbG0gJExJQlMiCgpmaQoK Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMJU3VuIG1hdGgKIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgZm9yIHN0YW5kYXJkX2FyaXRobWV0aWMgaW4gLWxzdW5tYXRoIiA+JjUK ZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3RhbmRhcmRfYXJpdGhtZXRp YyBpbiAtbHN1bm1hdGguLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNf Y3ZfbGliX3N1bm1hdGhfc3RhbmRhcmRfYXJpdGhtZXRpYytzZXR9IiA9IHNl dDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2 CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1s c3VubWF0aCAgJExJQlMiCmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VP RgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAq LwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNh dCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZz LmguICAqLwoKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90 eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9fY3BsdXNwbHVz CmV4dGVybiAiQyIKI2VuZGlmCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50 IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgYnVp bHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0 aWxsIGFwcGx5LiAgKi8KY2hhciBzdGFuZGFyZF9hcml0aG1ldGljICgpOwpp bnQKbWFpbiAoKQp7CnN0YW5kYXJkX2FyaXRobWV0aWMgKCk7CiAgOwogIHJl dHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0JGFjX2V4ZWV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY19saW5rXCIiKSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4m NQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g PSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgog ICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQn CiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi KSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfbGliX3N1 bm1hdGhfc3RhbmRhcmRfYXJpdGhtZXRpYz15ZXMKZWxzZQogIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycg Y29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xpYl9zdW5tYXRoX3N0YW5k YXJkX2FyaXRobWV0aWM9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRh Y19jaGVja19saWJfc2F2ZV9MSUJTCmZpCmVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRhY19jdl9saWJfc3VubWF0aF9zdGFuZGFyZF9hcml0aG1l dGljIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9zdW5tYXRoX3N0 YW5kYXJkX2FyaXRobWV0aWMiID4mNgppZiB0ZXN0ICRhY19jdl9saWJfc3Vu bWF0aF9zdGFuZGFyZF9hcml0aG1ldGljID0geWVzOyB0aGVuCiAgY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfTElCU1VOTUFUSCAx Cl9BQ0VPRgoKICBMSUJTPSItbHN1bm1hdGggJExJQlMiCgpmaQoKIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiMgICAgICAgUG9zaXggVGhyZWFkcwppZiB0 ZXN0ICIkd2l0aF9wdGhyZWFkIiA9ICJ5ZXMiOyB0aGVuCgplY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1s cHRocmVhZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHB0aHJl YWRfY3JlYXRlIGluIC1scHRocmVhZC4uLiAkRUNIT19DIiA+JjYKaWYgdGVz dCAiJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZStzZXR9IiA9 IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIg PiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9 Ii1scHRocmVhZCAgJExJQlMiCmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmgu ICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0 CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZk ZWZzLmguICAqLwoKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJv dG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9fY3BsdXNw bHVzCmV4dGVybiAiQyIKI2VuZGlmCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2Ug aW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxk IHN0aWxsIGFwcGx5LiAgKi8KY2hhciBwdGhyZWFkX2NyZWF0ZSAoKTsKaW50 Cm1haW4gKCkKewpwdGhyZWFkX2NyZWF0ZSAoKTsKICA7CiAgcmV0dXJuIDA7 Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qk YWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi JGFjX2xpbmtcIiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAg IHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChl dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQog IChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQg JGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19jdl9saWJfcHRocmVhZF9w dGhyZWFkX2NyZWF0ZT15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVk IHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFj X2V4dCA+JjUKCmFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlPW5v CmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhl ZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElCUz0kYWNfY2hlY2tfbGliX3NhdmVf TElCUwpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3Zf bGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUiID4mNQplY2hvICIke0VDSE9f VH0kYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUiID4mNgppZiB0 ZXN0ICRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZSA9IHllczsg dGhlbgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZF X0xJQlBUSFJFQUQgMQpfQUNFT0YKCiAgTElCUz0iLWxwdGhyZWFkICRMSUJT IgoKZmkKCmZpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIwlydHN0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQppZiB0ZXN0IC1mICR7YWNfY3ZfcnRzdH0vcGtnY29uZmlnL3J0c3QucGM7 IHRoZW4KICAgIFJUU1RfREZMVF9QQz0ke2FjX2N2X3J0c3R9L3BrZ2NvbmZp ZwplbGlmIHRlc3QgLWYgJHthY19jdl9ydHN0fS9ydHN0LnBjOyB0aGVuCiAg ICBSVFNUX0RGTFRfUEM9JHthY19jdl9ydHN0fQplbHNlCiAgICBSVFNUX0RG TFRfUEM9JHtxbl9leGVjX3ByZWZpeH0vbGliL3BrZ2NvbmZpZwpmaQpvbGRf UEtHX0NPTkZJR19QQVRIPSR7UEtHX0NPTkZJR19QQVRIfQpQS0dfQ09ORklH X1BBVEg9IiR7UlRTVF9ERkxUX1BDfToke1BLR19DT05GSUdfUEFUSH0iCmV4 cG9ydCBQS0dfQ09ORklHX1BBVEgKCiAgc3VjY2VlZGVkPW5vCgogIGlmIHRl c3QgLXogIiRQS0dfQ09ORklHIjsgdGhlbgogICAgIyBFeHRyYWN0IHRoZSBm aXJzdCB3b3JkIG9mICJwa2ctY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15IHBrZy1jb25maWc7IGFj X3dvcmQ9JDIKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAk YWNfd29yZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193 b3JkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3BhdGhfUEtH X0NPTkZJRytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBjYXNlICRQS0dfQ09ORklHIGlu CiAgW1xcL10qIHwgPzpbXFwvXSopCiAgYWNfY3ZfcGF0aF9QS0dfQ09ORklH PSIkUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRl c3Qgd2l0aCBhIHBhdGguCiAgOzsKICAqKQogIGFzX3NhdmVfSUZTPSRJRlM7 IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwog IElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9LgogIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbwogIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wYXRoX1BL R19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCiAgICBl Y2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQpkb25lCgog IHRlc3QgLXogIiRhY19jdl9wYXRoX1BLR19DT05GSUciICYmIGFjX2N2X3Bh dGhfUEtHX0NPTkZJRz0ibm8iCiAgOzsKZXNhYwpmaQpQS0dfQ09ORklHPSRh Y19jdl9wYXRoX1BLR19DT05GSUcKCmlmIHRlc3QgLW4gIiRQS0dfQ09ORklH IjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRQS0df Q09ORklHIiA+JjUKZWNobyAiJHtFQ0hPX1R9JFBLR19DT05GSUciID4mNgpl bHNlCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQpl Y2hvICIke0VDSE9fVH1ubyIgPiY2CmZpCgogIGZpCgogIGlmIHRlc3QgIiRQ S0dfQ09ORklHIiA9ICJubyIgOyB0aGVuCiAgICAgZWNobyAiKioqIFRoZSBw a2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUgZm91bmQuIE1ha2Ugc3Vy ZSBpdCBpcyIKICAgICBlY2hvICIqKiogaW4geW91ciBwYXRoLCBvciBzZXQg dGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUiCiAgICAgZWNo byAiKioqIHRvIHRoZSBmdWxsIHBhdGggdG8gcGtnLWNvbmZpZy4iCiAgICAg ZWNobyAiKioqIE9yIHNlZSBodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9z b2Z0d2FyZS9wa2djb25maWcgdG8gZ2V0IHBrZy1jb25maWcuIgogIGVsc2UK ICAgICBQS0dfQ09ORklHX01JTl9WRVJTSU9OPTAuOS4wCiAgICAgaWYgJFBL R19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRQS0dfQ09O RklHX01JTl9WRVJTSU9OOyB0aGVuCiAgICAgICAgZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nIGZvciBydHN0IiA+JjUKZWNobyAkRUNIT19OICJj aGVja2luZyBmb3IgcnRzdC4uLiAkRUNIT19DIiA+JjYKCiAgICAgICAgaWYg JFBLR19DT05GSUcgLS1leGlzdHMgInJ0c3QiIDsgdGhlbgogICAgICAgICAg ICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4mNQplY2hv ICIke0VDSE9fVH15ZXMiID4mNgogICAgICAgICAgICBzdWNjZWVkZWQ9eWVz CgogICAgICAgICAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcg UlRTVF9DRkxBR1MiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIFJUU1Rf Q0ZMQUdTLi4uICRFQ0hPX0MiID4mNgogICAgICAgICAgICBSVFNUX0NGTEFH Uz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgInJ0c3QiYAogICAgICAgICAgICBl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkUlRTVF9DRkxBR1MiID4m NQplY2hvICIke0VDSE9fVH0kUlRTVF9DRkxBR1MiID4mNgoKICAgICAgICAg ICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIFJUU1RfTElCUyIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgUlRTVF9MSUJTLi4uICRFQ0hP X0MiID4mNgogICAgICAgICAgICBSVFNUX0xJQlM9YCRQS0dfQ09ORklHIC0t bGlicyAicnRzdCJgCiAgICAgICAgICAgIGVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRSVFNUX0xJQlMiID4mNQplY2hvICIke0VDSE9fVH0kUlRT VF9MSUJTIiA+JjYKICAgICAgICBlbHNlCiAgICAgICAgICAgIFJUU1RfQ0ZM QUdTPSIiCiAgICAgICAgICAgIFJUU1RfTElCUz0iIgogICAgICAgICAgICAj IyBJZiB3ZSBoYXZlIGEgY3VzdG9tIGFjdGlvbiBvbiBmYWlsdXJlLCBkb24n dCBwcmludCBlcnJvcnMsIGJ1dAogICAgICAgICAgICAjIyBkbyBzZXQgYSB2 YXJpYWJsZSBzbyBwZW9wbGUgY2FuIGRvIHNvLgogICAgICAgICAgICBSVFNU X1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAt LXByaW50LWVycm9ycyAicnRzdCJgCgogICAgICAgIGZpCgoKCiAgICAgZWxz ZQogICAgICAgIGVjaG8gIioqKiBZb3VyIHZlcnNpb24gb2YgcGtnLWNvbmZp ZyBpcyB0b28gb2xkLiBZb3UgbmVlZCB2ZXJzaW9uICRQS0dfQ09ORklHX01J Tl9WRVJTSU9OIG9yIG5ld2VyLiIKICAgICAgICBlY2hvICIqKiogU2VlIGh0 dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3BrZ2NvbmZpZyIK ICAgICBmaQogIGZpCgogIGlmIHRlc3QgJHN1Y2NlZWRlZCA9IHllczsgdGhl bgogICAgIDoKICBlbHNlCiAgICAgOgogIGZpCgpQS0dfQ09ORklHX1BBVEg9 JHtvbGRfUEtHX0NPTkZJR19QQVRIfQoKb2xkX0NGTEFHUz0ke0NGTEFHU30K b2xkX0xJQlM9JHtMSUJTfQpDRkxBR1M9IiR7Q0ZMQUdTfSAke1JUU1RfQ0ZM QUdTfSIKTElCUz0iJHtMSUJTfSAke1JUU1RfTElCU30iCmVjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyBmb3IgcnRzdF9leGl0IGluIC1scnRzdCIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJ0c3RfZXhpdCBpbiAt bHJ0c3QuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfbGliX3J0 c3RfcnRzdF9leGl0K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19O ICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGFjX2NoZWNrX2xpYl9z YXZlX0xJQlM9JExJQlMKTElCUz0iLWxydHN0ICAkTElCUyIKY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3Vy ZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCgovKiBPdmVycmlkZSBhbnkg Z2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq LwojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKLyogV2Ug dXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0 eXBlIG9mIGEgZ2NjMgogICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVu dCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwpjaGFyIHJ0c3Rf ZXhpdCAoKTsKaW50Cm1haW4gKCkKewpydHN0X2V4aXQgKCk7CiAgOwogIHJl dHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0JGFjX2V4ZWV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY19saW5rXCIiKSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4m NQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g PSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgog ICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQn CiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi KSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfbGliX3J0 c3RfcnRzdF9leGl0PXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQg cHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNf ZXh0ID4mNQoKYWNfY3ZfbGliX3J0c3RfcnRzdF9leGl0PW5vCmZpCnJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQKTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwpmaQpl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX3J0c3Rf cnRzdF9leGl0IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ydHN0 X3J0c3RfZXhpdCIgPiY2CmlmIHRlc3QgJGFjX2N2X2xpYl9ydHN0X3J0c3Rf ZXhpdCA9IHllczsgdGhlbgogIGhhdmVfbGlicnRzdD15ZXMKZWxzZQogIGhh dmVfbGlicnRzdD1ubwpmaQoKQ0ZMQUdTPSR7b2xkX0NGTEFHU30KTElCUz0k e29sZF9MSUJTfQoKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkZWZhdWx0X21s cDNfYmxhcz1mYWxzZQoKY2FzZSAkYWNfY3ZfdXNlX2JsYXMgaW4KICBibGFz KQoKZm9yIGFjX2hlYWRlciBpbiBibGFzLmgKZG8KYXNfYWNfSGVhZGVyPWBl Y2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCmlm IGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7 IHRoZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRh Y19oZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNf aGVhZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFz X2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19O ICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZmkKZWNobyAiJGFzX21lOiRMSU5F Tk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2Ai ID4mNQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVh ZGVyJ30nYCIgPiY2CmVsc2UKICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJs ZT8KZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIg dXNhYmlsaXR5IiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNfaGVh ZGVyIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKY2F0ID5jb25mdGVzdC4k YWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyog Y29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0 ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgov KiBlbmQgY29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CiNp bmNsdWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y19jb21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQog IGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAg ICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0Jwog IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikg PiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVj aG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAo ZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2hlYWRlcl9jb21w aWxlcj15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0g d2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK CmFjX2hlYWRlcl9jb21waWxlcj1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1CmVjaG8gIiR7RUNI T19UfSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgoKIyBJcyB0aGUgaGVhZGVy IHByZXNlbnQ/CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyAkYWNf aGVhZGVyIHByZXNlbmNlIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAk YWNfaGVhZGVyIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0 ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJl IgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+ Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FD RU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPCRhY19oZWFk ZXI+Cl9BQ0VPRgppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBc IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgKGV2YWwgJGFj X2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQogIGFjX3N0 YXR1cz0kPwogIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRl c3QuZXJyCiAgcm0gLWYgY29uZnRlc3QuZXIxCiAgY2F0IGNvbmZ0ZXN0LmVy ciA+JjUKICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhl bgogIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICBhY19jcHBf ZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCiAgZWxzZQogICAgYWNfY3Bw X2Vycj0KICBmaQplbHNlCiAgYWNfY3BwX2Vycj15ZXMKZmkKaWYgdGVzdCAt eiAiJGFjX2NwcF9lcnIiOyB0aGVuCiAgYWNfaGVhZGVyX3ByZXByb2M9eWVz CmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4m NQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgogIGFjX2hl YWRlcl9wcmVwcm9jPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfZXh0CmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19o ZWFkZXJfcHJlcHJvYyIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJf cHJlcHJvYyIgPiY2CgojIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8K Y2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBp bgogIHllczpubyApCiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJO SU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJl amVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKZWNobyAiJGFzX21l OiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGls ZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQogICAg eyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjog cHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4m NQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRp bmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQogICAg KAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBidWctYXV0 b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNlZCAicy9e LyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKICBubzp5ZXMg KQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKZWNo byAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBj YW5ub3QgYmUgY29tcGlsZWQiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTok TElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBjaGVjayBmb3IgbWlzc2lu ZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQplY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVp c2l0ZSBoZWFkZXJzPyIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5F Tk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUg cHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJO SU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nl c3NvcidzIHJlc3VsdCIgPiYyO30KICAgICgKICAgICAgY2F0IDw8XF9BU0JP WAojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK IyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNC T1gKICAgICkgfAogICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAg ICAvIiA+JjIKICAgIDs7CmVzYWMKZWNobyAiJGFzX21lOiRMSU5FTk86IGNo ZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVj a2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAi dGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgog IGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBl dmFsICIkYXNfYWNfSGVhZGVyPSRhY19oZWFkZXJfcHJlcHJvYyIKZmkKZWNo byAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFz X2FjX0hlYWRlcid9J2AiID4mNQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hv ICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CgpmaQppZiB0ZXN0IGBldmFs IGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCiAgY2F0 ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIGBlY2hvICJIQVZFXyRh Y19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgog ICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzZ2VtbSBp biAtbGJsYXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzZ2Vt bSBpbiAtbGJsYXMuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3Zf bGliX2JsYXNfc2dlbW0rc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hP X04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgYWNfY2hlY2tfbGli X3NhdmVfTElCUz0kTElCUwpMSUJTPSItbGJsYXMgICRMSUJTIgpjYXQgPmNv bmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmln dXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5o ID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8 X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCi8qIE92ZXJyaWRlIGFu eSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4g ICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCiNlbmRpZgovKiBX ZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu IHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3Vt ZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgc2dl bW0gKCk7CmludAptYWluICgpCnsKc2dlbW0gKCk7CiAgOwogIHJldHVybiAw Owp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 JGFjX2V4ZWV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBc IiRhY19saW5rXCIiKSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgeyAo ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUK ICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0 ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfbGliX2JsYXNfc2dl bW09eWVzCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdh czoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Cgph Y19jdl9saWJfYmxhc19zZ2VtbT1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CkxJ QlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKZmkKZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogJGFjX2N2X2xpYl9ibGFzX3NnZW1tIiA+JjUKZWNo byAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9ibGFzX3NnZW1tIiA+JjYKaWYgdGVz dCAkYWNfY3ZfbGliX2JsYXNfc2dlbW0gPSB5ZXM7IHRoZW4KCmNhdCA+PmNv bmZkZWZzLmggPDxcX0FDRU9GCiNkZWZpbmUgSEFWRV9MSUJCTEFTCl9BQ0VP RgoKCQkgICBMSUJTPSItbGJsYXMgJExJQlMiCgkJICAgZGVmYXVsdF9tbHAz X2JsYXM9dHJ1ZQplbHNlCiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBl cnJvcjogY291bGQgbm90IGZpbmQgdGhlIGJsYXMgbGlicmFyeQpTZWUgXGBj b25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1CmVjaG8gIiRhc19t ZTogZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRoZSBibGFzIGxpYnJhcnkKU2Vl IFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9CiAgIHsg KGV4aXQgMSk7IGV4aXQgMTsgfTsgfQpmaQoKICAgIDs7CiAgY2JsYXMpCgpm b3IgYWNfaGVhZGVyIGluIGNibGFzLmgKZG8KYXNfYWNfSGVhZGVyPWBlY2hv ICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCmlmIGV2 YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRo ZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19o ZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVh ZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2Fj X0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4m NQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVy J30nYCIgPiY2CmVsc2UKICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8K ZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgdXNh YmlsaXR5IiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNfaGVhZGVy IHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKY2F0ID5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29u ZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0 LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBl bmQgY29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CiNpbmNs dWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2hlYWRlcl9jb21waWxl cj15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFj X2hlYWRlcl9jb21waWxlcj1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFzX21lOiRMSU5FTk86IHJl c3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1CmVjaG8gIiR7RUNIT19U fSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgoKIyBJcyB0aGUgaGVhZGVyIHBy ZXNlbnQ/CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVh ZGVyIHByZXNlbmNlIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNf aGVhZGVyIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgov KiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29u ZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPCRhY19oZWFkZXI+ Cl9BQ0VPRgppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgKGV2YWwgJGFjX2Nw cCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQogIGFjX3N0YXR1 cz0kPwogIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3Qu ZXJyCiAgcm0gLWYgY29uZnRlc3QuZXIxCiAgY2F0IGNvbmZ0ZXN0LmVyciA+ JjUKICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgog IGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICBhY19jcHBfZXJy PSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCiAgZWxzZQogICAgYWNfY3BwX2Vy cj0KICBmaQplbHNlCiAgYWNfY3BwX2Vycj15ZXMKZmkKaWYgdGVzdCAteiAi JGFjX2NwcF9lcnIiOyB0aGVuCiAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCmVs c2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgogIGFjX2hlYWRl cl9wcmVwcm9jPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfZXh0CmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFk ZXJfcHJlcHJvYyIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJl cHJvYyIgPiY2CgojIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KY2Fz ZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgog IHllczpubyApCiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVj dGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIs IHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQogICAgeyBl Y2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJv Y2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQpl Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcg d2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQogICAgKAog ICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2Nv bmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNlZCAicy9eLyRh c19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKICBubzp5ZXMgKQog ICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRl cjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKZWNobyAi JGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5u b3QgYmUgY29tcGlsZWQiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElO RU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBjaGVjayBmb3IgbWlzc2luZyBw cmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQplY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0 ZSBoZWFkZXJzPyIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJl cHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3Nv cidzIHJlc3VsdCIgPiYyO30KICAgICgKICAgICAgY2F0IDw8XF9BU0JPWAoj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMg UmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNCT1gK ICAgICkgfAogICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAv IiA+JjIKICAgIDs7CmVzYWMKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNr aW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2lu ZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAidGVz dCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBldmFs ICIkYXNfYWNfSGVhZGVyPSRhY19oZWFkZXJfcHJlcHJvYyIKZmkKZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2Fj X0hlYWRlcid9J2AiID4mNQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICck eyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CgpmaQppZiB0ZXN0IGBldmFsIGVj aG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCiAgY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIGBlY2hvICJIQVZFXyRhY19o ZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgogICAg ZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBjYmxhc19zZ2Vt bSBpbiAtbGNibGFzIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Ig Y2JsYXNfc2dlbW0gaW4gLWxjYmxhcy4uLiAkRUNIT19DIiA+JjYKaWYgdGVz dCAiJHthY19jdl9saWJfY2JsYXNfY2JsYXNfc2dlbW0rc2V0fSIgPSBzZXQ7 IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpl bHNlCiAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpMSUJTPSItbGNi bGFzICAkTElCUyIKY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNs aW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9B Q0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4g ICovCgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYgX19jcGx1c3BsdXMKZXh0 ZXJuICJDIgojZW5kaWYKLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWln aHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwg YXBwbHkuICAqLwpjaGFyIGNibGFzX3NnZW1tICgpOwppbnQKbWFpbiAoKQp7 CmNibGFzX3NnZW1tICgpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0g LWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikg PiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAg KGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rl c3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3Ry eSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsg fTsgfTsgdGhlbgogIGFjX2N2X2xpYl9jYmxhc19jYmxhc19zZ2VtbT15ZXMK ZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1 CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xp Yl9jYmxhc19jYmxhc19zZ2VtbT1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CkxJ QlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKZmkKZWNobyAiJGFzX21lOiRM SU5FTk86IHJlc3VsdDogJGFjX2N2X2xpYl9jYmxhc19jYmxhc19zZ2VtbSIg PiY1CmVjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfY2JsYXNfY2JsYXNfc2dl bW0iID4mNgppZiB0ZXN0ICRhY19jdl9saWJfY2JsYXNfY2JsYXNfc2dlbW0g PSB5ZXM7IHRoZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCiNkZWZp bmUgSEFWRV9MSUJDQkxBUwpfQUNFT0YKCgpjYXQgPj5jb25mZGVmcy5oIDw8 XF9BQ0VPRgojZGVmaW5lIEhBVkVfTElCQkxBUwpfQUNFT0YKCgkJICBMSUJT PSItbGNibGFzICRMSUJTIgoJCSAgZGVmYXVsdF9tbHAzX2JsYXM9dHJ1ZQpl bHNlCiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY291bGQg bm90IGZpbmQgdGhlIGNibGFzIGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycg Zm9yIG1vcmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBj b3VsZCBub3QgZmluZCB0aGUgY2JsYXMgbGlicmFyeQpTZWUgXGBjb25maWcu bG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KICAgeyAoZXhpdCAxKTsg ZXhpdCAxOyB9OyB9CmZpCgogICAgOzsKICBhdGxhcykKCmZvciBhY19oZWFk ZXIgaW4gY2JsYXMuaApkbwphc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hl YWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKaWYgZXZhbCAidGVzdCBc IlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8g IiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVD SE9fQyIgPiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3Nl dH1cIiA9IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRF Q0hPX0MiID4mNgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBg ZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7 RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYK ZWxzZQogICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwplY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4m NQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5 Li4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNF T0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAg Ki8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApj YXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVm cy5oLiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKI2luY2x1ZGUgPCRhY19o ZWFkZXI+Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIp ID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/ CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m NQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5 PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAk YWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9OyB9OyB0aGVuCiAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfaGVhZGVyX2Nv bXBpbGVyPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNf aGVhZGVyX2NvbXBpbGVyIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRl cl9jb21waWxlciIgPiY2CgojIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2Vu Y2UiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJl c2VuY2UuLi4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8 PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZz LmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNf ZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNv bmZkZWZzLmguICAqLwojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCmlm IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25m dGVzdC4kYWNfZXh0XCIiKSA+JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0 LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3Jl cCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAt ZiBjb25mdGVzdC5lcjEKICBjYXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAt cyBjb25mdGVzdC5lcnI7IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJl cHJvY193YXJuX2ZsYWcKICBlbHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVs c2UKICBhY19jcHBfZXJyPXllcwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2Vy ciI7IHRoZW4KICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKZWxzZQogIGVjaG8g IiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wg LycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCiAgYWNfaGVhZGVyX3ByZXByb2M9 bm8KZmkKcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKZWNo byAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9j IiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYK CiMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwpjYXNlICRhY19oZWFk ZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCiAgeWVzOm5vICkK ICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFk ZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhl IHByZXByb2Nlc3NvciEiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRh Y19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQg YnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CiAgICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdp dGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19t ZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBw cmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8 PFxfQVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3Jn LiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g IyMKX0FTQk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJO SU5HOiAgICAgLyIgPiYyCiAgICA7OwogIG5vOnllcyApCiAgICB7IGVjaG8g IiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50 IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQplY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21w aWxlZCIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J Tkc6ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0 ZSBoZWFkZXJzPyIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hl YWRlcjogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/ IiA+JjI7fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzog JGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3In cyByZXN1bHQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFk ZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0 IiA+JjI7fQogICAgKAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhp cyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAg ICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAg OzsKZXNhYwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRh Y19oZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNf aGVhZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFz X2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19O ICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGV2YWwgIiRhc19hY19I ZWFkZXI9JGFjX2hlYWRlcl9wcmVwcm9jIgpmaQplY2hvICIkYXNfbWU6JExJ TkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30n YCIgPiY1CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19I ZWFkZXInfSdgIiA+JjYKCmZpCmlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFz X2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KICBjYXQgPj5jb25mZGVmcy5o IDw8X0FDRU9GCiNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAk YXNfdHJfY3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCgplY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgZm9yIEFUTF9idWlsZGluZm8gaW4gLWxhdGxh cyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEFUTF9idWlsZGlu Zm8gaW4gLWxhdGxhcy4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19j dl9saWJfYXRsYXNfQVRMX2J1aWxkaW5mbytzZXR9IiA9IHNldDsgdGhlbgog IGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBh Y19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1sYXRsYXMgICRM SUJTIgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJ TkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNh dCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVz dC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCi8q IE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p ZCBhbiBlcnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMi CiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4gYW5kIHRo ZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g ICovCmNoYXIgQVRMX2J1aWxkaW5mbyAoKTsKaW50Cm1haW4gKCkKewpBVExf YnVpbGRpbmZvICgpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYgeyAo ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1 CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4 aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3Qg LXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21l OiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkg Mj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBc JD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsg fTsgdGhlbgogIGFjX2N2X2xpYl9hdGxhc19BVExfYnVpbGRpbmZvPXllcwpl bHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUK c2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfbGli X2F0bGFzX0FUTF9idWlsZGluZm89bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApM SUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCmZpCmVjaG8gIiRhc19tZTok TElORU5POiByZXN1bHQ6ICRhY19jdl9saWJfYXRsYXNfQVRMX2J1aWxkaW5m byIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfYXRsYXNfQVRMX2J1 aWxkaW5mbyIgPiY2CmlmIHRlc3QgJGFjX2N2X2xpYl9hdGxhc19BVExfYnVp bGRpbmZvID0geWVzOyB0aGVuCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP RgojZGVmaW5lIEhBVkVfTElCQVRMQVMgMQpfQUNFT0YKCiAgTElCUz0iLWxh dGxhcyAkTElCUyIKCmVsc2UKICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IGVycm9yOiBjb3VsZCBub3QgZmluZCB0aGUgYXRsYXMgbGlicmFyeQpTZWUg XGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1CmVjaG8gIiRh c19tZTogZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRoZSBhdGxhcyBsaWJyYXJ5 ClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQog ICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KZmkKCiAgICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGNibGFzX3NnZW1tIGluIC1sY2Js YXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBjYmxhc19zZ2Vt bSBpbiAtbGNibGFzLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2 X2xpYl9jYmxhc19jYmxhc19zZ2VtbStzZXR9IiA9IHNldDsgdGhlbgogIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19j aGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1sY2JsYXMgICRMSUJT IgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVO TyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBj b25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4k YWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCi8qIE92 ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCiNl bmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0 aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4gYW5kIHRoZW4g aXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICov CmNoYXIgY2JsYXNfc2dlbW0gKCk7CmludAptYWluICgpCnsKY2JsYXNfc2dl bW0gKCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAppZiB7IChldmFsIGVj aG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKICAoZXZh bCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25m dGVzdCRhY19leGVleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVO TzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAg YWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRh Y19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVu CiAgYWNfY3ZfbGliX2NibGFzX2NibGFzX3NnZW1tPXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfbGliX2NibGFzX2Ni bGFzX3NnZW1tPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElCUz0kYWNfY2hl Y2tfbGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiAkYWNfY3ZfbGliX2NibGFzX2NibGFzX3NnZW1tIiA+JjUKZWNobyAi JHtFQ0hPX1R9JGFjX2N2X2xpYl9jYmxhc19jYmxhc19zZ2VtbSIgPiY2Cmlm IHRlc3QgJGFjX2N2X2xpYl9jYmxhc19jYmxhc19zZ2VtbSA9IHllczsgdGhl bgoKY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBIQVZFX0xJ QkNCTEFTCl9BQ0VPRgoKCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCiNk ZWZpbmUgSEFWRV9MSUJCTEFTCl9BQ0VPRgoKCQkgICBMSUJTPSItbGNibGFz ICRMSUJTIgoJCSAgIGRlZmF1bHRfbWxwM19ibGFzPXRydWUKZWxzZQogIHsg eyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNvdWxkIG5vdCBmaW5k IHRoZSBjYmxhcyBsaWJyYXJ5ClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3Jl IGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY291bGQgbm90 IGZpbmQgdGhlIGNibGFzIGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscy4iID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsg fTsgfQpmaQoKICAgIDs7CiAgcHRhdGxhcykKCmZvciBhY19oZWFkZXIgaW4g Y2JsYXMuaApkbwphc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8k YWNfaGVhZGVyIiB8ICRhc190cl9zaGAKaWYgZXZhbCAidGVzdCBcIlwkeyRh c19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIg PiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9 IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0Mi ID4mNgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBl Y2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19U fWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKZWxzZQog ICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwplY2hvICIkYXNfbWU6JExJ TkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4mNQplY2hv ICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5Li4uICRF Q0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xp bmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FD RU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5j b25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKI2luY2x1ZGUgPCRhY19oZWFkZXI+ Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQog IChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0 IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5 KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 OyB9OyB0aGVuCiAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfaGVhZGVyX2NvbXBpbGVy PW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVy X2NvbXBpbGVyIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21w aWxlciIgPiY2CgojIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KZWNobyAiJGFz X21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UiID4m NQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2Uu Li4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VP RgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAq LwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNh dCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZz LmguICAqLwojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4k YWNfZXh0XCIiKSA+JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l eHQpIDI+Y29uZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAtdiAn XiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAtZiBjb25m dGVzdC5lcjEKICBjYXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBjb25m dGVzdC5lcnI7IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193 YXJuX2ZsYWcKICBlbHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVsc2UKICBh Y19jcHBfZXJyPXllcwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRo ZW4KICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKZWxzZQogIGVjaG8gIiRhc19t ZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29u ZnRlc3QuJGFjX2V4dCA+JjUKCiAgYWNfaGVhZGVyX3ByZXByb2M9bm8KZmkK cm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUK ZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKCiMgU28/ ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwpjYXNlICRhY19oZWFkZXJfY29t cGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCiAgeWVzOm5vICkKICAgIHsg ZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFj Y2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXBy b2Nlc3NvciEiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFk ZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhl IHByZXByb2Nlc3NvciEiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElO RU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhl IHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19tZTogV0FS TklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9j ZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8PFxfQVNC T1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj CiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwoj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKX0FT Qk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAg ICAgLyIgPiYyCiAgICA7OwogIG5vOnllcyApCiAgICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBj YW5ub3QgYmUgY29tcGlsZWQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIg PiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRh Y19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk ZXJzPyIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjog Y2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7 fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1 bHQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHBy b2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7 fQogICAgKAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBi dWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNl ZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKZXNh YwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFk ZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVy Li4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hl YWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2Fj aGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGV2YWwgIiRhc19hY19IZWFkZXI9 JGFjX2hlYWRlcl9wcmVwcm9jIgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1 CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXIn fSdgIiA+JjYKCmZpCmlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hl YWRlcid9J2AgPSB5ZXM7IHRoZW4KICBjYXQgPj5jb25mZGVmcy5oIDw8X0FD RU9GCiNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJf Y3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCgplY2hvICIkYXNfbWU6JExJTkVO TzogY2hlY2tpbmcgZm9yIEFUTF9idWlsZGluZm8gaW4gLWxhdGxhcyIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEFUTF9idWlsZGluZm8gaW4g LWxhdGxhcy4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9saWJf YXRsYXNfQVRMX2J1aWxkaW5mbytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8g JEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVj a19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1sYXRsYXMgICRMSUJTIgpj YXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAi Y29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25m ZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCi8qIE92ZXJy aWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl cnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCiNlbmRp ZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRz IGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNo YXIgQVRMX2J1aWxkaW5mbyAoKTsKaW50Cm1haW4gKCkKewpBVExfYnVpbGRp bmZvICgpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYgeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1CiAgKGV2 YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29u ZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQog IGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhl bgogIGFjX2N2X2xpYl9hdGxhc19BVExfYnVpbGRpbmZvPXllcwplbHNlCiAg ZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdz L14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfbGliX2F0bGFz X0FUTF9idWlsZGluZm89bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRh Y19jaGVja19saWJfc2F2ZV9MSUJTCmZpCmVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRhY19jdl9saWJfYXRsYXNfQVRMX2J1aWxkaW5mbyIgPiY1 CmVjaG8gIiR7RUNIT19UfSRhY19jdl9saWJfYXRsYXNfQVRMX2J1aWxkaW5m byIgPiY2CmlmIHRlc3QgJGFjX2N2X2xpYl9hdGxhc19BVExfYnVpbGRpbmZv ID0geWVzOyB0aGVuCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm aW5lIEhBVkVfTElCQVRMQVMgMQpfQUNFT0YKCiAgTElCUz0iLWxhdGxhcyAk TElCUyIKCmVsc2UKICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9y OiBjb3VsZCBub3QgZmluZCB0aGUgYXRsYXMgbGlicmFyeQpTZWUgXGBjb25m aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1CmVjaG8gIiRhc19tZTog ZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRoZSBhdGxhcyBsaWJyYXJ5ClNlZSBc YGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQogICB7IChl eGl0IDEpOyBleGl0IDE7IH07IH0KZmkKCgplY2hvICIkYXNfbWU6JExJTkVO TzogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZCIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRl IGluIC1scHRocmVhZC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19j dl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZStzZXR9IiA9IHNldDsgdGhl bgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UK ICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1scHRocmVh ZCAgJExJQlMiCmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGlu ZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNF T0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNv bmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAq LwoKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRv IGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVy biAiQyIKI2VuZGlmCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0 IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgYnVpbHRpbiBh bmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFw cGx5LiAgKi8KY2hhciBwdGhyZWFkX2NyZWF0ZSAoKTsKaW50Cm1haW4gKCkK ewpwdGhyZWFkX2NyZWF0ZSAoKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9G CnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0 CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtc IiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/ CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m NQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5 PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8g IiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRh Y190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1 cyk7IH07IH07IHRoZW4KICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2Ny ZWF0ZT15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0g d2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK CmFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfY3JlYXRlPW5vCmZpCnJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQKTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwpmaQpl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX3B0aHJl YWRfcHRocmVhZF9jcmVhdGUiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3Zf bGliX3B0aHJlYWRfcHRocmVhZF9jcmVhdGUiID4mNgppZiB0ZXN0ICRhY19j dl9saWJfcHRocmVhZF9wdGhyZWFkX2NyZWF0ZSA9IHllczsgdGhlbgogIGNh dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0xJQlBUSFJF QUQgMQpfQUNFT0YKCiAgTElCUz0iLWxwdGhyZWFkICRMSUJTIgoKZWxzZQog IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNvdWxkIG5vdCBm aW5kIHRoZSBwdGhyZWFkIGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjb3Vs ZCBub3QgZmluZCB0aGUgcHRocmVhZCBsaWJyYXJ5ClNlZSBcYGNvbmZpZy5s b2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQogICB7IChleGl0IDEpOyBl eGl0IDE7IH07IH0KZmkKCiAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgZm9yIGNibGFzX3NnZW1tIGluIC1scHRjYmxhcyIgPiY1CmVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgZm9yIGNibGFzX3NnZW1tIGluIC1scHRjYmxh cy4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9saWJfcHRjYmxh c19jYmxhc19zZ2VtbStzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9f TiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJf c2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1scHRjYmxhcyAgJExJQlMiCmNhdCA+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25m aWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZz LmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUg YW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y LiAgKi8KI2lmZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIKI2VuZGlmCi8q IFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1 cm4gdHlwZSBvZiBhIGdjYzIKICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJn dW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBj Ymxhc19zZ2VtbSAoKTsKaW50Cm1haW4gKCkKewpjYmxhc19zZ2VtbSAoKTsK ICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChldmFsICRhY19s aW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFj X2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19j dl9saWJfcHRjYmxhc19jYmxhc19zZ2VtbT15ZXMKZWxzZQogIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycg Y29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xpYl9wdGNibGFzX2NibGFz X3NnZW1tPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElCUz0kYWNfY2hlY2tf bGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkYWNfY3ZfbGliX3B0Y2JsYXNfY2JsYXNfc2dlbW0iID4mNQplY2hvICIk e0VDSE9fVH0kYWNfY3ZfbGliX3B0Y2JsYXNfY2JsYXNfc2dlbW0iID4mNgpp ZiB0ZXN0ICRhY19jdl9saWJfcHRjYmxhc19jYmxhc19zZ2VtbSA9IHllczsg dGhlbgoKY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBIQVZF X0xJQkNCTEFTCl9BQ0VPRgoKCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9G CiNkZWZpbmUgSEFWRV9MSUJCTEFTCl9BQ0VPRgoKCQkgIExJQlM9Ii1scHRj YmxhcyAkTElCUyIKCQkgIGRlZmF1bHRfbWxwM19ibGFzPXRydWUKZWxzZQog IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNvdWxkIG5vdCBm aW5kIHRoZSBwdGNibGFzIGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycgZm9y IG1vcmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjb3Vs ZCBub3QgZmluZCB0aGUgcHRjYmxhcyBsaWJyYXJ5ClNlZSBcYGNvbmZpZy5s b2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQogICB7IChleGl0IDEpOyBl eGl0IDE7IH07IH0KZmkKCiAgICA7OwogIGVzc2wpCgpmb3IgYWNfaGVhZGVy IGluIGVzc2wuaApkbwphc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRl cl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKaWYgZXZhbCAidGVzdCBcIlwk eyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVj aG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9f QyIgPiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1c IiA9IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hP X0MiID4mNgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZh bCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNI T19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKZWxz ZQogICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwplY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4mNQpl Y2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5Li4u ICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YK I2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8K X0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQg Pj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5o LiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKI2luY2x1ZGUgPCRhY19oZWFk ZXI+Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4m NQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0 ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNf dHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9OyB9OyB0aGVuCiAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwplbHNlCiAg ZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdz L14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfaGVhZGVyX2NvbXBp bGVyPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu JGFjX2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVh ZGVyX2NvbXBpbGVyIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9j b21waWxlciIgPiY2CgojIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KZWNobyAi JGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2Ui ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2Vu Y2UuLi4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmgu ICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0 CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZk ZWZzLmguICAqLwojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCmlmIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVz dC4kYWNfZXh0XCIiKSA+JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRh Y19leHQpIDI+Y29uZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAt diAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAtZiBj b25mdGVzdC5lcjEKICBjYXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAk YWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBj b25mdGVzdC5lcnI7IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJv Y193YXJuX2ZsYWcKICBlbHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVsc2UK ICBhY19jcHBfZXJyPXllcwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7 IHRoZW4KICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKZWxzZQogIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycg Y29uZnRlc3QuJGFjX2V4dCA+JjUKCiAgYWNfaGVhZGVyX3ByZXByb2M9bm8K ZmkKcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKCiMg U28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwpjYXNlICRhY19oZWFkZXJf Y29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCiAgeWVzOm5vICkKICAg IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6 IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHBy ZXByb2Nlc3NvciEiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19o ZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkg dGhlIHByZXByb2Nlc3NvciEiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTok TElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGgg dGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19tZTog V0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVw cm9jZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8PFxf QVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAj IwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK X0FTQk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5H OiAgICAgLyIgPiYyCiAgICA7OwogIG5vOnllcyApCiAgICB7IGVjaG8gIiRh c19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1 dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxl ZCIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6 ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBo ZWFkZXJzPyIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRl cjogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+ JjI7fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFj X2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyBy ZXN1bHQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6 IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+ JjI7fQogICAgKAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0 byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAg IHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsK ZXNhYwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19o ZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVh ZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2Fj X0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGV2YWwgIiRhc19hY19IZWFk ZXI9JGFjX2hlYWRlcl9wcmVwcm9jIgpmaQplY2hvICIkYXNfbWU6JExJTkVO TzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIg PiY1CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFk ZXInfSdgIiA+JjYKCmZpCmlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2Fj X0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KICBjYXQgPj5jb25mZGVmcy5oIDw8 X0FDRU9GCiNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNf dHJfY3BwYCAxCl9BQ0VPRgoKZWxzZQogIHsgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogZXJyb3I6IGNvdWxkIG5vdCBmaW5kIGVzc2wuaApTZWUgXGBjb25m aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1CmVjaG8gIiRhc19tZTog ZXJyb3I6IGNvdWxkIG5vdCBmaW5kIGVzc2wuaApTZWUgXGBjb25maWcubG9n JyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhp dCAxOyB9OyB9CmZpCgpkb25lCgogICAgTElCUz0iLWxlc3NsIC1seGxmOTBf ciAtbHhsb21wX3NlciAtbHhsZm1hdGggJExJQlMiCiAgICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHNnZW1tIGluIC1sZXNzbCIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNnZW1tIGluIC1sZXNzbC4u LiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9saWJfZXNzbF9zZ2Vt bStzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkg JEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRM SUJTCkxJQlM9Ii1sZXNzbCAgJExJQlMiCmNhdCA+Y29uZnRlc3QuJGFjX2V4 dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZk ZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4k YWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5k IGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJu YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9f Y3BsdXNwbHVzCmV4dGVybiAiQyIKI2VuZGlmCi8qIFdlIHVzZSBjaGFyIGJl Y2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdj YzIKICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBl IHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBzZ2VtbSAoKTsKaW50Cm1h aW4gKCkKewpzZ2VtbSAoKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJt IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Cmlm IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIp ID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0 ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRh c19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190 cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7 IH07IH07IHRoZW4KICBhY19jdl9saWJfZXNzbF9zZ2VtbT15ZXMKZWxzZQog IGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAn cy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2xpYl9lc3Ns X3NnZW1tPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKTElCUz0kYWNfY2hlY2tf bGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkYWNfY3ZfbGliX2Vzc2xfc2dlbW0iID4mNQplY2hvICIke0VDSE9fVH0k YWNfY3ZfbGliX2Vzc2xfc2dlbW0iID4mNgppZiB0ZXN0ICRhY19jdl9saWJf ZXNzbF9zZ2VtbSA9IHllczsgdGhlbgoKY2F0ID4+Y29uZmRlZnMuaCA8PFxf QUNFT0YKI2RlZmluZSBIQVZFX0xJQkJMQVMKX0FDRU9GCgoKY2F0ID4+Y29u ZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBIQVZFX0xJQkVTU0wKX0FDRU9G CgoJCSAgZGVmYXVsdF9tbHAzX2JsYXM9dHJ1ZQplbHNlCiAgeyB7IGVjaG8g IiRhc19tZTokTElORU5POiBlcnJvcjogY291bGQgbm90IGZpbmQgdGhlIGVz c2wgbGlicmFyeQpTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxz LiIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRo ZSBlc3NsIGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0 YWlscy4iID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQpmaQoK ICAgIDs7CiAgZXNzbHNtcCkKCmZvciBhY19oZWFkZXIgaW4gZXNzbC5oCmRv CmFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIi IHwgJGFzX3RyX3NoYAppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRl citzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKZWNobyAkRUNIT19OICJj aGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKaWYgZXZh bCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhl bgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmZpCmVj aG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRh c19hY19IZWFkZXInfSdgIiA+JjUKZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNo byAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgplbHNlCiAgIyBJcyB0aGUg aGVhZGVyIGNvbXBpbGFibGU/CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVj a2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eSIgPiY1CmVjaG8gJEVDSE9fTiAi Y2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkuLi4gJEVDSE9fQyIgPiY2 CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5P ICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNv bmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5j bHVkZXNfZGVmYXVsdAojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCnJt IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwgJGFj X2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0 YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRl c3QuJGFjX29iamV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P OiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4K ICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCmVsc2UKICBlY2hvICIkYXNfbWU6 IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0 ZXN0LiRhY19leHQgPiY1CgphY19oZWFkZXJfY29tcGlsZXI9bm8KZmkKcm0g LWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmVjaG8g IiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIi ID4mNQplY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYK CiMgSXMgdGhlIGhlYWRlciBwcmVzZW50PwplY2hvICIkYXNfbWU6JExJTkVO TzogY2hlY2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZSIgPiY1CmVjaG8gJEVD SE9fTiAiY2hlY2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZS4uLiAkRUNIT19D IiA+JjYKY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRM SU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpj YXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiNp bmNsdWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YKaWYgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIp ID4mNQogIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25m dGVzdC5lcjEKICBhY19zdGF0dXM9JD8KICBncmVwIC12ICdeICorJyBjb25m dGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgogIHJtIC1mIGNvbmZ0ZXN0LmVyMQog IGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 ID4vZGV2L251bGw7IHRoZW4KICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsg dGhlbgogICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwog IGVsc2UKICAgIGFjX2NwcF9lcnI9CiAgZmkKZWxzZQogIGFjX2NwcF9lcnI9 eWVzCmZpCmlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgogIGFjX2hl YWRlcl9wcmVwcm9jPXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQg cHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNf ZXh0ID4mNQoKICBhY19oZWFkZXJfcHJlcHJvYz1ubwpmaQpybSAtZiBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAplY2hvICIkYXNfbWU6JExJTkVO TzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQplY2hvICIke0VD SE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgoKIyBTbz8gIFdoYXQgYWJv dXQgdGhpcyBoZWFkZXI/CmNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNf aGVhZGVyX3ByZXByb2MgaW4KICB5ZXM6bm8gKQogICAgeyBlY2hvICIkYXNf bWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogYWNjZXB0ZWQgYnkg dGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIg PiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogYWNjZXB0 ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vz c29yISIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J Tkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vz c29yJ3MgcmVzdWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf aGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJl c3VsdCIgPiYyO30KICAgICgKICAgICAgY2F0IDw8XF9BU0JPWAojIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgUmVwb3J0 IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNCT1gKICAgICkg fAogICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIK ICAgIDs7CiAgbm86eWVzICkKICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBj b21waWxlZCIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRl cjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQogICAg eyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjog Y2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUK ZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBjaGVjayBmb3Ig bWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9CiAgICB7IGVj aG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9j ZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVj aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3 aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAg ICAgIGNhdCA8PFxfQVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29u ZkBnbnUub3JnLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gIyMKX0FTQk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFz X21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICA7Owplc2FjCmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVj aG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9f QyIgPiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1c IiA9IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hP X0MiID4mNgplbHNlCiAgZXZhbCAiJGFzX2FjX0hlYWRlcj0kYWNfaGVhZGVy X3ByZXByb2MiCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBl dmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKZWNobyAiJHtF Q0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoK ZmkKaWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9 IHllczsgdGhlbgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmlu ZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKX0FD RU9GCgplbHNlCiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjog Y291bGQgbm90IGZpbmQgZXNzbC5oClNlZSBcYGNvbmZpZy5sb2cnIGZvciBt b3JlIGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY291bGQg bm90IGZpbmQgZXNzbC5oClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRl dGFpbHMuIiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KZmkK CmRvbmUKCiAgICBMSUJTPSItbGVzc2xzbXAgLWx4bGY5MF9yIC1seGxzbXAg LWx4bGZtYXRoICRMSUJTIgogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNo ZWNraW5nIGZvciBzZ2VtbSBpbiAtbGVzc2xzbXAiID4mNQplY2hvICRFQ0hP X04gImNoZWNraW5nIGZvciBzZ2VtbSBpbiAtbGVzc2xzbXAuLi4gJEVDSE9f QyIgPiY2CmlmIHRlc3QgIiR7YWNfY3ZfbGliX2Vzc2xzbXBfc2dlbW0rc2V0 fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hP X0MiID4mNgplbHNlCiAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpM SUJTPSItbGVzc2xzbXAgICRMSUJTIgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVm cy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFj X2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBj b25mZGVmcy5oLiAgKi8KCi8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFs IHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiNpZmRlZiBfX2Nw bHVzcGx1cwpleHRlcm4gIkMiCiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNh dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2My CiAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3 b3VsZCBzdGlsbCBhcHBseS4gICovCmNoYXIgc2dlbW0gKCk7CmludAptYWlu ICgpCnsKc2dlbW0gKCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAt ZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAppZiB7 IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+ JjUKICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVj aG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAo ZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVz dCAtcyBjb25mdGVzdCRhY19leGVleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5 KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 OyB9OyB0aGVuCiAgYWNfY3ZfbGliX2Vzc2xzbXBfc2dlbW09eWVzCmVsc2UK ICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQg J3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9saWJfZXNz bHNtcF9zZ2VtbT1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CkxJQlM9JGFjX2No ZWNrX2xpYl9zYXZlX0xJQlMKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJl c3VsdDogJGFjX2N2X2xpYl9lc3Nsc21wX3NnZW1tIiA+JjUKZWNobyAiJHtF Q0hPX1R9JGFjX2N2X2xpYl9lc3Nsc21wX3NnZW1tIiA+JjYKaWYgdGVzdCAk YWNfY3ZfbGliX2Vzc2xzbXBfc2dlbW0gPSB5ZXM7IHRoZW4KCmNhdCA+PmNv bmZkZWZzLmggPDxcX0FDRU9GCiNkZWZpbmUgSEFWRV9MSUJCTEFTCl9BQ0VP RgoKCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCiNkZWZpbmUgSEFWRV9M SUJFU1NMCl9BQ0VPRgoKCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCiNk ZWZpbmUgSEFWRV9MSUJFU1NMU01QCl9BQ0VPRgoKCmZvciBhY19oZWFkZXIg aW4gb21wLmgKZG8KYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJf JGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCmlmIGV2YWwgInRlc3QgXCJcJHsk YXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQplY2hv ICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0Mi ID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIg PSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwg ZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQplY2hvICIke0VDSE9f VH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CmVsc2UK ICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5IiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eS4uLiAk RUNIT19DIiA+JjYKY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNs aW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9B Q0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4g ICovCiRhY19pbmNsdWRlc19kZWZhdWx0CiNpbmNsdWRlIDwkYWNfaGVhZGVy PgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAppZiB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUK ICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVj aG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAo ZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVz dCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3Ry eSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsg fTsgfTsgdGhlbgogIGFjX2hlYWRlcl9jb21waWxlcj15ZXMKZWxzZQogIGVj aG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9e L3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2hlYWRlcl9jb21waWxl cj1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh Y19leHQKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRl cl9jb21waWxlciIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfY29t cGlsZXIiID4mNgoKIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/CmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVhZGVyIHByZXNlbmNlIiA+ JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNfaGVhZGVyIHByZXNlbmNl Li4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNF T0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAg Ki8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApj YXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVm cy5oLiAgKi8KI2luY2x1ZGUgPCRhY19oZWFkZXI+Cl9BQ0VPRgppZiB7IChl dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3Qu JGFjX2V4dFwiIikgPiY1CiAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNf ZXh0KSAyPmNvbmZ0ZXN0LmVyMQogIGFjX3N0YXR1cz0kPwogIGdyZXAgLXYg J14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCiAgcm0gLWYgY29u ZnRlc3QuZXIxCiAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgogIGlmIHRlc3QgLXMgY29u ZnRlc3QuZXJyOyB0aGVuCiAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nf d2Fybl9mbGFnCiAgZWxzZQogICAgYWNfY3BwX2Vycj0KICBmaQplbHNlCiAg YWNfY3BwX2Vycj15ZXMKZmkKaWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0 aGVuCiAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCmVsc2UKICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNv bmZ0ZXN0LiRhY19leHQgPiY1CgogIGFjX2hlYWRlcl9wcmVwcm9jPW5vCmZp CnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CmVjaG8gIiRh c19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1 CmVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2CgojIFNv PyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KY2FzZSAkYWNfaGVhZGVyX2Nv bXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgogIHllczpubyApCiAgICB7 IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBh Y2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVw cm9jZXNzb3IhIiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVh ZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRo ZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQogICAgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRo ZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQplY2hvICIkYXNfbWU6IFdB Uk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJv Y2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQogICAgKAogICAgICBjYXQgPDxcX0FT Qk9YCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj IwojIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMK IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCl9B U0JPWAogICAgKSB8CiAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzog ICAgIC8iID4mMgogICAgOzsKICBubzp5ZXMgKQogICAgeyBlY2hvICIkYXNf bWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQg Y2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQi ID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAk YWNfaGVhZGVyOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVh ZGVycz8iID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6 IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYy O30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19o ZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVz dWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBw cm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYy O30KICAgICgKICAgICAgY2F0IDw8XF9BU0JPWAojIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgUmVwb3J0IHRoaXMgdG8g YnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNCT1gKICAgICkgfAogICAgICBz ZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgIDs7CmVz YWMKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVh ZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRl ci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19I ZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBldmFsICIkYXNfYWNfSGVhZGVy PSRhY19oZWFkZXJfcHJlcHJvYyIKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4m NQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVy J30nYCIgPiY2CgpmaQppZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19I ZWFkZXInfSdgID0geWVzOyB0aGVuCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgojZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3Ry X2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgoKCgpmb3IgYWNfZnVuYyBpbiBv bXBfZ2V0X21heF90aHJlYWRzIG9tcF9zZXRfbnVtX3RocmVhZHMgb21wX2dl dF9udW1fdGhyZWFkcwpkbwphc19hY192YXI9YGVjaG8gImFjX2N2X2Z1bmNf JGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAplY2hvICIkYXNfbWU6JExJTkVOTzog Y2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKZWNobyAkRUNIT19OICJjaGVj a2luZyBmb3IgJGFjX2Z1bmMuLi4gJEVDSE9fQyIgPiY2CmlmIGV2YWwgInRl c3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNldCI7IHRoZW4KICBlY2hv ICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgY2F0ID5j b25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZp Z3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMu aCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8 PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCi8qIFN5c3RlbSBoZWFk ZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIg JGFjX2Z1bmMgKCk7IGJlbG93LgogICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8g PGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQogICAg PGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGls ZXJzLiAgKi8KI2lmZGVmIF9fU1REQ19fCiMgaW5jbHVkZSA8bGltaXRzLmg+ CiNlbHNlCiMgaW5jbHVkZSA8YXNzZXJ0Lmg+CiNlbmRpZgovKiBPdmVycmlk ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy b3IuICAqLwojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIgp7CiNlbmRp ZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUg cmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRz IGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCmNo YXIgJGFjX2Z1bmMgKCk7Ci8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMg dGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgIHRv IGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJl IGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KI2lmIGRl ZmluZWQgKF9fc3R1Yl8kYWNfZnVuYykgfHwgZGVmaW5lZCAoX19zdHViX19f JGFjX2Z1bmMpCmNob2tlIG1lCiNlbHNlCmNoYXIgKCpmKSAoKSA9ICRhY19m dW5jOwojZW5kaWYKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmCgppbnQK bWFpbiAoKQp7CnJldHVybiBmICE9ICRhY19mdW5jOwogIDsKICByZXR1cm4g MDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dCRhY19leGVleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfbGlua1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAg ICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGV2YWwgIiRhc19hY192YXI9 eWVzIgplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6 IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKZXZh bCAiJGFzX2FjX3Zhcj1ubyIKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApmaQplY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNf YWNfdmFyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7 JyRhc19hY192YXInfSdgIiA+JjYKaWYgdGVzdCBgZXZhbCBlY2hvICckeyck YXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgogIGNhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNf dHJfY3BwYCAxCl9BQ0VPRgoKZmkKZG9uZQoKCQkgIGRlZmF1bHRfbWxwM19i bGFzPXRydWUKZWxzZQogIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJy b3I6IGNvdWxkIG5vdCBmaW5kIHRoZSBlc3Nsc21wIGxpYnJhcnkKU2VlIFxg Y29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mNQplY2hvICIkYXNf bWU6IGVycm9yOiBjb3VsZCBub3QgZmluZCB0aGUgZXNzbHNtcCBsaWJyYXJ5 ClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQog ICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KZmkKCiAgICA7OwogIHN1bnBl cmYpCiAgICAjIFNob3VsZCBjaGVjayB0aGF0IHdlIGFyZSBub3QgdXNpbmcg Z2NjIGhlcmUKCmZvciBhY19oZWFkZXIgaW4gc3VucGVyZi5oCmRvCmFzX2Fj X0hlYWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFz X3RyX3NoYAppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9 XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNr aW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2lu ZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAidGVz dCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmZpCmVjaG8gIiRh c19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19I ZWFkZXInfSdgIiA+JjUKZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsn JGFzX2FjX0hlYWRlcid9J2AiID4mNgplbHNlCiAgIyBJcyB0aGUgaGVhZGVy IGNvbXBpbGFibGU/CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyAk YWNfaGVhZGVyIHVzYWJpbGl0eSIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tp bmcgJGFjX2hlYWRlciB1c2FiaWxpdHkuLi4gJEVDSE9fQyIgPiY2CmNhdCA+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25m aWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZz LmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNf ZGVmYXVsdAojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCnJtIC1mIGNv bmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBp bGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7 IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFj X29iamV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19o ZWFkZXJfY29tcGlsZXI9eWVzCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxl ZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRh Y19leHQgPiY1CgphY19oZWFkZXJfY29tcGlsZXI9bm8KZmkKcm0gLWYgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmVjaG8gIiRhc19t ZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQpl Y2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKCiMgSXMg dGhlIGhlYWRlciBwcmVzZW50PwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZSIgPiY1CmVjaG8gJEVDSE9fTiAi Y2hlY2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYK Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8g ImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRl IDwkYWNfaGVhZGVyPgpfQUNFT0YKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQog IChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5l cjEKICBhY19zdGF0dXM9JD8KICBncmVwIC12ICdeICorJyBjb25mdGVzdC5l cjEgPmNvbmZ0ZXN0LmVycgogIHJtIC1mIGNvbmZ0ZXN0LmVyMQogIGNhdCBj b25mdGVzdC5lcnIgPiY1CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2 L251bGw7IHRoZW4KICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgog ICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwogIGVsc2UK ICAgIGFjX2NwcF9lcnI9CiAgZmkKZWxzZQogIGFjX2NwcF9lcnI9eWVzCmZp CmlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgogIGFjX2hlYWRlcl9w cmVwcm9jPXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4m NQoKICBhY19oZWFkZXJfcHJlcHJvYz1ubwpmaQpybSAtZiBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQplY2hvICIke0VDSE9fVH0k YWNfaGVhZGVyX3ByZXByb2MiID4mNgoKIyBTbz8gIFdoYXQgYWJvdXQgdGhp cyBoZWFkZXI/CmNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVy X3ByZXByb2MgaW4KICB5ZXM6bm8gKQogICAgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogYWNjZXB0ZWQgYnkgdGhlIGNv bXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1CmVj aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogYWNjZXB0ZWQgYnkg dGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIg PiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRh Y19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3Mg cmVzdWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVy OiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIg PiYyO30KICAgICgKICAgICAgY2F0IDw8XF9BU0JPWAojIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgUmVwb3J0IHRoaXMg dG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNCT1gKICAgICkgfAogICAg ICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgIDs7 CiAgbm86eWVzICkKICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J Tkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxl ZCIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJl c2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQogICAgeyBlY2hv ICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogY2hlY2sg Zm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKZWNobyAi JGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBjaGVjayBmb3IgbWlzc2lu ZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9CiAgICB7IGVjaG8gIiRh c19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5n IHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8gIiRh c19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRo ZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAgIGNh dCA8PFxfQVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUu b3JnLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gIyMKX0FTQk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21lOiBX QVJOSU5HOiAgICAgLyIgPiYyCiAgICA7Owplc2FjCmVjaG8gIiRhc19tZTok TElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVjaG8gJEVD SE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2 CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNl dCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4m NgplbHNlCiAgZXZhbCAiJGFzX2FjX0hlYWRlcj0kYWNfaGVhZGVyX3ByZXBy b2MiCmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVj aG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKZWNobyAiJHtFQ0hPX1R9 YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgoKZmkKaWYg dGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsg dGhlbgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgZWNo byAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgpl bHNlCiAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY291bGQg bm90IGZpbmQgc3VucGVyZi5oClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3Jl IGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY291bGQgbm90 IGZpbmQgc3VucGVyZi5oClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRl dGFpbHMuIiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KZmkK CmRvbmUKCiAgICAjIEhlcmUgd2UgZ2V0IHJpZCBvZiBvdGhlciAtbCBzdHVm ZiBhcyBpdCBzZWVtcyB0byBicmVhayB3aXRoIC14bGljX2xpYgogICAgTElC Uz1gZWNobyAkTElCUyB8IHNlZCAtZSAncy8tbHB0aHJlYWQvLycgLWUgJ3Mv LWxzdW5tYXRoLy8nIC1lICdzLy1sbS8vJ2AKICAgIExJQlM9IiRMSUJTIC14 bGljX2xpYj1zdW5wZXJmIgogICAgQ1BQRkxBR1M9Ii1kYWxpZ24gJENQUEZM QUdTIgogICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBz Z2VtbSBpbiAtbHN1bnBlcmYiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5n IGZvciBzZ2VtbSBpbiAtbHN1bnBlcmYuLi4gJEVDSE9fQyIgPiY2CmlmIHRl c3QgIiR7YWNfY3ZfbGliX3N1bnBlcmZfc2dlbW0rc2V0fSIgPSBzZXQ7IHRo ZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNl CiAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpMSUJTPSItbHN1bnBl cmYgICRMSUJTIgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xp bmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FD RU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5j b25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KCi8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0 byBhdm9pZCBhbiBlcnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRl cm4gIkMiCiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdo dCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0aW4g YW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBh cHBseS4gICovCmNoYXIgc2dlbW0gKCk7CmludAptYWluICgpCnsKc2dlbW0g KCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4k YWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAppZiB7IChldmFsIGVjaG8g IiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKICAoZXZhbCAk YWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTok TElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3Rh dHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVz dCRhY19leGVleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAg YWNfY3ZfbGliX3N1bnBlcmZfc2dlbW09eWVzCmVsc2UKICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNv bmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9saWJfc3VucGVyZl9zZ2VtbT1u bwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4 ZWV4dCBjb25mdGVzdC4kYWNfZXh0CkxJQlM9JGFjX2NoZWNrX2xpYl9zYXZl X0xJQlMKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2 X2xpYl9zdW5wZXJmX3NnZW1tIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2 X2xpYl9zdW5wZXJmX3NnZW1tIiA+JjYKaWYgdGVzdCAkYWNfY3ZfbGliX3N1 bnBlcmZfc2dlbW0gPSB5ZXM7IHRoZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxc X0FDRU9GCiNkZWZpbmUgSEFWRV9MSUJCTEFTCl9BQ0VPRgoKCQkgIGRlZmF1 bHRfbWxwM19ibGFzPXRydWUKZWxzZQogIHsgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogZXJyb3I6IGNvdWxkIG5vdCBmaW5kIHRoZSBzdW5wZXJmIGxpYnJh cnkKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mNQpl Y2hvICIkYXNfbWU6IGVycm9yOiBjb3VsZCBub3QgZmluZCB0aGUgc3VucGVy ZiBsaWJyYXJ5ClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMu IiA+JjI7fQogICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KZmkKCiAgICA7 OwoKICBhY21sKSAgICAgIyBTaG91bGQgY2hlY2sgdGhhdCB3ZSBhcmUgbm90 IHVzaW5nIGdjYyBoZXJlCgpmb3IgYWNfaGVhZGVyIGluIGFjbWwuaApkbwph c19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8 ICRhc190cl9zaGAKaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIr c2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gIiRhc19tZTokTElORU5POiBj aGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CmVjaG8gJEVDSE9fTiAiY2hl Y2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CmlmIGV2YWwg InRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4K ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpmaQplY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNf YWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8g JyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKZWxzZQogICMgSXMgdGhlIGhl YWRlciBjb21waWxhYmxlPwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp bmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4mNQplY2hvICRFQ0hPX04gImNo ZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgpj YXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAi Y29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25m ZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJGFjX2luY2x1 ZGVzX2RlZmF1bHQKI2luY2x1ZGUgPCRhY19oZWFkZXI+Cl9BQ0VPRgpybSAt ZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21l OiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFsICRhY19j b21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRM SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0 dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0 LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAg YWNfaGVhZGVyX2NvbXBpbGVyPXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBm YWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVz dC4kYWNfZXh0ID4mNQoKYWNfaGVhZGVyX2NvbXBpbGVyPW5vCmZpCnJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAplY2hvICIk YXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxlciIgPiY2Cgoj IElzIHRoZSBoZWFkZXIgcHJlc2VudD8KZWNobyAiJGFzX21lOiRMSU5FTk86 IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UiID4mNQplY2hvICRFQ0hP X04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UuLi4gJEVDSE9fQyIg PiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElO RU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0 IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5j bHVkZSA8JGFjX2hlYWRlcj4KX0FDRU9GCmlmIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+ JjUKICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRl c3QuZXIxCiAgYWNfc3RhdHVzPSQ/CiAgZ3JlcCAtdiAnXiAqKycgY29uZnRl c3QuZXIxID5jb25mdGVzdC5lcnIKICBybSAtZiBjb25mdGVzdC5lcjEKICBj YXQgY29uZnRlc3QuZXJyID4mNQogIGVjaG8gIiRhc19tZTokTElORU5POiBc JD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+ L2Rldi9udWxsOyB0aGVuCiAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRo ZW4KICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKICBl bHNlCiAgICBhY19jcHBfZXJyPQogIGZpCmVsc2UKICBhY19jcHBfZXJyPXll cwpmaQppZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KICBhY19oZWFk ZXJfcHJlcHJvYz15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHBy b2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4 dCA+JjUKCiAgYWNfaGVhZGVyX3ByZXByb2M9bm8KZmkKcm0gLWYgY29uZnRl c3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKZWNobyAiJHtFQ0hP X1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKCiMgU28/ICBXaGF0IGFib3V0 IHRoaXMgaGVhZGVyPwpjYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hl YWRlcl9wcmVwcm9jIGluCiAgeWVzOm5vICkKICAgIHsgZWNobyAiJGFzX21l OiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRo ZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4m NQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFjY2VwdGVk IGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3Nv ciEiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3Nv cidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hl YWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1 bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8PFxfQVNCT1gKIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIFJlcG9ydCB0 aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwojIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKX0FTQk9YCiAgICApIHwK ICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAg ICA7OwogIG5vOnllcyApCiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBX QVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29t cGlsZWQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6 IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30KICAgIHsg ZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGNo ZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CmVj aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogY2hlY2sgZm9yIG1p c3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQogICAgeyBlY2hv ICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2Vl ZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQplY2hv ICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0 aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQogICAgKAogICAg ICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZA Z251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNlZCAicy9eLyRhc19t ZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKZXNhYwplY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQplY2hv ICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0Mi ID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIg PSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGV2YWwgIiRhc19hY19IZWFkZXI9JGFjX2hlYWRlcl9w cmVwcm9jIgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZh bCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNI T19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKCmZp CmlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5 ZXM7IHRoZW4KICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg YGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VP RgoKZWxzZQogIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNv dWxkIG5vdCBmaW5kIGFjbWwuaApTZWUgXGBjb25maWcubG9nJyBmb3IgbW9y ZSBkZXRhaWxzLiIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IGNvdWxkIG5v dCBmaW5kIGFjbWwuaApTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRh aWxzLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CmZpCgpk b25lCgogICAgTElCUz0iJExJQlMgLWxnMmMiCiAgICBlY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgZm9yIGFjbWxpbmZvIGluIC1sYWNtbCIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGFjbWxpbmZvIGluIC1sYWNt bC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9saWJfYWNtbF9h Y21saW5mbytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNh Y2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9M SUJTPSRMSUJTCkxJQlM9Ii1sYWNtbCAgJExJQlMiCmNhdCA+Y29uZnRlc3Qu JGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8q IGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25m dGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YK LyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUgYW55IGdjYzIg aW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lm ZGVmIF9fY3BsdXNwbHVzCmV4dGVybiAiQyIKI2VuZGlmCi8qIFdlIHVzZSBj aGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv ZiBhIGdjYzIKICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJv dG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KY2hhciBhY21saW5mbyAo KTsKaW50Cm1haW4gKCkKewphY21saW5mbyAoKTsKICA7CiAgcmV0dXJuIDA7 Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qk YWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi JGFjX2xpbmtcIiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAg IHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChl dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQog IChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQg JGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19jdl9saWJfYWNtbF9hY21s aW5mbz15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0g d2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK CmFjX2N2X2xpYl9hY21sX2FjbWxpbmZvPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19l eHQKTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwpmaQplY2hvICIkYXNf bWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX2FjbWxfYWNtbGluZm8i ID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX2FjbWxfYWNtbGluZm8i ID4mNgppZiB0ZXN0ICRhY19jdl9saWJfYWNtbF9hY21saW5mbyA9IHllczsg dGhlbgoKY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBIQVZF X0xJQkJMQVMKX0FDRU9GCgoJCSAgTElCUz0iLWxhY21sICRMSUJTIgoJCSAg ZGVmYXVsdF9tbHAzX2JsYXM9dHJ1ZQplbHNlCiAgeyB7IGVjaG8gIiRhc19t ZTokTElORU5POiBlcnJvcjogY291bGQgbm90IGZpbmQgdGhlIEFNRCBhY21s IGxpYnJhcnkKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4i ID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjb3VsZCBub3QgZmluZCB0aGUg QU1EIGFjbWwgbGlicmFyeQpTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBk ZXRhaWxzLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Cgpm aQoKICAgIDs7CiAgbWFjb3MpCgoKZm9yIGFjX2hlYWRlciBpbiB2ZWNMaWIv Y2JsYXMuaCBjYmxhcy5oCmRvCmFzX2FjX0hlYWRlcj1gZWNobyAiYWNfY3Zf aGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAppZiBldmFsICJ0ZXN0 IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+ JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAk RUNIT19DIiA+JjYKaWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIr c2V0fVwiID0gc2V0IjsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkg JEVDSE9fQyIgPiY2CmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKZWNobyAi JHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4m NgplbHNlCiAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/CmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eSIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxp dHkuLi4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmgu ICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0 CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZk ZWZzLmguICAqLwokYWNfaW5jbHVkZXNfZGVmYXVsdAojaW5jbHVkZSA8JGFj X2hlYWRlcj4KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwi IikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9 JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190 cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVj aG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFs ICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0 YXR1cyk7IH07IH07IHRoZW4KICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCmVs c2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19oZWFkZXJf Y29tcGlsZXI9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0CmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRh Y19oZWFkZXJfY29tcGlsZXIiID4mNQplY2hvICIke0VDSE9fVH0kYWNfaGVh ZGVyX2NvbXBpbGVyIiA+JjYKCiMgSXMgdGhlIGhlYWRlciBwcmVzZW50Pwpl Y2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciBwcmVz ZW5jZSIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgJGFjX2hlYWRlciBw cmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKY2F0ID5jb25mdGVzdC4kYWNfZXh0 IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRl ZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRh Y19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQg Y29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YK aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNv bmZ0ZXN0LiRhY19leHRcIiIpID4mNQogIChldmFsICRhY19jcHAgY29uZnRl c3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKICBhY19zdGF0dXM9JD8KICBn cmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgogIHJt IC1mIGNvbmZ0ZXN0LmVyMQogIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KICBpZiB0ZXN0 IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgYWNfY3BwX2Vycj0kYWNfY19w cmVwcm9jX3dhcm5fZmxhZwogIGVsc2UKICAgIGFjX2NwcF9lcnI9CiAgZmkK ZWxzZQogIGFjX2NwcF9lcnI9eWVzCmZpCmlmIHRlc3QgLXogIiRhY19jcHBf ZXJyIjsgdGhlbgogIGFjX2hlYWRlcl9wcmVwcm9jPXllcwplbHNlCiAgZWNo byAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14v fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKICBhY19oZWFkZXJfcHJlcHJv Yz1ubwpmaQpybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dApl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXBy b2MiID4mNQplY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4m NgoKIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/CmNhc2UgJGFjX2hl YWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2MgaW4KICB5ZXM6bm8g KQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0 aGUgcHJlcHJvY2Vzc29yISIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzog JGFjX2hlYWRlcjogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3Rl ZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KICAgIHsgZWNobyAiJGFz X21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcg d2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKZWNobyAiJGFz X21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhl IHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KICAgICgKICAgICAgY2F0 IDw8XF9BU0JPWAojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMKIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5v cmcuICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAjIwpfQVNCT1gKICAgICkgfAogICAgICBzZWQgInMvXi8kYXNfbWU6IFdB Uk5JTkc6ICAgICAvIiA+JjIKICAgIDs7CiAgbm86eWVzICkKICAgIHsgZWNo byAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByZXNl bnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1CmVjaG8gIiRhc19tZTog V0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNv bXBpbGVkIiA+JjI7fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FS TklORzogJGFjX2hlYWRlcjogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlz aXRlIGhlYWRlcnM/IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf aGVhZGVyOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVy cz8iID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3Nv cidzIHJlc3VsdCIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hl YWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1 bHQiID4mMjt9CiAgICAoCiAgICAgIGNhdCA8PFxfQVNCT1gKIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIFJlcG9ydCB0 aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwojIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKX0FTQk9YCiAgICApIHwK ICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAg ICA7Owplc2FjCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Ig JGFjX2hlYWRlciIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRh Y19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2CmlmIGV2YWwgInRlc3QgXCJcJHsk YXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KICBlY2hvICRFQ0hP X04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgZXZhbCAiJGFzX2Fj X0hlYWRlcj0kYWNfaGVhZGVyX3ByZXByb2MiCmZpCmVjaG8gIiRhc19tZTok TElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXIn fSdgIiA+JjUKZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2Fj X0hlYWRlcid9J2AiID4mNgoKZmkKaWYgdGVzdCBgZXZhbCBlY2hvICckeyck YXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgogIGNhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8 ICRhc190cl9jcHBgIDEKX0FDRU9GCgpmaQoKZG9uZQoKICAgIExJQlM9IiRM SUJTIC1mcmFtZXdvcmsgdmVjTGliIgogICAgZWNobyAiJGFzX21lOiRMSU5F Tk86IGNoZWNraW5nIGZvciBjYmxhc19zZ2VtbSIgPiY1CmVjaG8gJEVDSE9f TiAiY2hlY2tpbmcgZm9yIGNibGFzX3NnZW1tLi4uICRFQ0hPX0MiID4mNgpp ZiB0ZXN0ICIke2FjX2N2X2Z1bmNfY2JsYXNfc2dlbW0rc2V0fSIgPSBzZXQ7 IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgpl bHNlCiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRM SU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpj YXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCi8q IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhv cGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGlj dCB3aXRoIGNoYXIgY2JsYXNfc2dlbW0gKCk7IGJlbG93LgogICAgUHJlZmVy IDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZp bmVkLCBzaW5jZQogICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVl c3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KI2lmZGVmIF9fU1REQ19fCiMgaW5j bHVkZSA8bGltaXRzLmg+CiNlbHNlCiMgaW5jbHVkZSA8YXNzZXJ0Lmg+CiNl bmRpZgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYgX19jcGx1c3BsdXMKZXh0 ZXJuICJDIgp7CiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0 aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGls bCBhcHBseS4gICovCmNoYXIgY2JsYXNfc2dlbW0gKCk7Ci8qIFRoZSBHTlUg QyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0 IGltcGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAg U29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhp bmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFu IGFsaWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl9jYmxhc19zZ2VtbSkg fHwgZGVmaW5lZCAoX19zdHViX19fY2JsYXNfc2dlbW0pCmNob2tlIG1lCiNl bHNlCmNoYXIgKCpmKSAoKSA9IGNibGFzX3NnZW1tOwojZW5kaWYKI2lmZGVm IF9fY3BsdXNwbHVzCn0KI2VuZGlmCgppbnQKbWFpbiAoKQp7CnJldHVybiBm ICE9IGNibGFzX3NnZW1tOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0g LWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikg PiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAg KGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rl c3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3Ry eSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsg fTsgfTsgdGhlbgogIGFjX2N2X2Z1bmNfY2JsYXNfc2dlbW09eWVzCmVsc2UK ICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQg J3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9mdW5jX2Ni bGFzX3NnZW1tPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2Z1bmNfY2JsYXNfc2dlbW0i ID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19jYmxhc19zZ2VtbSIg PiY2CmlmIHRlc3QgJGFjX2N2X2Z1bmNfY2JsYXNfc2dlbW0gPSB5ZXM7IHRo ZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCiNkZWZpbmUgSEFWRV9M SUJDQkxBUwpfQUNFT0YKCiAgICAgICAgIGRlZmF1bHRfbWxwM19ibGFzPXRy dWUKZWxzZQogIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNv dWxkIG5vdCBmaW5kIHRoZSB2ZWNMaWIgZnJhbWV3b3JrClNlZSBcYGNvbmZp Zy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKZWNobyAiJGFzX21lOiBl cnJvcjogY291bGQgbm90IGZpbmQgdGhlIHZlY0xpYiBmcmFtZXdvcmsKU2Vl IFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9CiAgIHsg KGV4aXQgMSk7IGV4aXQgMTsgfTsgfQpmaQoKICAgIDs7CmVzYWMKCgpjYXNl ICRhY19jdl91c2VfdmVjbGliIGluCiAgIG1hc3MpCgpjYXQgPj5jb25mZGVm cy5oIDw8XF9BQ0VPRgojZGVmaW5lIEhBVkVfTElCTUFTUwpfQUNFT0YKCgpm b3IgYWNfaGVhZGVyIGluIG1hc3N2LmgKZG8KYXNfYWNfSGVhZGVyPWBlY2hv ICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCmlmIGV2 YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRo ZW4KICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19o ZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVh ZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2Fj X0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4m NQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVy J30nYCIgPiY2CmVsc2UKICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8K ZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgdXNh YmlsaXR5IiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNfaGVhZGVy IHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKY2F0ID5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29u ZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0 LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBl bmQgY29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CiNpbmNs dWRlIDwkYWNfaGVhZGVyPgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2hlYWRlcl9jb21waWxl cj15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFj X2hlYWRlcl9jb21waWxlcj1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0LiRhY19leHQKZWNobyAiJGFzX21lOiRMSU5FTk86IHJl c3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1CmVjaG8gIiR7RUNIT19U fSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgoKIyBJcyB0aGUgaGVhZGVyIHBy ZXNlbnQ/CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVh ZGVyIHByZXNlbmNlIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNf aGVhZGVyIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgov KiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29u ZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPCRhY19oZWFkZXI+ Cl9BQ0VPRgppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1CiAgKGV2YWwgJGFjX2Nw cCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQogIGFjX3N0YXR1 cz0kPwogIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3Qu ZXJyCiAgcm0gLWYgY29uZnRlc3QuZXIxCiAgY2F0IGNvbmZ0ZXN0LmVyciA+ JjUKICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgog IGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICBhY19jcHBfZXJy PSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCiAgZWxzZQogICAgYWNfY3BwX2Vy cj0KICBmaQplbHNlCiAgYWNfY3BwX2Vycj15ZXMKZmkKaWYgdGVzdCAteiAi JGFjX2NwcF9lcnIiOyB0aGVuCiAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCmVs c2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpz ZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgogIGFjX2hlYWRl cl9wcmVwcm9jPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfZXh0CmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFk ZXJfcHJlcHJvYyIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJl cHJvYyIgPiY2CgojIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KY2Fz ZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgog IHllczpubyApCiAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVj dGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIs IHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQogICAgeyBl Y2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJv Y2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQpl Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcg d2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQogICAgKAog ICAgICBjYXQgPDxcX0FTQk9YCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIwojIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2Nv bmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCl9BU0JPWAogICAgKSB8CiAgICAgIHNlZCAicy9eLyRh c19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgOzsKICBubzp5ZXMgKQog ICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRl cjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKZWNobyAi JGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5u b3QgYmUgY29tcGlsZWQiID4mMjt9CiAgICB7IGVjaG8gIiRhc19tZTokTElO RU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBjaGVjayBmb3IgbWlzc2luZyBw cmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQplY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0 ZSBoZWFkZXJzPyIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJl cHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKZWNobyAiJGFzX21lOiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3Nv cidzIHJlc3VsdCIgPiYyO30KICAgICgKICAgICAgY2F0IDw8XF9BU0JPWAoj IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMg UmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCiMjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwpfQVNCT1gK ICAgICkgfAogICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAv IiA+JjIKICAgIDs7CmVzYWMKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNr aW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2lu ZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKaWYgZXZhbCAidGVz dCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgogIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBldmFs ICIkYXNfYWNfSGVhZGVyPSRhY19oZWFkZXJfcHJlcHJvYyIKZmkKZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2Fj X0hlYWRlcid9J2AiID4mNQplY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICck eyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2CgpmaQppZiB0ZXN0IGBldmFsIGVj aG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCiAgY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIGBlY2hvICJIQVZFXyRhY19o ZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgogICAg IExJQlM9Ii1sbWFzc3ZwNF82NCAke0xJQlN9IgogICAgIDs7CmVzYWMKCmVj aG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgcXVpY2tuZXRfdGVz dGRhdGEgZGlyIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcXVp Y2tuZXRfdGVzdGRhdGEgZGlyLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0IC1m ICRhY19jdl90ZXN0ZGF0YS9zbWFsbC5wZmlsZTsgdGhlbgogICAgZWNobyAi JGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X3Rlc3RkYXRhIiA+JjUK ZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Rlc3RkYXRhIiA+JjYKZWxzZQogICAg ZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm90IGZvdW5kIiA+JjUK ZWNobyAiJHtFQ0hPX1R9bm90IGZvdW5kIiA+JjYKZmkKCgplY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMi ID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVy IGZpbGVzLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X2hlYWRl cl9zdGRjK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2Fj aGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4 dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZk ZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4k YWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5k IGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRl IDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Zmxv YXQuaD4KCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP RgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFs ICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRh Y19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNv bmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0 aGVuCiAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCmVsc2UKICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNv bmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9oZWFkZXJfc3RkYz1ubwpmaQpy bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKCmlm IHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgIyBTdW5P UyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFy eSB0byBBTlNJLgogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgoj bGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpf QUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+ PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmgu ICAqLwojaW5jbHVkZSA8c3RyaW5nLmg+CgpfQUNFT0YKaWYgKGV2YWwgIiRh Y19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICRFR1JFUCAibWVt Y2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICA6CmVsc2UKICBhY19jdl9o ZWFkZXJfc3RkYz1ubwpmaQpybSAtZiBjb25mdGVzdCoKCmZpCgppZiB0ZXN0 ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICMgSVNDIDIuMC4y IHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8g QU5TSS4KICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUg JExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9G CmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8K I2luY2x1ZGUgPHN0ZGxpYi5oPgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3Bw IGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAkRUdSRVAgImZyZWUiID4v ZGV2L251bGwgMj4mMTsgdGhlbgogIDoKZWxzZQogIGFjX2N2X2hlYWRlcl9z dGRjPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKZmkKCmlmIHRlc3QgJGFjX2N2 X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgIyAvYmluL2NjIGluIElyaXgt NC4wLjUgZ2V0cyBub24tQU5TSSBjdHlwZSBtYWNyb3MgdW5sZXNzIHVzaW5n IC1hbnNpLgogIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0 aGVuCiAgOgplbHNlCiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G CiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICov Cl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0 ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMu aC4gICovCiNpbmNsdWRlIDxjdHlwZS5oPgojaWYgKCgnICcgJiAweDBGRikg PT0gMHgwMjApCiMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYg KGMpIDw9ICd6JykKIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ ICdBJyArICgoYykgLSAnYScpIDogKGMpKQojZWxzZQojIGRlZmluZSBJU0xP V0VSKGMpIFwKICAgICAgICAgICAgICAgICAgICgoJ2EnIDw9IChjKSAmJiAo YykgPD0gJ2knKSBcCiAgICAgICAgICAgICAgICAgICAgIHx8ICgnaicgPD0g KGMpICYmIChjKSA8PSAncicpIFwKICAgICAgICAgICAgICAgICAgICAgfHwg KCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCiMgZGVmaW5lIFRPVVBQRVIo YykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCiNlbmRpZgoK I2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYg KGYpKSkKaW50Cm1haW4gKCkKewogIGludCBpOwogIGZvciAoaSA9IDA7IGkg PCAyNTY7IGkrKykKICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VS IChpKSkKICAgICAgICB8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkK ICAgICAgZXhpdCgyKTsKICBleGl0ICgwKTsKfQpfQUNFT0YKcm0gLWYgY29u ZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1 CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsg YWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8g IiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRh Y190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1 cyk7IH07IH07IHRoZW4KICA6CmVsc2UKICBlY2hvICIkYXNfbWU6IHByb2dy YW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQplY2hvICIk YXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8n IGNvbmZ0ZXN0LiRhY19leHQgPiY1CgooIGV4aXQgJGFjX3N0YXR1cyApCmFj X2N2X2hlYWRlcl9zdGRjPW5vCmZpCnJtIC1mIGNvcmUgY29yZS4qICouY29y ZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpmaQpmaQplY2hvICIk YXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4m NQplY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNgppZiB0 ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgoKY2F0ID4+Y29u ZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBTVERDX0hFQURFUlMgMQpfQUNF T0YKCmZpCgoKCgoKCgoKCmZvciBhY19oZWFkZXIgaW4gZmNudGwuaCBsaW1p dHMuaCBmbG9hdC5oIGVycm5vLmggc3lzL3RpbWUuaCBzeXMvcGFyYW0uaCBz eXMvc3RhdC5oIHN1bm1hdGguaApkbwphc19hY19IZWFkZXI9YGVjaG8gImFj X2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKaWYgZXZhbCAi dGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgog IGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRl ciIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIu Li4gJEVDSE9fQyIgPiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVh ZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNo ZWQpICRFQ0hPX0MiID4mNgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1CmVj aG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdg IiA+JjYKZWxzZQogICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwplY2hv ICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxp dHkiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgdXNh YmlsaXR5Li4uICRFQ0hPX0MiID4mNgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVm cy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFj X2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBj b25mZGVmcy5oLiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKI2luY2x1ZGUg PCRhY19oZWFkZXI+Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0 CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBp bGVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3Rh dHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0 dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsg YWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAo ZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFz X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRh Y19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfaGVhZGVyX2NvbXBpbGVyPXll cwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+ JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfaGVh ZGVyX2NvbXBpbGVyPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFj X2hlYWRlcl9jb21waWxlciIgPiY2CgojIElzIHRoZSBoZWFkZXIgcHJlc2Vu dD8KZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIg cHJlc2VuY2UiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFk ZXIgcHJlc2VuY2UuLi4gJEVDSE9fQyIgPiY2CmNhdCA+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNv bmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVz dC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyog ZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8JGFjX2hlYWRlcj4KX0FD RU9GCmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2Nw cCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKICAoZXZhbCAkYWNfY3BwIGNv bmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCiAgYWNfc3RhdHVzPSQ/ CiAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIK ICBybSAtZiBjb25mdGVzdC5lcjEKICBjYXQgY29uZnRlc3QuZXJyID4mNQog IGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK ICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCiAgaWYg dGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgIGFjX2NwcF9lcnI9JGFj X2NfcHJlcHJvY193YXJuX2ZsYWcKICBlbHNlCiAgICBhY19jcHBfZXJyPQog IGZpCmVsc2UKICBhY19jcHBfZXJyPXllcwpmaQppZiB0ZXN0IC16ICIkYWNf Y3BwX2VyciI7IHRoZW4KICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKZWxzZQog IGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAn cy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCiAgYWNfaGVhZGVyX3By ZXByb2M9bm8KZmkKcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19l eHQKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9w cmVwcm9jIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9j IiA+JjYKCiMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwpjYXNlICRh Y19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCiAgeWVz Om5vICkKICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRh Y19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQg YnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQplY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRhY19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVq ZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CiAgICB7IGVjaG8g IiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVk aW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CmVjaG8g IiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRo IHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CiAgICAoCiAgICAg IGNhdCA8PFxfQVNCT1gKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBn bnUub3JnLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gIyMKX0FTQk9YCiAgICApIHwKICAgICAgc2VkICJzL14vJGFzX21l OiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICA7OwogIG5vOnllcyApCiAgICB7 IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBw cmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQplY2hvICIkYXNf bWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBi ZSBjb21waWxlZCIgPiYyO30KICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IFdBUk5JTkc6ICRhY19oZWFkZXI6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJl cXVpc2l0ZSBoZWFkZXJzPyIgPiY1CmVjaG8gIiRhc19tZTogV0FSTklORzog JGFjX2hlYWRlcjogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhl YWRlcnM/IiA+JjI7fQogICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FS TklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9j ZXNzb3IncyByZXN1bHQiID4mNQplY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRh Y19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3Mg cmVzdWx0IiA+JjI7fQogICAgKAogICAgICBjYXQgPDxcX0FTQk9YCiMjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwojIyBSZXBv cnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0JPWAogICAg KSB8CiAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4m MgogICAgOzsKZXNhYwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcg Zm9yICRhY19oZWFkZXIiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZv ciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgppZiBldmFsICJ0ZXN0IFwi XCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCiAgZWNobyAk RUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGV2YWwgIiRh c19hY19IZWFkZXI9JGFjX2hlYWRlcl9wcmVwcm9jIgpmaQplY2hvICIkYXNf bWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVh ZGVyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRh c19hY19IZWFkZXInfSdgIiA+JjYKCmZpCmlmIHRlc3QgYGV2YWwgZWNobyAn JHsnJGFzX2FjX0hlYWRlcid9J2AgPSB5ZXM7IHRoZW4KICBjYXQgPj5jb25m ZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRl ciIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCgojIENoZWNr cyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFy YWN0ZXJpc3RpY3MuCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBm b3IgYW4gQU5TSSBDLWNvbmZvcm1pbmcgY29uc3QiID4mNQplY2hvICRFQ0hP X04gImNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdC4u LiAkRUNIT19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9jX2NvbnN0K3NldH0i ID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgoj bGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpf QUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+ PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmgu ICAqLwoKaW50Cm1haW4gKCkKewovKiBGSVhNRTogSW5jbHVkZSB0aGUgY29t bWVudHMgc3VnZ2VzdGVkIGJ5IFBhdWwuICovCiNpZm5kZWYgX19jcGx1c3Bs dXMKICAvKiBVbHRyaXggbWlwcyBjYyByZWplY3RzIHRoaXMuICAqLwogIHR5 cGVkZWYgaW50IGNoYXJzZXRbMl07CiAgY29uc3QgY2hhcnNldCB4OwogIC8q IFN1bk9TIDQuMS4xIGNjIHJlamVjdHMgdGhpcy4gICovCiAgY2hhciBjb25z dCAqY29uc3QgKmNjcDsKICBjaGFyICoqcDsKICAvKiBORUMgU1ZSNC4wLjIg bWlwcyBjYyByZWplY3RzIHRoaXMuICAqLwogIHN0cnVjdCBwb2ludCB7aW50 IHgsIHk7fTsKICBzdGF0aWMgc3RydWN0IHBvaW50IGNvbnN0IHplcm8gPSB7 MCwwfTsKICAvKiBBSVggWEwgQyAxLjAyLjAuMCByZWplY3RzIHRoaXMuCiAg ICAgSXQgZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29uc3QgWCog cG9pbnRlciBmcm9tIGFub3RoZXIgaW4KICAgICBhbiBhcm0gb2YgYW4gaWYt ZXhwcmVzc2lvbiB3aG9zZSBpZi1wYXJ0IGlzIG5vdCBhIGNvbnN0YW50CiAg ICAgZXhwcmVzc2lvbiAqLwogIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsK ICBjY3AgPSAmZyArIChnID8gZy1nIDogMCk7CiAgLyogSFBVWCA3LjAgY2Mg cmVqZWN0cyB0aGVzZS4gKi8KICArK2NjcDsKICBwID0gKGNoYXIqKikgY2Nw OwogIGNjcCA9IChjaGFyIGNvbnN0ICpjb25zdCAqKSBwOwogIHsgLyogU0NP IDMuMnY0IGNjIHJlamVjdHMgdGhpcy4gICovCiAgICBjaGFyICp0OwogICAg Y2hhciBjb25zdCAqcyA9IDAgPyAoY2hhciAqKSAwIDogKGNoYXIgY29uc3Qg KikgMDsKCiAgICAqdCsrID0gMDsKICB9CiAgeyAvKiBTb21lb25lIHRoaW5r cyB0aGUgU3VuIHN1cHBvc2VkbHktQU5TSSBjb21waWxlciB3aWxsIHJlamVj dCB0aGlzLiAgKi8KICAgIGludCB4W10gPSB7MjUsIDE3fTsKICAgIGNvbnN0 IGludCAqZm9vID0gJnhbMF07CiAgICArK2ZvbzsKICB9CiAgeyAvKiBTdW4g U0MxLjAgQU5TSSBjb21waWxlciByZWplY3RzIHRoaXMgLS0gYnV0IG5vdCB0 aGUgYWJvdmUuICovCiAgICB0eXBlZGVmIGNvbnN0IGludCAqaXB0cjsKICAg IGlwdHIgcCA9IDA7CiAgICArK3A7CiAgfQogIHsgLyogQUlYIFhMIEMgMS4w Mi4wLjAgcmVqZWN0cyB0aGlzIHNheWluZwogICAgICAgImsuYyIsIGxpbmUg Mi4yNzogMTUwNi0wMjUgKFMpIE9wZXJhbmQgbXVzdCBiZSBhIG1vZGlmaWFi bGUgbHZhbHVlLiAqLwogICAgc3RydWN0IHMgeyBpbnQgajsgY29uc3QgaW50 ICphcFszXTsgfTsKICAgIHN0cnVjdCBzICpiOyBiLT5qID0gNTsKICB9CiAg eyAvKiBVTFRSSVgtMzIgVjMuMSAoUmV2IDkpIHZjYyByZWplY3RzIHRoaXMg Ki8KICAgIGNvbnN0IGludCBmb28gPSAxMDsKICB9CiNlbmRpZgoKICA7CiAg cmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQK aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGls ZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBh Y190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChl dmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19jdl9jX2NvbnN0PXllcwplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfY19jb25z dD1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh Y19leHQKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2 X2NfY29uc3QiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfY19jb25zdCIg PiY2CmlmIHRlc3QgJGFjX2N2X2NfY29uc3QgPSBubzsgdGhlbgoKY2F0ID4+ Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBjb25zdApfQUNFT0YKCmZp CgplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGlubGluZSIg PiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGlubGluZS4uLiAkRUNI T19DIiA+JjYKaWYgdGVzdCAiJHthY19jdl9jX2lubGluZStzZXR9IiA9IHNl dDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2 CmVsc2UKICBhY19jdl9jX2lubGluZT1ubwpmb3IgYWNfa3cgaW4gaW5saW5l IF9faW5saW5lX18gX19pbmxpbmU7IGRvCiAgY2F0ID5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29u ZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0 LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBl bmQgY29uZmRlZnMuaC4gICovCiNpZm5kZWYgX19jcGx1c3BsdXMKdHlwZWRl ZiBpbnQgZm9vX3Q7CnN0YXRpYyAkYWNfa3cgZm9vX3Qgc3RhdGljX2ZvbyAo KSB7cmV0dXJuIDA7IH0KJGFjX2t3IGZvb190IGZvbyAoKSB7cmV0dXJuIDA7 IH0KI2VuZGlmCgpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dApp ZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxl XCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1 cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFj X3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2 YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19t ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNf c3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2NfaW5saW5lPSRhY19rdzsg YnJlYWsKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmZp CnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApk b25lCgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3Zf Y19pbmxpbmUiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfY19pbmxpbmUi ID4mNgpjYXNlICRhY19jdl9jX2lubGluZSBpbgogIGlubGluZSB8IHllcykg OzsKICBubykKY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKI2RlZmluZSBp bmxpbmUKX0FDRU9GCiA7OwogICopICBjYXQgPj5jb25mZGVmcy5oIDw8X0FD RU9GCiNkZWZpbmUgaW5saW5lICRhY19jdl9jX2lubGluZQpfQUNFT0YKIDs7 CmVzYWMKCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVy IGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKZWNobyAkRUNIT19O ICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFu Li4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X2NfYmlnZW5kaWFu K3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAk RUNIT19DIiA+JjYKZWxzZQogICMgU2VlIGlmIHN5cy9wYXJhbS5oIGRlZmlu ZXMgdGhlIEJZVEVfT1JERVIgbWFjcm8uCmNhdCA+Y29uZnRlc3QuJGFjX2V4 dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZk ZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4k YWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5k IGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNs dWRlIDxzeXMvcGFyYW0uaD4KCmludAptYWluICgpCnsKI2lmICFCWVRFX09S REVSIHx8ICFCSUdfRU5ESUFOIHx8ICFMSVRUTEVfRU5ESUFOCiBib2d1cyBl bmRpYW4gbWFjcm9zCiNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9G CnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwg JGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29u ZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUK ICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g JGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRo ZW4KICAjIEl0IGRvZXM7IG5vdyBzZWUgd2hldGhlciBpdCBkZWZpbmVkIHRv IEJJR19FTkRJQU4gb3Igbm90LgpjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxf QUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5o LiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4 dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8 c3lzL3BhcmFtLmg+CgppbnQKbWFpbiAoKQp7CiNpZiBCWVRFX09SREVSICE9 IEJJR19FTkRJQU4KIG5vdCBiaWcgZW5kaWFuCiNlbmRpZgoKICA7CiAgcmV0 dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwi IikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9 JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190 cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVj aG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFs ICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0 YXR1cyk7IH07IH07IHRoZW4KICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKZWxz ZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2NfYmln ZW5kaWFuPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4m NQoKIyBJdCBkb2VzIG5vdDsgY29tcGlsZSBhIHRlc3QgcHJvZ3JhbS4KaWYg dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAjIHRyeSB0 byBndWVzcyB0aGUgZW5kaWFubmVzcyBieSBncmVwcGluZyB2YWx1ZXMgaW50 byBhbiBvYmplY3QgZmlsZQogIGFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24K ICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVO TyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBj b25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4k YWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8Kc2hvcnQg YXNjaWlfbW1bXSA9IHsgMHg0MjQ5LCAweDQ3NjUsIDB4NkU0NCwgMHg2OTYx LCAweDZFNTMsIDB4Nzk1MywgMCB9OwpzaG9ydCBhc2NpaV9paVtdID0geyAw eDY5NEMsIDB4NTQ1NCwgMHg2NTZDLCAweDZFNDUsIDB4Njk0NCwgMHg2RTYx LCAwIH07CnZvaWQgX2FzY2lpICgpIHsgY2hhciAqcyA9IChjaGFyICopIGFz Y2lpX21tOyBzID0gKGNoYXIgKikgYXNjaWlfaWk7IH0Kc2hvcnQgZWJjZGlj X2lpW10gPSB7IDB4ODlEMywgMHhFM0UzLCAweDg1OTMsIDB4OTVDNSwgMHg4 OUM0LCAweDk1ODEsIDAgfTsKc2hvcnQgZWJjZGljX21tW10gPSB7IDB4QzJD OSwgMHhDNzg1LCAweDk1QzQsIDB4ODk4MSwgMHg5NUUyLCAweEE4RTIsIDAg fTsKdm9pZCBfZWJjZGljICgpIHsgY2hhciAqcyA9IChjaGFyICopIGViY2Rp Y19tbTsgcyA9IChjaGFyICopIGViY2RpY19paTsgfQppbnQKbWFpbiAoKQp7 CiBfYXNjaWkgKCk7IF9lYmNkaWMgKCk7CiAgOwogIHJldHVybiAwOwp9Cl9B Q0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChl dmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0 ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1z IGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAy PiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwk PyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9 OyB0aGVuCiAgaWYgZ3JlcCBCSUdlbkRpYW5TeVMgY29uZnRlc3QuJGFjX29i amV4dCA+L2Rldi9udWxsIDsgdGhlbgogIGFjX2N2X2NfYmlnZW5kaWFuPXll cwpmaQppZiBncmVwIExpVFRsZUVuRGlhbiBjb25mdGVzdC4kYWNfb2JqZXh0 ID4vZGV2L251bGwgOyB0aGVuCiAgaWYgdGVzdCAiJGFjX2N2X2NfYmlnZW5k aWFuIiA9IHVua25vd247IHRoZW4KICAgIGFjX2N2X2NfYmlnZW5kaWFuPW5v CiAgZWxzZQogICAgIyBmaW5kaW5nIGJvdGggc3RyaW5ncyBpcyB1bmxpa2Vs eSB0byBoYXBwZW4sIGJ1dCB3aG8ga25vd3M/CiAgICBhY19jdl9jX2JpZ2Vu ZGlhbj11bmtub3duCiAgZmkKZmkKZWxzZQogIGVjaG8gIiRhc19tZTogZmFp bGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3Qu JGFjX2V4dCA+JjUKCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuJGFjX2V4dAplbHNlCiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8 X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMu aC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19l eHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29u ZmRlZnMuaC4gICovCmludAptYWluICgpCnsKICAvKiBBcmUgd2UgbGl0dGxl IG9yIGJpZyBlbmRpYW4/ICBGcm9tIEhhcmJpc29uJlN0ZWVsZS4gICovCiAg dW5pb24KICB7CiAgICBsb25nIGw7CiAgICBjaGFyIGNbc2l6ZW9mIChsb25n KV07CiAgfSB1OwogIHUubCA9IDE7CiAgZXhpdCAodS5jW3NpemVvZiAobG9u ZykgLSAxXSA9PSAxKTsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QkYWNfZXhl ZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xp bmtcIiIpID4mNQogIChldmFsICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVz PSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi ID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2Nv bmZ0ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUK ICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g JGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRo ZW4KICBhY19jdl9jX2JpZ2VuZGlhbj1ubwplbHNlCiAgZWNobyAiJGFzX21l OiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUK ZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdz L14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKKCBleGl0ICRhY19zdGF0 dXMgKQphY19jdl9jX2JpZ2VuZGlhbj15ZXMKZmkKcm0gLWYgY29yZSBjb3Jl LiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmZpCnJt IC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpl Y2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19iaWdlbmRp YW4iID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfY19iaWdlbmRpYW4iID4m NgpjYXNlICRhY19jdl9jX2JpZ2VuZGlhbiBpbgogIHllcykKCmNhdCA+PmNv bmZkZWZzLmggPDxcX0FDRU9GCiNkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEK X0FDRU9GCiA7OwogIG5vKQogICAgIDs7CiAgKikKICAgIHsgeyBlY2hvICIk YXNfbWU6JExJTkVOTzogZXJyb3I6IHVua25vd24gZW5kaWFubmVzcwpwcmVz ZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVs cCIgPiY1CmVjaG8gIiRhc19tZTogZXJyb3I6IHVua25vd24gZW5kaWFubmVz cwpwcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdp bGwgaGVscCIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7 CmVzYWMKCmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbG9u ZyBsb25nIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbG9uZyBs b25nLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3R5cGVfbG9u Z19sb25nK3NldH0iID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2Fj aGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4 dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZk ZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4k YWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5k IGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKbWFp biAoKQp7CmlmICgobG9uZyBsb25nICopIDApCiAgcmV0dXJuIDA7CmlmIChz aXplb2YgKGxvbmcgbG9uZykpCiAgcmV0dXJuIDA7CiAgOwogIHJldHVybiAw Owp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4m NQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQog IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0 ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNf dHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMp OyB9OyB9OyB0aGVuCiAgYWNfY3ZfdHlwZV9sb25nX2xvbmc9eWVzCmVsc2UK ICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQg J3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl90eXBlX2xv bmdfbG9uZz1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LiRhY19leHQKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDog JGFjX2N2X3R5cGVfbG9uZ19sb25nIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFj X2N2X3R5cGVfbG9uZ19sb25nIiA+JjYKaWYgdGVzdCAkYWNfY3ZfdHlwZV9s b25nX2xvbmcgPSB5ZXM7IHRoZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxCl9BQ0VPRgoKCmZpCmVjaG8g IiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgdW5zaWduZWQgbG9uZyBs b25nIiA+JjUKZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgdW5zaWduZWQg bG9uZyBsb25nLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3R5 cGVfdW5zaWduZWRfbG9uZ19sb25nK3NldH0iID0gc2V0OyB0aGVuCiAgZWNo byAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxzZQogIGNhdCA+ Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25m aWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZz LmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNf ZGVmYXVsdAppbnQKbWFpbiAoKQp7CmlmICgodW5zaWduZWQgbG9uZyBsb25n ICopIDApCiAgcmV0dXJuIDA7CmlmIChzaXplb2YgKHVuc2lnbmVkIGxvbmcg bG9uZykpCiAgcmV0dXJuIDA7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpy bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQogIChldmFsICRh Y19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0 ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVO TzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAg YWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRh Y19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVu CiAgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmc9eWVzCmVsc2UKICBl Y2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3Mv Xi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl90eXBlX3Vuc2ln bmVkX2xvbmdfbG9uZz1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LiRhY19leHQKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJl c3VsdDogJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nIiA+JjUKZWNo byAiJHtFQ0hPX1R9JGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nIiA+ JjYKaWYgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcgPSB5 ZXM7IHRoZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBI QVZFX1VOU0lHTkVEX0xPTkdfTE9ORyAxCl9BQ0VPRgoKCmZpCgojIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIG9yIC0tZGlzYWJsZS1sYXJn ZWZpbGUgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJsZV9sYXJnZWZpbGUr c2V0fSIgPSBzZXQ7IHRoZW4KICBlbmFibGV2YWw9IiRlbmFibGVfbGFyZ2Vm aWxlIgoKZmk7CmlmIHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlIiAhPSBubzsg dGhlbgoKICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHNw ZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmls ZXMiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzcGVjaWFsIEMg Y29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRF Q0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZWZpbGVfQ0Mr c2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRF Q0hPX0MiID4mNgplbHNlCiAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubwog ICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgogICAgICAgYWNfc2F2 ZV9DQz0kQ0MKICAgICAgIHdoaWxlIDo7IGRvCiAgICAgCSAjIElSSVggNi4y IGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZh dWx0LAogICAgIAkgIyBzbyB1c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9w dGlvbiBpZiB0aGF0IGhlbHBzLgogICAgICAgICBjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBj b25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRl c3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8q IGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog LyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBj b3JyZWN0bHkuCiAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09G Rl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCiAgICBzaW5jZSBzb21l IEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCiAg ICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICov CiNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSAr ICgob2ZmX3QpIDEgPDwgNjIpKQogIGludCBvZmZfdF9pc19sYXJnZVsoTEFS R0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQoJCSAgICAgICAmJiBMQVJH RV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKCQkgICAgICA/IDEgOiAtMV07 CmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgogICAg IAkgcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAppZiB7IChldmFsIGVjaG8g IiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKICAoZXZh bCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAk YWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBj b25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRM SU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4m NQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g PSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsg dGhlbgogIGJyZWFrCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9n cmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQg PiY1CgpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CiAgICAgCSBDQz0i JENDIC1uMzIiCiAgICAgCSBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Cmlm IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVc IiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVz PSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi ID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNf dHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZh bCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz0n IC1uMzInOyBicmVhawplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv Z3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0 ID4mNQoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAogICAgICAgICBi cmVhawogICAgICAgZG9uZQogICAgICAgQ0M9JGFjX3NhdmVfQ0MKICAgICAg IHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKICAgIGZpCmZpCmVjaG8gIiRhc19t ZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4m NgogIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiAhPSBubzsg dGhlbgogICAgQ0M9JENDJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MKICBmaQoK ICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIF9GSUxFX09G RlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQpl Y2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2 YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICRFQ0hPX0MiID4mNgpp ZiB0ZXN0ICIke2FjX2N2X3N5c19maWxlX29mZnNldF9iaXRzK3NldH0iID0g c2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+ JjYKZWxzZQogIHdoaWxlIDo7IGRvCiAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0 X2JpdHM9bm8KICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xp bmUgJExJTkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FD RU9GCmNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5j b25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogLyogQ2hlY2sgdGhhdCBvZmZf dCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCiAgICBXZSBj YW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIw MzY4NTQ3NzU4MDcsCiAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFz cXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCiAgICBpbmNvcnJlY3RseSByZWpl Y3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCiNkZWZpbmUgTEFSR0VfT0ZG X1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIp KQogIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjI5ID09IDcyMQoJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2 NDcgPT0gMSkKCQkgICAgICA/IDEgOiAtMV07CmludAptYWluICgpCnsKCiAg OwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2Jq ZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2Nv bXBpbGVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAg IHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAo ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUK ICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0 ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYnJlYWsKZWxzZQogIGVjaG8g IiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wg LycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmZpCnJtIC1mIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogIGNhdCA+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNv bmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVz dC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyog ZW5kIGNvbmZkZWZzLmguICAqLwojZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRT IDY0CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIC8qIENoZWNrIHRoYXQgb2Zm X3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgogICAgV2Ug Y2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcy MDM2ODU0Nzc1ODA3LAogICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1h c3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwogICAgaW5jb3JyZWN0bHkgcmVq ZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwojZGVmaW5lIExBUkdFX09G Rl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYy KSkKICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4 MzYyOSA9PSA3MjEKCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgz NjQ3ID09IDEpCgkJICAgICAgPyAxIDogLTFdOwppbnQKbWFpbiAoKQp7Cgog IDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29i amV4dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19j b21waWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFj X3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAg ICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X3N5c19maWxlX29m ZnNldF9iaXRzPTY0OyBicmVhawplbHNlCiAgZWNobyAiJGFzX21lOiBmYWls ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0CiAgYnJlYWsKZG9uZQpmaQplY2hvICIkYXNfbWU6JExJ TkVOTzogcmVzdWx0OiAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiID4m NQplY2hvICIke0VDSE9fVH0kYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMi ID4mNgppZiB0ZXN0ICIkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMiICE9 IG5vOyB0aGVuCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg X0ZJTEVfT0ZGU0VUX0JJVFMgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRz Cl9BQ0VPRgoKZmkKcm0gLWYgY29uZnRlc3QqCiAgZWNobyAiJGFzX21lOiRM SU5FTk86IGNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFsdWUgbmVlZGVk IGZvciBsYXJnZSBmaWxlcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg Zm9yIF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVz Li4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZV9m aWxlcytzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hl ZCkgJEVDSE9fQyIgPiY2CmVsc2UKICB3aGlsZSA6OyBkbwogIGFjX2N2X3N5 c19sYXJnZV9maWxlcz1ubwogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmgu ICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0 CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZk ZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAvKiBDaGVjayB0 aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4K ICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUg OTIyMzM3MjAzNjg1NDc3NTgwNywKICAgIHNpbmNlIHNvbWUgQysrIGNvbXBp bGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKICAgIGluY29ycmVj dGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KI2RlZmluZSBM QVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkg MSA8PCA2MikpCiAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAl IDIxNDc0ODM2MjkgPT0gNzIxCgkJICAgICAgICYmIExBUkdFX09GRl9UICUg MjE0NzQ4MzY0NyA9PSAxKQoJCSAgICAgID8gMSA6IC0xXTsKaW50Cm1haW4g KCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0 LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+ JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYK ICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4 dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlc IiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8K ICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1 CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBicmVhawplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKZmkKcm0gLWYgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8gImNvbmZpZ3Vy ZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiNkZWZpbmUgX0xBUkdFX0ZJ TEVTIDEKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogLyogQ2hlY2sgdGhhdCBv ZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCiAgICBX ZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMz NzIwMzY4NTQ3NzU4MDcsCiAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMg bWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCiAgICBpbmNvcnJlY3RseSBy ZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCiNkZWZpbmUgTEFSR0Vf T0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwg NjIpKQogIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3 NDgzNjI5ID09IDcyMQoJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0 ODM2NDcgPT0gMSkKCQkgICAgICA/IDEgOiAtMV07CmludAptYWluICgpCnsK CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNf b2JqZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFj X2NvbXBpbGVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAg YWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRh Y19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAg ICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+ JjUKICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3Zfc3lzX2xhcmdl X2ZpbGVzPTE7IGJyZWFrCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBw cm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19l eHQgPiY1CgpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LiRhY19leHQKICBicmVhawpkb25lCmZpCmVjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNQplY2hvICIk e0VDSE9fVH0kYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjYKaWYgdGVzdCAi JGFjX2N2X3N5c19sYXJnZV9maWxlcyIgIT0gbm87IHRoZW4KCmNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2 X3N5c19sYXJnZV9maWxlcwpfQUNFT0YKCmZpCnJtIC1mIGNvbmZ0ZXN0Kgpm aQoKCgoKZm9yIGFjX2Z1bmMgaW4gdnByaW50Zgpkbwphc19hY192YXI9YGVj aG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAplY2hvICIk YXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2Z1bmMuLi4gJEVDSE9fQyIg PiY2CmlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfdmFyK3NldH1cIiA9IHNl dCI7IHRoZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4m NgplbHNlCiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5l ICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VP RgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29u ZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICov Ci8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5k IGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25m bGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMgKCk7IGJlbG93LgogICAgUHJlZmVy IDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZp bmVkLCBzaW5jZQogICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVl c3RhbmRpbmcgY29tcGlsZXJzLiAgKi8KI2lmZGVmIF9fU1REQ19fCiMgaW5j bHVkZSA8bGltaXRzLmg+CiNlbHNlCiMgaW5jbHVkZSA8YXNzZXJ0Lmg+CiNl bmRpZgovKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuICAqLwojaWZkZWYgX19jcGx1c3BsdXMKZXh0 ZXJuICJDIgp7CiNlbmRpZgovKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBt aWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCiAgIGJ1aWx0 aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGls bCBhcHBseS4gICovCmNoYXIgJGFjX2Z1bmMgKCk7Ci8qIFRoZSBHTlUgQyBs aWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGlt cGxlbWVudHMKICAgIHRvIGFsd2F5cyBmYWlsIHdpdGggRU5PU1lTLiAgU29t ZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCiAgICBzb21ldGhpbmcg c3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFs aWFzLiAgKi8KI2lmIGRlZmluZWQgKF9fc3R1Yl8kYWNfZnVuYykgfHwgZGVm aW5lZCAoX19zdHViX19fJGFjX2Z1bmMpCmNob2tlIG1lCiNlbHNlCmNoYXIg KCpmKSAoKSA9ICRhY19mdW5jOwojZW5kaWYKI2lmZGVmIF9fY3BsdXNwbHVz Cn0KI2VuZGlmCgppbnQKbWFpbiAoKQp7CnJldHVybiBmICE9ICRhY19mdW5j OwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdCRhY19leGVleHQKaWYgeyAoZXZhbCBlY2hvICIk YXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1CiAgKGV2YWwgJGFj X2xpbmspIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1 cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3Qk YWNfZXhlZXh0JwogIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi JGFjX3RyeVwiIikgPiY1CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0 YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGV2 YWwgIiRhc19hY192YXI9eWVzIgplbHNlCiAgZWNobyAiJGFzX21lOiBmYWls ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQoKZXZhbCAiJGFzX2FjX3Zhcj1ubyIKZmkKcm0gLWYgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu JGFjX2V4dApmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZh bCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY1CmVjaG8gIiR7RUNIT19U fWBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjYKaWYgdGVzdCBg ZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9IHllczsgdGhlbgogIGNh dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgZWNobyAiSEFWRV8k YWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKZWNobyAiJGFzX21l OiRMSU5FTk86IGNoZWNraW5nIGZvciBfZG9wcm50IiA+JjUKZWNobyAkRUNI T19OICJjaGVja2luZyBmb3IgX2RvcHJudC4uLiAkRUNIT19DIiA+JjYKaWYg dGVzdCAiJHthY19jdl9mdW5jX19kb3BybnQrc2V0fSIgPSBzZXQ7IHRoZW4K ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAg Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5FTk8g ImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCi8qIFN5c3Rl bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxs eSBmZXcgcHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRo IGNoYXIgX2RvcHJudCAoKTsgYmVsb3cuCiAgICBQcmVmZXIgPGxpbWl0cy5o PiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNl CiAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBj b21waWxlcnMuICAqLwojaWZkZWYgX19TVERDX18KIyBpbmNsdWRlIDxsaW1p dHMuaD4KI2Vsc2UKIyBpbmNsdWRlIDxhc3NlcnQuaD4KI2VuZGlmCi8qIE92 ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4gICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCnsK I2VuZGlmCi8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNo IHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKICAgYnVpbHRpbiBhbmQgdGhl biBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAg Ki8KY2hhciBfZG9wcm50ICgpOwovKiBUaGUgR05VIEMgbGlicmFyeSBkZWZp bmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCiAg ICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25z IGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdp dGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCiNp ZiBkZWZpbmVkIChfX3N0dWJfX2RvcHJudCkgfHwgZGVmaW5lZCAoX19zdHVi X19fX2RvcHJudCkKY2hva2UgbWUKI2Vsc2UKY2hhciAoKmYpICgpID0gX2Rv cHJudDsKI2VuZGlmCiNpZmRlZiBfX2NwbHVzcGx1cwp9CiNlbmRpZgoKaW50 Cm1haW4gKCkKewpyZXR1cm4gZiAhPSBfZG9wcm50OwogIDsKICByZXR1cm4g MDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dCRhY19leGVleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfbGlua1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAg ICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsg KGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1 CiAgKGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8g IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2Z1bmNfX2RvcHJu dD15ZXMKZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFj X2N2X2Z1bmNfX2RvcHJudD1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmVj aG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9mdW5jX19kb3By bnQiID4mNQplY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19fZG9wcm50IiA+ JjYKaWYgdGVzdCAkYWNfY3ZfZnVuY19fZG9wcm50ID0geWVzOyB0aGVuCgpj YXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgojZGVmaW5lIEhBVkVfRE9QUk5U IDEKX0FDRU9GCgpmaQoKZmkKZG9uZQoKCmVjaG8gIiRhc19tZTokTElORU5P OiBjaGVja2luZyBmb3IgX0xBUkdFRklMRV9TT1VSQ0UgdmFsdWUgbmVlZGVk IGZvciBsYXJnZSBmaWxlcyIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg Zm9yIF9MQVJHRUZJTEVfU09VUkNFIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2Ug ZmlsZXMuLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNfY3Zfc3lzX2xh cmdlZmlsZV9zb3VyY2Urc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hvICRFQ0hP X04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgd2hpbGUgOjsgZG8K ICBhY19jdl9zeXNfbGFyZ2VmaWxlX3NvdXJjZT1ubwogIGNhdCA+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElORU5PICJjb25maWd1cmUi Ci8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0IGNvbmZkZWZzLmggPj5j b25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNF T0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RkaW8uaD4K aW50Cm1haW4gKCkKewpyZXR1cm4gIWZzZWVrbzsKICA7CiAgcmV0dXJuIDA7 Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1 CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAg KGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rl c3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFsIGVjaG8gIiRh c19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190 cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7 IH07IH07IHRoZW4KICBicmVhawplbHNlCiAgZWNobyAiJGFzX21lOiBmYWls ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC4kYWNfZXh0CiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G CiNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICov Cl9BQ0VPRgpjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0 ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMu aC4gICovCiNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQojaW5jbHVkZSA8 c3RkaW8uaD4KaW50Cm1haW4gKCkKewpyZXR1cm4gIWZzZWVrbzsKICA7CiAg cmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQK aWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGls ZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBh Y190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKICB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogIChl dmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFj X3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19jdl9zeXNfbGFyZ2VmaWxlX3Nv dXJjZT0xOyBicmVhawplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv Z3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0 ID4mNQoKZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k YWNfZXh0CiAgYnJlYWsKZG9uZQpmaQplY2hvICIkYXNfbWU6JExJTkVOTzog cmVzdWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiID4mNQplY2hv ICIke0VDSE9fVH0kYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiID4mNgpp ZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2UiICE9IG5vOyB0 aGVuCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgX0xBUkdF RklMRV9TT1VSQ0UgJGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlCl9BQ0VP RgoKZmkKcm0gLWYgY29uZnRlc3QqCgojIFdlIHVzZWQgdG8gdHJ5IGRlZmlu aW5nIF9YT1BFTl9TT1VSQ0U9NTAwIHRvbywgdG8gd29yayBhcm91bmQgYSBi dWcKIyBpbiBnbGliYyAyLjEuMywgYnV0IHRoYXQgYnJlYWtzIHRvbyBtYW55 IG90aGVyIHRoaW5ncy4KIyBJZiB5b3Ugd2FudCBmc2Vla28gYW5kIGZ0ZWxs byB3aXRoIGdsaWJjLCB1cGdyYWRlIHRvIGEgZml4ZWQgZ2xpYmMuCmVjaG8g IiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgZnNlZWtvIiA+JjUKZWNo byAkRUNIT19OICJjaGVja2luZyBmb3IgZnNlZWtvLi4uICRFQ0hPX0MiID4m NgppZiB0ZXN0ICIke2FjX2N2X2Z1bmNfZnNlZWtvK3NldH0iID0gc2V0OyB0 aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKZWxz ZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAkTElO RU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YKY2F0 IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5j bHVkZSA8c3RkaW8uaD4KaW50Cm1haW4gKCkKewpyZXR1cm4gZnNlZWtvICYm IGZzZWVrbyAoc3RkaW4sIDAsIDApOwogIDsKICByZXR1cm4gMDsKfQpfQUNF T0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVl eHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlu a1wiIikgPiY1CiAgKGV2YWwgJGFjX2xpbmspIDI+JjUKICBhY19zdGF0dXM9 JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg PiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKICAgICAgICAgeyBhY190 cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwogIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwg JGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTok TElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3Rh dHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2Z1bmNfZnNlZWtvPXllcwplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfZnVuY19m c2Vla289bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApmaQplY2hvICIkYXNfbWU6 JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZnVuY19mc2Vla28iID4mNQplY2hv ICIke0VDSE9fVH0kYWNfY3ZfZnVuY19mc2Vla28iID4mNgppZiB0ZXN0ICRh Y19jdl9mdW5jX2ZzZWVrbyA9IHllczsgdGhlbgoKY2F0ID4+Y29uZmRlZnMu aCA8PFxfQUNFT0YKI2RlZmluZSBIQVZFX0ZTRUVLTyAxCl9BQ0VPRgoKZmkK CgoKCgoKCgoKCgoKZm9yIGFjX2Z1bmMgaW4gc3RyZXJyb3Igc3Ryc3RyIGZz ZXRwb3MgZ2V0aG9zdG5hbWUgZ2V0dGltZW9mZGF5IGZpbGVubyBpc2F0dHkg c2V0X25ld19oYW5kbGVyIHBvcGVuIHNxcnRmIGV4cGYKZG8KYXNfYWNfdmFy PWBlY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1 CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19mdW5jLi4uICRFQ0hP X0MiID4mNgppZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX3ZhcitzZXR9XCIg PSBzZXQiOyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgoj bGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpf QUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+ PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmgu ICAqLwovKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9z IGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICB3aGljaCBjYW4g Y29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jICgpOyBiZWxvdy4KICAgIFBy ZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMg ZGVmaW5lZCwgc2luY2UKICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24g ZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCiNpZmRlZiBfX1NURENfXwoj IGluY2x1ZGUgPGxpbWl0cy5oPgojZWxzZQojIGluY2x1ZGUgPGFzc2VydC5o PgojZW5kaWYKLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90 eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KI2lmZGVmIF9fY3BsdXNwbHVz CmV4dGVybiAiQyIKewojZW5kaWYKLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgogICBi dWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuICAqLwpjaGFyICRhY19mdW5jICgpOwovKiBUaGUgR05V IEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBp dCBpbXBsZW1lbnRzCiAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4g IFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgc29tZXRo aW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBh biBhbGlhcy4gICovCiNpZiBkZWZpbmVkIChfX3N0dWJfJGFjX2Z1bmMpIHx8 IGRlZmluZWQgKF9fc3R1Yl9fXyRhY19mdW5jKQpjaG9rZSBtZQojZWxzZQpj aGFyICgqZikgKCkgPSAkYWNfZnVuYzsKI2VuZGlmCiNpZmRlZiBfX2NwbHVz cGx1cwp9CiNlbmRpZgoKaW50Cm1haW4gKCkKewpyZXR1cm4gZiAhPSAkYWNf ZnVuYzsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CmlmIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQogIChldmFs ICRhY19saW5rKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21l OiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19z dGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P OiBcIiRhY190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBh Y19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4K ICBldmFsICIkYXNfYWNfdmFyPXllcyIKZWxzZQogIGVjaG8gIiRhc19tZTog ZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9eL3wgLycgY29uZnRl c3QuJGFjX2V4dCA+JjUKCmV2YWwgIiRhc19hY192YXI9bm8iCmZpCnJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDog YGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AiID4mNQplY2hvICIke0VD SE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIgPiY2CmlmIHRl c3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX3Zhcid9J2AgPSB5ZXM7IHRoZW4K ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYGVjaG8gIkhB VkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCmRvbmUK CmVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyIGRyYW5k NDggaXMgZGVjbGFyZWQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIHdo ZXRoZXIgZHJhbmQ0OCBpcyBkZWNsYXJlZC4uLiAkRUNIT19DIiA+JjYKaWYg dGVzdCAiJHthY19jdl9oYXZlX2RlY2xfZHJhbmQ0OCtzZXR9IiA9IHNldDsg dGhlbgogIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVs c2UKICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJ TkVOTyAiY29uZmlndXJlIgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNh dCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVz dC4kYWNfZXh0IDw8X0FDRU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJGFj X2luY2x1ZGVzX2RlZmF1bHQKaW50Cm1haW4gKCkKewojaWZuZGVmIGRyYW5k NDgKICBjaGFyICpwID0gKGNoYXIgKikgZHJhbmQ0ODsKI2VuZGlmCgogIDsK ICByZXR1cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4 dAppZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21w aWxlXCIiKSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0 YXR1cz0kPwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7 IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAg KGV2YWwgJGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAk YWNfc3RhdHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2hhdmVfZGVjbF9kcmFu ZDQ4PXllcwplbHNlCiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoK YWNfY3ZfaGF2ZV9kZWNsX2RyYW5kNDg9bm8KZmkKcm0gLWYgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmVjaG8gIiRhc19tZTok TElORU5POiByZXN1bHQ6ICRhY19jdl9oYXZlX2RlY2xfZHJhbmQ0OCIgPiY1 CmVjaG8gIiR7RUNIT19UfSRhY19jdl9oYXZlX2RlY2xfZHJhbmQ0OCIgPiY2 CmlmIHRlc3QgJGFjX2N2X2hhdmVfZGVjbF9kcmFuZDQ4ID0geWVzOyB0aGVu CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNM X0RSQU5ENDggMQpfQUNFT0YKCgplbHNlCiAgY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9EUkFORDQ4IDAKX0FDRU9GCgoK ZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgc3Jh bmQ0OCBpcyBkZWNsYXJlZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg d2hldGhlciBzcmFuZDQ4IGlzIGRlY2xhcmVkLi4uICRFQ0hPX0MiID4mNgpp ZiB0ZXN0ICIke2FjX2N2X2hhdmVfZGVjbF9zcmFuZDQ4K3NldH0iID0gc2V0 OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYK ZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgojbGluZSAk TElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpfQUNFT0YK Y2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+PmNvbmZ0 ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmguICAqLwok YWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKbWFpbiAoKQp7CiNpZm5kZWYgc3Jh bmQ0OAogIGNoYXIgKnAgPSAoY2hhciAqKSBzcmFuZDQ4OwojZW5kaWYKCiAg OwogIHJldHVybiAwOwp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2Jq ZXh0CmlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2Nv bXBpbGVcIiIpID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNf c3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAg IHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAo ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUK ICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0 ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCiAgYWNfY3ZfaGF2ZV9kZWNsX3Ny YW5kNDg9eWVzCmVsc2UKICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFt IHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1 CgphY19jdl9oYXZlX2RlY2xfc3JhbmQ0OD1ubwpmaQpybSAtZiBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKZWNobyAiJGFzX21l OiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hhdmVfZGVjbF9zcmFuZDQ4IiA+ JjUKZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hhdmVfZGVjbF9zcmFuZDQ4IiA+ JjYKaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3NyYW5kNDggPSB5ZXM7IHRo ZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RF Q0xfU1JBTkQ0OCAxCl9BQ0VPRgoKCmVsc2UKICBjYXQgPj5jb25mZGVmcy5o IDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNMX1NSQU5ENDggMApfQUNFT0YK CgpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciBm c2VlayBpcyBkZWNsYXJlZCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg d2hldGhlciBmc2VlayBpcyBkZWNsYXJlZC4uLiAkRUNIT19DIiA+JjYKaWYg dGVzdCAiJHthY19jdl9oYXZlX2RlY2xfZnNlZWsrc2V0fSIgPSBzZXQ7IHRo ZW4KICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNl CiAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCiNsaW5lICRMSU5F Tk8gImNvbmZpZ3VyZSIKLyogY29uZmRlZnMuaC4gICovCl9BQ0VPRgpjYXQg Y29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKY2F0ID4+Y29uZnRlc3Qu JGFjX2V4dCA8PF9BQ0VPRgovKiBlbmQgY29uZmRlZnMuaC4gICovCiRhY19p bmNsdWRlc19kZWZhdWx0CmludAptYWluICgpCnsKI2lmbmRlZiBmc2Vlawog IGNoYXIgKnAgPSAoY2hhciAqKSBmc2VlazsKI2VuZGlmCgogIDsKICByZXR1 cm4gMDsKfQpfQUNFT0YKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAppZiB7 IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIi KSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0k PwogIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+ JjUKICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgogICAgICAgICB7IGFjX3Ry eT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwogIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAgKGV2YWwg JGFjX3RyeSkgMj4mNQogIGFjX3N0YXR1cz0kPwogIGVjaG8gIiRhc19tZTok TElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAoZXhpdCAkYWNfc3Rh dHVzKTsgfTsgfTsgdGhlbgogIGFjX2N2X2hhdmVfZGVjbF9mc2Vlaz15ZXMK ZWxzZQogIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1 CnNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCmFjX2N2X2hh dmVfZGVjbF9mc2Vlaz1ubwpmaQpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LiRhY19leHQKZmkKZWNobyAiJGFzX21lOiRMSU5FTk86IHJl c3VsdDogJGFjX2N2X2hhdmVfZGVjbF9mc2VlayIgPiY1CmVjaG8gIiR7RUNI T19UfSRhY19jdl9oYXZlX2RlY2xfZnNlZWsiID4mNgppZiB0ZXN0ICRhY19j dl9oYXZlX2RlY2xfZnNlZWsgPSB5ZXM7IHRoZW4KCmNhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RFQ0xfRlNFRUsgMQpfQUNFT0YK CgplbHNlCiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhB VkVfREVDTF9GU0VFSyAwCl9BQ0VPRgoKCmZpCmVjaG8gIiRhc19tZTokTElO RU5POiBjaGVja2luZyB3aGV0aGVyIHN5c19uZXJyIGlzIGRlY2xhcmVkIiA+ JjUKZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHN5c19uZXJyIGlz IGRlY2xhcmVkLi4uICRFQ0hPX0MiID4mNgppZiB0ZXN0ICIke2FjX2N2X2hh dmVfZGVjbF9zeXNfbmVycitzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVD SE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0 ZXN0LiRhY19leHQgPDxfQUNFT0YKI2xpbmUgJExJTkVOTyAiY29uZmlndXJl IgovKiBjb25mZGVmcy5oLiAgKi8KX0FDRU9GCmNhdCBjb25mZGVmcy5oID4+ Y29uZnRlc3QuJGFjX2V4dApjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FD RU9GCi8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1 bHQKaW50Cm1haW4gKCkKewojaWZuZGVmIHN5c19uZXJyCiAgY2hhciAqcCA9 IChjaGFyICopIHN5c19uZXJyOwojZW5kaWYKCiAgOwogIHJldHVybiAwOwp9 Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CmlmIHsgKGV2YWwg ZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQog IChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNo byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChl eGl0ICRhY19zdGF0dXMpOyB9ICYmCiAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0 IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCiAgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAoZXZhbCAkYWNfdHJ5 KSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIChleGl0ICRhY19zdGF0dXMpOyB9 OyB9OyB0aGVuCiAgYWNfY3ZfaGF2ZV9kZWNsX3N5c19uZXJyPXllcwplbHNl CiAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKYWNfY3ZfaGF2ZV9k ZWNsX3N5c19uZXJyPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dApmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVz dWx0OiAkYWNfY3ZfaGF2ZV9kZWNsX3N5c19uZXJyIiA+JjUKZWNobyAiJHtF Q0hPX1R9JGFjX2N2X2hhdmVfZGVjbF9zeXNfbmVyciIgPiY2CmlmIHRlc3Qg JGFjX2N2X2hhdmVfZGVjbF9zeXNfbmVyciA9IHllczsgdGhlbgoKY2F0ID4+ Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9TWVNfTkVS UiAxCl9BQ0VPRgoKCmVsc2UKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G CiNkZWZpbmUgSEFWRV9ERUNMX1NZU19ORVJSIDAKX0FDRU9GCgoKZmkKZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgc3lzX2Vycmxp c3QgaXMgZGVjbGFyZWQiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5nIHdo ZXRoZXIgc3lzX2Vycmxpc3QgaXMgZGVjbGFyZWQuLi4gJEVDSE9fQyIgPiY2 CmlmIHRlc3QgIiR7YWNfY3ZfaGF2ZV9kZWNsX3N5c19lcnJsaXN0K3NldH0i ID0gc2V0OyB0aGVuCiAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKZWxzZQogIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgoj bGluZSAkTElORU5PICJjb25maWd1cmUiCi8qIGNvbmZkZWZzLmguICAqLwpf QUNFT0YKY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CmNhdCA+ PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLyogZW5kIGNvbmZkZWZzLmgu ICAqLwokYWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKbWFpbiAoKQp7CiNpZm5k ZWYgc3lzX2Vycmxpc3QKICBjaGFyICpwID0gKGNoYXIgKikgc3lzX2Vycmxp c3Q7CiNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCnJtIC1mIGNv bmZ0ZXN0LiRhY19vYmpleHQKaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1CiAgKGV2YWwgJGFjX2NvbXBp bGUpIDI+JjUKICBhY19zdGF0dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7 IH0gJiYKICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFj X29iamV4dCcKICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y190cnlcIiIpID4mNQogIChldmFsICRhY190cnkpIDI+JjUKICBhY19zdGF0 dXM9JD8KICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1 cyIgPiY1CiAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KICBhY19j dl9oYXZlX2RlY2xfc3lzX2Vycmxpc3Q9eWVzCmVsc2UKICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNv bmZ0ZXN0LiRhY19leHQgPiY1CgphY19jdl9oYXZlX2RlY2xfc3lzX2Vycmxp c3Q9bm8KZmkKcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4k YWNfZXh0CmZpCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19j dl9oYXZlX2RlY2xfc3lzX2Vycmxpc3QiID4mNQplY2hvICIke0VDSE9fVH0k YWNfY3ZfaGF2ZV9kZWNsX3N5c19lcnJsaXN0IiA+JjYKaWYgdGVzdCAkYWNf Y3ZfaGF2ZV9kZWNsX3N5c19lcnJsaXN0ID0geWVzOyB0aGVuCgpjYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNMX1NZU19FUlJM SVNUIDEKX0FDRU9GCgoKZWxzZQogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKI2RlZmluZSBIQVZFX0RFQ0xfU1lTX0VSUkxJU1QgMApfQUNFT0YKCgpm aQoKCgoKCgoKCnRlc3RkYXRhX2Rpcj0ke2FjX2N2X3Rlc3RkYXRhfQoKCmFs bF9saWJzPQppZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhl bgogICAgYWxsX2xpYnM9IiR7YWxsX2xpYnN9IFwkKGFsbF9zaGxpYnMpIgpm aQppZiB0ZXN0ICIkZW5hYmxlX3N0YXRpYyIgPSAieWVzIjsgdGhlbgogICAg YWxsX2xpYnM9IiR7YWxsX2xpYnN9IFwkKGFsbF9zdGxpYnMpIgpmaQoKCmZ1 bGxTcmNEaXI9YGNkICRzcmNkaXI7IHB3ZGAKZnVsbEJ1aWxkRGlyPWBwd2Rg ClFOX0JVSUxEX0xJQl9TUEVDPSItTCR7ZnVsbEJ1aWxkRGlyfSAtbHF1aWNr bmV0MyAke0xJQlN9IgpRTl9JTlNUQUxMX0xJQl9TUEVDPSItTCR7bGliZGly fSAtbHF1aWNrbmV0MyAke0xJQlN9IgpRTl9CVUlMRF9JTkNfU1BFQz0iLUkk e2Z1bGxCdWlsZERpcn0gLUkke2Z1bGxTcmNEaXJ9IgpRTl9JTlNUQUxMX0lO Q19TUEVDPSItSSR7aW5jbHVkZWRpcn0vcXVpY2tuZXQzIgoKIyBSZWNvcmQg aW4gdGhlIGNhY2hlIHdoZXJlIG90aGVyIHBlZXIgcGFja2FnZXMgY2FuIGZp bmQgdXMKZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHFuIHBhdGgg aXMgc2F2ZWQgaW4gY2FjaGUiID4mNQplY2hvICRFQ0hPX04gImNoZWNraW5n IHFuIHBhdGggaXMgc2F2ZWQgaW4gY2FjaGUuLi4gJEVDSE9fQyIgPiY2Cmlm IHRlc3QgIiR7YWNkcHdlX2N2X3BhdGhfcW4rc2V0fSIgPSBzZXQ7IHRoZW4K ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAg YWNkcHdlX2N2X3BhdGhfcW49JGZ1bGxCdWlsZERpcgpmaQoKIyBEbyBpdCBh Z2FpbiBpbiBjYXNlIGl0IGRpZG4ndCBkbyBpdCBiZWZvcmUgYmVjYXVzZSBp dCB3YXMgYWxyZWFkeSBpbiBjYWNoZQphY2Rwd2VfY3ZfcGF0aF9xbj0kZnVs bEJ1aWxkRGlyCmVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY2Rw d2VfY3ZfcGF0aF9xbiIgPiY1CmVjaG8gIiR7RUNIT19UfSRhY2Rwd2VfY3Zf cGF0aF9xbiIgPiY2CgojIFJlY29yZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZv ciB0aGUgYmluYXJpZXMKCiMgQXBwZW5kIG91ciBidWlsZCBkaXIgdG8gdGhl IGdyb3dpbmcgbGlzdCBvZiBidWlsZCBsaWIgcGF0aCBkaXJzCmVjaG8gIiRh c19tZTokTElORU5POiBjaGVja2luZyBkcnNwZWVjaCBidWlsZCBsaWIgcGF0 aCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZHJzcGVlY2ggYnVpbGQg bGliIHBhdGguLi4gJEVDSE9fQyIgPiY2CmlmIHRlc3QgIiR7YWNkcHdlX2N2 X2Vudl9saWJfcGF0aCtzZXR9IiA9IHNldDsgdGhlbgogIGVjaG8gJEVDSE9f TiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CmVsc2UKICBhY2Rwd2VfY3ZfZW52 X2xpYl9wYXRoPQpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAk YWNkcHdlX2N2X2Vudl9saWJfcGF0aCIgPiY1CmVjaG8gIiR7RUNIT19UfSRh Y2Rwd2VfY3ZfZW52X2xpYl9wYXRoIiA+JjYKaWYgZWNobyAkYWNkcHdlX2N2 X2Vudl9saWJfcGF0aCB8IGZncmVwIC12ICRmdWxsQnVpbGREaXIgPiAvZGV2 L251bGwgOyB0aGVuCiAgICBhY2Rwd2VfY3ZfZW52X2xpYl9wYXRoPSIkZnVs bEJ1aWxkRGlyICRhY2Rwd2VfY3ZfZW52X2xpYl9wYXRoIgpmaQoKIyBBcHBl bmQgb3VyIGJ1aWxkIGRpciB0byB0aGUgZ3Jvd2luZyBsaXN0IG9mIGJ1aWxk IHBhdGggZGlycwplY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZHJz cGVlY2ggYnVpbGQgcGF0aCIgPiY1CmVjaG8gJEVDSE9fTiAiY2hlY2tpbmcg ZHJzcGVlY2ggYnVpbGQgcGF0aC4uLiAkRUNIT19DIiA+JjYKaWYgdGVzdCAi JHthY2Rwd2VfY3ZfZW52X3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICBlY2hv ICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgplbHNlCiAgYWNkcHdl X2N2X2Vudl9wYXRoPQpmaQplY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0 OiAkYWNkcHdlX2N2X2Vudl9wYXRoIiA+JjUKZWNobyAiJHtFQ0hPX1R9JGFj ZHB3ZV9jdl9lbnZfcGF0aCIgPiY2CmlmIGVjaG8gJGFjZHB3ZV9jdl9lbnZf cGF0aCB8IGZncmVwIC12ICRmdWxsQnVpbGREaXIgPiAvZGV2L251bGwgOyB0 aGVuCiAgICBhY2Rwd2VfY3ZfZW52X3BhdGg9IiRmdWxsQnVpbGREaXIgJGFj ZHB3ZV9jdl9lbnZfcGF0aCIKZmkKCgoKCgoKCiMgVGhlIGV4cGFuZGVkIHNv dXJjZSBkaXIgZm9yIHRoZSBwYWNrYWdlIGNvbmZpZyBmaWxlClFOX1NSQ0RJ Uj1gY2QgJHNyY2RpcjsgcHdkYAoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBRTjND b25maWcuc2ggTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIHBlcmZzdWl0 ZS9NYWtlZmlsZSBxdWlja25ldDMucGMgcXVpY2tuZXQzLWluc3RhbGwucGMg cW5kby5zaCB0ZXN0ZGF0YV9xbm5vcm0uc2ggdGVzdGRhdGFfcW5zdHJuLnNo IHRlc3RkYXRhX3Fuc2Z3ZC5zaCB0ZXN0ZGF0YV9xbnN0cm5fcHMuc2ggdGVz dGRhdGFfcW5zZndkX3BzLnNoIgogICAgICAgICAgYWNfY29uZmlnX2NvbW1h bmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGRlZmF1bHQiCmNhdCA+Y29uZmNh Y2hlIDw8XF9BQ0VPRgojIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0 aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKIyB0ZXN0cyBy dW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdl ZW4gY29uZmlndXJlCiMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNl ZSBjb25maWd1cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuCiMgSXQgaXMg bm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMg cmVzdWx0cyB5b3UgZG9uJ3QKIyB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVt b3ZlIG9yIGVkaXQgaXQuCiMKIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5cyBh dHRlbnRpb24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQKIyB0 aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUuCiMKIyBg YWNfY3ZfZW52X2ZvbycgdmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdpbGwg YmUgb3ZlcnJpZGRlbiB3aGVuCiMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVy ICp1bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKIyBm b2xsb3dpbmcgdmFsdWVzLgoKX0FDRU9GCgojIFRoZSBmb2xsb3dpbmcgd2F5 IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4g dmFsdWVzLAojIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhhdCBp cyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgojIFNvLCBkb24n dCBwdXQgbmV3bGluZXMgaW4gY2FjaGUgdmFyaWFibGVzJyB2YWx1ZXMuCiMg VWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSBy ZWRpcmVjdGVkIGRpcmVjdGx5LAojIGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBp biB0aGUgY2FjaGUgZmlsZSB1bmxlc3Mgd2UgYXNzaWduIHRvIHRoZSB2YXJz Lgp7CiAgKHNldCkgMj4mMSB8CiAgICBjYXNlIGAoYWNfc3BhY2U9JyAnOyBz ZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgogICAgKmFjX3NwYWNlPVwg KikKICAgICAgIyBgc2V0JyBkb2VzIG5vdCBxdW90ZSBjb3JyZWN0bHksIHNv IGFkZCBxdW90ZXMgKGRvdWJsZS1xdW90ZQogICAgICAjIHN1YnN0aXR1dGlv biB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBc KS4KICAgICAgc2VkIC1uIFwKICAgICAgICAicy8nLydcXFxcJycvZzsKICAg IAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1d KlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKICAgICAgOzsKICAgICopCiAg ICAgICMgYHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQ T1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCiAgICAgIHNlZCAtbiBcCiAg ICAgICAgInMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxu dW1dKlxcKT1cXCguKlxcKS9cXDE9XFwyL3AiCiAgICAgIDs7CiAgICBlc2Fj Owp9IHwKICBzZWQgJwogICAgIHQgY2xlYXIKICAgICA6IGNsZWFyCiAgICAg cy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9 IHNldCB8fCAmLwogICAgIHQgZW5kCiAgICAgL15hY19jdl9lbnYvIXMvXlwo W149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9LwogICAgIDogZW5kJyA+PmNv bmZjYWNoZQppZiBkaWZmICRjYWNoZV9maWxlIGNvbmZjYWNoZSA+L2Rldi9u dWxsIDI+JjE7IHRoZW4gOjsgZWxzZQogIGlmIHRlc3QgLXcgJGNhY2hlX2Zp bGU7IHRoZW4KICAgIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251 bGwiICYmIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgogICAg Y2F0IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUKICBlbHNlCiAgICBlY2hvICJu b3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIKICBm aQpmaQpybSAtZiBjb25mY2FjaGUKCnRlc3QgIngkcHJlZml4IiA9IHhOT05F ICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKIyBMZXQgbWFrZSBleHBh bmQgZXhlY19wcmVmaXguCnRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUg JiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKCiMgVlBBVEggbWF5IGNhdXNl IHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgJChzcmNk aXIpLAojICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBz cmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAojIHRyYWlsaW5nIGNv bG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEgg YmVjb21lcyBlbXB0eQojIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBs aW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCmlmIHRlc3QgIngkc3Jj ZGlyIiA9IHguOyB0aGVuCiAgYWNfdnBzdWI9Jy9eWyAJXSpWUEFUSFsgCV0q PS97CnMvOipcJChzcmNkaXIpOiovOi87CnMvOipcJHtzcmNkaXJ9OiovOi87 CnMvOipAc3JjZGlyQDoqLzovOwpzL15cKFtePV0qPVsgCV0qXCk6Ki9cMS87 CnMvOiokLy87CnMvXltePV0qPVsgCV0qJC8vOwp9JwpmaQoKREVGUz0tREhB VkVfQ09ORklHX0gKCmFjX2xpYm9ianM9CmFjX2x0bGlib2Jqcz0KZm9yIGFj X2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNv bnRpbnVlCiAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlm IGFscmVhZHkgaW5zdGFsbGVkLgogIGFjX2k9YGVjaG8gIiRhY19pIiB8CiAg ICAgICAgIHNlZCAncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJ2AK ICAjIDIuIEFkZCB0aGVtLgogIGFjX2xpYm9ianM9IiRhY19saWJvYmpzICRh Y19pXCRVLiRhY19vYmpleHQiCiAgYWNfbHRsaWJvYmpzPSIkYWNfbHRsaWJv YmpzICRhY19pIickVS5sbycKZG9uZQpMSUJPQkpTPSRhY19saWJvYmpzCgpM VExJQk9CSlM9JGFjX2x0bGlib2JqcwoKCgo6ICR7Q09ORklHX1NUQVRVUz0u L2NvbmZpZy5zdGF0dXN9CmFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFu X2ZpbGVzCmFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJ R19TVEFUVVMiCnsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRD T05GSUdfU1RBVFVTIiA+JjUKZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09O RklHX1NUQVRVUyIgPiY2O30KY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BQ0VP RgojISAkU0hFTEwKIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgojIFJ1biB0aGlz IGZpbGUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4K IyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2Vm dWwgZm9yIGRlYnVnZ2luZwojIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxv ZyBpZiBpdCBleGlzdHMuCgpkZWJ1Zz1mYWxzZQphY19jc19yZWNoZWNrPWZh bHNlCmFjX2NzX3NpbGVudD1mYWxzZQpTSEVMTD1cJHtDT05GSUdfU0hFTEwt JFNIRUxMfQpfQUNFT0YKCmNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VP RgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgTTRzaCBJbml0aWFs aXphdGlvbi4gICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwoKIyBC ZSBCb3VybmUgY29tcGF0aWJsZQppZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9O K3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4K ICBlbXVsYXRlIHNoCiAgTlVMTENNRD06CiAgIyBac2ggMy54IGFuZCA0Lngg cGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAog ICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZl YXR1cmUuCiAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCmVsaWYgdGVz dCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkg Pi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgc2V0IC1vIHBvc2l4CmZpCgojIFN1 cHBvcnQgdW5zZXQgd2hlbiBwb3NzaWJsZS4KaWYgKEZPTz1GT087IHVuc2V0 IEZPTykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgYXNfdW5zZXQ9dW5zZXQK ZWxzZQogIGFzX3Vuc2V0PWZhbHNlCmZpCgoKIyBXb3JrIGFyb3VuZCBidWdz IGluIHByZS0zLjAgVVdJTiBrc2guCiRhc191bnNldCBFTlYgTUFJTCBNQUlM UEFUSApQUzE9JyQgJwpQUzI9Jz4gJwpQUzQ9JysgJwoKIyBOTFMgbnVpc2Fu Y2VzLgpmb3IgYXNfdmFyIGluIFwKICBMQU5HIExBTkdVQUdFIExDX0FERFJF U1MgTENfQUxMIExDX0NPTExBVEUgTENfQ1RZUEUgTENfSURFTlRJRklDQVRJ T04gXAogIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZ IExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCiAgTENfVEVMRVBIT05F IExDX1RJTUUKZG8KICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFz X3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgogICAgZXZh bCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyCiAgZWxzZQogICAgJGFzX3Vu c2V0ICRhc192YXIKICBmaQpkb25lCgojIFJlcXVpcmVkIHRvIHVzZSBiYXNl bmFtZS4KaWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRo ZW4KICBhc19leHByPWV4cHIKZWxzZQogIGFzX2V4cHI9ZmFsc2UKZmkKCmlm IChiYXNlbmFtZSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNl bmFtZSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KICBhc19iYXNlbmFtZT1iYXNl bmFtZQplbHNlCiAgYXNfYmFzZW5hbWU9ZmFsc2UKZmkKCgojIE5hbWUgb2Yg dGhlIGV4ZWN1dGFibGUuCmFzX21lPWAkYXNfYmFzZW5hbWUgIiQwIiB8fAok YXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAoJ IFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCgkgWCIkMCIgOiAnWFwoL1wpJCcg XHwgXAoJIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAplY2hvIFgv IiQwIiB8CiAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sgcy8v XDEvOyBxOyB9CiAgCSAgL15YXC9cKFwvXC9cKSQveyBzLy9cMS87IHE7IH0K ICAJICAvXlhcL1woXC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8u LzsgcSdgCgoKIyBQQVRIIG5lZWRzIENSLCBhbmQgTElORU5PIG5lZWRzIENS IGFuZCBQQVRILgojIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBS YW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3 eHl6Jwphc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ WicKYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJT CmFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKYXNfY3JfYWxudW09JGFzX2Ny X0xldHRlcnMkYXNfY3JfZGlnaXRzCgojIFRoZSB1c2VyIGlzIGFsd2F5cyBy aWdodC4KaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7 IHRoZW4KICBlY2hvICIjISAvYmluL3NoIiA+Y29uZiQkLnNoCiAgZWNobyAg ImV4aXQgMCIgICA+PmNvbmYkJC5zaAogIGNobW9kICt4IGNvbmYkJC5zaAog IGlmIChQQVRIPSIvbm9uZXhpc3RlbnQ7LiI7IGNvbmYkJC5zaCkgPi9kZXYv bnVsbCAyPiYxOyB0aGVuCiAgICBQQVRIX1NFUEFSQVRPUj0nOycKICBlbHNl CiAgICBQQVRIX1NFUEFSQVRPUj06CiAgZmkKICBybSAtZiBjb25mJCQuc2gK ZmkKCgogIGFzX2xpbmVub18xPSRMSU5FTk8KICBhc19saW5lbm9fMj0kTElO RU5PCiAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+ L2Rldi9udWxsYAogIHRlc3QgIngkYXNfbGluZW5vXzEiICE9ICJ4JGFzX2xp bmVub18yIiAmJgogIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xp bmVub18yIiAgfHwgewogICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0 aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIHBhdGggYXQgYWxsCiAgIyByZWxh dGl2ZSBvciBub3QuCiAgY2FzZSAkMCBpbgogICAgKltcXC9dKiApIGFzX215 c2VsZj0kMCA7OwogICAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19z YXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgdGVz dCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYg YnJlYWsKZG9uZQoKICAgICAgIDs7CiAgZXNhYwogICMgV2UgZGlkIG5vdCBm aW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBg c2ggQ09NTUFORCcKICAjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBi ZSBmb3VuZCBpbiB0aGUgcGF0aC4KICBpZiB0ZXN0ICJ4JGFzX215c2VsZiIg PSB4OyB0aGVuCiAgICBhc19teXNlbGY9JDAKICBmaQogIGlmIHRlc3QgISAt ZiAiJGFzX215c2VsZiI7IHRoZW4KICAgIHsgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBh biBhYnNvbHV0ZSBwYXRoIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fu bm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgi ID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogIGZpCiAgY2Fz ZSAkQ09ORklHX1NIRUxMIGluCiAgJycpCiAgICBhc19zYXZlX0lGUz0kSUZT OyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gL2JpbiRQQVRI X1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKZG8KICBJ RlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4KICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCgkgY2Fz ZSAkYXNfZGlyIGluCgkgLyopCgkgICBpZiAoIiRhc19kaXIvJGFzX2Jhc2Ui IC1jICcKICBhc19saW5lbm9fMT0kTElORU5PCiAgYXNfbGluZW5vXzI9JExJ TkVOTwogIGFzX2xpbmVub18zPWAoZXhwciAkYXNfbGluZW5vXzEgKyAxKSAy Pi9kZXYvbnVsbGAKICB0ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19s aW5lbm9fMiIgJiYKICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19s aW5lbm9fMiIgJykgMj4vZGV2L251bGw7IHRoZW4KCSAgICAgJGFzX3Vuc2V0 IEJBU0hfRU5WIHx8IHRlc3QgIiR7QkFTSF9FTlYrc2V0fSIgIT0gc2V0IHx8 IHsgQkFTSF9FTlY9OyBleHBvcnQgQkFTSF9FTlY7IH0KCSAgICAgJGFzX3Vu c2V0IEVOViB8fCB0ZXN0ICIke0VOVitzZXR9IiAhPSBzZXQgfHwgeyBFTlY9 OyBleHBvcnQgRU5WOyB9CgkgICAgIENPTkZJR19TSEVMTD0kYXNfZGlyLyRh c19iYXNlCgkgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKCSAgICAgZXhlYyAi JENPTkZJR19TSEVMTCIgIiQwIiAkezErIiRAIn0KCSAgIGZpOzsKCSBlc2Fj CiAgICAgICBkb25lCmRvbmUKOzsKICBlc2FjCgogICMgQ3JlYXRlICRhc19t ZS5saW5lbm8gYXMgYSBjb3B5IG9mICRhc19teXNlbGYsIGJ1dCB3aXRoICRM SU5FTk8KICAjIHVuaWZvcm1seSByZXBsYWNlZCBieSB0aGUgbGluZSBudW1i ZXIuICBUaGUgZmlyc3QgJ3NlZCcgaW5zZXJ0cyBhCiAgIyBsaW5lLW51bWJl ciBsaW5lIGJlZm9yZSBlYWNoIGxpbmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9l cyB0aGUgcmVhbAogICMgd29yay4gIFRoZSBzZWNvbmQgc2NyaXB0IHVzZXMg J04nIHRvIHBhaXIgZWFjaCBsaW5lLW51bWJlciBsaW5lCiAgIyB3aXRoIHRo ZSBudW1iZXJlZCBsaW5lLCBhbmQgYXBwZW5kcyB0cmFpbGluZyAnLScgZHVy aW5nCiAgIyBzdWJzdGl0dXRpb24gc28gdGhhdCAkTElORU5PIGlzIG5vdCBh IHNwZWNpYWwgY2FzZSBhdCBsaW5lIGVuZC4KICAjIChSYWphIFIgSGFyaW5h dGggc3VnZ2VzdGVkIHNlZCAnPScsIGFuZCBQYXVsIEVnZ2VydCB3cm90ZSB0 aGUKICAjIHNlY29uZCAnc2VkJyBzY3JpcHQuICBCbGFtZSBMZWUgRS4gTWNN YWhvbiBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCiAgc2VkICc9JyA8JGFzX215 c2VsZiB8CiAgICBzZWQgJwogICAgICBOCiAgICAgIHMsJCwtLAogICAgICA6 IGxvb3AKICAgICAgcyxeXChbJyRhc19jcl9kaWdpdHMnXSpcKVwoLipcKVsk XUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dXCksXDFcMlwxXDMsCiAgICAg IHQgbG9vcAogICAgICBzLC0kLCwKICAgICAgcyxeWyckYXNfY3JfZGlnaXRz J10qXG4sLAogICAgJyA+JGFzX21lLmxpbmVubyAmJgogIGNobW9kICt4ICRh c19tZS5saW5lbm8gfHwKICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog ZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0 aCBhIFBPU0lYIHNoZWxsIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fu bm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVgg c2hlbGwiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQoKICAj IERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2lu ZyBhbGwgc29ydCBvZiBwcm9ibGVtcwogICMgKHRoZSBkaXJuYW1lIG9mICRb MF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQog ICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxs eSBzZW5zaWJsZSB0byB0aGlzKS4KICAuIC4vJGFzX21lLmxpbmVubwogICMg RXhpdCBzdGF0dXMgaXMgdGhhdCBvZiB0aGUgbGFzdCBjb21tYW5kLgogIGV4 aXQKfQoKCmNhc2UgYGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBl Y2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNgIGluCiAgKmMqLC1uKikgRUNI T19OPSBFQ0hPX0M9JwonIEVDSE9fVD0nCScgOzsKICAqYyosKiAgKSBFQ0hP X049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7CiAgKikgICAgICAgRUNIT19OPSBF Q0hPX0M9J1xjJyBFQ0hPX1Q9IDs7CmVzYWMKCmlmIGV4cHIgYSA6ICdcKGFc KScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgYXNfZXhwcj1leHByCmVsc2UK ICBhc19leHByPWZhbHNlCmZpCgpybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBj b25mJCQuZmlsZQplY2hvID5jb25mJCQuZmlsZQppZiBsbiAtcyBjb25mJCQu ZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KICAjIFdlIGNvdWxkIGp1 c3QgY2hlY2sgZm9yIERKR1BQOyBidXQgdGhpcyB0ZXN0IGEpIHdvcmtzIGIp IGlzIG1vcmUgZ2VuZXJpYwogICMgYW5kIGMpIHdpbGwgcmVtYWluIHZhbGlk IG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERKR1BQIDIuMDQpLgog IGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgogICAgIyBEb24ndCB1c2Ug bG4gYXQgYWxsOyB3ZSBkb24ndCBoYXZlIGFueSBsaW5rcwogICAgYXNfbG5f cz0nY3AgLXAnCiAgZWxzZQogICAgYXNfbG5fcz0nbG4gLXMnCiAgZmkKZWxp ZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KICBh c19sbl9zPWxuCmVsc2UKICBhc19sbl9zPSdjcCAtcCcKZmkKcm0gLWYgY29u ZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKCmlmIG1rZGlyIC1wIC4gMj4v ZGV2L251bGw7IHRoZW4KICBhc19ta2Rpcl9wPToKZWxzZQogIGFzX21rZGly X3A9ZmFsc2UKZmkKCmFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKCiMgU2Vk IGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAg bmFtZS4KYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19j cl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgoKIyBTZWQgZXhw cmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxl IG5hbWUuCmFzX3RyX3NoPSJzZWQgeSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxu dW1dJV8lZyIKCgojIElGUwojIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3 IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgphc19ubD0nCicKSUZT PSIgCSRhc19ubCIKCiMgQ0RQQVRILgokYXNfdW5zZXQgQ0RQQVRICgpleGVj IDY+JjEKCiMgT3BlbiB0aGUgbG9nIHJlYWwgc29vbiwgdG8ga2VlcCBcJFsw XSBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCiMgcmVwb3J0IGFjdHVh bCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBv ZiB0aGVpcgojIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLiAgTG9n Z2luZyAtLXZlcnNpb24gZXRjLiBpcyBPSy4KZXhlYyA1Pj5jb25maWcubG9n CnsKICBlY2hvCiAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4k LyAjIy87cDt4O3A7eCcgPDxfQVNCT1gKIyMgUnVubmluZyAkYXNfbWUuICMj Cl9BU0JPWAp9ID4mNQpjYXQgPiY1IDw8X0NTRU9GCgpUaGlzIGZpbGUgd2Fz IGV4dGVuZGVkIGJ5IFF1aWNrTmV0ICRhc19tZSB2M18xMSwgd2hpY2ggd2Fz CmdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24g Y29tbWFuZCBsaW5lIHdhcwoKICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklH X0ZJTEVTCiAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCiAg Q09ORklHX0xJTktTICAgID0gJENPTkZJR19MSU5LUwogIENPTkZJR19DT01N QU5EUyA9ICRDT05GSUdfQ09NTUFORFMKICAkICQwICRACgpfQ1NFT0YKZWNo byAib24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBz ZWQgMXFgIiA+JjUKZWNobyA+JjUKX0FDRU9GCgojIEZpbGVzIHRoYXQgY29u ZmlnLnN0YXR1cyB3YXMgbWFkZSBmb3IuCmlmIHRlc3QgLW4gIiRhY19jb25m aWdfZmlsZXMiOyB0aGVuCiAgZWNobyAiY29uZmlnX2ZpbGVzPVwiJGFjX2Nv bmZpZ19maWxlc1wiIiA+PiRDT05GSUdfU1RBVFVTCmZpCgppZiB0ZXN0IC1u ICIkYWNfY29uZmlnX2hlYWRlcnMiOyB0aGVuCiAgZWNobyAiY29uZmlnX2hl YWRlcnM9XCIkYWNfY29uZmlnX2hlYWRlcnNcIiIgPj4kQ09ORklHX1NUQVRV UwpmaQoKaWYgdGVzdCAtbiAiJGFjX2NvbmZpZ19saW5rcyI7IHRoZW4KICBl Y2hvICJjb25maWdfbGlua3M9XCIkYWNfY29uZmlnX2xpbmtzXCIiID4+JENP TkZJR19TVEFUVVMKZmkKCmlmIHRlc3QgLW4gIiRhY19jb25maWdfY29tbWFu ZHMiOyB0aGVuCiAgZWNobyAiY29uZmlnX2NvbW1hbmRzPVwiJGFjX2NvbmZp Z19jb21tYW5kc1wiIiA+PiRDT05GSUdfU1RBVFVTCmZpCgpjYXQgPj4kQ09O RklHX1NUQVRVUyA8PFxfQUNFT0YKCmFjX2NzX3VzYWdlPSJcClxgJGFzX21l JyBpbnN0YW50aWF0ZXMgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5n IHRvIHRoZQpjdXJyZW50IGNvbmZpZ3VyYXRpb24uCgpVc2FnZTogJDAgW09Q VElPTlNdIFtGSUxFXS4uLgoKICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRo aXMgaGVscCwgdGhlbiBleGl0CiAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2 ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CiAgLXEsIC0tcXVpZXQgICAgICBk byBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVzc2FnZXMKICAtZCwgLS1kZWJ1ZyAg ICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKICAgICAgLS1yZWNo ZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUg c2FtZSBjb25kaXRpb25zCiAgLS1maWxlPUZJTEVbOlRFTVBMQVRFXQogICAg ICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24g ZmlsZSBGSUxFCiAgLS1oZWFkZXI9RklMRVs6VEVNUExBVEVdCiAgICAgICAg ICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFk ZXIgRklMRQoKQ29uZmlndXJhdGlvbiBmaWxlczoKJGNvbmZpZ19maWxlcwoK Q29uZmlndXJhdGlvbiBoZWFkZXJzOgokY29uZmlnX2hlYWRlcnMKCkNvbmZp Z3VyYXRpb24gY29tbWFuZHM6CiRjb25maWdfY29tbWFuZHMKClJlcG9ydCBi dWdzIHRvIDxidWctYXV0b2NvbmZAZ251Lm9yZz4uIgpfQUNFT0YKCmNhdCA+ PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCmFjX2NzX3ZlcnNpb249IlxcClF1 aWNrTmV0IGNvbmZpZy5zdGF0dXMgdjNfMTEKY29uZmlndXJlZCBieSAkMCwg Z2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LAogIHdpdGggb3B0aW9u cyBcXCJgZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9bXFwi IlxgXCRdL1xcXFwmL2cnYFxcIgoKQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5 OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoaXMgY29uZmlnLnN0YXR1cyBz Y3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbgpnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBk aXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgpzcmNkaXI9JHNyY2RpcgpJTlNU QUxMPSIkSU5TVEFMTCIKX0FDRU9GCgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8 PFxfQUNFT0YKIyBJZiBubyBmaWxlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHVz ZXIsIHRoZW4gd2UgbmVlZCB0byBwcm92aWRlIGRlZmF1bHQKIyB2YWx1ZS4g IEJ5IHdlIG5lZWQgdG8ga25vdyBpZiBmaWxlcyB3ZXJlIHNwZWNpZmllZCBi eSB0aGUgdXNlci4KYWNfbmVlZF9kZWZhdWx0cz06CndoaWxlIHRlc3QgJCMg IT0gMApkbwogIGNhc2UgJDEgaW4KICAtLSo9KikKICAgIGFjX29wdGlvbj1g ZXhwciAieCQxIiA6ICd4XChbXj1dKlwpPSdgCiAgICBhY19vcHRhcmc9YGV4 cHIgIngkMSIgOiAneFtePV0qPVwoLipcKSdgCiAgICBhY19zaGlmdD06CiAg ICA7OwogIC0qKQogICAgYWNfb3B0aW9uPSQxCiAgICBhY19vcHRhcmc9JDIK ICAgIGFjX3NoaWZ0PXNoaWZ0CiAgICA7OwogICopICMgVGhpcyBpcyBub3Qg YW4gb3B0aW9uLCBzbyB0aGUgdXNlciBoYXMgcHJvYmFibHkgZ2l2ZW4gZXhw bGljaXQKICAgICAjIGFyZ3VtZW50cy4KICAgICBhY19vcHRpb249JDEKICAg ICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKICBlc2FjCgogIGNhc2UgJGFj X29wdGlvbiBpbgogICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCl9BQ0VP RgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKICAtcmVjaGVjayB8 IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0t cmVjIHwgLS1yZSB8IC0tcikKICAgIGFjX2NzX3JlY2hlY2s9OiA7OwogIC0t dmVyc2lvbiB8IC0tdmVycyogfCAtViApCiAgICBlY2hvICIkYWNfY3NfdmVy c2lvbiI7IGV4aXQgMCA7OwogIC0taGUgfCAtLWgpCiAgICAjIENvbmZsaWN0 IGJldHdlZW4gLS1oZWxwIGFuZCAtLWhlYWRlcgogICAgeyB7IGVjaG8gIiRh c19tZTokTElORU5POiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKVHJ5 IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mNQplY2hv ICIkYXNfbWU6IGVycm9yOiBhbWJpZ3VvdXMgb3B0aW9uOiAkMQpUcnkgXGAk MCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KICAgeyAo ZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKICAtLWhlbHAgfCAtLWhlbCB8IC1o ICkKICAgIGVjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgMCA7OwogIC0tZGVi dWcgfCAtLWQqIHwgLWQgKQogICAgZGVidWc9OiA7OwogIC0tZmlsZSB8IC0t ZmlsIHwgLS1maSB8IC0tZiApCiAgICAkYWNfc2hpZnQKICAgIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyAkYWNfb3B0YXJnIgogICAgYWNfbmVlZF9k ZWZhdWx0cz1mYWxzZTs7CiAgLS1oZWFkZXIgfCAtLWhlYWRlIHwgLS1oZWFk IHwgLS1oZWEgKQogICAgJGFjX3NoaWZ0CiAgICBDT05GSUdfSEVBREVSUz0i JENPTkZJR19IRUFERVJTICRhY19vcHRhcmciCiAgICBhY19uZWVkX2RlZmF1 bHRzPWZhbHNlOzsKICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUg fCAtLXF1aSB8IC0tcXUgfCAtLXEgXAogIHwgLXNpbGVudCB8IC0tc2lsZW50 IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKICAg IGFjX2NzX3NpbGVudD06IDs7CgogICMgVGhpcyBpcyBhbiBlcnJvci4KICAt KikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogdW5yZWNvZ25p emVkIG9wdGlvbjogJDEKVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZv cm1hdGlvbi4iID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiB1bnJlY29nbml6 ZWQgb3B0aW9uOiAkMQpUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9y bWF0aW9uLiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7 CgogICopIGFjX2NvbmZpZ190YXJnZXRzPSIkYWNfY29uZmlnX3RhcmdldHMg JDEiIDs7CgogIGVzYWMKICBzaGlmdApkb25lCgphY19jb25maWd1cmVfZXh0 cmFfYXJncz0KCmlmICRhY19jc19zaWxlbnQ7IHRoZW4KICBleGVjIDY+L2Rl di9udWxsCiAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1 cmVfZXh0cmFfYXJncyAtLXNpbGVudCIKZmkKCl9BQ0VPRgpjYXQgPj4kQ09O RklHX1NUQVRVUyA8PF9BQ0VPRgppZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4K ICBlY2hvICJydW5uaW5nICRTSEVMTCAkMCAiICRhY19jb25maWd1cmVfYXJn cyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzICIgLS1uby1jcmVhdGUgLS1u by1yZWN1cnNpb24iID4mNgogIGV4ZWMgJFNIRUxMICQwICRhY19jb25maWd1 cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tbm8tY3JlYXRl IC0tbm8tcmVjdXJzaW9uCmZpCgpfQUNFT0YKCgoKCgpjYXQgPj4kQ09ORklH X1NUQVRVUyA8PFxfQUNFT0YKZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFj X2NvbmZpZ190YXJnZXRzCmRvCiAgY2FzZSAiJGFjX2NvbmZpZ190YXJnZXQi IGluCiAgIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCiAgIlFOM0NvbmZpZy5z aCIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgUU4zQ29uZmlnLnNo IiA7OwogICJNYWtlZmlsZSIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgTWFrZWZpbGUiIDs7CiAgInRlc3RzdWl0ZS9NYWtlZmlsZSIgKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHN1aXRlL01ha2VmaWxlIiA7 OwogICJwZXJmc3VpdGUvTWFrZWZpbGUiICkgQ09ORklHX0ZJTEVTPSIkQ09O RklHX0ZJTEVTIHBlcmZzdWl0ZS9NYWtlZmlsZSIgOzsKICAicXVpY2tuZXQz LnBjIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBxdWlja25ldDMu cGMiIDs7CiAgInF1aWNrbmV0My1pbnN0YWxsLnBjIiApIENPTkZJR19GSUxF Uz0iJENPTkZJR19GSUxFUyBxdWlja25ldDMtaW5zdGFsbC5wYyIgOzsKICAi cW5kby5zaCIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcW5kby5z aCIgOzsKICAidGVzdGRhdGFfcW5ub3JtLnNoIiApIENPTkZJR19GSUxFUz0i JENPTkZJR19GSUxFUyB0ZXN0ZGF0YV9xbm5vcm0uc2giIDs7CiAgInRlc3Rk YXRhX3Fuc3Rybi5zaCIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMg dGVzdGRhdGFfcW5zdHJuLnNoIiA7OwogICJ0ZXN0ZGF0YV9xbnNmd2Quc2gi ICkgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RkYXRhX3Fuc2Z3 ZC5zaCIgOzsKICAidGVzdGRhdGFfcW5zdHJuX3BzLnNoIiApIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0ZGF0YV9xbnN0cm5fcHMuc2giIDs7 CiAgInRlc3RkYXRhX3Fuc2Z3ZF9wcy5zaCIgKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgdGVzdGRhdGFfcW5zZndkX3BzLnNoIiA7OwogICJkZWZh dWx0IiApIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBkZWZh dWx0IiA7OwogICJjb25maWcuaCIgKSBDT05GSUdfSEVBREVSUz0iJENPTkZJ R19IRUFERVJTIGNvbmZpZy5oIiA7OwogICopIHsgeyBlY2hvICIkYXNfbWU6 JExJTkVOTzogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdf dGFyZ2V0IiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBhcmd1 bWVudDogJGFjX2NvbmZpZ190YXJnZXQiID4mMjt9CiAgIHsgKGV4aXQgMSk7 IGV4aXQgMTsgfTsgfTs7CiAgZXNhYwpkb25lCgojIElmIHRoZSB1c2VyIGRp ZCBub3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMg dG8gaW5zdGFudGlhdGUsCiMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBp cyB1c2VkLiAgU2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90LgojIFdlIHVz ZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IGJl Y2F1c2Ugb2YgYW4gZXh0cmVtZWx5CiMgYml6YXJyZSBidWcgb24gU3VuT1Mg NC4xLjMuCmlmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuCiAgdGVzdCAiJHtD T05GSUdfRklMRVMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25m aWdfZmlsZXMKICB0ZXN0ICIke0NPTkZJR19IRUFERVJTK3NldH0iID0gc2V0 IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVhZGVycwogIHRlc3QgIiR7 Q09ORklHX0NPTU1BTkRTK3NldH0iID0gc2V0IHx8IENPTkZJR19DT01NQU5E Uz0kY29uZmlnX2NvbW1hbmRzCmZpCgojIEhhdmUgYSB0ZW1wb3JhcnkgZGly ZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxk IHRyZWUKIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24gdG8g cHV0IGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKIyBjcmVhdGluZyBhbmQg bW92aW5nIGZpbGVzIGZyb20gL3RtcCBjYW4gc29tZXRpbWVzIGNhdXNlIHBy b2JsZW1zLgojIENyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIGFuZCBo b29rIGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLgokZGVidWcg fHwKewogIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/OyBybSAtcmYgJHRtcCAmJiBl eGl0ICRleGl0X3N0YXR1cycgMAogIHRyYXAgJ3sgKGV4aXQgMSk7IGV4aXQg MTsgfScgMSAyIDEzIDE1Cn0KCiMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRp cmVjdG9yeSBmb3IgdG1wIGZpbGVzLgoKewogIHRtcD1gKHVtYXNrIDA3NyAm JiBta3RlbXAgLWQgLXEgIi4vY29uZnN0YXRYWFhYWFgiKSAyPi9kZXYvbnVs bGAgJiYKICB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIgp9ICB8 fAp7CiAgdG1wPS4vY29uZnN0YXQkJC0kUkFORE9NCiAgKHVtYXNrIDA3NyAm JiBta2RpciAkdG1wKQp9IHx8CnsKICAgZWNobyAiJG1lOiBjYW5ub3QgY3Jl YXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiA+JjIKICAgeyAoZXhp dCAxKTsgZXhpdCAxOyB9Cn0KCl9BQ0VPRgoKY2F0ID4+JENPTkZJR19TVEFU VVMgPDxfQUNFT0YKCiMKIyBDT05GSUdfRklMRVMgc2VjdGlvbi4KIwoKIyBO byBuZWVkIHRvIGdlbmVyYXRlIHRoZSBzY3JpcHRzIGlmIHRoZXJlIGFyZSBu byBDT05GSUdfRklMRVMuCiMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3 aGVuIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAppZiB0ZXN0IC1uICJcJENP TkZJR19GSUxFUyI7IHRoZW4KICAjIFByb3RlY3QgYWdhaW5zdCBiZWluZyBv biB0aGUgcmlnaHQgc2lkZSBvZiBhIHNlZCBzdWJzdCBpbiBjb25maWcuc3Rh dHVzLgogIHNlZCAncy8sQC9AQC87IHMvQCwvQEAvOyBzLyw7dCB0XCQvQDt0 IHQvOyAvQDt0IHRcJC9zL1tcXFxcJixdL1xcXFwmL2c7CiAgIHMvQEAvLEAv OyBzL0BAL0AsLzsgcy9AO3QgdFwkLyw7dCB0LycgPlwkdG1wL3N1YnMuc2Vk IDw8XFxDRU9GCnMsQFNIRUxMQCwkU0hFTEwsO3QgdApzLEBQQVRIX1NFUEFS QVRPUkAsJFBBVEhfU0VQQVJBVE9SLDt0IHQKcyxAUEFDS0FHRV9OQU1FQCwk UEFDS0FHRV9OQU1FLDt0IHQKcyxAUEFDS0FHRV9UQVJOQU1FQCwkUEFDS0FH RV9UQVJOQU1FLDt0IHQKcyxAUEFDS0FHRV9WRVJTSU9OQCwkUEFDS0FHRV9W RVJTSU9OLDt0IHQKcyxAUEFDS0FHRV9TVFJJTkdALCRQQUNLQUdFX1NUUklO Ryw7dCB0CnMsQFBBQ0tBR0VfQlVHUkVQT1JUQCwkUEFDS0FHRV9CVUdSRVBP UlQsO3QgdApzLEBleGVjX3ByZWZpeEAsJGV4ZWNfcHJlZml4LDt0IHQKcyxA cHJlZml4QCwkcHJlZml4LDt0IHQKcyxAcHJvZ3JhbV90cmFuc2Zvcm1fbmFt ZUAsJHByb2dyYW1fdHJhbnNmb3JtX25hbWUsO3QgdApzLEBiaW5kaXJALCRi aW5kaXIsO3QgdApzLEBzYmluZGlyQCwkc2JpbmRpciw7dCB0CnMsQGxpYmV4 ZWNkaXJALCRsaWJleGVjZGlyLDt0IHQKcyxAZGF0YWRpckAsJGRhdGFkaXIs O3QgdApzLEBzeXNjb25mZGlyQCwkc3lzY29uZmRpciw7dCB0CnMsQHNoYXJl ZHN0YXRlZGlyQCwkc2hhcmVkc3RhdGVkaXIsO3QgdApzLEBsb2NhbHN0YXRl ZGlyQCwkbG9jYWxzdGF0ZWRpciw7dCB0CnMsQGxpYmRpckAsJGxpYmRpciw7 dCB0CnMsQGluY2x1ZGVkaXJALCRpbmNsdWRlZGlyLDt0IHQKcyxAb2xkaW5j bHVkZWRpckAsJG9sZGluY2x1ZGVkaXIsO3QgdApzLEBpbmZvZGlyQCwkaW5m b2Rpciw7dCB0CnMsQG1hbmRpckAsJG1hbmRpciw7dCB0CnMsQGJ1aWxkX2Fs aWFzQCwkYnVpbGRfYWxpYXMsO3QgdApzLEBob3N0X2FsaWFzQCwkaG9zdF9h bGlhcyw7dCB0CnMsQHRhcmdldF9hbGlhc0AsJHRhcmdldF9hbGlhcyw7dCB0 CnMsQERFRlNALCRERUZTLDt0IHQKcyxARUNIT19DQCwkRUNIT19DLDt0IHQK cyxARUNIT19OQCwkRUNIT19OLDt0IHQKcyxARUNIT19UQCwkRUNIT19ULDt0 IHQKcyxATElCU0AsJExJQlMsO3QgdApzLEBidWlsZEAsJGJ1aWxkLDt0IHQK cyxAYnVpbGRfY3B1QCwkYnVpbGRfY3B1LDt0IHQKcyxAYnVpbGRfdmVuZG9y QCwkYnVpbGRfdmVuZG9yLDt0IHQKcyxAYnVpbGRfb3NALCRidWlsZF9vcyw7 dCB0CnMsQGhvc3RALCRob3N0LDt0IHQKcyxAaG9zdF9jcHVALCRob3N0X2Nw dSw7dCB0CnMsQGhvc3RfdmVuZG9yQCwkaG9zdF92ZW5kb3IsO3QgdApzLEBo b3N0X29zQCwkaG9zdF9vcyw7dCB0CnMsQHRhcmdldEAsJHRhcmdldCw7dCB0 CnMsQHRhcmdldF9jcHVALCR0YXJnZXRfY3B1LDt0IHQKcyxAdGFyZ2V0X3Zl bmRvckAsJHRhcmdldF92ZW5kb3IsO3QgdApzLEB0YXJnZXRfb3NALCR0YXJn ZXRfb3MsO3QgdApzLEBMREAsJExELDt0IHQKcyxAQ0NALCRDQyw7dCB0CnMs QENGTEFHU0AsJENGTEFHUyw7dCB0CnMsQExERkxBR1NALCRMREZMQUdTLDt0 IHQKcyxAQ1BQRkxBR1NALCRDUFBGTEFHUyw7dCB0CnMsQGFjX2N0X0NDQCwk YWNfY3RfQ0MsO3QgdApzLEBFWEVFWFRALCRFWEVFWFQsO3QgdApzLEBPQkpF WFRALCRPQkpFWFQsO3QgdApzLEBDWFhALCRDWFgsO3QgdApzLEBDWFhGTEFH U0AsJENYWEZMQUdTLDt0IHQKcyxAYWNfY3RfQ1hYQCwkYWNfY3RfQ1hYLDt0 IHQKcyxASU5TVEFMTF9QUk9HUkFNQCwkSU5TVEFMTF9QUk9HUkFNLDt0IHQK cyxASU5TVEFMTF9TQ1JJUFRALCRJTlNUQUxMX1NDUklQVCw7dCB0CnMsQElO U1RBTExfREFUQUAsJElOU1RBTExfREFUQSw7dCB0CnMsQFJBTkxJQkAsJFJB TkxJQiw7dCB0CnMsQGFjX2N0X1JBTkxJQkAsJGFjX2N0X1JBTkxJQiw7dCB0 CnMsQExOX1NALCRMTl9TLDt0IHQKcyxARUNIT0AsJEVDSE8sO3QgdApzLEBT VFJJUEAsJFNUUklQLDt0IHQKcyxAYWNfY3RfU1RSSVBALCRhY19jdF9TVFJJ UCw7dCB0CnMsQENQUEAsJENQUCw7dCB0CnMsQEVHUkVQQCwkRUdSRVAsO3Qg dApzLEBMSUJUT09MQCwkTElCVE9PTCw7dCB0CnMsQFBLR19DT05GSUdALCRQ S0dfQ09ORklHLDt0IHQKcyxAUlRTVF9DRkxBR1NALCRSVFNUX0NGTEFHUyw7 dCB0CnMsQFJUU1RfTElCU0AsJFJUU1RfTElCUyw7dCB0CnMsQGhhdmVfbGli cnRzdEAsJGhhdmVfbGlicnRzdCw7dCB0CnMsQGRlZmF1bHRfbWxwM19ibGFz QCwkZGVmYXVsdF9tbHAzX2JsYXMsO3QgdApzLEBJTkNTQCwkSU5DUyw7dCB0 CnMsQHRlc3RkYXRhX2RpckAsJHRlc3RkYXRhX2Rpciw7dCB0CnMsQGFsbF9s aWJzQCwkYWxsX2xpYnMsO3QgdApzLEBRTl9CVUlMRF9MSUJfU1BFQ0AsJFFO X0JVSUxEX0xJQl9TUEVDLDt0IHQKcyxAUU5fSU5TVEFMTF9MSUJfU1BFQ0As JFFOX0lOU1RBTExfTElCX1NQRUMsO3QgdApzLEBRTl9CVUlMRF9JTkNfU1BF Q0AsJFFOX0JVSUxEX0lOQ19TUEVDLDt0IHQKcyxAUU5fSU5TVEFMTF9JTkNf U1BFQ0AsJFFOX0lOU1RBTExfSU5DX1NQRUMsO3QgdApzLEBRTl9TUkNESVJA LCRRTl9TUkNESVIsO3QgdApzLEBMSUJPQkpTQCwkTElCT0JKUyw7dCB0CnMs QExUTElCT0JKU0AsJExUTElCT0JKUyw7dCB0CkNFT0YKCl9BQ0VPRgoKICBj YXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKICAjIFNwbGl0IHRoZSBz dWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBwaWVjZXMgZm9yIHNlZHMg d2l0aAogICMgc21hbGwgY29tbWFuZCBudW1iZXIgbGltaXRzLCBsaWtlIG9u IERpZ2l0YWwgT1NGLzEgYW5kIEhQLVVYLgogIGFjX21heF9zZWRfbGluZXM9 NDgKICBhY19zZWRfZnJhZz0xICMgTnVtYmVyIG9mIGN1cnJlbnQgZmlsZS4K ICBhY19iZWc9MSAjIEZpcnN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KICBh Y19lbmQ9JGFjX21heF9zZWRfbGluZXMgIyBMaW5lIGFmdGVyIGxhc3QgbGlu ZSBmb3IgY3VycmVudCBmaWxlLgogIGFjX21vcmVfbGluZXM9OgogIGFjX3Nl ZF9jbWRzPQogIHdoaWxlICRhY19tb3JlX2xpbmVzOyBkbwogICAgaWYgdGVz dCAkYWNfYmVnIC1ndCAxOyB0aGVuCiAgICAgIHNlZCAiMSwke2FjX2JlZ31k OyAke2FjX2VuZH1xIiAkdG1wL3N1YnMuc2VkID4kdG1wL3N1YnMuZnJhZwog ICAgZWxzZQogICAgICBzZWQgIiR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQg PiR0bXAvc3Vicy5mcmFnCiAgICBmaQogICAgaWYgdGVzdCAhIC1zICR0bXAv c3Vicy5mcmFnOyB0aGVuCiAgICAgIGFjX21vcmVfbGluZXM9ZmFsc2UKICAg IGVsc2UKICAgICAgIyBUaGUgcHVycG9zZSBvZiB0aGUgbGFiZWwgYW5kIG9m IHRoZSBicmFuY2hpbmcgY29uZGl0aW9uIGlzIHRvCiAgICAgICMgc3BlZWQg dXAgdGhlIHNlZCBwcm9jZXNzaW5nIChpZiB0aGVyZSBhcmUgbm8gYEAnIGF0 IGFsbCwgdGhlcmUKICAgICAgIyBpcyBubyBuZWVkIHRvIGJyb3dzZSBhbnkg b2YgdGhlIHN1YnN0aXR1dGlvbnMpLgogICAgICAjIFRoZXNlIGFyZSB0aGUg dHdvIGV4dHJhIHNlZCBjb21tYW5kcyBtZW50aW9uZWQgYWJvdmUuCiAgICAg IChlY2hvICc6dAogIC9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWInICYm IGNhdCAkdG1wL3N1YnMuZnJhZykgPiR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcu c2VkCiAgICAgIGlmIHRlc3QgLXogIiRhY19zZWRfY21kcyI7IHRoZW4KICAJ YWNfc2VkX2NtZHM9InNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNl ZCIKICAgICAgZWxzZQogIAlhY19zZWRfY21kcz0iJGFjX3NlZF9jbWRzIHwg c2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgogICAgICBmaQog ICAgICBhY19zZWRfZnJhZz1gZXhwciAkYWNfc2VkX2ZyYWcgKyAxYAogICAg ICBhY19iZWc9JGFjX2VuZAogICAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCAr ICRhY19tYXhfc2VkX2xpbmVzYAogICAgZmkKICBkb25lCiAgaWYgdGVzdCAt eiAiJGFjX3NlZF9jbWRzIjsgdGhlbgogICAgYWNfc2VkX2NtZHM9Y2F0CiAg ZmkKZmkgIyB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIgoKX0FDRU9GCmNhdCA+ PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgpmb3IgYWNfZmlsZSBpbiA6ICRD T05GSUdfRklMRVM7IGRvIHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250 aW51ZQogICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5d XSIsIGRlZmF1bHRpbmcgaW5maWxlPSJvdXRmaWxlLmluIi4KICBjYXNlICRh Y19maWxlIGluCiAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0 ZGluCiAgICAgICAgY2F0ID4kdG1wL3N0ZGluCiAgICAgICAgYWNfZmlsZV9p bj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKICAgICAg ICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7 OwogICo6KiApIGFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNlZCAn cyxbXjpdKjosLCdgCiAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUi IHwgc2VkICdzLDouKiwsJ2AgOzsKICAqICkgICBhY19maWxlX2luPSRhY19m aWxlLmluIDs7CiAgZXNhYwoKICAjIENvbXB1dGUgQHNyY2RpckAsIEB0b3Bf c3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGlyZWN0b3JpZXMuCiAg YWNfZGlyPWAoZGlybmFtZSAiJGFjX2ZpbGUiKSAyPi9kZXYvbnVsbCB8fAok YXNfZXhwciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9d Ki8qJCcgXHwgXAogICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14v XScgXHwgXAogICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwg XAogICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvXCknIFx8IFwKICAgICAg ICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYWNf ZmlsZSIgfAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpc LyokL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXClbXi9dLioveyBz Ly9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0K ICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMvLiovLi87 IHEnYAogIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KICAgIG1rZGlyIC1wICIk YWNfZGlyIgogIGVsc2UKICAgIGFzX2Rpcj0iJGFjX2RpciIKICAgIGFzX2Rp cnM9CiAgICB3aGlsZSB0ZXN0ICEgLWQgIiRhc19kaXIiOyBkbwogICAgICBh c19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgogICAgICBhc19kaXI9YChkaXJu YW1lICIkYXNfZGlyIikgMj4vZGV2L251bGwgfHwKJGFzX2V4cHIgWCIkYXNf ZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAogICAg ICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCiAgICAgICAg IFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKICAgICAgICAgWCIkYXNf ZGlyIiA6ICdYXCgvXCknIFx8IFwKICAgICAgICAgLiAgICAgOiAnXCguXCkn IDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYXNfZGlyIiB8CiAgICBzZWQgJy9e WFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0K ICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQogIAkgIC9e WFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cKS4qL3sg cy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8uLzsgcSdgCiAgICBkb25lCiAgICB0 ZXN0ICEgLW4gIiRhc19kaXJzIiB8fCBta2RpciAkYXNfZGlycwogIGZpIHx8 IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjcmVh dGUgZGlyZWN0b3J5IFwiJGFjX2RpclwiIiA+JjUKZWNobyAiJGFzX21lOiBl cnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNfZGlyXCIiID4m Mjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTsgfQoKICBhY19idWls ZGRpcj0uCgppZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCiAgYWNfZGly X3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIiIHwgc2VkICdzLF5cLltcXC9dLCwn YAogICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9z dWZmaXguCiAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZp eCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAplbHNlCiAgYWNfZGlyX3N1 ZmZpeD0gYWNfdG9wX2J1aWxkZGlyPQpmaQoKY2FzZSAkc3JjZGlyIGluCiAg LikgICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGlu IHBsYWNlLgogICAgYWNfc3JjZGlyPS4KICAgIGlmIHRlc3QgLXogIiRhY190 b3BfYnVpbGRkaXIiOyB0aGVuCiAgICAgICBhY190b3Bfc3JjZGlyPS4KICAg IGVsc2UKICAgICAgIGFjX3RvcF9zcmNkaXI9YGVjaG8gJGFjX3RvcF9idWls ZGRpciB8IHNlZCAncywvJCwsJ2AKICAgIGZpIDs7CiAgW1xcL10qIHwgPzpb XFwvXSogKSAgIyBBYnNvbHV0ZSBwYXRoLgogICAgYWNfc3JjZGlyPSRzcmNk aXIkYWNfZGlyX3N1ZmZpeDsKICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7 OwogICopICMgUmVsYXRpdmUgcGF0aC4KICAgIGFjX3NyY2Rpcj0kYWNfdG9w X2J1aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4CiAgICBhY190b3Bfc3Jj ZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7CmVzYWMKIyBEb24ndCBi bGluZGx5IHBlcmZvcm0gYSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdk YCBzaW5jZSAkYWNfZm9vIGNhbiBiZQojIGFic29sdXRlLgphY19hYnNfYnVp bGRkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfYnVpbGRkaXIgJiYgcHdk YAphY19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHth Y190b3BfYnVpbGRkaXJ9LiAmJiBwd2RgCmFjX2Fic19zcmNkaXI9YGNkICIk YWNfZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKYWNfYWJzX3RvcF9z cmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfdG9wX3NyY2RpciAmJiBw d2RgCgoKICBjYXNlICRJTlNUQUxMIGluCiAgW1xcLyRdKiB8ID86W1xcL10q ICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OwogICopIGFjX0lOU1RBTEw9JGFj X3RvcF9idWlsZGRpciRJTlNUQUxMIDs7CiAgZXNhYwoKICBpZiB0ZXN0IHgi JGFjX2ZpbGUiICE9IHgtOyB0aGVuCiAgICB7IGVjaG8gIiRhc19tZTokTElO RU5POiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1CmVjaG8gIiRhc19tZTogY3Jl YXRpbmcgJGFjX2ZpbGUiID4mNjt9CiAgICBybSAtZiAiJGFjX2ZpbGUiCiAg ZmkKICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScg d2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAogICMgdXNlICRhc19t ZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKICAjICAg IC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAq LwogIGlmIHRlc3QgeCIkYWNfZmlsZSIgPSB4LTsgdGhlbgogICAgY29uZmln dXJlX2lucHV0PQogIGVsc2UKICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFjX2Zp bGUuICAiCiAgZmkKICBjb25maWd1cmVfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1 dCJHZW5lcmF0ZWQgZnJvbSBgZWNobyAkYWNfZmlsZV9pbiB8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWQgJ3MsLiovLCwnYCBi eSBjb25maWd1cmUuIgoKICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBm aWxlcyBpbiB0aGUgYnVpbGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQogICMg c3JjIHRyZWUuCiAgYWNfZmlsZV9pbnB1dHM9YElGUz06CiAgICBmb3IgZiBp biAkYWNfZmlsZV9pbjsgZG8KICAgICAgY2FzZSAkZiBpbgogICAgICAtKSBl Y2hvICR0bXAvc3RkaW4gOzsKICAgICAgW1xcLyRdKikKICAgICAgICAgIyBB YnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKICAgICAg ICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog ZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKZWNobyAi JGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4m Mjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogICAgICAgICBlY2hv ICRmOzsKICAgICAgKikgIyBSZWxhdGl2ZQogICAgICAgICBpZiB0ZXN0IC1m ICIkZiI7IHRoZW4KICAgICAgICAgICAjIEJ1aWxkIHRyZWUKICAgICAgICAg ICBlY2hvICRmCiAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7 IHRoZW4KICAgICAgICAgICAjIFNvdXJjZSB0cmVlCiAgICAgICAgICAgZWNo byAkc3JjZGlyLyRmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIC9kZXYv bnVsbCB0cmVlCiAgICAgICAgICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5P OiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQplY2hv ICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIg PiYyO30KICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiAgICAgICAgIGZp OzsKICAgICAgZXNhYwogICAgZG9uZWAgfHwgeyAoZXhpdCAxKTsgZXhpdCAx OyB9Cl9BQ0VPRgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgogIHNl ZCAiJGFjX3Zwc3ViCiRleHRyYXN1YgpfQUNFT0YKY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FDRU9GCjp0Ci9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAv IWIKcyxAY29uZmlndXJlX2lucHV0QCwkY29uZmlndXJlX2lucHV0LDt0IHQK cyxAc3JjZGlyQCwkYWNfc3JjZGlyLDt0IHQKcyxAYWJzX3NyY2RpckAsJGFj X2Fic19zcmNkaXIsO3QgdApzLEB0b3Bfc3JjZGlyQCwkYWNfdG9wX3NyY2Rp ciw7dCB0CnMsQGFic190b3Bfc3JjZGlyQCwkYWNfYWJzX3RvcF9zcmNkaXIs O3QgdApzLEBidWlsZGRpckAsJGFjX2J1aWxkZGlyLDt0IHQKcyxAYWJzX2J1 aWxkZGlyQCwkYWNfYWJzX2J1aWxkZGlyLDt0IHQKcyxAdG9wX2J1aWxkZGly QCwkYWNfdG9wX2J1aWxkZGlyLDt0IHQKcyxAYWJzX3RvcF9idWlsZGRpckAs JGFjX2Fic190b3BfYnVpbGRkaXIsO3QgdApzLEBJTlNUQUxMQCwkYWNfSU5T VEFMTCw7dCB0CiIgJGFjX2ZpbGVfaW5wdXRzIHwgKGV2YWwgIiRhY19zZWRf Y21kcyIpID4kdG1wL291dAogIHJtIC1mICR0bXAvc3RkaW4KICBpZiB0ZXN0 IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCiAgICBtdiAkdG1wL291dCAkYWNf ZmlsZQogIGVsc2UKICAgIGNhdCAkdG1wL291dAogICAgcm0gLWYgJHRtcC9v dXQKICBmaQoKZG9uZQpfQUNFT0YKY2F0ID4+JENPTkZJR19TVEFUVVMgPDxc X0FDRU9GCgojCiMgQ09ORklHX0hFQURFUiBzZWN0aW9uLgojCgojIFRoZXNl IHNlZCBjb21tYW5kcyBhcmUgcGFzc2VkIHRvIHNlZCBhcyAiQSBOQU1FIEIg TkFNRSBDIFZBTFVFIEQiLCB3aGVyZQojIE5BTUUgaXMgdGhlIGNwcCBtYWNy byBiZWluZyBkZWZpbmVkIGFuZCBWQUxVRSBpcyB0aGUgdmFsdWUgaXQgaXMg YmVpbmcgZ2l2ZW4uCiMKIyBhY19kIHNldHMgdGhlIHZhbHVlIGluICIjZGVm aW5lIE5BTUUgVkFMVUUiIGxpbmVzLgphY19kQT0ncyxeXChbIAldKlwpI1wo WyAJXSpkZWZpbmVbIAldWyAJXSpcKScKYWNfZEI9J1sgCV0uKiQsXDEjXDIn CmFjX2RDPScgJwphY19kRD0nLDt0JwojIGFjX3UgdHVybnMgIiN1bmRlZiBO QU1FIiB3aXRob3V0IHRyYWlsaW5nIGJsYW5rcyBpbnRvICIjZGVmaW5lIE5B TUUgVkFMVUUiLgphY191QT0ncyxeXChbIAldKlwpI1woWyAJXSpcKXVuZGVm XChbIAldWyAJXSpcKScKYWNfdUI9JyQsXDEjXDJkZWZpbmVcMycKYWNfdUM9 JyAnCmFjX3VEPScsO3QnCgpmb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfSEVB REVSUzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCiAg IyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVm YXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgogIGNhc2UgJGFjX2ZpbGUg aW4KICAtIHwgKjotIHwgKjotOiogKSAjIGlucHV0IGZyb20gc3RkaW4KICAg ICAgICBjYXQgPiR0bXAvc3RkaW4KICAgICAgICBhY19maWxlX2luPWBlY2hv ICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAogICAgICAgIGFjX2Zp bGU9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgIDs7CiAgKjoq ICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0q OiwsJ2AKICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQg J3MsOi4qLCwnYCA7OwogICogKSAgIGFjX2ZpbGVfaW49JGFjX2ZpbGUuaW4g OzsKICBlc2FjCgogIHRlc3QgeCIkYWNfZmlsZSIgIT0geC0gJiYgeyBlY2hv ICIkYXNfbWU6JExJTkVOTzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQplY2hv ICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQoKICAjIEZpcnN0 IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBpbiB0aGUgYnVpbGQgdHJlZSwg b3RoZXJ3aXNlIGluIHRoZQogICMgc3JjIHRyZWUuCiAgYWNfZmlsZV9pbnB1 dHM9YElGUz06CiAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KICAgICAg Y2FzZSAkZiBpbgogICAgICAtKSBlY2hvICR0bXAvc3RkaW4gOzsKICAgICAg W1xcLyRdKikKICAgICAgICAgIyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0 eWxlLCBhcyBJRlM9OikKICAgICAgICAgdGVzdCAtZiAiJGYiIHx8IHsgeyBl Y2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0 IGZpbGU6ICRmIiA+JjUKZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZp bmQgaW5wdXQgZmlsZTogJGYiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQg MTsgfTsgfQogICAgICAgICBlY2hvICRmOzsKICAgICAgKikgIyBSZWxhdGl2 ZQogICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KICAgICAgICAgICAj IEJ1aWxkIHRyZWUKICAgICAgICAgICBlY2hvICRmCiAgICAgICAgIGVsaWYg dGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KICAgICAgICAgICAjIFNvdXJj ZSB0cmVlCiAgICAgICAgICAgZWNobyAkc3JjZGlyLyRmCiAgICAgICAgIGVs c2UKICAgICAgICAgICAjIC9kZXYvbnVsbCB0cmVlCiAgICAgICAgICAgeyB7 IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5w dXQgZmlsZTogJGYiID4mNQplY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3Qg ZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KICAgeyAoZXhpdCAxKTsgZXhp dCAxOyB9OyB9CiAgICAgICAgIGZpOzsKICAgICAgZXNhYwogICAgZG9uZWAg fHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CiAgIyBSZW1vdmUgdGhlIHRyYWls aW5nIHNwYWNlcy4KICBzZWQgJ3MvWyAJXSokLy8nICRhY19maWxlX2lucHV0 cyA+JHRtcC9pbgoKX0FDRU9GCgojIFRyYW5zZm9ybSBjb25mZGVmcy5oIGlu dG8gdHdvIHNlZCBzY3JpcHRzLCBgY29uZnRlc3QuZGVmaW5lcycgYW5kCiMg YGNvbmZ0ZXN0LnVuZGVmcycsIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHByb3Bl ciB2YWx1ZXMgaW50bwojIGNvbmZpZy5oLmluIHRvIHByb2R1Y2UgY29uZmln LmguICBUaGUgZmlyc3QgaGFuZGxlcyBgI2RlZmluZScKIyB0ZW1wbGF0ZXMs IGFuZCB0aGUgc2Vjb25kIGAjdW5kZWYnIHRlbXBsYXRlcy4KIyBBbmQgZmly c3Q6IFByb3RlY3QgYWdhaW5zdCBiZWluZyBvbiB0aGUgcmlnaHQgc2lkZSBv ZiBhIHNlZCBzdWJzdCBpbgojIGNvbmZpZy5zdGF0dXMuICBQcm90ZWN0IGFn YWluc3QgYmVpbmcgaW4gYW4gdW5xdW90ZWQgaGVyZSBkb2N1bWVudAojIGlu IGNvbmZpZy5zdGF0dXMuCnJtIC1mIGNvbmZ0ZXN0LmRlZmluZXMgY29uZnRl c3QudW5kZWZzCiMgVXNpbmcgYSBoZXJlIGRvY3VtZW50IGluc3RlYWQgb2Yg YSBzdHJpbmcgcmVkdWNlcyB0aGUgcXVvdGluZyBuaWdodG1hcmUuCiMgUHV0 dGluZyBjb21tZW50cyBpbiBzZWQgc2NyaXB0cyBpcyBub3QgcG9ydGFibGUu CiMKIyBgZW5kJyBpcyB1c2VkIHRvIGF2b2lkIHRoYXQgdGhlIHNlY29uZCBt YWluIHNlZCBjb21tYW5kIChtZWFudCBmb3IKIyAwLWFyeSBDUFAgbWFjcm9z KSBhcHBsaWVzIHRvIG4tYXJ5IG1hY3JvIGRlZmluaXRpb25zLgojIFNlZSB0 aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiBmb3IgYGNsZWFyJy4KY2F0ID5j b25mZGVmMnNlZC5zZWQgPDxcX0FDRU9GCnMvW1xcJixdL1xcJi9nCnMsW1xc JGBdLFxcJixnCnQgY2xlYXIKOiBjbGVhcgpzLF5bIAldKiNbIAldKmRlZmlu ZVsgCV1bIAldKlwoW14gCShdW14gCShdKlwpXCgoW14pXSopXClbIAldKlwo LipcKSQsJHthY19kQX1cMSR7YWNfZEJ9XDFcMiR7YWNfZEN9XDMke2FjX2RE fSxncAp0IGVuZApzLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14g CV1bXiAJXSpcKVsgCV0qXCguKlwpJCwke2FjX2RBfVwxJHthY19kQn1cMSR7 YWNfZEN9XDIke2FjX2REfSxncAo6IGVuZApfQUNFT0YKIyBJZiBzb21lIG1h Y3JvcyB3ZXJlIGNhbGxlZCBzZXZlcmFsIHRpbWVzIHRoZXJlIG1pZ2h0IGJl IHNldmVyYWwgdGltZXMKIyB0aGUgc2FtZSAjZGVmaW5lcywgd2hpY2ggaXMg dXNlbGVzcy4gIE5ldmVydGhlbGVzcywgd2UgbWF5IG5vdCB3YW50IHRvCiMg c29ydCB0aGVtLCBzaW5jZSB3ZSB3YW50IHRoZSAqbGFzdCogQUMtREVGSU5F IHRvIGJlIGhvbm9yZWQuCnVuaXEgY29uZmRlZnMuaCB8IHNlZCAtbiAtZiBj b25mZGVmMnNlZC5zZWQgPmNvbmZ0ZXN0LmRlZmluZXMKc2VkICdzL2FjX2Qv YWNfdS9nJyBjb25mdGVzdC5kZWZpbmVzID5jb25mdGVzdC51bmRlZnMKcm0g LWYgY29uZmRlZjJzZWQuc2VkCgojIFRoaXMgc2VkIGNvbW1hbmQgcmVwbGFj ZXMgI3VuZGVmIHdpdGggY29tbWVudHMuICBUaGlzIGlzIG5lY2Vzc2FyeSwg Zm9yCiMgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgX1BPU0lYX1NPVVJDRSwg d2hpY2ggaXMgcHJlZGVmaW5lZCBhbmQgcmVxdWlyZWQKIyBvbiBzb21lIHN5 c3RlbXMgd2hlcmUgY29uZmlndXJlIHdpbGwgbm90IGRlY2lkZSB0byBkZWZp bmUgaXQuCmNhdCA+PmNvbmZ0ZXN0LnVuZGVmcyA8PFxfQUNFT0YKcyxeWyAJ XSojWyAJXSp1bmRlZlsgCV1bIAldKlthLXpBLVpfXVthLXpBLVpfMC05XSos LyogJiAqLywKX0FDRU9GCgojIEJyZWFrIHVwIGNvbmZ0ZXN0LmRlZmluZXMg YmVjYXVzZSBzb21lIHNoZWxscyBoYXZlIGEgbGltaXQgb24gdGhlIHNpemUK IyBvZiBoZXJlIGRvY3VtZW50cywgYW5kIG9sZCBzZWRzIGhhdmUgc21hbGwg bGltaXRzIHRvbyAoMTAwIGNtZHMpLgplY2hvICcgICMgSGFuZGxlIGFsbCB0 aGUgI2RlZmluZSB0ZW1wbGF0ZXMgb25seSBpZiBuZWNlc3NhcnkuJyA+PiRD T05GSUdfU1RBVFVTCmVjaG8gJyAgaWYgZ3JlcCAiXlsgCV0qI1sgCV0qZGVm aW5lIiAkdG1wL2luID4vZGV2L251bGw7IHRoZW4nID4+JENPTkZJR19TVEFU VVMKZWNobyAnICAjIElmIHRoZXJlIGFyZSBubyBkZWZpbmVzLCB3ZSBtYXkg aGF2ZSBhbiBlbXB0eSBpZi9maScgPj4kQ09ORklHX1NUQVRVUwplY2hvICcg IDonID4+JENPTkZJR19TVEFUVVMKcm0gLWYgY29uZnRlc3QudGFpbAp3aGls ZSBncmVwIC4gY29uZnRlc3QuZGVmaW5lcyA+L2Rldi9udWxsCmRvCiAgIyBX cml0ZSBhIGxpbWl0ZWQtc2l6ZSBoZXJlIGRvY3VtZW50IHRvICR0bXAvZGVm aW5lcy5zZWQuCiAgZWNobyAnICBjYXQgPiR0bXAvZGVmaW5lcy5zZWQgPDxD RU9GJyA+PiRDT05GSUdfU1RBVFVTCiAgIyBTcGVlZCB1cDogZG9uJ3QgY29u c2lkZXIgdGhlIG5vbiBgI2RlZmluZScgbGluZXMuCiAgZWNobyAnL15bIAld KiNbIAldKmRlZmluZS8hYicgPj4kQ09ORklHX1NUQVRVUwogICMgV29yayBh cm91bmQgdGhlIGZvcmdldC10by1yZXNldC10aGUtZmxhZyBidWcuCiAgZWNo byAndCBjbHInID4+JENPTkZJR19TVEFUVVMKICBlY2hvICc6IGNscicgPj4k Q09ORklHX1NUQVRVUwogIHNlZCAke2FjX21heF9oZXJlX2xpbmVzfXEgY29u ZnRlc3QuZGVmaW5lcyA+PiRDT05GSUdfU1RBVFVTCiAgZWNobyAnQ0VPRgog IHNlZCAtZiAkdG1wL2RlZmluZXMuc2VkICR0bXAvaW4gPiR0bXAvb3V0CiAg cm0gLWYgJHRtcC9pbgogIG12ICR0bXAvb3V0ICR0bXAvaW4KJyA+PiRDT05G SUdfU1RBVFVTCiAgc2VkIDEsJHthY19tYXhfaGVyZV9saW5lc31kIGNvbmZ0 ZXN0LmRlZmluZXMgPmNvbmZ0ZXN0LnRhaWwKICBybSAtZiBjb25mdGVzdC5k ZWZpbmVzCiAgbXYgY29uZnRlc3QudGFpbCBjb25mdGVzdC5kZWZpbmVzCmRv bmUKcm0gLWYgY29uZnRlc3QuZGVmaW5lcwplY2hvICcgIGZpICMgZ3JlcCcg Pj4kQ09ORklHX1NUQVRVUwplY2hvID4+JENPTkZJR19TVEFUVVMKCiMgQnJl YWsgdXAgY29uZnRlc3QudW5kZWZzIGJlY2F1c2Ugc29tZSBzaGVsbHMgaGF2 ZSBhIGxpbWl0IG9uIHRoZSBzaXplCiMgb2YgaGVyZSBkb2N1bWVudHMsIGFu ZCBvbGQgc2VkcyBoYXZlIHNtYWxsIGxpbWl0cyB0b28gKDEwMCBjbWRzKS4K ZWNobyAnICAjIEhhbmRsZSBhbGwgdGhlICN1bmRlZiB0ZW1wbGF0ZXMnID4+ JENPTkZJR19TVEFUVVMKcm0gLWYgY29uZnRlc3QudGFpbAp3aGlsZSBncmVw IC4gY29uZnRlc3QudW5kZWZzID4vZGV2L251bGwKZG8KICAjIFdyaXRlIGEg bGltaXRlZC1zaXplIGhlcmUgZG9jdW1lbnQgdG8gJHRtcC91bmRlZnMuc2Vk LgogIGVjaG8gJyAgY2F0ID4kdG1wL3VuZGVmcy5zZWQgPDxDRU9GJyA+PiRD T05GSUdfU1RBVFVTCiAgIyBTcGVlZCB1cDogZG9uJ3QgY29uc2lkZXIgdGhl IG5vbiBgI3VuZGVmJwogIGVjaG8gJy9eWyAJXSojWyAJXSp1bmRlZi8hYicg Pj4kQ09ORklHX1NUQVRVUwogICMgV29yayBhcm91bmQgdGhlIGZvcmdldC10 by1yZXNldC10aGUtZmxhZyBidWcuCiAgZWNobyAndCBjbHInID4+JENPTkZJ R19TVEFUVVMKICBlY2hvICc6IGNscicgPj4kQ09ORklHX1NUQVRVUwogIHNl ZCAke2FjX21heF9oZXJlX2xpbmVzfXEgY29uZnRlc3QudW5kZWZzID4+JENP TkZJR19TVEFUVVMKICBlY2hvICdDRU9GCiAgc2VkIC1mICR0bXAvdW5kZWZz LnNlZCAkdG1wL2luID4kdG1wL291dAogIHJtIC1mICR0bXAvaW4KICBtdiAk dG1wL291dCAkdG1wL2luCicgPj4kQ09ORklHX1NUQVRVUwogIHNlZCAxLCR7 YWNfbWF4X2hlcmVfbGluZXN9ZCBjb25mdGVzdC51bmRlZnMgPmNvbmZ0ZXN0 LnRhaWwKICBybSAtZiBjb25mdGVzdC51bmRlZnMKICBtdiBjb25mdGVzdC50 YWlsIGNvbmZ0ZXN0LnVuZGVmcwpkb25lCnJtIC1mIGNvbmZ0ZXN0LnVuZGVm cwoKY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCiAgIyBMZXQncyBz dGlsbCBwcmV0ZW5kIGl0IGlzIGBjb25maWd1cmUnIHdoaWNoIGluc3RhbnRp YXRlcyAoaS5lLiwgZG9uJ3QKICAjIHVzZSAkYXNfbWUpLCBwZW9wbGUgd291 bGQgYmUgc3VycHJpc2VkIHRvIHJlYWQ6CiAgIyAgICAvKiBjb25maWcuaC4g IEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8KICBpZiB0ZXN0IHgi JGFjX2ZpbGUiID0geC07IHRoZW4KICAgIGVjaG8gIi8qIEdlbmVyYXRlZCBi eSBjb25maWd1cmUuICAqLyIgPiR0bXAvY29uZmlnLmgKICBlbHNlCiAgICBl Y2hvICIvKiAkYWNfZmlsZS4gIEdlbmVyYXRlZCBieSBjb25maWd1cmUuICAq LyIgPiR0bXAvY29uZmlnLmgKICBmaQogIGNhdCAkdG1wL2luID4+JHRtcC9j b25maWcuaAogIHJtIC1mICR0bXAvaW4KICBpZiB0ZXN0IHgiJGFjX2ZpbGUi ICE9IHgtOyB0aGVuCiAgICBpZiBkaWZmICRhY19maWxlICR0bXAvY29uZmln LmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgIHsgZWNobyAiJGFzX21l OiRMSU5FTk86ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY1CmVjaG8gIiRh c19tZTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjY7fQogICAgZWxzZQog ICAgICBhY19kaXI9YChkaXJuYW1lICIkYWNfZmlsZSIpIDI+L2Rldi9udWxs IHx8CiRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14v XVteL10qLyokJyBcfCBcCiAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC8v XClbXi9dJyBcfCBcCiAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkk JyBcfCBcCiAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAog ICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKZWNobyBY IiRhY19maWxlIiB8CiAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11b Xi9dKlwvKiQveyBzLy9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKVteL10u Ki97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsg cTsgfQogIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8u Ki8uLzsgcSdgCiAgICAgIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KICAgIG1r ZGlyIC1wICIkYWNfZGlyIgogIGVsc2UKICAgIGFzX2Rpcj0iJGFjX2RpciIK ICAgIGFzX2RpcnM9CiAgICB3aGlsZSB0ZXN0ICEgLWQgIiRhc19kaXIiOyBk bwogICAgICBhc19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgogICAgICBhc19k aXI9YChkaXJuYW1lICIkYXNfZGlyIikgMj4vZGV2L251bGwgfHwKJGFzX2V4 cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcg XHwgXAogICAgICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBc CiAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKICAgICAg ICAgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKICAgICAgICAgLiAgICAg OiAnXCguXCknIDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYXNfZGlyIiB8CiAg ICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9c MS87IHE7IH0KICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsg fQogIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQogIAkgIC9eWFwo XC9cKS4qL3sgcy8vXDEvOyBxOyB9CiAgCSAgcy8uKi8uLzsgcSdgCiAgICBk b25lCiAgICB0ZXN0ICEgLW4gIiRhc19kaXJzIiB8fCBta2RpciAkYXNfZGly cwogIGZpIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNh bm5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJGFjX2RpclwiIiA+JjUKZWNobyAi JGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNf ZGlyXCIiID4mMjt9CiAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTsgfQoK ICAgICAgcm0gLWYgJGFjX2ZpbGUKICAgICAgbXYgJHRtcC9jb25maWcuaCAk YWNfZmlsZQogICAgZmkKICBlbHNlCiAgICBjYXQgJHRtcC9jb25maWcuaAog ICAgcm0gLWYgJHRtcC9jb25maWcuaAogIGZpCmRvbmUKX0FDRU9GCmNhdCA+ PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgoKIwojIENPTkZJR19DT01NQU5E UyBzZWN0aW9uLgojCmZvciBhY19maWxlIGluIDogJENPTkZJR19DT01NQU5E UzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCiAgYWNf ZGVzdD1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AKICBhY19z b3VyY2U9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCiAg YWNfZGlyPWAoZGlybmFtZSAiJGFjX2Rlc3QiKSAyPi9kZXYvbnVsbCB8fAok YXNfZXhwciBYIiRhY19kZXN0IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9d Ki8qJCcgXHwgXAogICAgICAgICBYIiRhY19kZXN0IiA6ICdYXCgvL1wpW14v XScgXHwgXAogICAgICAgICBYIiRhY19kZXN0IiA6ICdYXCgvL1wpJCcgXHwg XAogICAgICAgICBYIiRhY19kZXN0IiA6ICdYXCgvXCknIFx8IFwKICAgICAg ICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8CmVjaG8gWCIkYWNf ZGVzdCIgfAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpc LyokL3sgcy8vXDEvOyBxOyB9CiAgCSAgL15YXChcL1wvXClbXi9dLioveyBz Ly9cMS87IHE7IH0KICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0K ICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQogIAkgIHMvLiovLi87 IHEnYAogIGFjX2J1aWxkZGlyPS4KCmlmIHRlc3QgIiRhY19kaXIiICE9IC47 IHRoZW4KICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciIgfCBzZWQg J3MsXlwuW1xcL10sLCdgCiAgIyBBICIuLi8iIGZvciBlYWNoIGRpcmVjdG9y eSBpbiAkYWNfZGlyX3N1ZmZpeC4KICBhY190b3BfYnVpbGRkaXI9YGVjaG8g IiRhY19kaXJfc3VmZml4IiB8IHNlZCAncywvW15cXC9dKiwuLi8sZydgCmVs c2UKICBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXI9CmZpCgpjYXNl ICRzcmNkaXIgaW4KICAuKSAgIyBObyAtLXNyY2RpciBvcHRpb24uICBXZSBh cmUgYnVpbGRpbmcgaW4gcGxhY2UuCiAgICBhY19zcmNkaXI9LgogICAgaWYg dGVzdCAteiAiJGFjX3RvcF9idWlsZGRpciI7IHRoZW4KICAgICAgIGFjX3Rv cF9zcmNkaXI9LgogICAgZWxzZQogICAgICAgYWNfdG9wX3NyY2Rpcj1gZWNo byAkYWNfdG9wX2J1aWxkZGlyIHwgc2VkICdzLC8kLCwnYAogICAgZmkgOzsK ICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIHBhdGguCiAgICBh Y19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4OwogICAgYWNfdG9wX3Ny Y2Rpcj0kc3JjZGlyIDs7CiAgKikgIyBSZWxhdGl2ZSBwYXRoLgogICAgYWNf c3JjZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyJGFjX2Rpcl9zdWZmaXgK ICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIgOzsK ZXNhYwojIERvbid0IGJsaW5kbHkgcGVyZm9ybSBhIGBjZCAiJGFjX2RpciIv JGFjX2ZvbyAmJiBwd2RgIHNpbmNlICRhY19mb28gY2FuIGJlCiMgYWJzb2x1 dGUuCmFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19i dWlsZGRpciAmJiBwd2RgCmFjX2Fic190b3BfYnVpbGRkaXI9YGNkICIkYWNf ZGlyIiAmJiBjZCAke2FjX3RvcF9idWlsZGRpcn0uICYmIHB3ZGAKYWNfYWJz X3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19zcmNkaXIgJiYgcHdk YAphY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190 b3Bfc3JjZGlyICYmIHB3ZGAKCgogIHsgZWNobyAiJGFzX21lOiRMSU5FTk86 IGV4ZWN1dGluZyAkYWNfZGVzdCBjb21tYW5kcyIgPiY1CmVjaG8gIiRhc19t ZTogZXhlY3V0aW5nICRhY19kZXN0IGNvbW1hbmRzIiA+JjY7fQogIGNhc2Ug JGFjX2Rlc3QgaW4KICAgIGRlZmF1bHQgKSBlY2hvIHRpbWVzdGFtcCA+IHN0 YW1wLWg7IGNobW9kICt4ICouc2ggOzsKICBlc2FjCmRvbmUKX0FDRU9GCgpj YXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKCnsgKGV4aXQgMCk7IGV4 aXQgMDsgfQpfQUNFT0YKY2htb2QgK3ggJENPTkZJR19TVEFUVVMKYWNfY2xl YW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKCgojIGNvbmZpZ3VyZSBp cyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZp Zy5zdGF0dXMuCiMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJl Y3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgojIFVuZm9ydHVuYXRl bHksIG9uIERPUyB0aGlzIGZhaWxzLCBhcyBjb25maWcubG9nIGlzIHN0aWxs IGtlcHQgb3BlbgojIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3 b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMKIyBvdXRwdXQgaXMg c2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYv bnVsbCwKIyBlZmZlY3RpdmVseSBjbG9zaW5nIGNvbmZpZy5sb2csIHNvIGl0 IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZAojIGFwcGVuZGVkIHRv IGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNvbmZp Z3VyZSwgd2UKIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fp bi4KaWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCiAgYWNfY3Nf c3VjY2Vzcz06CiAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQogIHRlc3QgIiRz aWxlbnQiID0geWVzICYmCiAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRh Y19jb25maWdfc3RhdHVzX2FyZ3MgLS1xdWlldCIKICBleGVjIDU+L2Rldi9u dWxsCiAgJFNIRUxMICRDT05GSUdfU1RBVFVTICRhY19jb25maWdfc3RhdHVz X2FyZ3MgfHwgYWNfY3Nfc3VjY2Vzcz1mYWxzZQogIGV4ZWMgNT4+Y29uZmln LmxvZwogICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJv bSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCiAgIyB3b3VsZCBtYWtlIGNv bmZpZ3VyZSBmYWlsIGlmIHRoaXMgaXMgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24u CiAgJGFjX2NzX3N1Y2Nlc3MgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CmZp CgoK --0-1611111697-1154533397=:26067 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ --0-1611111697-1154533397=:26067--