From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xebar Saram Subject: Re: Using an org based init file slows down emacs startup by 50x..help needed :( Date: Sat, 10 Dec 2016 14:53:29 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c0358a081210f05434d5be4 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cFhB4-0007oZ-J7 for emacs-orgmode@gnu.org; Sat, 10 Dec 2016 07:55:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cFhAz-0000aR-PG for emacs-orgmode@gnu.org; Sat, 10 Dec 2016 07:54:58 -0500 Received: from mail-yw0-f178.google.com ([209.85.161.178]:33197) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cFhAy-0000MB-Qg for emacs-orgmode@gnu.org; Sat, 10 Dec 2016 07:54:53 -0500 Received: by mail-yw0-f178.google.com with SMTP id r204so33897376ywb.0 for ; Sat, 10 Dec 2016 04:54:31 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: org mode --94eb2c0358a081210f05434d5be4 Content-Type: multipart/alternative; boundary=94eb2c0358a081210a05434d5be2 --94eb2c0358a081210a05434d5be2 Content-Type: text/plain; charset=UTF-8 Ok some more exploring made me realize that also using `M-x org-babel-load-file` on the setting.org file and tangling it takes a LONG time (like 6-7 minutes) so its not a problem of the init its the actual tangling of the file. 6-7 minutes cant be normal right? im attaching my settings.org file would appreciate any help Z --94eb2c0358a081210a05434d5be2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable --94eb2c0358a081210a05434d5be2-- --94eb2c0358a081210f05434d5be4 Content-Type: application/octet-stream; name="settings.org" Content-Disposition: attachment; filename="settings.org" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iwj824oi0 IytUaXRsZTogc2V0dGluZ3Mub3JnCgoKKiAxaW5mbwogIDpQUk9QRVJUSUVTOgogIDpJRDogICAg ICAgODE5MzU2NmQtMmRkNS00MzY4LTgyMzgtZmFjMmZjOWFhN2U5CiAgOkVORDoKKiogc2F2ZSBj dXN0b20gY29uZmlncyBpbiBhIHNlcGVyYXRlIGZpbGUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgZTliOTUzOGUtNzY5My00N2QzLTk0MGItZTdjYTJlMjY5YWQ3CiAgIDpFTkQ6CnRvIHNh dmUgdGhlIGN1c3RvbSBjb25maWdzIGluIGEgc2VwZXJhdGUgZmlsZSBmcm9tIGluaXQuZWwKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBjdXN0b20tZmlsZSAifi8u ZW1hY3MuZC9jdXN0b20uZWwiKQoobG9hZCBjdXN0b20tZmlsZSAnbm9lcnJvcikKIytFTkRfU1JD CgoKJE5vdGUgVGhlIGZpcnN0IGZ1bmN0aW9uIGp1c3QgcmVsb2FkcyB0aGUgRW1hY3MgY29uZmln dXJhdGlvbi4gVGhlIHNlY29uZCBmdW5jdGlvbiBvcGVucyB0aGUgY29uZmlndXJhdGlvbiB1cCBm b3IgZWRpdGluZy4kCgoqKiBDaGVjayB3aGljaCBPUyB5b3VyIG9uCiAgIDpQUk9QRVJUSUVTOgog ICA6SUQ6ICAgICAgIDllZDJjYzdmLWJmMjItNGE2NC05ODUwLTBiOGFlMGU2ZjQzNwogICA6RU5E OgojK2JlZ2luX3NyYyBlbWFjcy1saXNwIHJlc3VsdHMgbm9uZQogIDsgQ2hlY2sgaWYgc3lzdGVt IGlzIHdpbmRvd3MKICAoZGVmdW4gc3lzdGVtLXR5cGUtaXMtd2luICgpCiAgKGludGVyYWN0aXZl KQogICJSZXR1cm4gdHJ1ZSBpZiBzeXN0ZW0gaXMgd2luZG93cyIKICAoc3RyaW5nLWVxdWFsIHN5 c3RlbS10eXBlICJ3aW5kb3dzLW50IikKICApCgogIDs7IENoZWNrIGlmIHN5c3RlbSBpcyBHTlUv TGludXgKICAoZGVmdW4gc3lzdGVtLXR5cGUtaXMtZ251ICgpCiAgKGludGVyYWN0aXZlKQogICJS ZXR1cm4gdHJ1ZSBpZiBzeXN0ZW0gaXMgR05VL0xpbnV4LWJhc2VkIgogIChzdHJpbmctZXF1YWwg c3lzdGVtLXR5cGUgImdudS9saW51eCIpCiAgKQojK2VuZF9zcmMKKiogc2V0IG1haW4gdGhlbWUK ICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZTgyOTk4NGEtODQyZS00OTAzLWFkZDktYmRh ZDY3MDc4M2UyCiAgIDpFTkQ6CgpUbyBlZGl0IHRoZSB0aGVtZSBmaWxlOn4vLmVtYWNzLmQvdGhl bWVzL3pwcmltZS10aGVtZS5lbAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l CiA7OzthZGQgY3VzdG9tIHRoZW1lcyB0byBsaXN0CiAoYWRkLXRvLWxpc3QgJ2N1c3RvbS10aGVt ZS1sb2FkLXBhdGggIi9ob21lL3plbHRhay8uZW1hY3MuZC90aGVtZXMiKQogO3RvIGxvYWQgYSBz cGVjaWZjIHRoZW1lIAogOyhsb2FkLWZpbGUgIn4vLmVtYWNzLmQvdGhlbWVzL3pwcmltZS10aGVt ZS5lbCIpCiA7bG9hZCB0aGUgY2hvb3NlbiB0aGVtZSBhdCBzdGFydHVwIAoobG9hZC10aGVtZSAn enByaW1lIHQpCgoKIytFTkRfU1JDCgoqKiBjdXN0b20gb3JnIGV4cG9ydCBvcHRpb25zIChtdXN0 IGJlIG9uIHRvcCBvZiBzZXR0aW5ncyB0byB3b3JrIGZvciByZWFzb24gc3RpbGwgZGlzY292ZXJl ZCkKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgOGY1ZDEzZGYtN2M5ZC00NWI1LThlNmYt NTc2ZTUxZGMzZGJhCiAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKKHNldHEgb3JnLWV4cG9ydC1iYWNrZW5kcyAocXVvdGUgKGFzY2lpIGh0bWwgaWNhbGVuZGFy IGxhdGV4IG9yZykpKQogIytFTkRfU1JDCioqIGFkZCBvcmcgY29udHJpYiAKICAgOlBST1BFUlRJ RVM6CiAgIDpJRDogICAgICAgNmM0YWIyNjgtYmJmMC00ZTViLWJmZjctYWMzMmFkMDBmNmI0CiAg IDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3Qg J2xvYWQtcGF0aCAiL2hvbWUvemVsdGFrLy5lbWFjcy5nL29yZy1tb2RlL2NvbnRyaWIvbGlzcC8i KQojK0VORF9TUkMKKiogRm9udHMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMjA5NGU5 YWItNGEwYi00ZDY2LWFlYzUtZTA4YTJhMGFhNTJmCiAgIDpFTkQ6CiMrYmVnaW5fc3JjIGVtYWNz LWxpc3AgcmVzdWx0cyBub25lCjsgZm9udHMgaW4gbGludXgKKGlmIChzdHJpbmc9IHN5c3RlbS1u YW1lICJ6eDF2b2ljcyIpCjsoYWRkLXRvLWxpc3QgJ2RlZmF1bHQtZnJhbWUtYWxpc3QgJyhmb250 IC4gIkluY29uc29sYXRhLTE2IikpCjsoYWRkLXRvLWxpc3QgJ2RlZmF1bHQtZnJhbWUtYWxpc3Qg Jyhmb250IC4gIlNvdXJjZSBDb2RlIFByby0xOCIpKQo7KGFkZC10by1saXN0ICdkZWZhdWx0LWZy YW1lLWFsaXN0ICcoZm9udCAuICJQcmFnbWF0YSBQcm8tMTkiKSkKOyhhZGQtdG8tbGlzdCAnZGVm YXVsdC1mcmFtZS1hbGlzdCAnKGZvbnQgLiAiRmFudGFzcXVlIFNhbnMgTW9ubyAxNCIpKQooYWRk LXRvLWxpc3QgJ2RlZmF1bHQtZnJhbWUtYWxpc3QgJyhmb250IC4gImZpcmEgbW9ubyAxOSIpKQop Cgo7OyBmb250c28gaW4gV2luCjsoaWYgKHN5c3RlbS10eXBlLWlzLXdpbikKOyhhZGQtdG8tbGlz dCAnZGVmYXVsdC1mcmFtZS1hbGlzdCAnKGZvbnQgLiAiQ29uc29sYXMtMTQiKSkKOykKCihpZiAo c3RyaW5nPSBzeXN0ZW0tbmFtZSAiemJlYXN0IikKKGFkZC10by1saXN0ICdkZWZhdWx0LWZyYW1l LWFsaXN0ICcoZm9udCAuICJmaXJhIG1vbm8gMjMiKSkKKQoKCjs7IGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5IGFzIGRlZmF1bHQtYnVmZmVyLWZpbGUtY29kaW5nLXN5c3RlbQo7OyBpcyBkZXByZWNh dGVkIGluIDIzLjIuCihpZiAoYm91bmRwICdidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtKQogICAg KHNldHEtZGVmYXVsdCBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtICd1dGYtOCkKICAoc2V0cSBk ZWZhdWx0LWJ1ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0gJ3V0Zi04KSkKIAo7OyBUcmVhdCBjbGlw Ym9hcmQgaW5wdXQgYXMgVVRGLTggc3RyaW5nIGZpcnN0OyBjb21wb3VuZCB0ZXh0IG5leHQsIGV0 Yy4KKHNldHEgeC1zZWxlY3QtcmVxdWVzdC10eXBlICcoVVRGOF9TVFJJTkcgQ09NUE9VTkRfVEVY VCBURVhUIFNUUklORykpCgo7OyBVVEYtOCBhcyBkZWZhdWx0IGVuY29kaW5nCihzZXQtbGFuZ3Vh Z2UtZW52aXJvbm1lbnQgIlVURi04IikKKHNldC1jaGFyc2V0LXByaW9yaXR5ICd1bmljb2RlKQoo c2V0LWRlZmF1bHQtY29kaW5nLXN5c3RlbXMgJ3V0Zi04KQooc2V0LXRlcm1pbmFsLWNvZGluZy1z eXN0ZW0gJ3V0Zi04KQooc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gJ3V0Zi04KQooc2V0LXNl bGVjdGlvbi1jb2Rpbmctc3lzdGVtICd1dGYtOCkKKHByZWZlci1jb2Rpbmctc3lzdGVtICd1dGYt OCkKKHNldHEgZGVmYXVsdC1wcm9jZXNzLWNvZGluZy1zeXN0ZW0gJyh1dGYtOC11bml4IC4gdXRm LTgtdW5peCkpCiMrZW5kX3NyYwoKIytSRVNVTFRTOgo6ICh1dGYtOC11bml4IC4gdXRmLTgtdW5p eCkKCiogUGFja2FnZXMKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAgICAgIGU3OTMzZGQ4LTc1NTQt NDY4Mi05MmQ0LWVhNjNjNTA5YzE3NgogIDpFTkQ6CkBET04nVCBDSEFOR0UgT1JERVIgU0lOQ0Ug U09NRSBQQUNLQUdFUyBORUVEIFRPIE9OTFkgTE9BRCBBRlRFUiBPVEhFUlNACgoqKiBoaXBwaWUg ZXhwYW5kCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGU5M2NiNmFiLTVlMDYtNDU3ZC1h NzhiLTA0NWFkZDY0NGFiMwogICA6RU5EOgoKJG5vdGUgaXRzIGJ1aWx0IGludG8gZW1hY3Mgbm8g aW50c2FsbCBuZWVkZWQkCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7 OyAgKHNldHEgZGNzaC1jb21tYW5kLWxpc3QgJygiYWxsX3JlZ2lzdGVycyIKICA7OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrX2Rlc2lnbiIgImNoZWNrX3Rlc3QiICJjb21w aWxlIiAiY3VycmVudF9kZXNpZ24iCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJsaW5rIiAidW5pcXVpZnkiCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJy ZXBvcnRfdGltaW5nIiAicmVwb3J0X2Nsb2NrcyIgInJlcG9ydF9jb25zdHJhaW50IgogIDs7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0X3VuaXhfdmFyaWFibGUiICJzZXRfdW5p eF92YXJpYWJsZSIKICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldF9tYXhf ZmFub3V0IgogIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwb3J0X2FyZWEi ICJhbGxfY2xvY2tzIiAiYWxsX2lucHV0cyIgImFsbF9vdXRwdXRzIikpCiAgCiAgOzsgICAgICAo ZGVmdW4gaGUtZGNzaC1jb21tYW5kLWJlZyAoKQogIDs7ICAgICAgICAobGV0ICgocCkpCiAgOzsg ICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgOzsgICAgICAgICAgICAoYmFja3dhcmQtd29yZCAx KQogIDs7ICAgICAgICAgICAgKHNldHEgcCAocG9pbnQpKSkKICA7OyAgICAgICAgICBwKSkKICAK ICA7OyAgICAgIChkZWZ1biB0cnktZXhwYW5kLWRjc2gtY29tbWFuZCAob2xkKQogIDs7ICAgICAg ICAodW5sZXNzIG9sZAogIDs7ICAgICAgICAgIChoZS1pbml0LXN0cmluZyAoaGUtZGNzaC1jb21t YW5kLWJlZykgKHBvaW50KSkKICA7OyAgICAgICAgICAoc2V0cSBoZS1leHBhbmQtbGlzdCAoc29y dAogIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxsLWNvbXBsZXRpb25zIGhl LXNlYXJjaC1zdHJpbmcgKG1hcGNhciAnbGlzdCBkY3NoLWNvbW1hbmQtbGlzdCkpCiAgOzsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmctbGVzc3ApKSkKICA7OyAgICAgICAg KHdoaWxlIChhbmQgaGUtZXhwYW5kLWxpc3QKICA7OyAgICAgICAgICAgICAgICAoaGUtc3RyaW5n LW1lbWJlciAoY2FyIGhlLWV4cGFuZC1saXN0KSBoZS10cmllZC10YWJsZSkpCiAgOzsgICAgICAg ICAgKHNldHEgaGUtZXhwYW5kLWxpc3QgKGNkciBoZS1leHBhbmQtbGlzdCkpKQogIDs7ICAgICAg ICAoaWYgKG51bGwgaGUtZXhwYW5kLWxpc3QpCiAgOzsgICAgICAgICAgICAocHJvZ24KICA7OyAg ICAgICAgICAgICAgKHdoZW4gb2xkIChoZS1yZXNldC1zdHJpbmcpKQogIDs7ICAgICAgICAgICAg ICAoKSkKICA7OyAgICAgICAgICAoaGUtc3Vic3RpdHV0ZS1zdHJpbmcgKGNhciBoZS1leHBhbmQt bGlzdCkpCiAgOzsgICAgICAgICAgKHNldHEgaGUtdHJpZWQtdGFibGUgKGNvbnMgKGNhciBoZS1l eHBhbmQtbGlzdCkgKGNkciBoZS10cmllZC10YWJsZSkpKQogIDs7ICAgICAgICAgIChzZXRxIGhl LWV4cGFuZC1saXN0IChjZHIgaGUtZXhwYW5kLWxpc3QpKQogIDs7ICAgICAgICAgIHQpKQoKICA7 OyAgKHNldHEgaGlwcGllLWV4cGFuZC10cnktZnVuY3Rpb25zLWxpc3QgKGNvbnMgJ3lhcy9oaXBw aWUtdHJ5LWV4cGFuZCBoaXBwaWUtZXhwYW5kLXRyeS1mdW5jdGlvbnMtbGlzdCkpCgogIDs7ICAo ZGVmdW4gbXktaGlwcGllLWV4cGFuZC1jb21wbGV0aW9ucyAoJm9wdGlvbmFsIGhpcHBpZS1leHBh bmQtZnVuY3Rpb24pCiAgOzsgICAgICAgICJSZXR1cm4gdGhlIGZ1bGwgbGlzdCBvZiBwb3NzaWJs ZSBjb21wbGV0aW9ucyBnZW5lcmF0ZWQgYnkgYGhpcHBpZS1leHBhbmQnLgogIDs7ICAgICAgVGhl IG9wdGlvbmFsIGFyZ3VtZW50IGNhbiBiZSBnZW5lcmF0ZWQgd2l0aCBgbWFrZS1oaXBwaWUtZXhw YW5kLWZ1bmN0aW9uJy4iCiAgOzsgICAgICAgIChsZXQgKCh0aGlzLWNvbW1hbmQgJ215LWhpcHBp ZS1leHBhbmQtY29tcGxldGlvbnMpCiAgOzsgICAgICAgICAgICAgIChsYXN0LWNvbW1hbmQgbGFz dC1jb21tYW5kKQogIDs7ICAgICAgICAgICAgICAoYnVmZmVyLW1vZGlmaWVkIChidWZmZXItbW9k aWZpZWQtcCkpCiAgOzsgICAgICAgICAgICAgIChoaXBwaWUtZXhwYW5kLWZ1bmN0aW9uIChvciBo aXBwaWUtZXhwYW5kLWZ1bmN0aW9uICdoaXBwaWUtZXhwYW5kKSkpCiAgOzsgICAgICAgICAgKGZs ZXQgKChkaW5nKSkgOyBhdm9pZCB0aGUgKGRpbmcpIHdoZW4gaGlwcGllLWV4cGFuZCBleGhhdXN0 cyBpdHMgb3B0aW9ucy4KICA7OyAgICAgICAgICAgICh3aGlsZSAocHJvZ24KICA7OyAgICAgICAg ICAgICAgICAgICAgIChmdW5jYWxsIGhpcHBpZS1leHBhbmQtZnVuY3Rpb24gbmlsKQogIDs7ICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGFzdC1jb21tYW5kICdteS1oaXBwaWUtZXhwYW5kLWNv bXBsZXRpb25zKQogIDs7ICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgaGUtbnVtIC0x KSkpKSkKICA7OyAgICAgICAgICA7OyBFdmFsdWF0aW5nIHRoZSBjb21wbGV0aW9ucyBtb2RpZmll cyB0aGUgYnVmZmVyLCBob3dldmVyIHdlIHdpbGwgZmluaXNoCiAgOzsgICAgICAgICAgOzsgdXAg aW4gdGhlIHNhbWUgc3RhdGUgdGhhdCB3ZSBiZWdhbiwgYW5kIChzYXZlLWN1cnJlbnQtYnVmZmVy KSBzZWVtcyBhCiAgOzsgICAgICAgICAgOzsgYml0IGhlYXZ5d2VpZ2h0IGluIHRoZSBjaXJjdW1z dGFuY2VzLgogIDs7ICAgICAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgYnVmZmVyLW1vZGlm aWVkKQogIDs7ICAgICAgICAgIDs7IFByb3ZpZGUgdGhlIG9wdGlvbnMgaW4gdGhlIG9yZGVyIGlu IHdoaWNoIHRoZXkgYXJlIG5vcm1hbGx5IGdlbmVyYXRlZC4KICA7OyAgICAgICAgICAoZGVsZXRl IGhlLXNlYXJjaC1zdHJpbmcgKHJldmVyc2UgaGUtdHJpZWQtdGFibGUpKSkpCiAgIAogIDs7ICAg ICAgKGRlZm1hY3JvIG15LWlkby1oaXBwaWUtZXhwYW5kLXdpdGggKGhpcHBpZS1leHBhbmQtZnVu Y3Rpb24pCiAgOzsgICAgICAgICJHZW5lcmF0ZSBhbiBpbnRlcmFjdGl2ZWx5LWNhbGxhYmxlIGZ1 bmN0aW9uIHRoYXQgb2ZmZXJzIGlkby1iYXNlZCBjb21wbGV0aW9uCiAgOzsgICAgICB1c2luZyB0 aGUgc3BlY2lmaWVkIGhpcHBpZS1leHBhbmQgZnVuY3Rpb24uIgogIDs7ICAgICAgICBgKGNhbGwt aW50ZXJhY3RpdmVseQogIDs7ICAgICAgICAgIChsYW1iZGEgKCZvcHRpb25hbCBzZWxlY3Rpb24p CiAgOzsgICAgICAgICAgICAoaW50ZXJhY3RpdmUKICA7OyAgICAgICAgICAgICAobGV0ICgob3B0 aW9ucyAobXktaGlwcGllLWV4cGFuZC1jb21wbGV0aW9ucyAsaGlwcGllLWV4cGFuZC1mdW5jdGlv bikpKQogIDs7ICAgICAgICAgICAgICAgKGlmIG9wdGlvbnMKICA7OyAgICAgICAgICAgICAgICAg ICAobGlzdCAoaWRvLWNvbXBsZXRpbmctcmVhZCAiQ29tcGxldGlvbnM6ICIgb3B0aW9ucykpKSkp CiAgOzsgICAgICAgICAgICAoaWYgc2VsZWN0aW9uCiAgOzsgICAgICAgICAgICAgICAgKGhlLXN1 YnN0aXR1dGUtc3RyaW5nIHNlbGVjdGlvbiB0KQogIDs7ICAgICAgICAgICAgICAobWVzc2FnZSAi Tm8gZXhwYW5zaW9uIGZvdW5kIikpKSkpCiAgIAogIDs7ICAgICAgKGRlZnVuIG15LWlkby1oaXBw aWUtZXhwYW5kICgpCiAgOzsgICAgICAgICJPZmZlciBpZG8tYmFzZWQgY29tcGxldGlvbiBmb3Ig dGhlIHdvcmQgYXQgcG9pbnQuIgogIDs7ICAgICAgICAoaW50ZXJhY3RpdmUpCiAgOzsgICAgICAg IChteS1pZG8taGlwcGllLWV4cGFuZC13aXRoICdoaXBwaWUtZXhwYW5kKSkKICAgCiAgOzsgOzsg KGdsb2JhbC1zZXQta2V5IChrYmQgIjxmMTI+IikgJ215LWlkby1oaXBwaWUtZXhwYW5kKQogIDs7 IDs7IChnbG9iYWwtc2V0LWtleSBbKG1ldGEgZjUpXSAobWFrZS1oaXBwaWUtZXhwYW5kLWZ1bmN0 aW9uCiAgOzsgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcodHJ5LWV4cGFuZC1k Y3NoLWNvbW1hbmQKICA7OyA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkt ZXhwYW5kLWRhYmJyZXYtdmlzaWJsZQogIDs7IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRyeS1leHBhbmQtZGFiYnJldgogIDs7IDs7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyeS1leHBhbmQtZGFiYnJldi1hbGwtYnVmZmVycykgdCkpCiAgOzsgKGdsb2Jh bC1zZXQta2V5IChrYmQgIk0tLyIpICdoaXBwaWUtZXhwYW5kKQogIDs7IDs7IChnbG9iYWwtc2V0 LWtleSAoa2JkICJUQUIiKSAnaGlwcGllLWV4cGFuZCkKCiMrRU5EX1NSQwogIAoqKiBBY2Ugd2lu ZG93CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDE0MjlmZmNhLTNkMmUtNGFiYy04YzI2 LTg1MWI2MmMzYmQzNwogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vYWJvLWFiby9hY2Utd2lu ZG93CnNldHMgdG8gb25seSB1c2UgaG9tZWtleXMgCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgYWNlLXdpbmRvdwogICAgOmNvbmZpZwo7c2V0IGtleXMg dG8gb25seSB0aGVzZSAKOzsgICAgKHNldHEgYXcta2V5cyAnKD9hID9zID9kID9mID9nID9oID9q ID9rID9sKSkKOzsgICAgKHNldHEgYXcta2V5cyAnKD8xID8yID8zID80ID81ICkpCjs7IHNldCB0 byB3b3JrIGluIGZyYW1lcyBub3QgZ2xvYmFsISBzbyB0aGF0IGlmIG9ubHkgMiB3aW5kb3dzIGlu IGZyYW1lcyBmcmFtZSBpdCB3b3VsZCBzd2l0Y2ggYmV0d2VlbiB0aGVtIAooc2V0cSBhdy1zY29w ZSAnZnJhbWUpCjs7IHNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRvIGRhcmtlbiB0aGUgYmFja2dy b3VuZCBkdXJpbmcgc3dpdGNoCihzZXRxIGF3LWJhY2tncm91bmQgbmlsKQo7OyBXaGVuIG5vbi1u aWwsIGFjZS13aW5kb3cgd2lsbCBpc3N1ZSBhIHJlYWQtY2hhciBldmVuIGZvciBvbmUgd2luZG93 LSB5b3Ugd2FudCBpdCBuaWwhCihzZXRxIGF3LWRpc3BhdGNoLWFsd2F5cyBuaWwpCgoKKQojK0VO RF9TUkMKYXJjaApodHRwczovL2dpdGh1Yi5jb20vdGFtMTdha2kvYWNlLWlzZWFyY2gKKioqIHN0 YXJ0IGFjZS1pc2VhcmNoCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgODc1YWQ3OGEt MDcyNi00YjU4LTllNzUtZDU5Yjg3MTc2MTVjCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKOyAgKHVzZS1wYWNrYWdlIGFjZS1pc2VhcmNoCjsgIDplbnN1cmUg dAo7ICA6Y29uZmlnCjsgIChhY2UtaXNlYXJjaC1tb2RlICsxKQo7ICAoZ2xvYmFsLWFjZS1pc2Vh cmNoLW1vZGUgKzEpCjsgKHNldHEgYWNlLWlzZWFyY2gtZnVuY3Rpb24gJ2F2eS1nb3RvLXdvcmQt MSkKOyAgKQojK0VORF9TUkMKKioqIGN1c3RvbWl6ZSAKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICAyZGQzODM1My01Y2FmLTRkOGMtYjBiMS05Y2QxYjU2MDBlYzEKICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIDs7ICAgKGN1c3RvbS1zZXQtdmFy aWFibGVzCiAgOzsgICAnKGFjZS1pc2VhcmNoLWlucHV0LWxlbmd0aCA5KQogIDs7ICAgJyhhY2Ut aXNlYXJjaC1pbnB1dC1pZGxlLWRlbGF5IDAuNCkKICA7OyAgICcoYWNlLWlzZWFyY2gtc3VibW9k ZSAnYWNlLWp1bXAtY2hhci1tb2RlKQogIDs7ICAgJyhhY2UtaXNlYXJjaC11c2UtYWNlLWp1bXAg J3ByaW50aW5nLWNoYXIpCiAgOzsgKQojK0VORF9TUkMKKiogYWxsLXRoZS1pY29ucyAKCiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgYWxsLXRoZS1pY29u cwogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytFTkRfU1JDIAoKCioqIGFjZSBsaW5rCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDQ2Njk0NmI0LTRiM2ItNDI2Ni05Mjk3LWYyNmY1OTEy ZTg2MwogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vYWJvLWFiby9hY2UtbGluawoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBhY2UtbGluawogOmVu c3VyZSB0CiA6Y29uZmlnCihhY2UtbGluay1zZXR1cC1kZWZhdWx0KQogKQojK0VORF9TUkMKKiog VE9ETyBhbGVydAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBmOTdiMjliMi0zOTIxLTQw ZDYtOGQzOC04N2RlMGNkZjVmZTcKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2p3aWVnbGV5 L2FsZXJ0Cgp0byBzZW5kIGEgYWxlcnQgSSBhIGZ1bmN0aW9uIHlvdSB3cml0ZSB5b3UgY2FuIHVz ZQoKIytCRUdJTl9FWEFNUExFCihhbGVydCAiVXBsb2FkIHRvIEZCIiA6dGl0bGUgIkZCIiApCiMr RU5EX0VYQU1QTEUKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2UgYWxlcnQKIDplbnN1cmUgdAogOmNvbmZpZwoocmVxdWlyZSAnYWxlcnQpCjs7IFRoaXMg aXMgdGhlIG1vc3QgYmFzaWMgZm9ybSB1c2FnZQooc2V0cSBhbGVydC1kZWZhdWx0LXN0eWxlICds aWJub3RpZnkpCgooZGVmdW4gYWxlcnQtbXktc3R5bGUgKGluZm8pCiAgIlVzZSBsaWJub3RpZnkg KyBzb3VuZCBhbGVydCBJTkZPLiIKICAocHJvZ24KICAgIChhbGVydC1saWJub3RpZnktbm90aWZ5 IGluZm8pCiAgICAocGxheS1zb3VuZC1maWxlIChjb25jYXQgKGdldGVudiAiSE9NRSIpICIvTUxU L3NvdW5kcy9JTS9Lb3BldGVfbm90aWZ5LndhdiIpKSkpCgooYWxlcnQtZGVmaW5lLXN0eWxlICdt eS1hbGVydC1zdHlsZSA6dGl0bGUgIm15IGFsZXJ0IHN0eWxlIgoJCSAgICA6bm90aWZpZXIgIydh bGVydC1teS1zdHlsZSkKCihzZXRxIGFsZXJ0LWRlZmF1bHQtc3R5bGUgJ215LWFsZXJ0LXN0eWxl KQogKQojK0VORF9TUkMgCgoqKiBhbnp1CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGE0 NjE1YWI5LTY3ZDctNDYxMS05YzI1LTJkMGZmM2ZlMTU4YwogICA6RU5EOgpodHRwczovL2dpdGh1 Yi5jb20vc3lvaGV4L2VtYWNzLWFuenUKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgYW56dQogOmVuc3VyZSB0CiA6Y29uZmlnCihyZXF1aXJlICdhbnp1 KQooZ2xvYmFsLWFuenUtbW9kZSArMSkKCihzZXQtZmFjZS1hdHRyaWJ1dGUgJ2FuenUtbW9kZS1s aW5lIG5pbAogICAgICAgICAgICAgICAgICAgIDpmb3JlZ3JvdW5kICJ5ZWxsb3ciIDp3ZWlnaHQg J2JvbGQpCgooY3VzdG9tLXNldC12YXJpYWJsZXMKICcoYW56dS1tb2RlLWxpZ2h0ZXIgIiIpCiAn KGFuenUtZGVhY3RpdmF0ZS1yZWdpb24gdCkKICcoYW56dS1zZWFyY2gtdGhyZXNob2xkIDEwMDAp CiAnKGFuenUtcmVwbGFjZS10by1zdHJpbmctc2VwYXJhdG9yICIgPT4gIikpCiAKKGdsb2JhbC1z ZXQta2V5IChrYmQgIk0tJSIpICdhbnp1LXF1ZXJ5LXJlcGxhY2UpCihnbG9iYWwtc2V0LWtleSAo a2JkICJDLU0tJSIpICdhbnp1LXF1ZXJ5LXJlcGxhY2UtcmVnZXhwKQoKICkKIytFTkRfU1JDIAoK KiogYXN5bmMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYzdiYmMxZGYtY2MwNC00MWJl LThhZTctNDYwMDNmN2Y2YzIwCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9qd2llZ2xleS9l bWFjcy1hc3luYwpoaXMgaXMgbmVlZGVkIGZvciBvcmctZG93bmxvYWQgYW5kIGRpcmVkIGFzeW5j IAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBhc3lu YwogOmVuc3VyZSB0CiA6Y29uZmlnCihhdXRvbG9hZCAnZGlyZWQtYXN5bmMtbW9kZSAiZGlyZWQt YXN5bmMuZWwiIG5pbCB0KQooZGlyZWQtYXN5bmMtbW9kZSAxKQoKKQojK0VORF9TUkMgCgoKCgoq KiBhdWN0ZXgKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZTFmNGM4ZjEtYTRlYi00ZWI4 LTk5MzEtZDM1YWM5ZDU2OGZmCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQo7KHJlcXVpcmUgJ3RleCkKOyhzZXRxIHByZXZpZXctc2NhbGUtZnVuY3Rpb24gMS4x KQojK0VORF9TUkMKKiogYXV0by1jb21wbGV0ZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAg ICAxYTdmY2NiZS03NDAxLTQ0YTItOGJmZS0zZDkwZGFkNzE2ZDcKICAgOkVORDoKCiMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIDs7ICh1c2UtcGFja2FnZSBhdXRvLWNvbXBs ZXRlCiAgOzsgIDplbnN1cmUgdAogIDs7ICA6Y29uZmlnCiAgOzsgKGFjLWNvbmZpZy1kZWZhdWx0 KQoKICA7OyA7c3RhcnQgYWZ0ZXIgNCBjaGFyYWN0ZXJzCiAgOzsgKHNldHEgYWMtYXV0by1zdGFy dCA0KQogIDs7IDtmaXggbGluaXVtIGlzc3VlcwogIDs7IChhYy1saW51bS13b3JrYXJvdW5kKQoK ICA7OyA7OyBFeGFtcGxlcwogIDs7IChzZXQtZmFjZS1iYWNrZ3JvdW5kICdhYy1jYW5kaWRhdGUt ZmFjZSAibGlnaHRncmF5IikKICA7OyAoc2V0LWZhY2UtdW5kZXJsaW5lICdhYy1jYW5kaWRhdGUt ZmFjZSAiZGFya2dyYXkiKQogIDs7IChzZXQtZmFjZS1iYWNrZ3JvdW5kICdhYy1zZWxlY3Rpb24t ZmFjZSAic3RlZWxibHVlIikKCiAgOzsgKQojK0VORF9TUkMKKiogYXRvbWljLWNocm9tZQpodHRw czovL2dpdGh1Yi5jb20vYWxwaGEyMmpwL2F0b21pYy1jaHJvbWUKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgYXRvbWljLWNocm9tZSAKICAgIDplbnN1 cmUgdAogICAgOmNvbmZpZwoocmVxdWlyZSAnYXRvbWljLWNocm9tZSkKCihhdG9taWMtY2hyb21l LXN0YXJ0LXNlcnZlcikKCihzZXRxIGF0b21pYy1jaHJvbWUtYnVmZmVyLW9wZW4tc3R5bGUgJ2Zy YW1lKSAKCihhZGQtaG9vayAnYXRvbWljLWNocm9tZS1lZGl0LW1vZGUtaG9vayAnZmx5c3BlbGwt bW9kZSkKCjtZb3UgY2FuIGNoYW5nZSB0aGUgbWFqb3IgbW9kZSBtYW51YWxseS4gSWYgeW91IHdh bnQgdG8gdXNlIGEgZGlmZmVyZW50IG1ham9yIG1vZGUgYXMgdGhlIGRlZmF1bHQsIHNldCBhdG9t aWMtY2hyb21lLWRlZmF1bHQtbWFqb3ItbW9kZSBsaWtlIGJlbG93Lgo7KHNldHEgYXRvbWljLWNo cm9tZS1kZWZhdWx0LW1ham9yLW1vZGUgJ21hcmtkb3duLW1vZGUpCgogICAgKQojK0VORF9TUkMg CgpBZGRpdGlvbmFsbHksIHlvdSBjYW4gdXNlIGF0b21pYy1jaHJvbWUtdXJsLW1ham9yLW1vZGUt YWxpc3QgdG8gY2hvb3NlIHRoZSBtYWpvciBtb2RlIGZvciBhIHNwZWNpZmljIHdlYnNpdGUgYmFz ZWQgb24gdGhlIHBhZ2UgVVJMIGxpa2UgYmVsb3cuCgojK0JFR0lOX0VYQU1QTEUKKHNldHEgYXRv bWljLWNocm9tZS11cmwtbWFqb3ItbW9kZS1hbGlzdAogICAgICAnKCgiZ2l0aHViXFwuY29tIiAu IGdmbS1tb2RlKQogICAgICAgICgicmVkbWluZSIgLiB0ZXh0aWxlLW1vZGUpKSkKCiMrRU5EX0VY QU1QTEUKCgoqKiBBdnkgSnVtcAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBiMTI5YWFm My03MDNmLTQ4MTItOTFiZi1mZWM5ZTIzZDMwZjYKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29t L2Fiby1hYm8vYXZ5CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1w YWNrYWdlIGF2eQogOmVuc3VyZSB0CiA6Y29uZmlnCiAoZGVmY3VzdG9tIGF2eS1rZXlzICcoP2Eg P3MgP2QgP2YgP2cgP2ggP2ogP2sgP2wgP3EgP3cgP2UgP3IgP3QgP3kgP3UgP2kgP28gP3AgP3og P3ggP2MgP3YgP2IgP24gP20gKQogIktleXMgZm9yIGp1bXBpbmcuIikgCihzZXRxIGF2eS10aW1l b3V0LXNlY29uZHMgMC42KQogKQojK0VORF9TUkMgCgoKKiogYXZ5IHphcAogICA6UFJPUEVSVElF UzoKICAgOkxBU1QtRURJVEVEOiBbMDMtMDgtMjAxNSgxOTo1NyldCiAgIDpJRDogICAgICAgNGUz MTE3OWItOWQyMi00OWYzLTkzNzktYTI0MDE2MmYwMTk1CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHVi LmNvbS9jdXRlLWp1bXBlci9hdnktemFwCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgYXZ5LXphcAogOmVuc3VyZSB0CiA6Y29uZmlnCiAgKQojK0VORF9T UkMKKiogYXZhbmR1CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDdhYzFhNmMyLWE1NWMt NDBmYi04NDc3LThlM2E1NjAzNTFhMwogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBhdmFuZHUKIDplbnN1cmUgdAogOmNvbmZpZwooc2V0 cSBhdmFuZHUtdHQtcnNzLWFwaS11cmwgImh0dHBzOi8vdHRyc3Muc2VydmVyLXNwZWVkLm5ldC9h cGkvIikgCiApCiMrRU5EX1NSQyAKCgoqKiBhcnZpZXcKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgZjZlZTUwZTAtMjQ4Zi00YzI0LThkNzQtNjMzODhiZDg3YTFhCiAgIDpFTkQ6CgogIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgICh1c2UtcGFja2FnZSBhcnZpZXcK ICAgOmVuc3VyZSB0CiAgIDpjb25maWcKICAgKHJlcXVpcmUgJ2FydmlldykKICAgKQogIytFTkRf U1JDCgoqKiBibQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA4MmZlY2NkNy1mNjQxLTRj NDEtODQ3Ny1kYzIwM2JlYjlmNWYKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2pvb2RsYW5k L2JtCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgYm0K ICAgICAgICAgICAgIDplbnN1cmUgdAogICAgICAgICAgICAgOmRlbWFuZCB0CgogICAgICAgICAg ICAgOmluaXQKICAgICAgICAgICAgIDs7IHJlc3RvcmUgb24gbG9hZCAoZXZlbiBiZWZvcmUgeW91 IHJlcXVpcmUgYm0pCiAgICAgICAgICAgICAoc2V0cSBibS1yZXN0b3JlLXJlcG9zaXRvcnktb24t bG9hZCB0KQoKICAgICAgICAgICAgIDpjb25maWcKICAgICAgICAgICAgIDs7IEFsbG93IGNyb3Nz LWJ1ZmZlciAnbmV4dCcKICAgICAgICAgICAgIChzZXRxIGJtLWN5Y2xlLWFsbC1idWZmZXJzIHQp ICAKICAgICAgICAgICAgIDs7IHdoZXJlIHRvIHN0b3JlIHBlcnNpc3RhbnQgZmlsZXMKICAgICAg ICAgICAgIChzZXRxIGJtLXJlcG9zaXRvcnktZmlsZSAifi8uZW1hY3MuZC9ibS1yZXBvc2l0b3J5 IikKICAgICAgICAgICAgIDs7IHNhdmUgYm9va21hcmtzCiAgICAgICAgICAgICAoc2V0cS1kZWZh dWx0IGJtLWJ1ZmZlci1wZXJzaXN0ZW5jZSB0KQoKICAgICAgICAgICAgIDs7IExvYWRpbmcgdGhl IHJlcG9zaXRvcnkgZnJvbSBmaWxlIHdoZW4gb24gc3RhcnQgdXAuCiAgICAgICAgICAgICAoYWRk LWhvb2snIGFmdGVyLWluaXQtaG9vayAnYm0tcmVwb3NpdG9yeS1sb2FkKQoKICAgICAgICAgICAg IDs7IFJlc3RvcmluZyBib29rbWFya3Mgd2hlbiBvbiBmaWxlIGZpbmQuCiAgICAgICAgICAgICAo YWRkLWhvb2sgJ2ZpbmQtZmlsZS1ob29rcyAnYm0tYnVmZmVyLXJlc3RvcmUpCgoKICAgICAgICAg ICAgIDs7IFNhdmluZyBib29rbWFya3MKICAgICAgICAgICAgIChhZGQtaG9vayAna2lsbC1idWZm ZXItaG9vayAjJ2JtLWJ1ZmZlci1zYXZlKQogICAgICAgICAgICAgOzsgU2F2aW5nIHRoZSByZXBv c2l0b3J5IHRvIGZpbGUgd2hlbiBvbiBleGl0LgogICAgICAgICAgICAgOzsga2lsbC1idWZmZXIt aG9vayBpcyBub3QgY2FsbGVkIHdoZW4gRW1hY3MgaXMga2lsbGVkLCBzbyB3ZQogICAgICAgICAg ICAgOzsgbXVzdCBzYXZlIGFsbCBib29rbWFya3MgZmlyc3QuCiAgICAgICAgICAgICAoZGVmdW4g bW9kaS9ibS1zYXZlLWFsbC1ibS10by1yZXBvc2l0b3J5ICgpCiAgICAgICAgICAgICAgIChibS1i dWZmZXItc2F2ZS1hbGwpCiAgICAgICAgICAgICAgIChibS1yZXBvc2l0b3J5LXNhdmUpKQogICAg ICAgICAgICAgKGFkZC1ob29rICdraWxsLWVtYWNzLWhvb2sgIydtb2RpL2JtLXNhdmUtYWxsLWJt LXRvLXJlcG9zaXRvcnkpCiAgICAgICAgICAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAj J2JtLWJ1ZmZlci1zYXZlKQogICAgICAgICAgICAgOzsgVGhlIGBhZnRlci1zYXZlLWhvb2snIGlz IG5vdCBuZWNlc3NhcnkgdG8gdXNlIHRvIGFjaGlldmUgcGVyc2lzdGVuY2UsCiAgICAgICAgICAg ICA7OyBidXQgaXQgbWFrZXMgdGhlIGJvb2ttYXJrIGRhdGEgaW4gcmVwb3NpdG9yeSBtb3JlIGlu IHN5bmMgd2l0aCB0aGUgZmlsZQogICAgICAgICAgICAgOzsgc3RhdGUuCgoKICAgICAgICAgICAg IDs7IFJlc3RvcmluZyBib29rbWFya3MKICAgICAgICAgICAgIChhZGQtaG9vayAnZmluZC1maWxl LWhvb2tzICAgIydibS1idWZmZXItcmVzdG9yZSkKICAgICAgICAgICAgIChhZGQtaG9vayAnYWZ0 ZXItcmV2ZXJ0LWhvb2sgIydibS1idWZmZXItcmVzdG9yZSkKICAgICAgICAgICAgIDs7IFRoZSBg YWZ0ZXItcmV2ZXJ0LWhvb2snIGlzIG5vdCBuZWNlc3NhcnkgdG8gdXNlIHRvIGFjaGlldmUgcGVy c2lzdGVuY2UsCiAgICAgICAgICAgICA7OyBidXQgaXQgbWFrZXMgdGhlIGJvb2ttYXJrIGRhdGEg aW4gcmVwb3NpdG9yeSBtb3JlIGluIHN5bmMgd2l0aCB0aGUgZmlsZQogICAgICAgICAgICAgOzsg c3RhdGUuIFRoaXMgaG9vayBtaWdodCBjYXVzZSB0cm91YmxlIHdoZW4gdXNpbmcgcGFja2FnZXMK ICAgICAgICAgICAgIDs7IHRoYXQgYXV0b21hdGljYWxseSByZXZlcnRzIHRoZSBidWZmZXIgKGxp a2UgdmMgYWZ0ZXIgYSBjaGVjay1pbikuCiAgICAgICAgICAgICA7OyBUaGlzIGNhbiBlYXNpbHkg YmUgYXZvaWRlZCBpZiB0aGUgcGFja2FnZSBwcm92aWRlcyBhIGhvb2sgdGhhdCBpcwogICAgICAg ICAgICAgOzsgY2FsbGVkIGJlZm9yZSB0aGUgYnVmZmVyIGlzIHJldmVydGVkIChsaWtlIGB2Yy1i ZWZvcmUtY2hlY2tpbi1ob29rJykuCiAgICAgICAgICAgICA7OyBUaGVuIG5ldyBib29rbWFya3Mg Y2FuIGJlIHNhdmVkIGJlZm9yZSB0aGUgYnVmZmVyIGlzIHJldmVydGVkLgogICAgICAgICAgICAg OzsgTWFrZSBzdXJlIGJvb2ttYXJrcyBpcyBzYXZlZCBiZWZvcmUgY2hlY2staW4gKGFuZCByZXZl cnQtYnVmZmVyKQogICAgICAgICAgICAgKGFkZC1ob29rICd2Yy1iZWZvcmUtY2hlY2tpbi1ob29r ICMnYm0tYnVmZmVyLXNhdmUpCgogICAgICAgICAgICAgCiAgICAgICAgICAgICApCgojK0VORF9T UkMKKiogaGVsbS1ibQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBiMTY3OTNiYy0xNDY3 LTQ5OTYtOTNkOC04YjU4OWY1MjIwMWEKICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgaGVsbS1ibQogOmVuc3VyZSB0CiA6Y29uZmlnCiAg KQojK0VORF9TUkMgCioqIGJldHRlciBzaGVsbCAKaHR0cHM6Ly9naXRodWIuY29tL2tpbGxkYXNo OS9iZXR0ZXItc2hlbGwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKHVz ZS1wYWNrYWdlIGJldHRlci1zaGVsbAogICAgOmVuc3VyZSB0CgopCiMrRU5EX1NSQwoKKiogYmJk YiAKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNzUwZTc4NzYtZTkzMC00NmYxLWFhN2Qt MTRjMTVmNjUwMzgwCiAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKICAgOzsgKHVzZS1wYWNrYWdlIGJiZGIKICAgOzsgIDplbnN1cmUgdAogICA7OyAgOmNvbmZp ZwogICAgKHNldHEgYmJkYi1maWxlICJ+Ly5lbWFjcy5kL2JiZGIiKSAgICAgICAgICAgOzsga2Vl cCB+LyBjbGVhbjsgc2V0IGJlZm9yZSBsb2FkaW5nCiAgIDsgKHJlcXVpcmUgJ2JiZGIpIAogICA7 OyAoYmJkYi1pbml0aWFsaXplKQoKICAgOzsgICkKICMrRU5EX1NSQyAKCgoqKiBjb3Vuc2VsLWJi ZGIKaHR0cHM6Ly9naXRodWIuY29tL3JlZGd1YXJkdG9vL2NvdW5zZWwtYmJkYi9pc3N1ZXMvMQoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGNvdW5zZWwt YmJkYgo6ZW5zdXJlIHQKIDpjb25maWcKCiApCiMrRU5EX1NSQyAKCgoKKiogYmVhY29uIG1vZGUg CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDdlYTVjNDgzLWUxNjYtNDUwNi05ODUzLWQ0 YTQxMDFkOWQ3NwogICA6RU5EOgoKIGh0dHBzOi8vZ2l0aHViLmNvbS9NYWxhYmFyYmEvYmVhY29u CgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAodXNlLXBhY2thZ2UgYmVh Y29uCiAgOmVuc3VyZSB0CiAgOmNvbmZpZwogKGJlYWNvbi1tb2RlIDEpCiAoc2V0cSBiZWFjb24t cHVzaC1tYXJrIDM1KQogKHNldHEgYmVhY29uLWNvbG9yICIjMjFENkY0IikKICApCiAjK0VORF9T UkMgCgoKKiogQm9va21hcmsrCgogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBhOGUzZTA0 NC02MmRiLTQzNzYtYmQ3Yi0zN2Y4MmEwZTkyNmEKICAgOkVORDoKKioqIHVzZS1wYWNrYWdlCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgYm9va21hcmsr CjplbnN1cmUgdAo6Y29uZmlnCihzZXRxIGJvb2ttYXJrLXZlcnNpb24tY29udHJvbCB0CiAgICAg IGJvb2ttYXJrLXNhdmUtZmxhZyB0KQo7YXNrIGZvciB0YWdzIHdoZW4gc2F2aW5nIGEgYm9va21h cmsgbW92ZSBuaWwgdG8gdCB0byBhc2sgZWFjaCB0aW1lCihzZXRxIGJta3AtcHJvbXB0LWZvci10 YWdzLWZsYWcgbmlsKQopCgojK0VORF9TUkMKKioqIERPQ1UKKioqKiBib29rbWFyayB0byBhIHNw ZWNpZmMgcG9zaXRpb24gaW4gYSBmaWxlCnN0YW5kIGluIHRoZSBsaW5lL3Bvc2l0aW9uIGluIHRo ZSBmaWxlIHlvdSB3YW50IHRvIGJvb2ttYXJrIGFuZCB0aGVuIGlzc3VlIAo/Qy14IHAgbT8gYW5k IGVudGVyIHRoZSBuYW1lIGRlc2lyZWQgCioqKiogaW1wb3J0YW50IGtleXMKbWFyayBmaWxlICA/ bT8KcmVuYW1lICA/cj8gKHdpbGwgcHJvbXB0IGZvciBuYW1lIGZvbGxvd2QgYnkgbG9jYXRpb24s IHByZXNzIEVOVEVSIHRvIGlnbm9yZSBjaGFuZ2VkIGxvY2F0aW9uKQpzb3J0IGJ5IG5hbWUgP3Mt bj8KKioqKiBjcmVhdGUgYSBzZXF1ZW5jZSBib29rbWFyayAobXVsdGlwbGUgYm9va21hcmtzIGxh dW5jaGVkIGZyb20gMSkKbWFyayBjdXJyZW50IGJvb2ttYXJrcyBpbiBiaysgd2l0aCAnbScgdGhl biB1c2UgdGhlIG1lbnUgaXRlbSAnbmV3IHNlcXVlbmNlIGJvb2ttYXJrIGZyb20gbWFya2VkJyB0 byBjcmVhdGUgYSBzcGVjaWFsIGJvb2ttYXJrIHRoYXQgbGF1bmNoZXMgYWxsIG1hcmtlZCBib29r bWFrcmVkIGluIHN1Y2NzaW9uLiBnaXZlIGl0IGEgbmFtZSBhbmQgeW91ciBmaW5pc2hlZAoqKioq IGhpZ2xpZ2h0aW5nCnRvIGhpZ2xpZ2h0IGEgYm9va21hcmsgZmlyc3QgYm9va21hcmsgdGhlIHBv c2l0aW9uIHlvdSB3YW50IChDLXggcG0pCnRoZW4gaXNzdWUgKCBDLXggcCBoICkgdG8gYnJpbmcg dGhlIGhpZ2xpZ2h0IG1lbnUKIAoqKioqIGJvb2ttYXJrIGEgUmVnaW9uCllvdSBjYW4gYm9va21h cmsgYSByZWdpb24gb2YgdGV4dCwgbm90IGp1c3QgYSBwb3NpdGlvbi5XaGVuIHlvdSBqdW1wIHRv IGEgYm9va21hcmsgdGhhdCByZWNvcmRzIGEgcmVnaW9uLCB0aGUgcmVnaW9uIGlzCmFjdGl2YXRl ZC4gdG8gZG8gdGhpcyBzZWxlY3QgYSByZWdpb24gYW5kIHRoZW0gYWRkIHRoZSBib29rbWFyayBh cyB1c3VzYWwuCioqKiogYm9va21hcmsgbXVsdGlwbGUgZmlsZXMgYXQgb25jZSAodXNpbmcgZGly ZWQpCnN0YXJ0IGEgZGlyZWQrIHNlc3Npb24KbWFyayB0aGUgZmlsZXMgeW91IHdhbnQgd2l0aCAn bScKYWRkIHRoZW4gYXMgYm9va21hcmtzIHdpdGggTS1iCioqKiogdGFncwoqKioqKiBhc2sgZm9y IHRhZyBlYWNoIHRpbWUgeW91IHNhdmUgYSBib29rbWFyawphZGQgdGhpcyB0byB5b3VyIGNvbmZp ZwojK0JFR0lOX0VYQU1QTEUKO2FzayBmb3IgdGFncyB3aGVuIHNhdmluZyBhIGJvb2ttYXJrCihz ZXRxIGJta3AtcHJvbXB0LWZvci10YWdzLWZsYWcgdCkKIytFTkRfRVhBTVBMRQoqKioqKiB0YWdn aW5nIGluIGxpc3QgdmlldwpzZWUgdGhlIGhvdGtleXMgaW4gY29uZmlnIGZvciBwZXJzb25hbCB0 YWdnaW5nIGtleXMKJE5vdGUtd2hlbiB0YWdnaW5nIG9uZSBuZWVkcyB0byBlbnRlciB0YWc+IEVO VEVSIHRoZW4gRU5URVIgYWdhaW4gd2l0aCBhbiBlbXB0eSBwcm9tcHQgdG8gc2F2ZSB0aGUgdGFn JCAKKioqKiogdXNlIHRhZ3MgdG8gZXhlY3V0ZSBhIGxpc3AgY29kZSAoZm9yIGV4YW1wbGUgbmFy cm93IHJlZ2lvbiB3aGVuIGxhdW5jaGVkKQpUYWdzIHRoYXQgaGF2ZSB0aGUgcHJlZml4ICJibWtw LSIgYXJlIHJlc2VydmVkIOKAkyBkbyBub3QgbmFtZSB5b3VyIG93biB0YWdzIHVzaW5nIHRoaXMg cHJlZml4LiBDdXJyZW50bHksICJibWtwLWp1bXAiIGlzIHRoZSBvbmx5IHByZWRlZmluZWQgYm9v a21hcmsgdGFnLiBZb3UgY2FuIGdpdmUgdGhpcyB0YWcgYSB2YWx1ZSB0aGF0IGlzIGEgZnVuY3Rp b24g4oCTIGl0IGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGFnZ2VkIGJvb2ttYXJrIGlzIHZpc2l0 ZWQuIEFueSBMaXNwLXJlYWRhYmxlIGZ1bmN0aW9uIHZhbHVlIGlzIGFsbG93ZWQ6IGEgc3ltYm9s IG9yIGEgbGFtYmRhIGV4cHJlc3Npb24uCgpGb3IgZXhhbXBsZSwgdG8gZGlzcGxheSBIZWxsbyEg d2hlbiBhIGJvb2ttYXJrIGlzIHZpc2l0ZWQgeW91IGNhbiB1c2UgdGhpczoKCmlzc3VlIH5UIHZ+ CmVudGVyIGJta3AtanVtcApwcmVzcyAgUkVUCmVudGVyIGNvZGUK4oKGSW4gZXhhbXBsZeKChiAg KGxhbWJkYSAoKSAobWVzc2FnZSAiSGVsbG8hIikpCgp0aGlzIGlzIGFuIGV4YW1wbGUgY29kZSBm b3IgbmFycm93IHJlZ2lvbgoKIytCRUdJTl9FWEFNUExFCihsYW1iZGEgKCkgKG9yZy1uYXJyb3ct dG8tc3VidHJlZSkpCiMrRU5EX0VYQU1QTEUKClRoZSBmdW5jdGlvbiB0aGF0IGlzIHRoZSB2YWx1 ZSBvZiBhICJibWtwLWp1bXAiIHRhZyBpcyBjYWxsZWQganVzdCBhZnRlciB0aGUgdGhlIHN0YW5k YXJkIGhvb2sg4oCYYm9va21hcmstYWZ0ZXItanVtcC1ob29r4oCZIGlzIGludm9rZWQuIFlvdSBj YW4gdXNlIHRoaXMgdGFnIHRvIGludm9rZSBmdW5jdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8g aW5kaXZpZHVhbCBib29rbWFya3M7IGJvb2ttYXJrcyBjYW4gdGh1cyBoYXZlIHRoZWlyIG93biwg ZXh0cmEganVtcCBmdW5jdGlvbnMuCgp0aGlzIGlzIHRoZSB3aG9sZSBwcm9jZWR1cmU6CiMrQkVH SU5fRVhBTVBMRQpUIHYgYm1rcC1qdW1wIFJFVCAobGFtYmRhICgpIChvcmctbmFycm93LXRvLXN1 YnRyZWUpKQojK0VORF9FWEFNUExFCgoqKiBCcm93c2Uga2lsbCByaW5nCiAgIDpQUk9QRVJUSUVT OgogICA6SUQ6ICAgICAgIGIxOWRiNTE2LTg1MTUtNDgzZi1iMWYzLTk1Y2MyNmI3ZDQ0YwogICA6 RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGJy b3dzZS1raWxsLXJpbmcKOmVuc3VyZSB0Cjpjb25maWcKKQojK0VORF9TUkMgCgoqKiBidWcgaHVu dGVyCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGY5MTYyMmEzLWE5MDEtNDVmMi1hZDE3 LWRmZmFmZWI2OTM3YQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vTWFsYWJhcmJhL2VsaXNw LWJ1Zy1odW50ZXIKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2UgYnVnLWh1bnRlcgogOmVuc3VyZSB0CiA6Y29uZmlnCiAgKQojK0VORF9TUkMKKiogY2Fs ZncKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNzUzYTg2Y2UtZGQyZS00ZjgwLThlNDkt MmFiYTIzNTE4MTIxCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9raXdhbmFtaS9lbWFjcy1j YWxmdwojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGNh bGZ3CiA6ZW5zdXJlIHQKIDpjb25maWcKIChyZXF1aXJlICdjYWxmdykKKHJlcXVpcmUgJ2NhbGZ3 LW9yZykKCihkZWZ1biBteS1vcGVuLWNhbGVuZGFyICgpCiAgKGludGVyYWN0aXZlKQogIChjZnc6 b3Blbi1jYWxlbmRhci1idWZmZXIKICAgOmNvbnRlbnRzLXNvdXJjZXMKICAgKGxpc3QKICAgIChj Znc6b3JnLWNyZWF0ZS1zb3VyY2UgImJsdWUiKSAgOyBvcmdtb2RlIHNvdXJjZQogICAgKGNmdzpo b3dtLWNyZWF0ZS1zb3VyY2UgIm1hZ2VudGEiKSAgOyBob3dtIHNvdXJjZQogICAgKGNmdzpjYWwt Y3JlYXRlLXNvdXJjZSAiT3JhbmdlIikgOyBkaWFyeSBzb3VyY2UKICAgKSkpIAogKQojK0VORF9T UkMgCioqIGNoYXItbWVudQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA5ZDZiZjVmNS00 OWNiLTQwZTUtYjE5ZC0yNDE3ZGE3ZmUwYjcKICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgY2hhci1tZW51CiA6ZW5zdXJlIHQKIDpjb25m aWcKIAooc2V0cSBjaGFyLW1lbnUgJygi4oCUIiAi4oCY4oCZIiAi4oCc4oCdIiAi4oCmIiAiwqvC uyIgIuKAkyIgIuOAkOOAkSIgIuKXgOKWtiIgIuKYmiDimJsiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoIlR5cG9ncmFwaHkiICLigKIiICLCqSIgIuKAoCIgIuKAoSIgIsKwIiAiwrciICLC pyIgIuKEliIgIuKYhSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIk1hdGgiICAgICAg ICLiiYgiICLiiaEiICLiiaAiICLiiJ4iICLDlyIgIsKxIiAi4oiTIiAiw7ciICLiiJoiKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgKCJBcnJvd3MiICAgICAi4oaQIiAi4oaSIiAi4oaRIiAi 4oaTIiAi4oeQIiAi4oeSIiAi4oeRIiAi4oeTIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgiR3JlZWsiICAgICAgIs6xIiAizrIiICJZIiAizrQiICLOtSIgIs62IiAizrciICLOuCIgIs65 IiAizroiICLOuyIgIs68IiAizr0iICLOviIgIs6/IiAiz4AiICLPgSIgIs+DIiAiz4QiICLPhSIg Is+GIiAiz4ciICLPiCIgIs+JIikgCikpCiApCiMrRU5EX1NSQyAKCioqIGNvbG9yLXRoZW1lLWFw cHJveGltYXRlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDYyODVkMDkxLTRkZjgtNDdj YS04MzQxLWRkMGYwNjBmMTI5YgogICA6RU5EOgogSWYgaXQgZG9lc24ndCB3b3JrIHRyeSB0byBw dXQgdGhlIGxpbmUgbG93ZXIgaW4gdGhlIC5lbWFjcyBmaWxlIChpdCBoYXBwZW5lZCB0byBtZSku IElmIGV2ZXJ5dGhpbmcgc3RpbGwgbG9vayBsaWtlIHNoaXQgY2hlY2sgdGhhdCB5b3UgaGF2ZSB0 aGUgY29ycmVjdCBYVEVSTSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXQgCiROb3RlLSBpcyBkaWZm ZXJlbnQgaW5zaWRlIHNjcmVlbiBvciB0bXV4JAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCih1c2UtcGFja2FnZSBjb2xvci10aGVtZS1hcHByb3hpbWF0ZQogOmVuc3VyZSB0 CiA6Y29uZmlnCihjb2xvci10aGVtZS1hcHByb3hpbWF0ZS1vbikKICkKIytFTkRfU1JDIAoKKiog Y29tcGFueS1zdGF0aXN0aWNzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDE5NGU0YWJi LWZjNTgtNDhhZS05OGQwLTdkYTMyZjk3NTY4MgogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBjb21wYW55LXN0YXRpc3RpY3MKIDplbnN1 cmUgdAogOmNvbmZpZwogKQojK0VORF9TUkMgCgoKKiogY29tcGFueQogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICAzY2RkNWI3MS0zNTM5LTRiOGMtYjBmOC1mYmU1YzdjODZlZGQKICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgICAodXNlLXBhY2th Z2UgY29tcGFueQogIDs7ICAgIDplbnN1cmUgdAogIDs7ICAgIDpjb25maWcKICA7OyA7OyBjb21w YW55bW9kZQogIDs7ICAgKHJlcXVpcmUgJ2NvbXBhbnkpCgogIDs7IDsgQ29tcGFueS1tb2RlIGJh Y2tlbmRzCiAgOzsgKGV2YWwtYWZ0ZXItbG9hZCAiY29tcGFueSIKICA7OyAgICcocHJvZ24KICA7 OyAgICAgIChhZGQtdG8tbGlzdCAnY29tcGFueS1iYWNrZW5kcyAnY29tcGFueS1kYWJicmV2KQog IDs7ICAgICAgKGFkZC10by1saXN0ICdjb21wYW55LWJhY2tlbmRzICdjb21wYW55LWlzcGVsbCkK ICA7OyAgICAgIChhZGQtdG8tbGlzdCAnY29tcGFueS1iYWNrZW5kcyAnY29tcGFueS1hYmJyZXYp CiAgOzsgICAgICAoYWRkLXRvLWxpc3QgJ2NvbXBhbnktYmFja2VuZHMgJ2NvbXBhbnktZmlsZXMp CgogIDs7IDs7IEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2NvbXBhbnktbW9kZS9jb21wYW55LW1v ZGUvaXNzdWVzLzM0OAogIDs7ICAgICAgKHJlcXVpcmUgJ2NvbXBhbnktc3RhdGlzdGljcykKICA7 OyAgICAgIChjb21wYW55LXN0YXRpc3RpY3MtbW9kZSkKCiAgOzsgOzsgeWFzbmlwcGV0IGJhY2tl bmQgc2hhZG93cyBvdGhlciBjb21wbGV0aW9ucywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21w YW55LW1vZGUvY29tcGFueS1tb2RlL2Jsb2IvbWFzdGVyL2NvbXBhbnkteWFzbmlwcGV0LmVsIGZv ciBzb2x1dGlvbnMKICA7OyA7O2JldHRlciB0byBsZWF2ZSBkaXNhYmxlZCBhbmQgdXNlIHRoZSBp ZG8gbW9kZSBmb3IgeWFzbmlwcGV0cwogIDs7IDs7ICAgICAoYWRkLXRvLWxpc3QgJ2NvbXBhbnkt YmFja2VuZHMgJ2NvbXBhbnkteWFzbmlwcGV0KQogIDs7IDs7IHVzaW5nIHRoZSBkZWxldGUgY29t bWFuZCBkaXNhYmxlcyBzcGVjaWZpYyBtb2RlcyAKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNr ZW5kcyAoZGVsZXRlICdjb21wYW55LWNhcGYgY29tcGFueS1iYWNrZW5kcykpCiAgOzsgICAgIChz ZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFueS1yb3BlbWFjcyBjb21wYW55LWJh Y2tlbmRzKSkKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNrZW5kcyAoZGVsZXRlICdjb21wYW55 LWNsYW5nIGNvbXBhbnktYmFja2VuZHMpKQogIDs7ICAgICAoc2V0cSBjb21wYW55LWJhY2tlbmRz IChkZWxldGUgJ2NvbXBhbnktY21ha2UgY29tcGFueS1iYWNrZW5kcykpCiAgOzsgICAgIChzZXRx IGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFueS1jc3MgY29tcGFueS1iYWNrZW5kcykp CiAgOzsgICAgIChzZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFueS1lY2xpbSBj b21wYW55LWJhY2tlbmRzKSkKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNrZW5kcyAoZGVsZXRl ICdjb21wYW55LWVsaXNwIGNvbXBhbnktYmFja2VuZHMpKQogIDs7ICAgICAoc2V0cSBjb21wYW55 LWJhY2tlbmRzIChkZWxldGUgJ2NvbXBhbnktZXRhZ3MgY29tcGFueS1iYWNrZW5kcykpCiAgOzsg ICAgIChzZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFueS1ndGFncyBjb21wYW55 LWJhY2tlbmRzKSkKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNrZW5kcyAoZGVsZXRlICdjb21w YW55LWtleXdvcmRzIGNvbXBhbnktYmFja2VuZHMpKQogIDs7ICAgICAoc2V0cSBjb21wYW55LWJh Y2tlbmRzIChkZWxldGUgJ2NvbXBhbnktbnhtbCBjb21wYW55LWJhY2tlbmRzKSkKICA7OyAgICAg KHNldHEgY29tcGFueS1iYWNrZW5kcyAoZGVsZXRlICdjb21wYW55LW9kZG11c2UgY29tcGFueS1i YWNrZW5kcykpCiAgOzsgICAgIChzZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFu eS1zZW1hbnRpYyBjb21wYW55LWJhY2tlbmRzKSkKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNr ZW5kcyAoZGVsZXRlICdjb21wYW55LXRlbXBsYXRlIGNvbXBhbnktYmFja2VuZHMpKQogIDs7ICAg ICAoc2V0cSBjb21wYW55LWJhY2tlbmRzIChkZWxldGUgJ2NvbXBhbnktdGVtcG8gY29tcGFueS1i YWNrZW5kcykpCiAgOzsgICAgIChzZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFu eS10ZXN0cyBjb21wYW55LWJhY2tlbmRzKSkKICA7OyAgICAgKHNldHEgY29tcGFueS1iYWNrZW5k cyAoZGVsZXRlICdjb21wYW55LXhjb2RlIGNvbXBhbnktYmFja2VuZHMpKQogIDs7ICAgICAoc2V0 cSBjb21wYW55LWJhY2tlbmRzIChkZWxldGUgJ2NvbXBhbnktdGVtcG8gY29tcGFueS1iYWNrZW5k cykpCiAgOzsgICAgIChzZXRxIGNvbXBhbnktYmFja2VuZHMgKGRlbGV0ZSAnY29tcGFueS15YXNu aXBwZXQgY29tcGFueS1iYWNrZW5kcykpCiAgOzsgOzsgY2FwZiBpcyBmb3IgYWxsIG1vZGVzIGFu ZCBhbGwgbGFuZ3VnZXMgc28gaXRzIGJldHRlciB0byB0dXJuIGl0IG9mZiB0byBub3QgcG9sbHV0 ZSBjb21wbGV0aW9ucy4KICA7OyA7OyAgICAgKGFkZC10by1saXN0ICdjb21wYW55LWJhY2tlbmRz ICdjb21wYW55LWNhcGYpCiAgOzsgICAgICApKQoKICA7OyA7O21ha2UgaXQgZ2xvYmFsCiAgOzsg KGFkZC1ob29rICdhZnRlci1pbml0LWhvb2sgJ2dsb2JhbC1jb21wYW55LW1vZGUpCgoKICA7OyA7 OyBjb21wYW55IGRlbGF5IHVudGlsIHN1Z2dlc3Rpb25zIGFyZSBzaG93bgogIDs7IChzZXRxIGNv bXBhbnktaWRsZS1kZWxheSAwLjIpCiAgOzsgOzsgd2hhdHMgdGhlIG1pbmltdW0gdG8gc3RhcnQg Y29tcGxldGlvbiAKICA7OyAoc2V0cSBjb21wYW55LW1pbmltdW0tcHJlZml4LWxlbmd0aCAyKQog IDs7IChzZXRxIGNvbXBhbnktZGFiYnJldi1taW5pbXVtLWxlbmd0aCAyKQogIDs7IDs7IHdlaWdo dCBieSBmcmVxdWVuY3kKICA7OyAoc2V0cSBjb21wYW55LXRyYW5zZm9ybWVycyAnKGNvbXBhbnkt c29ydC1ieS1vY2N1cnJlbmNlKSkKICA7OyA7O2RhYmJyZXYgb3B0aW9ucyAKICA7OyAoc2V0cSBj b21wYW55LWRhYmJyZXYtZG93bmNhc2UgbmlsKQogIDs7IChzZXRxIGNvbXBhbnktZGFiYnJldi1p Z25vcmUtY2FzZSBuaWwpCiAgOzsgKHNldHEgY29tcGFueS1kYWJicmV2LW90aGVyLWJ1ZmZlcnMg dCkKICA7OyAgIDs7IHNob3cgbnVtYmVycyBpbiBwb3B1cD8KICA7OyAoc2V0cSBjb21wYW55LXNo b3ctbnVtYmVycyB0KQogIDs7IChzZXRxIGNvbXBhbnktcmVxdWlyZS1tYXRjaCBuaWwpCiAgOzsg OzsgY29tcGFueSBkYWJicmV2IGNvbmZpZwogIDs7IDs7IHNlYXJjaCBhbGwgYnVmZmVycyAKICA7 OyAoc2V0cSBjb21wYW55LWRhYmJyZXYtb3RoZXItYnVmZmVycyB0KQoKCiAgOzsgOzsgRG9uJ3Qg ZW5hYmxlIGNvbXBhbnktbW9kZSBpbiBiZWxvdyBtYWpvciBtb2RlcywgT1BUSU9OQUwKICA7OyAo c2V0cSBjb21wYW55LWdsb2JhbC1tb2RlcyAnKG5vdCBlc2hlbGwtbW9kZSBjb21pbnQtbW9kZSBl cmMtbW9kZSByY2lyYy1tb2RlKSkKCgoKICA7OyAoZGVmdW4gb3JnLW1vZGUtaG9vay1zZXR1cCAo KQogIDs7ICAgOzsgbWFrZSBgY29tcGFueS1iYWNrZW5kcycgbG9jYWwgaXMgY3JpdGNhbAogIDs7 ICAgOzsgb3IgZWxzZSwgeW91IHdpbGwgaGF2ZSBjb21wbGV0aW9uIGluIGV2ZXJ5IG1ham9yIG1v ZGUsIHRoYXQncyB2ZXJ5IGFubm95aW5nIQogIDs7ICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2Nv bXBhbnktYmFja2VuZHMpCgogIDs7ICAgOzsgT1BUSU9OQUwsIGlmIGBjb21wYW55LWlzcGVsbC1k aWN0aW9uYXJ5JyBpcyBuaWwsIGBpc3BlbGwtY29tcGxldGUtd29yZC1kaWN0JyBpcyB1c2VkCiAg OzsgICA7OyAgYnV0IEkgcHJlZmVyIGhhcmQgY29kZSB0aGUgZGljdGlvbmFyeSBwYXRoLiBUaGF0 J3MgbW9yZSBwb3J0YWJsZS4KICA7OyAgIChzZXRxIGNvbXBhbnktaXNwZWxsLWRpY3Rpb25hcnkg KGZpbGUtdHJ1ZW5hbWUgIn4vLmVtYWNzLmQvYWJicnYvZW5nbGlzaC13b3Jkcy50eHQiKSkpCgog IDs7IChhZGQtaG9vayAnb3JnLW1vZGUtaG9vayAnb3JnLW1vZGUtaG9vay1zZXR1cCkKCgogIDs7 IDs7O2tleWJpbmRzCiAgOzsgKGdsb2JhbC1zZXQta2V5IChrYmQgIk0tLiIpICdjb21wYW55LWNv bXBsZXRlKQogIDs7IChnbG9iYWwtc2V0LWtleSAoa2JkICJNLS8iKSAnY29tcGFueS1kYWJicmV2 KQoKICA7OyAgICApCiMrRU5EX1NSQyAKCioqIGNvbXBhbnktZW1vamkKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgMjQ4ZmI5MDUtMmQ4MS00YzA1LTkyN2ItMGE3OGNiZDA2MzJhCiAgIDpF TkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9kdW5uL2NvbXBhbnktZW1vamkKCm1ha2Ugc3VyZSB0byBp bnN0YWxsIHR0Zi1hbmNpZW50LWZvbnRzIHRvIGdldCB0aGUgZm9udHMgdG8gc2hvdyB1cAoKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgY29tcGFueS1l bW9qaQogOmVuc3VyZSB0CiA6Y29uZmlnCihyZXF1aXJlICdjb21wYW55LWVtb2ppKQooYWRkLXRv LWxpc3QgJ2NvbXBhbnktYmFja2VuZHMgJ2NvbXBhbnktZW1vamkpCgooZGVmdW4gLS1zZXQtZW1v amktZm9udCAoZnJhbWUpCiAgIkFkanVzdCB0aGUgZm9udCBzZXR0aW5ncyBvZiBGUkFNRSBzbyBF bWFjcyBjYW4gZGlzcGxheSBlbW9qaSBwcm9wZXJseS4iCiAgKGlmIChlcSBzeXN0ZW0tdHlwZSAn ZGFyd2luKQogICAgICA7OyBGb3IgTlMvQ29jb2EKICAgICAgKHNldC1mb250c2V0LWZvbnQgdCAn c3ltYm9sIChmb250LXNwZWMgOmZhbWlseSAiQXBwbGUgQ29sb3IgRW1vamkiKSBmcmFtZSAncHJl cGVuZCkKICAgIDs7IEZvciBMaW51eAogICAgKHNldC1mb250c2V0LWZvbnQgdCAnc3ltYm9sIChm b250LXNwZWMgOmZhbWlseSAiU3ltYm9sYSIpIGZyYW1lICdwcmVwZW5kKSkpCgo7OyBGb3Igd2hl biBFbWFjcyBpcyBzdGFydGVkIGluIEdVSSBtb2RlOgooLS1zZXQtZW1vamktZm9udCBuaWwpCgo7 OyBIb29rIGZvciB3aGVuIGEgZnJhbWUgaXMgY3JlYXRlZCB3aXRoIGVtYWNzY2xpZW50Cjs7IHNl ZSBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VtYWNzL21hbnVhbC9odG1sX25vZGUvZWxp c3AvQ3JlYXRpbmctRnJhbWVzLmh0bWwKKGFkZC1ob29rICdhZnRlci1tYWtlLWZyYW1lLWZ1bmN0 aW9ucyAnLS1zZXQtZW1vamktZm9udCkKICkKIytFTkRfU1JDIApZb3UgY2FuIGFkZCBzaG9ydGNv ZGUgYWxpYXNlcyBieSBtb2RpZnlpbmcgY29tcGFueS1lbW9qaS1hbGlhc2VzLiBSdW4gTS14IGN1 c3RvbWl6ZS12YXJpYWJsZSBbUkVUXSBjb21wYW55LWVtb2ppLWFsaWFzZXMgdG8gYnJpbmcgdXAg Y29tcGFueS1lbW9qaeKAmXMgY3VzdG9taXphdGlvbiBwYW5lLCB0aGVuIGFkZCBvciByZW1vdmUg YWxpYXNlcyB0byB5b3VyIHRhc3RlLgoqKiBjb21wYW55LW9yZy1oZWFkaW5ncwogICA6UFJPUEVS VElFUzoKICAgOklEOiAgICAgICA3Mjg0OGIyZi05NTZlLTRkZjgtODI0NC0zMmFkNDVkYWJkNWIK ICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgKGFkZC10 by1saXN0ICdsb2FkLXBhdGggIi9ob21lL3plbHRhay8uZW1hY3MuZy9jb21wYW55LW9yZy1oZWFk aW5ncyIpCiAgOzsgKHNldHEKICA7OyAgOzsgYWxpZ24gYWxsIGFubm90YXRpb25zIHRvIHRoZSBy aWdodCB0b29sdGlwIGJvcmRlcgogIDs7ICBjb21wYW55LXRvb2x0aXAtYWxpZ24tYW5ub3RhdGlv bnMgdAogIDs7ICBjb21wYW55LW9yZy1oZWFkaW5ncy9zZWFyY2gtZGlyZWN0b3J5ICJ+L25vdGVz IgogIDs7ICBjb21wYW55LW9yZy1oZWFkaW5ncy9jYXNlLXNlbnNpdGl2ZSBuaWwpCgogIDs7IDs7 IChhZGQtaG9vayAnb3JnLW1vZGUtaG9vawogIDs7IDs7ICAgICAgICAgICAobGFtYmRhICgpCiAg OzsgOzsgICAgICAgICAgICAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tcGFueS1iYWNr ZW5kcykKICA7OyA7OyAgICAgICAgICAgICAgICAgICcoKGNvbXBhbnktb3JnLWhlYWRpbmdzCiAg OzsgOzsgICAgICAgICAgICAgICAgICAgICBjb21wYW55LWFiYnJldgogIDs7IDs7ICAgICAgICAg ICAgICAgICAgICAgY29tcGFueS1maWxlcwogIDs7IDs7ICAgICAgICAgICAgICAgICAgICAgKSkp KSkKIytFTkRfU1JDCgoqKiBjcnV4CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGU1OWJj NjA2LWI4MjQtNDk3Yi04ODUyLWViMjhjYThjZjBjMAogICA6RU5EOgpodHRwczovL2dpdGh1Yi5j b20vYmJhdHNvdi9jcnV4CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVz ZS1wYWNrYWdlIGNydXgKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5EX1NSQyAKCgoqKiBg ZGlyZWQgcGx1Z2luc2AKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNTA3ZjM0MmItZTM4 ZC00YmY5LThjODktMWQ3MDM1MzMyNjMxCiAgIDpFTkQ6CioqKiBUT0RPIGRpcmVkLWV4cGxvcmVy Cmh0dHBzOi8vZ2l0aHViLmNvbS9qaWRhaWtvYm8tc2hpYmF0YS9kaXJlZC1leHBsb3Jlci9ibG9i L21hc3Rlci9kaXJlZC1leHBsb3Jlci5lbAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKICA7OyAodXNlLXBhY2thZ2UgZGlyZWQtZXhwbG9yZXIKICA7OyA6ZW5zdXJlIHQKICA7 OyAgOmNvbmZpZwogIDs7IChyZXF1aXJlICdkaXJlZC1leHBsb3JlcikKICA7OyAoYWRkLWhvb2sg J2RpcmVkLW1vZGUtaG9vawogIDs7ICAgICAgICAgICAobGFtYmRhICgpCiAgOzsgICAgICAgICAg ICAgKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgIjoiIChsYW1iZGEgKCkgKGludGVyYWN0aXZl KSAoZGlyZWQtZXhwbG9yZXItbW9kZSB0KSkpCiAgOzsgICAgICAgICAgICAgKGRpcmVkLWV4cGxv cmVyLW1vZGUgdCkpKSAKICA7OyAgKQojK0VORF9TUkMgCgogCioqKiBkaXJlZCBoYWNrcyAKICAg IDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBiMzgwODVlNy0wY2U3LTQ1YzctYmI3OC0xYmFk MGE0YzBkNGEKICAgIDpFTkQ6CioqKiogZGlyZWQtYXZmcwogICAgIDpQUk9QRVJUSUVTOgogICAg IDpJRDogICAgICAgMDRjMGY0MzktYTJjOS00YmVjLThlOWEtNzI0ZjdhY2ZjOGFkCiAgICAgOkVO RDoKICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9GdWNvMS9kaXJlZC1oYWNrcyNkaXJlZC1hdmZzCgog VGhpcyBleHRlbnNpb24gdGhlcmVmb3JlIGRlcGVuZHMgb24gdGhlIHByZXNlbmNlIG9mIGF2ZnNk IG9uIHlvdXIgc3lzdGVtCiBvbiBhcmNoIHRvIGdldCBpdCB3b3JraW5nIGlzc3VlIHRoaXMgKGF0 IHN0YXJ0dXAgaW4geGluaXRyYyBvciBvdGhlciBzdGFydHVwIHNjcmlwdHMpCgogZ3JlcCAtcSAi XmF2ZnNkICRIT01FLy5hdmZzICIgL3Byb2MvbW91bnRzIHx8IGF2ZnNkIH4vLmF2ZnMgLW8gYXV0 b19jYWNoZSAgICAgCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAodXNl LXBhY2thZ2UgZGlyZWQtYXZmcwogIDplbnN1cmUgdAogIDpjb25maWcKICApCiAjK0VORF9TUkMg CioqKiogZGlyZWQtZmlsdGVyCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBjY2M3 MzVjMC1lMmQ2LTQzYmMtOTYzNS03MjI3ZmNmYTE5M2MKICAgICA6RU5EOgogaHR0cHM6Ly9naXRo dWIuY29tL0Z1Y28xL2RpcmVkLWhhY2tzCgogU2F2ZWQgZmlsdGVycwoKIGNhbGwgfmRpcmVkLWZp bHRlci1zYXZlLWZpbHRlcnN+IFlvdSB3aWxsIGJlIHByb21wdGVkIGZvciBhIG5hbWUgdW5kZXIg d2hpY2ggdGhpcyBzdGFjayB3aWxsIGJlIHNhdmVkLgogaXQgd2lsbCBzYXZlIHRoZSBuZXcgdmFs dWUgaW50byB5b3VyIGN1c3RvbWl6ZSBmaWxlLgoKIFlvdSBjYW4gZGVsZXRlIHNhdmVkIGZpbHRl cnMgd2l0aCB+ZGlyZWQtZmlsdGVyLWRlbGV0ZS1zYXZlZC1maWx0ZXJzfgoKIFRvIHVzZSBhIHNh dmVkIGZpbHRlciwgeW91IGNhbiB1c2UgZWl0aGVyIH5kaXJlZC1maWx0ZXItYWRkLXNhdmVkLWZp bHRlcnN+IG9yIH5kaXJlZC1maWx0ZXItbG9hZC1zYXZlZC1maWx0ZXJzICB+CgogVGhlIGZpcnN0 IHB1c2hlcyB0aGUgc2F2ZWQgZmlsdGVyIG9uIHRvcCBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBz dGFjaywgdGhlIHNlY29uZCBjbGVhcnMgY3VycmVudCBmaWx0ZXIgc3RhY2sgYmVmb3JlIGxvYWRp bmcgdGhlIHNhdmVkIGZpbHRlciBjb25maWd1cmF0aW9uLgoKICMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIGRpcmVkLWZpbHRlcgogIDplbnN1cmUgdAog IDpjb25maWcKICApCiAjK0VORF9TUkMgCioqKiogZGlyZWQtcmFpbmJvdyAoZGVmaW5lIGNvbG9y cyBieSBleHRlbnNpb25zKQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNzI0NTBi NWYtZTYxMS00NmY3LWEwOTQtMzg0NDNiZDZmOWJkCiAgICAgOkVORDoKaHR0cHM6Ly9naXRodWIu Y29tL0Z1Y28xL2RpcmVkLWhhY2tzI2RpcmVkLXJhaW5ib3cKCiAjK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKICh1c2UtcGFja2FnZSBkaXJlZC1yYWluYm93CiAgOmVuc3VyZSB0 CiAgOmNvbmZpZwogIChyZXF1aXJlICdkaXJlZC1yYWluYm93KQoKIChkZWZjb25zdCBkaXJlZC1h dWRpby1maWxlcy1leHRlbnNpb25zCiAgICcoIm1wMyIgIk1QMyIgIm9nZyIgIk9HRyIgImZsYWMi ICJGTEFDIiAid2F2IiAiV0FWIikKICAgIkRpcmVkIEF1ZGlvIGZpbGVzIGV4dGVuc2lvbnMiKQog KGRpcmVkLXJhaW5ib3ctZGVmaW5lIGF1ZGlvICIjMzI5RUU4IiBkaXJlZC1hdWRpby1maWxlcy1l eHRlbnNpb25zKQoKCiAoZGVmY29uc3QgZGlyZWQtZG9jcy1maWxlcy1leHRlbnNpb25zCiAgICco ImRvY3giICJkb2MiICJvZGYiICJvZHQiICJ4bHMiICJ4bHN4IiAicHB0IiAicHB0eCIgIm9kcyIg Im9kdCIpCiAgICJEaXJlZCBEb2NzIGZpbGVzIGV4dGVuc2lvbnMiKQogKGRpcmVkLXJhaW5ib3ct ZGVmaW5lIGRvY3MgIiM0MkQxNEEiIGRpcmVkLWRvY3MtZmlsZXMtZXh0ZW5zaW9ucykKCiAoZGVm Y29uc3QgZGlyZWQtdmlkZW8tZmlsZXMtZXh0ZW5zaW9ucwogICAgICcoInZvYiIgIlZPQiIgIm1r diIgIk1LViIgIm1wZSIgIm1wZyIgIk1QRyIgIm1wNCIgIk1QNCIgInRzIiAiVFMiICJtMnRzIgog ICAgICAgIk0yVFMiICJhdmkiICJBVkkiICJtb3YiICJNT1YiICJ3bXYiICJhc2YiICJtMnYiICJt NHYiICJtcGVnIiAiTVBFRyIgInRwIikKICAgICAiRGlyZWQgVmlkZW8gZmlsZXMgZXh0ZW5zaW9u cyIpCiAoZGlyZWQtcmFpbmJvdy1kZWZpbmUgdmlkZW8gIiMwMDZFRkYiIGRpcmVkLXZpZGVvLWZp bGVzLWV4dGVuc2lvbnMpCgogKGRlZmNvbnN0IGRpcmVkLWltYWdlLWZpbGVzLWV4dGVuc2lvbnMK ICAgICAnKCJqcGVnIiAianBnIiAiSlBHIiAiSlBFRyIgInBuZyIgIlBORyIgImJtcCIgInRpZiIg InRpZmYiICJ4Ym0iICJzdmciICkKICAgICAiRGlyZWQgaW1hZ2UgZmlsZXMgZXh0ZW5zaW9ucyIp CiAoZGlyZWQtcmFpbmJvdy1kZWZpbmUgaW1hZ2UgIiNFMDA5Q0YiIGRpcmVkLWltYWdlLWZpbGVz LWV4dGVuc2lvbnMpCgoKIChkZWZjb25zdCBkaXJlZC1wZGYtZmlsZXMtZXh0ZW5zaW9ucwogICAn KCJwZGYiICJQREYiKQogICAiRGlyZWQgcGRmIGZpbGVzIGV4dGVuc2lvbnMiKQogKGRpcmVkLXJh aW5ib3ctZGVmaW5lIHBkZiAiI0ZGMDAwMCIgZGlyZWQtcGRmLWZpbGVzLWV4dGVuc2lvbnMpCgoK IChkZWZjb25zdCBkaXJlZC1vcmctZmlsZXMtZXh0ZW5zaW9ucwogICAnKCJvcmciICJPUkciKQog ICAiRGlyZWQgb3JnIGZpbGVzIGV4dGVuc2lvbnMiKQogKGRpcmVkLXJhaW5ib3ctZGVmaW5lIG9y ZyAiI0ZGMDBBMiIgZGlyZWQtb3JnLWZpbGVzLWV4dGVuc2lvbnMpCgoKIChkZWZjb25zdCBkaXJl ZC1jb21wcmVzc2VkLWZpbGVzLWV4dGVuc2lvbnMKICAgJygiemlwIiAiWklQIiAgInRhci5ieiIg InRhci5neiIgIjd6aXAiICI3WklQIiAidGFyIiAiVEFSIiAicmFyIiAiUkFSIikKICAgIkRpcmVk IGNvbXByZXNzZWQgZmlsZXMgZXh0ZW5zaW9ucyIpCiAoZGlyZWQtcmFpbmJvdy1kZWZpbmUgY29t cHJlc3NlZCAiI0I1NkEwMCIgZGlyZWQtY29tcHJlc3NlZC1maWxlcy1leHRlbnNpb25zKQoKCiAg KQogIytFTkRfU1JDIAoKKioqKiBkaXJlZC1uYXJyb3cKICAgICA6UFJPUEVSVElFUzoKICAgICA6 SUQ6ICAgICAgIGY5MzU2MmQwLTM4MDQtNDUyZC1hNTFlLWYwZTk4MTMwYmI5MwogICAgIDpFTkQ6 CiBodHRwczovL2dpdGh1Yi5jb20vRnVjbzEvZGlyZWQtaGFja3MKICMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIGRpcmVkLW5hcnJvdwogIDplbnN1cmUg dAogIDpjb25maWcKOzsoc2V0cSBkaXJlZC1uYXJyb3ctZXhpdC1hY3Rpb24gJ2ZpbmQtZmlsZSkK KHNldHEgZGlyZWQtbmFycm93LWV4aXQtYWN0aW9uICdkaXJlZC1uYXJyb3ctZmluZC1maWxlKQog ICkKICMrRU5EX1NSQwoqKioqIGRpcmVkLW9wZW4KICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6 ICAgICAgIDExN2IwNzBkLWVlMWQtNDY1OC1iMDI3LWM1NjVlNjYwNmE0NgogICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoKCiAgOzsgKHVzZS1wYWNrYWdlIGRp cmVkLW9wZW4KICA7OyAgOmVuc3VyZSB0CiAgOzsgIDpjb25maWcKICA7OyAgKHNldHEgZGlyZWQt b3Blbi1leHRlbnNpb25zCiAgOzsgICAgICAgJygoInBkZiIgLiAib2t1bGFyIikKICA7OyAgICAg ICAgICgibWt2IiAuICJ2bGMiKQogIDs7ICAgICAgICAgKCJtcDQiIC4gInZsYyIpCiAgOzsgICAg ICAgICAoImF2aSIgLiAidmxjIikKICA7OyAgICAgICAgICgiaHRtbCIgLiAiZmlyZWZveCIpCiAg OzsgICAgICAgICAoIm1wMyIgLiAidmxjIikKICA7OyAgICAgICAgICgiZG9jIiAuICJsaWJyZW9m ZmljZSIpCiAgOzsgICAgICAgICAoImRvY3giIC4gImxpYnJlb2ZmaWNlIikKICA7OyAgICAgICAg ICgib2R0IiAuICJsaWJyZW9mZmljZSIpCiAgOzsgICAgICAgICAoIm9kZiIgLiAibGlicmVvZmZp Y2UiKQogIDs7ICAgICAgICAgKCJ4bHMiIC4gImxpYnJlb2ZmaWNlIikKICA7OyAgICAgICAgICgi eGxzeCIgLiAibGlicmVvZmZpY2UiKQogIDs7ICAgICAgICAgKCJwcHQiIC4gImxpYnJlb2ZmaWNl IikKICA7OyAgICAgICAgICgicHB0eCIgLiAibGlicmVvZmZpY2UiKQogIDs7ICkpCiAgOzsgICkK IytFTkRfU1JDCioqKiogZGlyZWQtc3VidHJlZQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDog ICAgICAgYmM5Njk3OWItMWY0OC00MjMwLTk1YjktZjdiOTI0MDA4NTJmCiAgICAgOkVORDoKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgZGlyZWQtc3Vi dHJlZQogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytFTkRfU1JDCioqKiogZGlyZWQtcmFuZ2Vy CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAxMjk5NTEyYy0xZGU3LTQzNjktODU0 YS0wZDVjNDU5Yjc1YTYKICAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCih1c2UtcGFja2FnZSBkaXJlZC1yYW5nZXIKIDplbnN1cmUgdAogOmNvbmZpZwogCiAp CiMrRU5EX1NSQyAKCgoqKiogZGlyZWQteAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAg IDliZDE3MGE4LTJkNWMtNGU2Mi1hM2Q0LTA1ZTFhNWFmNzViMgogICAgOkVORDoKCmh0dHA6Ly93 d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy9tYW51YWwvaHRtbF9ub2RlL2RpcmVkLXgvU2hlbGwt Q29tbWFuZC1HdWVzc2luZy5odG1sCgokTm90ZS1ubyBuZWVkIHRvIGluc3RhbGwgaXRzIGEgaW50 ZXJuYWwgZGlyZWQgcGFja2FnZSQgCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQoocmVxdWlyZSAnZGlyZWQteCkKCihhZGQtaG9vayAnZGlyZWQtbG9hZC1ob29rCiAgICAgICAg ICAgICAgKGZ1bmN0aW9uIChsYW1iZGEgKCkgKGxvYWQgImRpcmVkLXgiKSkpKQoKKHNldHEgZGly ZWQtZ3Vlc3Mtc2hlbGwtYWxpc3QtdXNlcgogICAgICAnKCgiXFwuY2htJCIgInhjaG0iKQogICAg ICAgICgiXFwucmFyJCIgInVucmFyIHgiKQogICAgICAgICgiXFwucGRmJCIgInphdGh1cmEiKQog ICAgICAgICgiXFwubWt2JCIgIm1wdiIpCiAgICAgICAgKCJcXC5tcDQkIiAibXB2IikKICAgICAg ICAoIlxcLm9nbSQiICJtcHYiKQogICAgICAgICgiXFwuYXZpJCIgIm1wdiIpCiAgICAgICAgKCJc XC5wbmckIiAiZmVoIikKICAgICAgICAoIlxcLmpwZyQiICJmZWgiKQogICAgICAgICgiXFwuSlBH JCIgImZlaCIpCiAgICAgICAgKCJcXC5kb2MkIiAibGlicmVvZmZpY2UiKQogICAgICAgICgiXFwu ZG9jeCQiICJsaWJyZW9mZmljZSIpCiAgICAgICAgKCJcXC54bHMkIiAibGlicmVvZmZpY2UiKQog ICAgICAgICgiXFwueGxzeCQiICJsaWJyZW9mZmljZSIpCiAgICAgICAgKCJcXC5wcHQkIiAibGli cmVvZmZpY2UiKQogICAgICAgICgiXFwucHB0eCQiICJsaWJyZW9mZmljZSIpCgopKQojK0VORF9T UkMgCgoqKiogc29ydGluZyAKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3NTNmMzBi My0yNDFiLTQxZjYtYTg5Mi1jNDVjNjU5ZjkzMDkKICAgIDpFTkQ6CioqKiogZGlyZWQtcXVpY2st c29ydAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgODIwYTYzYTktYzgyYS00YjZi LTllMTgtNWI0ZTU5Mjg1YjNhCiAgICAgOkVORDoKIGh0dHBzOi8vZ2l0bGFiLmNvbS94dWhkZXYv ZGlyZWQtcXVpY2stc29ydCNkaXJlZC1xdWljay1zb3J0CgoKICMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIGRpcmVkLXF1aWNrLXNvcnQgCiAgOmVuc3Vy ZSB0CiAgOmNvbmZpZwogKHJlcXVpcmUgJ2RpcmVkLXF1aWNrLXNvcnQpCiAoZGlyZWQtcXVpY2st c29ydC1zZXR1cCkKICApCiAjK0VORF9TUkMgCgoKKioqKiBkaXJlZCBzb3J0CiAgICAgOlBST1BF UlRJRVM6CiAgICAgOklEOiAgICAgICBjODA3NTE3MS1lOGNmLTQ2NDYtYmM2Zi0yMDQzNzllODc2 MDgKICAgICA6RU5EOgogaHR0cHM6Ly93d3cuZW1hY3N3aWtpLm9yZy9lbWFjcy9kaXJlZC1zb3J0 LmVsCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAgOzsgKHVzZS1wYWNr YWdlIGRpcmVkLXNvcnQKICAgOzsgIDplbnN1cmUgdAogICA7OyAgOmNvbmZpZwogICA7OyAgICkK ICMrRU5EX1NSQwoqKioqIGRpcmVkLXNvcnQtbWVudQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJ RDogICAgICAgNzQ3ODI4NjctZGVkZC00NmY5LTlhMmEtMTEyZjA1OWFkZDExCiAgICAgOkVORDoK IGh0dHBzOi8vd3d3LmVtYWNzd2lraS5vcmcvZW1hY3MvRGlyZWRTb3J0TWVudQogIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgIDs7ICh1c2UtcGFja2FnZSBkaXJlZC1zb3J0 LW1lbnUKICAgOzsgIDplbnN1cmUgdAogICA7OyAgOmNvbmZpZwogCiAgIDs7ICApCiAjK0VORF9T UkMgCiBhbmQgdGhlIHBsdXMgYWRkb246CiBodHRwczovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNz L2RpcmVkLXNvcnQtbWVudSsuZWwKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogICA7OyAodXNlLXBhY2thZ2UgZGlyZWQtc29ydC1tZW51KwogICA7OyAgOmVuc3VyZSB0CiAg IDs7ICA6Y29uZmlnCiAKICAgOzsgICkKICMrRU5EX1NSQyAKKioqIGRpcmVkKwogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIDFkYzNiYjI5LWY5NjgtNDliNy1hNTBhLWYyODI3ODQyODM0 MAogICAgOkVORDoKaHR0cHM6Ly93d3cuZW1hY3N3aWtpLm9yZy9lbWFjcy9EaXJlZFBsdXMKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKHVzZS1wYWNrYWdlIGRpcmVkKwog ICA6ZW5zdXJlIHQKICAgOmNvbmZpZwogIDs7OyBkb24ndCBjcmVhdGUgYSBidWZmZXIgZm9yIGV2 ZXJ5IGRpciBJIHZpc2l0ICh1c2UgMSB0byBub3QgY3JlYXRlIGFuZCAtMSB0byBjcmVhcmUpCiAg KHRvZ2dsZS1kaXJlZHAtZmluZC1maWxlLXJldXNlLWRpciAtMSkKICAgICkKIytFTkRfU1JDIAoq KiogZGlyZWQtZWZhcCAocmVuYW1lIGZpbGUgYXQgcG9pbnQpCiAgICA6UFJPUEVSVElFUzoKICAg IDpJRDogICAgICAgNzM3OTM5NjEtN2YzZi00ZGU5LThjYjAtNzU2OTQwNzk1MGQ0CiAgICA6RU5E OgpodHRwczovL2dpdGh1Yi5jb20vanVhbi1sZW9uL2RpcmVkLWVmYXAKClNlZSBhbHNvIHZhcmlh YmxlIGRpcmVkLWVmYXAtaW5pdGlhbC1maWxlbmFtZS1zZWxlY3Rpb24sIGlmIHlvdSB3YW50IHRv IGNvbnRyb2wgd2hhdCBwYXJ0IG9mIHRoZSBmaWxlbmFtZSB3aWxsIGJlIGluaXRpYWxseSBzZWxl Y3RlZC4KClR5cGUgTS14IGN1c3RvbWl6ZS1ncm91cCBSRVQgZGlyZWQtZWZhcCBpZiB5b3Ugd2Fu dCBtYWtlIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IuCgojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGRpcmVkLWVmYXAKIDplbnN1cmUgdAog OmNvbmZpZwo7Ozsgc2V0IHRoaXMgdG8gbmlsIHNvIGl0IGRvZXNuJ3QgZGVsZXRlIGJhY2t3YXJk L2ZvcndhcmQgZnJvbSBwb2ludAooc2V0cSBkaXJlZC1lZmFwLWluaXRpYWwtZmlsZW5hbWUtc2Vs ZWN0aW9uIG5pbCkgCgogKQojK0VORF9TUkMgCgoqKiogZGlyZWQgdG10eHQtYXN5bmMtdGFza3Mg CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgODUwZmFlYmUtYjBkZS00MzI4LThmMDct MjEwNDIwMzhlNGI4CiAgICA6RU5EOgpodHRwczovL3RydW9uZ3R4Lm1lL3RtdHh0LWFzeW5jLXRh c2tzLmh0bWwKaHR0cHM6Ly90cnVvbmd0eC5tZS90bXR4dC1kaXJlZC1hc3luYy5odG1sCgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdsb2FkLXBhdGgg Ii9ob21lL3plbHRhay8uZW1hY3MuZy90bXR4dC1hc3luYy10YXNrcyIpCihhZGQtdG8tbGlzdCAn bG9hZC1wYXRoICIvaG9tZS96ZWx0YWsvLmVtYWNzLmcvdG10eHQtZGlyZWQtYXN5bmMiKQoocmVx dWlyZSAndG10eHQtYXN5bmMtdGFza3MpCihyZXF1aXJlICd0bXR4dC1kaXJlZC1hc3luYykKCihz ZXRxLWRlZmF1bHQgdGF0L3dpbmRvdy1jbG9zZS1kZWxheSAiMiIpCihzZXRxLWRlZmF1bHQgdGF0 L3dpbmRvdy1oZWlnaHQgMTUpCiMrRU5EX1NSQwoqKiogZGlyZWQtZmRjbG9uZQogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIGQ2MGI2OGUwLTk4ZjgtNGRhNy1iMDZhLTNlYWY5ZjkwNGVk ZAogICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2tudS9kaXJlZC1mZGNsb25lLmVsCiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgZGlyZWQtZmRjbG9u ZQogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytFTkRfU1JDIAoKZ29vZCBwYWNrYWdlIGZvciB6 aXAgYW5kIHVuemlwIGZ1bmN0aW9ucwoqKiogaGVsbS1kaXJlZC1yZWNlbnQtZGlycwogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDNhN2Q1NWE1LWJkYjEtNDE3NS04MGVhLWUzZTk0ODk2 ZDNmMQogICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2FraXN1dGUzL2hlbG0tZGlyZWQtcmVj ZW50LWRpcnMKQG1ha2VzIGRpcmVkIHN1cGVyIHNsb3dACiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQogIDs7ICh1c2UtcGFja2FnZSBoZWxtLWRpcmVkLXJlY2VudC1kaXJzCiAg OzsgIDplbnN1cmUgdAogIDs7ICA6Y29uZmlnCiAKICA7OyAgKQojK0VORF9TUkMgCioqKiBpbWFn ZS1kaXJlZCsKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICAzODQ1NDZkOC1iNDY1LTRh NjItOTVmMi05OWMzMjJlMTc2ZGUKICAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9taGF5YXNo aTExMjAvRW1hY3MtaW1hZ2UtZGlyZWR4CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgaW1hZ2UtZGlyZWQrCiA6ZW5zdXJlIHQKIDpjb25maWcKKGV2YWwt YWZ0ZXItbG9hZCAnaW1hZ2UtZGlyZWQrICcoaW1hZ2UtZGlyZWR4LWFzeW5jLW1vZGUgMSkpCihl dmFsLWFmdGVyLWxvYWQgJ2ltYWdlLWRpcmVkKyAnKGltYWdlLWRpcmVkeC1hZGp1c3QtbW9kZSAx KSkKICkKIytFTkRfU1JDCioqKiBUT0RPIGRpcmVkLWF0b29sCiAgICA6UFJPUEVSVElFUzoKICAg IDpJRDogICAgICAgNmI4OGQwNGEtMzBkZi00YzY4LThmZDUtOGY5NDUxOTI3YjhiCiAgICA6RU5E OgpodHRwczovL2dpdGh1Yi5jb20vSEtleS9kaXJlZC1hdG9vbAoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBkaXJlZC1hdG9vbAogOmVuc3VyZSB0CiA6 Y29uZmlnCiAoZGlyZWQtYXRvb2wtc2V0dXApCiApCiMrRU5EX1NSQwoqKiogVE9ETyBtYWtlLWl0 LXNvCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZWQ2M2QzZDQtMDFkOS00ZjEwLWJj NTQtYmFjYzkyN2FmYjJhCiAgICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vYWJvLWFiby9tYWtl LWl0LXNvCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ug IG1ha2UtaXQtc28gCiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ21ha2UtaXQtc28pCihz ZXRxIG1pcy1yZWNpcGVzLWRpcmVjdG9yeSAiL2hvbWUvemVsdGFrLy5lbWFjcy5kL21pcyIpCiht aXMtY29uZmlnLWRlZmF1bHQpCiApCiMrRU5EX1NSQwoqKiogcGVlcCBkaXJlZAogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIGIxOWEwMTEyLWRhYTgtNGFkYy1hOTMzLWNhNDViYjZlYWE2 ZQogICAgOkVORDoKIGh0dHBzOi8vZ2l0aHViLmNvbS9hc29rL3BlZXAtZGlyZWQKICMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKIDs7cHJldmlldyBmaWxlcyBpbiBkaXJlZAog KHVzZS1wYWNrYWdlIHBlZXAtZGlyZWQKICAgOmVuc3VyZSB0CiAgIDpkZWZlciB0IDsgZG9uJ3Qg YWNjZXNzIGBkaXJlZC1tb2RlLW1hcCcgdW50aWwgYHBlZXAtZGlyZWQnIGlzIGxvYWRlZAogICA6 YmluZCAoOm1hcCBkaXJlZC1tb2RlLW1hcAoJICAgICAgICgiUCIgLiBwZWVwLWRpcmVkKSkKICAg OmNvbmZpZyAKKHNldHEgcGVlcC1kaXJlZC1pZ25vcmVkLWV4dGVuc2lvbnMgJygibWt2IiAiaXNv IiAibXA0IikpCikKICMrRU5EX1NSQwoqKiogVE9ETyBSdW5uZXIKICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICA0MGNjM2ViNS1lYWFkLTRjZDktYmJmMy1hMDcyYzU1MzIwMTYKICAgIDpF TkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS90aGFtZXIvcnVubmVyCgpyZXNvbHZlIHBvcHBpbmcgb2Yg YnVmZmVyIHdoZW4gbGF1bmNoaW5nIAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBydW5uZXIgCiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ3J1 bm5lcikKKHNldHEgIHJ1bm5lci1zaG93LWxhYmVsICAgICAgICBuaWwpCihzZXRxICBydW5uZXIt c2hlbGwtZnVuY3Rpb24gICAncnVubmVyLXNoZWxsLWZ1bmN0aW9uLWVzaGVsbCkKKHNldHEgcnVu bmVyLXJ1bi1pbi1iYWNrZ3JvdW5kIHQpCiApCiMrRU5EX1NSQwoqKiogVE9ETyBhbGwtdGhlLWlj b25zLWRpcmVkCgpodHRwczovL2dpdGh1Yi5jb20vanRibTM3L2FsbC10aGUtaWNvbnMtZGlyZWQK CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIDs7ICh1c2UtcGFja2FnZSBh bGwtdGhlLWljb25zLWRpcmVkCiAgOzsgIDplbnN1cmUgdAogIDs7ICA6Y29uZmlnCiAgOzsgKGFk ZC1ob29rICdkaXJlZC1tb2RlLWhvb2sgJ2FsbC10aGUtaWNvbnMtZGlyZWQtbW9kZSkKIAogIDs7 ICApCiMrRU5EX1NSQyAKCgoKKiogRGVmdAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBj OTAyZmNjZS04MzFmLTQ5YzYtYmU3NS1hMDQ0MzI3NWJhOWUKICAgOkVORDoKaHR0cDovL2pibGV2 aW5zLm9yZy9wcm9qZWN0cy9kZWZ0LwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBkZWZ0CiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ2RlZnQp CihzZXRxIGRlZnQtZXh0ZW5zaW9uICJvcmciKQooc2V0cSBkZWZ0LXRleHQtbW9kZSAnb3JnLW1v ZGUpCihzZXRxIGRlZnQtZGlyZWN0b3J5ICJ+L29yZy9maWxlcy8iKQooc2V0cSBkZWZ0LXVzZS1m aWxlbmFtZS1hcy10aXRsZSB0KQooc2V0cSBkZWZ0LXJlY3Vyc2l2ZSB0KQo7O3N0cmlwIG9yZyBt b2RlIHN0dWZmCihzZXRxIGRlZnQtc3RyaXAtdGl0bGUtcmVnZXhwICIjXFwrVElUTEU6ICIpCjs7 aWdub3JlIHRoZXNlIGRpcnMKKHNldHEgZGVmdC1yZWN1cnNpdmUtaWdub3JlLWRpci1yZWdleHAK ICAgICAgICAgIChjb25jYXQgIlxcKD86IgogICAgICAgICAgICAgICAgICAiXFwuIgogICAgICAg ICAgICAgICAgICAiXFx8XFwuXFwuIgogICAgICAgICAgICAgICAgICAiI1xcbXlwYXBlcnMiCiAg ICAgICAgICAgICAgICAgICJcXHxjb2RlIgogICAgICAgICAgICAgICAgICAiXFx8YXV0byIKICAg ICAgICAgICAgICAgICAgIlxcfF9taW50ZWQuKiIKICAgICAgICAgICAgICAgICAgIlxcKSQiKSkK CiApCiMrRU5EX1NSQyAKCgoqKiBkcmFnIHN0dWZmCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAg ICAgIDQ0M2E3MGNmLTY3ZTMtNGMyNy1hNTQ2LWFjZTY5NTgxZDBmZAogICA6RU5EOgpodHRwczov L2dpdGh1Yi5jb20vcmVqZWVwL2RyYWctc3R1ZmYuZWwKCmFsbG93cyB0byBkcmFnIHRleHQgYXJv dW5kIHZpYSBrZXlib2FyZCAKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoo dXNlLXBhY2thZ2UgZHJhZy1zdHVmZgogOmVuc3VyZSB0CiA6Y29uZmlnCiAgKQojK0VORF9TUkMK KiogZHVwbGljYXRlLXRoaW5nCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDJmNDFhMGFk LWQxNmYtNGRmYy1iYzJmLWFiOTAxNDE0ODAyMwogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20v b25nYWVzaGkvZHVwbGljYXRlLXRoaW5nCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgIGR1cGxpY2F0ZS10aGluZyAKIDplbnN1cmUgdAogOmNvbmZpZwog KQojK0VORF9TUkMgCgoqKiBlYmliCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDcwMGI5 NTMyLTgwY2UtNGQzOC05ODZmLWFhOWFhMTE4YjczZQogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBlYmliCiA6ZW5zdXJlIHQKIDpjb25m aWcKKHNldHEgZWJpYi1wcmVsb2FkLWJpYi1maWxlcyAnKCIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVz L1VuaS9wYXBlcnMvemVsdGFrLjIwMTUuYmliIikpIAoKKHNldHEgZWJpYi1jb21tb24tb3B0aW9u YWwtZmllbGRzCiAgICAgICcodHJhbnNsYXRvciBrZXl3b3JkcyBvcmlnbGFuZ3VhZ2UgdXJsIGZp bGUgbG9jYXRpb24KICAgICAgICBwYXJ0aW5mbyBzdWJ0aXRsZSBlZGl0aW9uIGFic3RyYWN0IG5v dGUgYW5ub3RhdG9yCiAgICAgICAgY3Jvc3NyZWYgdXJsZGF0ZSBhZGRyZXNzIHN1YnRpdGxlIGxh bmd1YWdlKSkKCihzZXRxIGViaWItZmlsZS1hc3NvY2lhdGlvbnMgJygoInBkZiIgLiAib2t1bGFy IikgKCJkanZ1IiAuICJva3VsYXIiKSkpCihzZXRxIGViaWItdW5pcXVpZnkta2V5cyB0KQooc2V0 cSBlYmliLWF1dG9nZW5lcmF0ZS1rZXlzIHQpCihzZXRxIGViaWItaW5kZXgtd2luZG93LXNpemUg MjApCihzZXRxIGViaWItcHJpbnQtbXVsdGlsaW5lIHQpCgo7aW5kZXggdmlldwooc2V0cSBlYmli LWluZGV4LWRpc3BsYXktZmllbGRzIChxdW90ZSAoeWVhciBhdXRob3IpKSkKKHNldHEgZWJpYi1z b3J0LW9yZGVyIChxdW90ZSAoKHllYXIpIChhdXRob3IpICkpKQoKICkKIytFTkRfU1JDCioqIGVs bWFjcm8KICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMmEyMGRjYzQtNjYxZS00NjI1LTkz MmEtMDY1YmI2MTY5MzdjCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9TaWxleC9lbG1hY3Jv CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAodXNlLXBhY2thZ2Ug ZWxtYWNybwogIDs7ICA6ZW5zdXJlIHQKICA7OyAgOmNvbmZpZwogIDs7ICAoZWxtYWNyby1tb2Rl KQogIDs7ICApCiMrRU5EX1NSQyAKCioqIGVhc3kta2lsbAogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICA5OWVlMjQ3NC1lODAzLTQ5MjQtYmEyYS1kZWY5YjIzODFiMjMKICAgOkVORDoKaHR0 cHM6Ly9naXRodWIuY29tL2xlb2xpdS9lYXN5LWtpbGwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgZWFzeS1raWxsCiAgIDplbnN1cmUgdAogICA6Y29u ZmlnCjs7IHRvIHJlcGxhY2UgRW1hY3MgbmF0aXZlIE0tdwooZ2xvYmFsLXNldC1rZXkgW3JlbWFw IGtpbGwtcmluZy1zYXZlXSAnZWFzeS1raWxsKQooZ2xvYmFsLXNldC1rZXkgKGtiZCAiTS0zIikg J2Vhc3ktbWFyaykKICAgKQojK0VORF9TUkMgCioqIGVkaXQtc2VydmVyIChmb3IgY2hyb21lIGlu dGVyYWN0aW9uKQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBiODllYTczYS0yMjY2LTRh YjAtODlkNC1jM2UzY2E5ZGE3NzAKICAgOkVORDoKaHR0cHM6Ly93d3cuZW1hY3N3aWtpLm9yZy9l bWFjcy9FZGl0X3dpdGhfRW1hY3MKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKKHJlcXVpcmUgJ2VkaXQtc2VydmVyKQooZWRpdC1zZXJ2ZXItc3RhcnQpCgo7R21haWwgaGFz IHN3aXRjaGVkIHRvIGEgbmV3IGNvbXBvc2Ugd2luZG93IHdoaWNoIHVuZm9ydHVuYXRlbHkgYnJl YWtzIGludGVyYWN0aW9uIHdpdGggZWRpdC1zZXJ2ZXIuIEhvd2V2ZXIgZm9ydHVuYXRlbHkgc29t ZW9uZSBoYXMgaGFja2VkIHRvZ2V0aGVyIGEgc29sdXRpb24gZm9yIHRoaXM6IGh0dHBzOi8vZ2l0 aHViLmNvbS9mcm9idGVjaC9lZGl0LXNlcnZlci1odG1saXplCihhdXRvbG9hZCAnZWRpdC1zZXJ2 ZXItbWF5YmUtZGVodG1saXplLWJ1ZmZlciAiZWRpdC1zZXJ2ZXItaHRtbGl6ZSIgImVkaXQtc2Vy dmVyLWh0bWxpemUiIHQpCihhdXRvbG9hZCAnZWRpdC1zZXJ2ZXItbWF5YmUtaHRtbGl6ZS1idWZm ZXIgICAiZWRpdC1zZXJ2ZXItaHRtbGl6ZSIgImVkaXQtc2VydmVyLWh0bWxpemUiIHQpCihhZGQt aG9vayAnZWRpdC1zZXJ2ZXItc3RhcnQtaG9vayAnZWRpdC1zZXJ2ZXItbWF5YmUtZGVodG1saXpl LWJ1ZmZlcikKKGFkZC1ob29rICdlZGl0LXNlcnZlci1kb25lLWhvb2sgICdlZGl0LXNlcnZlci1t YXliZS1odG1saXplLWJ1ZmZlcikKICMrRU5EX1NSQwoqKiBlbGZlZWQKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgZjgzOWNlNWYtMWQ4Ny00MmY1LTkyZTktZTQ2NjEzMjdlMzI0CiAgIDpF TkQ6CioqKiBiYXNlIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDEyMGUxMTVjLTNh MzEtNGQxZi1hMzVjLTFlOGQ4NzI5YWZlNAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBlbGZlZWQKIDplbnN1cmUgdAogOmNvbmZpZwoK Ozs7ZGVmYXVsdCBzZWFyY2ggCihzZXRxLWRlZmF1bHQgZWxmZWVkLXNlYXJjaC1maWx0ZXIgIkAy LXdlZWstYWdvICt1bnJlYWQgIikKCjs7Y2hhbmdlIGRhdGUgZm9ybWF5IAooc2V0cSBlbGZlZWQt c2VhcmNoLWRhdGUtZm9ybWF0ICcoIiVkICViICVIOiVNIiAxMiA6bGVmdCkpCgo7O3NldCBzb3J0 IG9yZGVyCihzZXRxIGVsZmVlZC1zb3J0LW9yZGVyICdhc2NlbmRpbmcpCgo7OzsgYWRkIGEgc3Rh ciB0YWcgaHR0cDovL21hdHQuaGFja2luZ2hpc3RvcnkuY2EvMjAxNS8xMS8yMi9lbGZlZWQvCgog KGV2YWwtYWZ0ZXItbG9hZCAnZWxmZWVkLXNlYXJjaCAKOzsgICcoZGVmaW5lLWtleSBlbGZlZWQt c2VhcmNoLW1vZGUtbWFwIChrYmQgIjx0YWI+IikgJ213cC9lbGZlZWQtc3RhcikpCiAgJyhkZWZp bmUta2V5IGVsZmVlZC1zZWFyY2gtbW9kZS1tYXAgKGtiZCAidCIpICdtd3AvZWxmZWVkLXN0YXIp KQoKCihkZWZ1biBtd3AvZWxmZWVkLXN0YXIgKCkKICAiYWRkIGEgc3RhciB0YWcgdG8gbWFya2Vk IgoKICAoaW50ZXJhY3RpdmUpCiAgKGVsZmVlZC1zZWFyY2gtdGFnLWFsbCAobGlzdCBzdGFycmVk KSkKICApCgooZGVmdW4gbXdwL2VsZmVlZC1zdGFyICgpCiAgIkFwcGx5IFRBRyB0byBhbGwgc2Vs ZWN0ZWQgZW50cmllcy4iCiAgKGludGVyYWN0aXZlICkKICAobGV0KiAoKGVudHJpZXMgKGVsZmVl ZC1zZWFyY2gtc2VsZWN0ZWQpKQogICAgICAgICAodGFnIChpbnRlcm4gInN0YXJyZWQiKSkpCgog ICAgKGNsLWxvb3AgZm9yIGVudHJ5IGluIGVudHJpZXMgZG8gKGVsZmVlZC10YWcgZW50cnkgdGFn KSkKICAgIChtYXBjICMnZWxmZWVkLXNlYXJjaC11cGRhdGUtZW50cnkgZW50cmllcykKICAgICh1 bmxlc3MgKHVzZS1yZWdpb24tcCkgKGZvcndhcmQtbGluZSkpKSkKCjs7OyBhZGQgdmlzdWFsIGN1 ZQooZGVmZmFjZSBlbGZlZWQtc2VhcmNoLXN0YXJyZWQtdGl0bGUtZmFjZQogJygodCA6Zm9yZWdy b3VuZCAiI2Y3NyIpKQogIk1hcmtzIGEgc3RhcnJlZCBFbGZlZWQgZW50cnkuIikKCihwdXNoICco c3RhcnJlZCBlbGZlZWQtc2VhcmNoLXN0YXJyZWQtdGl0bGUtZmFjZSkgCiAgICAgICBlbGZlZWQt c2VhcmNoLWZhY2UtYWxpc3QpCgoKOztBdm9pZGluZyB0YWdnaW5nIG9sZCBlbnRyaWVzIGFzIHVu cmVhZDoKCjs7IEVudHJpZXMgb2xkZXIgdGhhbiAyIHdlZWtzIGFyZSBtYXJrZWQgYXMgcmVhZAoo YWRkLWhvb2sgJ2VsZmVlZC1uZXctZW50cnktaG9vawogICAgICAgICAgKGVsZmVlZC1tYWtlLXRh Z2dlciA6YmVmb3JlICIyIHdlZWtzIGFnbyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OnJlbW92ZSAndW5yZWFkKSkKCjs7Zm9yICJRdWV1ZSB0aW1lb3V0IGV4Y2VlZGVkIiBlcnJvcnMK KHNldGYgdXJsLXF1ZXVlLXRpbWVvdXQgMzApCgooZGVmaW5lLWtleSBlbGZlZWQtc2VhcmNoLW1v ZGUtbWFwIChrYmQgImoiKSAnbmV4dC1saW5lKQooZGVmaW5lLWtleSBlbGZlZWQtc2hvdy1tb2Rl LW1hcCAgICAoa2JkICJqIikgJ2VsZmVlZC1zaG93LW5leHQpCihkZWZpbmUta2V5IGVsZmVlZC1z ZWFyY2gtbW9kZS1tYXAgKGtiZCAiayIpICdwcmV2aW91cy1saW5lKQooZGVmaW5lLWtleSBlbGZl ZWQtc2hvdy1tb2RlLW1hcCAgICAoa2JkICJrIikgJ2VsZmVlZC1zaG93LXByZXYpCgogKQojK0VO RF9TUkMgCgpuZXh0LWxpbmUKCkZhY2VzIGFuZCBDb2xvcnMKQWxsIG9mIHRoZSBmYWNlcyB1c2Vk IGluIHRoZSBkaXNwbGF5IGFyZSBkZWNsYXJlZCBmb3IgY3VzdG9taXphdGlvbiwgc28gdGhlc2Ug Y2FuIGJlIGNoYW5nZWQgdG8gd2hhdGV2ZXIgeW91IGxpa2UuCgplbGZlZWQtc2VhcmNoLWRhdGUt ZmFjZQplbGZlZWQtc2VhcmNoLXRpdGxlLWZhY2UKZWxmZWVkLXNlYXJjaC1mZWVkLWZhY2UKZWxm ZWVkLXNlYXJjaC10YWctZmFjZQoKCgoqKiogZmVlZHMgCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgMGNjZDhiOGMtYzhlZS00YTkzLThkY2UtNmM5ZjgxZTgzZjY0CiAgICA6RU5EOgog IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGVsZmVlZC1mZWVkcwog ICAnKAo7O2NvbWljcwooImh0dHA6Ly9waGRjb21pY3MuY29tL2dyYWRmZWVkLnBocCIgY29taWNz KQooImh0dHA6Ly90aGVvYXRtZWFsLmNvbS9mZWVkL3JzcyIgY29taWNzKQooImh0dHA6Ly94a2Nk LmNvbS9yc3MueG1sIiBjb21pY3MpCigiaHR0cDovL3Jlc2VhcmNoaW5wcm9ncmVzcy50dW1ibHIu Y29tL3JzcyIgY29taWNzKQo7O2Zvb2QgCiJodHRwOi8vZmVlZHMuZmVlZGJ1cm5lci5jb20vc2Vy aW91c2VhdHNmZWF0dXJlc3ZpZGVvcyIKImh0dHA6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS9iYXpl a2FsaW0iIAoiaHR0cDovL2ZlZWRzMi5mZWVkYnVybmVyLmNvbS90aGFpLWZvb2QtYmxvZy9tYWlu IiAKImh0dHA6Ly9mZWVkczIuZmVlZGJ1cm5lci5jb20vaHVtdXMxMDFyc3MiIAoiaHR0cDovL2Zl ZWRzLmZlZWRidXJuZXIuY29tL3B0aXRpbSIgCiJodHRwOi8vd2hhdC1lZnJhdC5ibG9nc3BvdC5j b20vZmVlZHMvcG9zdHMvZGVmYXVsdCIgCiJodHRwOi8vZmVlZHMuZmVlZGJ1cm5lci5jb20vbWF0 a29uYXRpb24vQlJVUSIgCgo7O1RlY2gKImh0dHA6Ly9saWZlaGFja2VyLmNvbS9pbmRleC54bWwi IAoiaHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL01ha2V1c2VvZiIgCiJodHRwOi8veGJtYy5v cmcvZmVlZC8iIAoiaHR0cDovL2dvb2dsZWNvZGUuYmxvZ3Nwb3QuY29tL2F0b20ueG1sIiAKImh0 dHA6Ly9mdWxsdGV4dHJzc2ZlZWQuY29tL3d3dy5lbmdhZGdldC5jb20vcnNzLnhtbCIKCjs7Z2Vl ayBzdHVmZiAKImh0dHA6Ly93d3cuZ2Vla29sb2dpZS5jb20vaW5kZXgueG1sIiAKOztwZXJzb25h bCBibG9ncwoiaHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL0FkdmVudHVyZXNJbk9wZW5Tb3Vy Y2U/Zm9ybWF0PXhtbCIKImh0dHA6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS95dXZhbCIKCjs7ZW1h Y3MKImh0dHA6Ly9vcmVtYWNzLmNvbS9hdG9tLnhtbCIgCiJodHRwOi8vZW1hY3Nob3Jyb3JzLmNv bS9mZWVkLmF0b20iIAoiaHR0cDovL2VtYWNzbmluamEuY29tL2ZlZWQuYXRvbSIgCiJodHRwOi8v ZXJpY2ptcml0ei5uYW1lL2ZlZWQvIiAKImh0dHA6Ly9tYXR0LmhhY2tpbmdoaXN0b3J5LmNhL2Zl ZWQvIiAKImh0dHA6Ly9rYXJsLXZvaXQuYXQvZmVlZHMvbGF6eWJsb3JnLWFsbC5hdG9tXzEuMC5s aW5rcy1vbmx5LnhtbCIgCiJodHRwOi8vZW1hY3Ntb3ZpZXMub3JnL2F0b20ueG1sIiAKImh0dHA6 Ly9lbmRsZXNzcGFyZW50aGVzZXMuY29tL2F0b20ueG1sIiAKImh0dHA6Ly9wbGFuZXQuZW1hY3Nl bi5vcmcvYXRvbS54bWwiIAoiaHR0cDovL3NhY2hhY2h1YS5jb20vYmxvZy9mZWVkLyIgCiJodHRw Oi8va2l0Y2hpbmdyb3VwLmNoZW1lLmNtdS5lZHUvYmxvZy9mZWVkIiAKImh0dHA6Ly93aGF0dGhl ZW1hY3NkLmNvbS9hdG9tLnhtbCIgCiJodHRwOi8vd3d3Lm1hc3RlcmluZ2VtYWNzLm9yZy9mZWVk LyIgCiJodHRwOi8vZW1hY3NyZWR1eC5jb20vYXRvbS54bWwiIAoiaHR0cDovL3d3dy5sdW5hcnlv cm4uY29tL2ZlZWQuYXRvbSIgCiJodHRwOi8vd3d3LmNsYXJrZG9ubGV5LmNvbS9hdG9tLnhtbCIK Cjs7bGludXgKImh0dHA6Ly90aGVsaW51eHJhaW4uY29tL2ZlZWQiIAoiaHR0cDovL3d3dy5hcmNo bGludXgub3JnL2ZlZWRzL25ld3MvIiAKImh0dHA6Ly93d3cuZnJlZXNvZnR3YXJlbWFnYXppbmUu Y29tL3Jzcy54bWwiIAoiaHR0cDovL3d3dy5rZGUub3JnL2RvdGtkZW9yZy5yZGYiIAoiaHR0cDov L3d3dy5saW51eGpvdXJuYWwuY29tL25vZGUvZmVlZCIgCiJodHRwOi8vd3d3Lmx1bmR1a2UuY29t Lz9mZWVkPXJzczIiIAoiaHR0cDovL2ttYW5kbGEud29yZHByZXNzLmNvbS9mZWVkLyIgCiJodHRw Oi8vd3d3LnBob3Jvbml4LmNvbS9yc3MucGhwIiAKImh0dHA6Ly9wbGFuZXQubGludXgub3JnLmls L2F0b20ueG1sIiAKImh0dHA6Ly9wbGFuZXRrZGUub3JnL3JzczIwLnhtbCIgCiJodHRwOi8vYmxv Zy5zYXJpbmUubmwvZmVlZC8iIAoiaHR0cDovL3Jzcy5zbGFzaGRvdC5vcmcvU2xhc2hkb3Qvc2xh c2hkb3RMaW51eCIgCiJodHRwOi8vd2hhdHN1cC5vcmcuaWwvYmFja2VuZC5waHAiIAoiaHR0cDov L2lndXJ1YmxvZy53b3JkcHJlc3MuY29tL2ZlZWQvIiAKCjs7bW9iaWxlCiJodHRwOi8vZmVlZHMu ZmVlZGJ1cm5lci5jb20veGRhLWRldmVsb3BlcnMvU2hzSCIgCjs7c3BvcnRzCiJodHRwOi8vZGVi dXp6ZXIuY29tL2ZlZWQvIiAKOzt1bmkgCiJodHRwOi8vcmZvcnB1YmxpY2hlYWx0aC5ibG9nc3Bv dC5jb20vZmVlZHMvcG9zdHMvZGVmYXVsdCIgCjs7bXVzaWMKImh0dHBzOi8vbXVzcHkuY29tL2Zl ZWQ/aWQ9ZjlxeXBxd3hjNjU4ZTZkYnp3azhuOW1xdGhzZ3Y0IiAKCikpCiAjK0VORF9TUkMKKioq IHN0YXIvdW5zdGFyIGl0ZW1zIApodHRwOi8vcHJhZ21hdGljZW1hY3MuY29tL2VtYWNzL3N0YXIt YW5kLXVuc3Rhci1hcnRpY2xlcy1pbi1lbGZlZWQvCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCjs7IGNvZGUgdG8gYWRkIGFuZCByZW1vdmUgYSBzdGFycmVkIHRhZyB0byBl bGZlZWQgYXJ0aWNsZQo7OyBiYXNlZCBvbiBodHRwOi8vbWF0dC5oYWNraW5naGlzdG9yeS5jYS8y MDE1LzExLzIyL2VsZmVlZC8KCjs7IGFkZCBhIHN0YXIKKGRlZnVuIGJqbS9lbGZlZWQtc3RhciAo KQogICJBcHBseSBzdGFycmVkIHRvIGFsbCBzZWxlY3RlZCBlbnRyaWVzLiIKICAoaW50ZXJhY3Rp dmUgKQogIChsZXQqICgoZW50cmllcyAoZWxmZWVkLXNlYXJjaC1zZWxlY3RlZCkpCiAgICAgICAg ICh0YWcgKGludGVybiAic3RhcnJlZCIpKSkKCiAgICAoY2wtbG9vcCBmb3IgZW50cnkgaW4gZW50 cmllcyBkbyAoZWxmZWVkLXRhZyBlbnRyeSB0YWcpKQogICAgKG1hcGMgIydlbGZlZWQtc2VhcmNo LXVwZGF0ZS1lbnRyeSBlbnRyaWVzKQogICAgKHVubGVzcyAodXNlLXJlZ2lvbi1wKSAoZm9yd2Fy ZC1saW5lKSkpKQoKOzsgcmVtb3ZlIGEgc3RhcnQKKGRlZnVuIGJqbS9lbGZlZWQtdW5zdGFyICgp CiAgIlJlbW92ZSBzdGFycmVkIHRhZyBmcm9tIGFsbCBzZWxlY3RlZCBlbnRyaWVzLiIKICAoaW50 ZXJhY3RpdmUgKQogIChsZXQqICgoZW50cmllcyAoZWxmZWVkLXNlYXJjaC1zZWxlY3RlZCkpCiAg ICAgICAgICh0YWcgKGludGVybiAic3RhcnJlZCIpKSkKCiAgICAoY2wtbG9vcCBmb3IgZW50cnkg aW4gZW50cmllcyBkbyAoZWxmZWVkLXVudGFnIGVudHJ5IHRhZykpCiAgICAobWFwYyAjJ2VsZmVl ZC1zZWFyY2gtdXBkYXRlLWVudHJ5IGVudHJpZXMpCiAgICAodW5sZXNzICh1c2UtcmVnaW9uLXAp IChmb3J3YXJkLWxpbmUpKSkpCgo7OyBmYWNlIGZvciBzdGFycmVkIGFydGljbGVzCihkZWZmYWNl IGVsZmVlZC1zZWFyY2gtc3RhcnJlZC10aXRsZS1mYWNlCiAgJygodCA6Zm9yZWdyb3VuZCAiI2Y3 NyIpKQogICJNYXJrcyBhIHN0YXJyZWQgRWxmZWVkIGVudHJ5LiIpCgoocHVzaCAnKHN0YXJyZWQg ZWxmZWVkLXNlYXJjaC1zdGFycmVkLXRpdGxlLWZhY2UpIGVsZmVlZC1zZWFyY2gtZmFjZS1hbGlz dCkKCgo7OyBhZGQga2V5YmluZGluZ3MKKGV2YWwtYWZ0ZXItbG9hZCAnZWxmZWVkLXNlYXJjaAog ICcoZGVmaW5lLWtleSBlbGZlZWQtc2VhcmNoLW1vZGUtbWFwIChrYmQgIioiKSAnYmptL2VsZmVl ZC1zdGFyKSkKKGV2YWwtYWZ0ZXItbG9hZCAnZWxmZWVkLXNlYXJjaAogICcoZGVmaW5lLWtleSBl bGZlZWQtc2VhcmNoLW1vZGUtbWFwIChrYmQgIjgiKSAnYmptL2VsZmVlZC11bnN0YXIpKQoKOztz aG9ydGN1dCB0byBqdW1wIHRvIHN0YXJyZWQgYm9va21hcmsKKGRlZnVuIGJqbS9lbGZlZWQtc2hv dy1zdGFycmVkICgpCiAgKGludGVyYWN0aXZlKQogIChib29rbWFyay1qdW1wICJlbGZlZWQtc3Rh cnJlZCIpKQooZGVmaW5lLWtleSBlbGZlZWQtc2VhcmNoLW1vZGUtbWFwIChrYmQgIlMiKSAnYmpt L2VsZmVlZC1zaG93LXN0YXJyZWQpCiMrRU5EX1NSQwoqKiogb3JnbW9kZSBpbnRlZ3JhdGlvbgog ICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGExNWQzMTAxLTBlZWQtNDZhZS04MTg3LTc3 YTdiMDI2ZWZhNAogICAgOkVORDoKd2hlbiBJIG9yZy1jYXB0dXJlIGluIGVsZmVlZC1zaG93LW1v ZGUgdXNpbmcgYSB0ZW1wbGF0ZSB0aGF0IGluY2x1ZGVzIGEgbGluaywgSSBnZXQgYSBuaWNlbHkg Zm9ybWF0dGVkIGxpbmsgdG8gdGhlIG9ubGluZSBsaW5rZWQgZW50cnkuIEkgdXNlIHRoaXMgdG8g Y2FwdHVyZSBzdHVmZiBJIHdhbnQgdG8gcmVhZCBsYXRlcgoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cAooZGVmdW4gZWxmZWVkLWVudHJ5LWFzLWh0bWwtbGluayAoKQogICJTdG9yZSBhbiBodHRwIGxp bmsgdG8gYW4gZWxmZWVkIGVudHJ5IgogICh3aGVuIChlcXVhbCBtYWpvci1tb2RlICdlbGZlZWQt c2hvdy1tb2RlKQogICAgKGxldCAoKGRlc2NyaXB0aW9uIChlbGZlZWQtZW50cnktdGl0bGUgZWxm ZWVkLXNob3ctZW50cnkpKQogICAgICAobGluayAoZWxmZWVkLWVudHJ5LWxpbmsgZWxmZWVkLXNo b3ctZW50cnkpKSkKICAgICAob3JnLXN0b3JlLWxpbmstcHJvcHMKICAgICAgOnR5cGUgImh0dHAi CiAgICAgIDpsaW5rIGxpbmsKICAgICAgOmRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSkpKQoKKGFk ZC1ob29rICdvcmctc3RvcmUtbGluay1mdW5jdGlvbnMgJ2VsZmVlZC1lbnRyeS1hcy1odG1sLWxp bmspCiMrRU5EX1NSQwoKKiogZWxmZWVkLWdvb2RpZXMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgY2NlNDYyZDAtN2NmMi00OTYzLWFjNWYtNDFmMTE3YjEwZjE5CiAgIDpFTkQ6Cmh0dHBz Oi8vZ2l0aHViLmNvbS9hbGdlcm5vbi9lbGZlZWQtZ29vZGllcwoKY3VzdG9taXNlIHNvbWUgYXNw ZWN0cyBvZiB0aGUgcGFja2FnZSB3aXRoIE0teCBjdXN0b21pemUtZ3JvdXAgZWxmZWVkLWdvb2Rp ZXMKdGhpcyBpcyBzYXZlZCBpbiBmaWxlOi9ob21lL3plbHRhay8uZW1hY3MuZC9jdXN0b20uZWwK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBlbGZlZWQt Z29vZGllcwogOmVuc3VyZSB0CiA6Y29uZmlnCihyZXF1aXJlICdlbGZlZWQtZ29vZGllcykKKGVs ZmVlZC1nb29kaWVzL3NldHVwKSAKICkKIytFTkRfU1JDIAoqKiBleWVicm93c2UKICAgOlBST1BF UlRJRVM6CiAgIDpJRDogICAgICAgNGQ4NjI2ZmUtYThjZi00MTQ1LTkzYWEtM2E5NWM3YTRiM2Rm CiAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAodXNl LXBhY2thZ2UgZXllYnJvd3NlCiAgOzsgIDplbnN1cmUgdAogIDs7ICA6Y29uZmlnCiAgOzsgKGV5 ZWJyb3dzZS1tb2RlIHQpIAogIDs7ICApCiMrRU5EX1NSQyAKCgoKKiogZW5naW5lLW1vZGUKICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYTMwY2M4NzgtYWNjZC00ZDcyLWJiMTAtZGUyOGE4 M2M2OWY3CiAgIDpFTkQ6CiAgIAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KHVzZS1wYWNrYWdlIGVuZ2luZS1tb2RlCiA6ZW5zdXJlIHQKIDpjb25maWcgCiApCiMrRU5EX1NS QwoqKiBlc3MgCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDMwZGRjNDRmLTlhZjgtNGY1 Zi1iM2YwLWZjMGY4YWVlYjI1ZAogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGVzcyAKIDplbnN1cmUgdAogOmNvbmZpZwogKQojK0VORF9T UkMgCgoqKiBFVklMCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDVmMDNjYzJhLTUxZWUt NDRmZS1iZWU0LTM4ZjdjYTNjZTIzOQogICA6RU5EOgoqKiogY29uZmlnIAojK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKCSh1c2UtcGFja2FnZSBldmlsCgk6ZW5zdXJlIHQKCTpj b25maWcKCShyZXF1aXJlICdldmlsKQoJKGV2aWwtbW9kZSB0KQoKICAgICAgOzs7O2tleXMKICAg IChkZWZpbmUta2V5IGV2aWwtbm9ybWFsLXN0YXRlLW1hcCAiXFwiICdoeWRyYS1sZWFkZXIvYm9k eSkKICAgIChkZWZpbmUta2V5IGV2aWwtbW90aW9uLXN0YXRlLW1hcCAgIlxcIiAnJ2h5ZHJhLWxl YWRlci9ib2R5KQoKICAgIDsoZGVmaW5lLWtleSBldmlsLW5vcm1hbC1zdGF0ZS1tYXAgKGtiZCAi U1BDIikgJ2h5ZHJhLWxlYWRlci1zcGFjZS9ib2R5KQogICAgKGRlZmluZS1rZXkgZXZpbC1ub3Jt YWwtc3RhdGUtbWFwIChrYmQgIlNQQyIpICcgYXZ5LWdvdG8tY2hhci10aW1lcikKICAKICAgIDs7 dW5kbwogICAgKHNldHEgZXZpbC13YW50LWZpbmUtdW5kbyB0KSAKCiAgICA7SSB3YW50IFkgdG8g eWFuayB0byB0aGUgZW5kIG9mIGxpbmUuCiAgICAoc2V0cSBldmlsLXdhbnQtWS15YW5rLXRvLWVv bCB0KQoKCiAgICAgIDs7O2V4Y2x1ZGUgZm9sbG93aW5nIG1vZGUgZnJvbSBldmlsIG1vZGUgCiAg ICAgIChhZGQtdG8tbGlzdCAnZXZpbC1lbWFjcy1zdGF0ZS1tb2RlcyAnZGlyZWQtbW9kZSkKICAg ICAgKGFkZC10by1saXN0ICdldmlsLWVtYWNzLXN0YXRlLW1vZGVzICdpbWFnZS1tb2RlKQoKICAg IDs7Zm9yIG9yZ21vZGUgY2FwdHVyZSB3aWRub3dzCiAgICAoYWRkLWhvb2sgJ29yZy1jYXB0dXJl LW1vZGUtaG9vayAnZXZpbC1pbnNlcnQtc3RhdGUpCiAgICAoYWRkLWhvb2sgJ3Bhc3MtbW9kZS1o b29rICdldmlsLWluc2VydC1zdGF0ZSkKCiAKCSkKIytFTkRfU1JDCgpnbyBiYWNrIHRvIG5vcm1h bCBtb2RlIGFmdGVyIDUwIHNlY29uZHMgaWRsZQojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVz dWx0cyBub25lCiAgKGRlZnVuIGV2aWwtbm9ybWFsaXplLWFsbC1idWZmZXJzICgpCiAgICAiRm9y Y2UgYSBkcm9wIHRvIG5vcm1hbCBzdGF0ZS4iCiAgICAodW5sZXNzIChlcSBldmlsLXN0YXRlICdu b3JtYWwpCiAgICAgIChkb2xpc3QgKGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQoJKHNldC1idWZmZXIg YnVmZmVyKQoJKHVubGVzcyAob3IgKG1pbmlidWZmZXJwKQogICAgICAgICAgICAgICAgICAgIChl cSBldmlsLXN0YXRlICdlbWFjcykpCiAgICAgICAgICAoZXZpbC1mb3JjZS1ub3JtYWwtc3RhdGUp KSkKICAgICAgKG1lc3NhZ2UgIkRyb3BwZWQgYmFjayB0byBub3JtYWwgc3RhdGUgaW4gYWxsIGJ1 ZmZlcnMiKSkpCgogIChkZWZ2YXIgZXZpbC1ub3JtYWwtdGltZXIKICAgIChydW4td2l0aC1pZGxl LXRpbWVyIDE1MCB0ICMnZXZpbC1ub3JtYWxpemUtYWxsLWJ1ZmZlcnMpCiAgICAiRHJvcCBiYWNr IHRvIG5vcm1hbCBzdGF0ZSBhZnRlciBpZGxlIGZvciAxNTAgc2Vjb25kcy4iKQojK0VORF9TUkMK KioqIERPQ1UKKioqKiB5YW5rIHdpdGhpbiBjaGFyYWN0ZXJzCiAgICAgOlBST1BFUlRJRVM6CiAg ICAgOklEOiAgICAgICAwNTBjNmFhMi1lODJjLTQ3OTYtOTBiMS02ZWIwODJjYzIzMGUKICAgICA6 RU5EOgpVc2Ugd2hhdGV2ZXIgbmF2aWdhdGlvbiBrZXkgeW91IHdhbnQgdG8gZ2V0IGluc2lkZSB0 aGUgcGFyZW50aGVzZXMsIHRoZW4geW91IGNhbiB1c2UgZWl0aGVyIHlpKCBvciB5aSkgdG8gY29w eSBldmVyeXRoaW5nIHdpdGhpbiB0aGUgbWF0Y2hpbmcgcGFyZW5zLiAKClRoaXMgYWxzbyB3b3Jr cyB3aXRoIHNxdWFyZSBicmFja2V0cyAoZS5nLiB5aV0pIGFuZCBjdXJseSBicmFjZXMuIAoKSW4g YWRkaXRpb24gdG8geSwgeW91IGNhbiBhbHNvIGRlbGV0ZSBvciBjaGFuZ2UgdGV4dCAoZS5nLiBj aSksIGRpXSkKCmV4YW1wbGUgZm9yIHF1b3RlczoKCiMrQkVHSU5fRVhBTVBMRQpjaSIKIytFTkRf RVhBTVBMRQoKKiogZXZpbC1vcmcKaHR0cHM6Ly9naXRodWIuY29tL2Vkd3Rqby9ldmlsLW9yZy1t b2RlCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIDs7ICh1c2UtcGFja2Fn ZSBldmlsLW9yZwogIDs7ICA6ZW5zdXJlIHQKICA7OyAgOmNvbmZpZwogIDs7ICAocmVxdWlyZSAn ZXZpbC1vcmcpCiAgOzsgICkKIytFTkRfU1JDIAoKCioqIEVWSUwgTkVSRCBDb21tZW50ZXIKICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYTMzOTMzYjctMDBjNS00MDRkLWJiNDUtNzlmYjU0 MTViM2Y1CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9yZWRndWFyZHRvby9ldmlsLW5lcmQt Y29tbWVudGVyCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFj a2FnZSBldmlsLW5lcmQtY29tbWVudGVyCjplbnN1cmUgdAo6Y29uZmlnCikKOyhldmlsbmMtZGVm YXVsdC1ob3RrZXlzKQo7KHNldHEgZXZpbG5jLWhvdGtleS1jb21tZW50LW9wZXJhdG9yICIsLCIp CiAjK0VORF9TUkMKCgoqKiBleHBhbmQgcmVnaW9uCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAg ICAgIGY2YWIyMTk3LWI0OTAtNGY0NC04YjJmLTM4YTFlODI4NzExYwogICA6RU5EOgpodHRwczov L2dpdGh1Yi5jb20vbWFnbmFycy9leHBhbmQtcmVnaW9uLmVsCgoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBleHBhbmQtcmVnaW9uCiA6ZW5zdXJlIHQK IDpjb25maWcKICkKIytFTkRfU1JDIAoqKiBmaW5kLWZpbGUtaW4tcHJvamVjdAogICA6UFJPUEVS VElFUzoKICAgOklEOiAgICAgICA3ZTRmYTBiZS01YTI0LTRmNzEtOTIyOC00MDIzYWMzZGY1ZGEK ICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL3RlY2hub21hbmN5L2ZpbmQtZmlsZS1pbi1wcm9q ZWN0CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGZp bmQtZmlsZS1pbi1wcm9qZWN0CiA6ZW5zdXJlIHQKIDpjb25maWcKCiApCiMrRU5EX1NSQyAKKiog Zmx4CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDBiYjhjZDU4LWRlN2UtNDg4YS1iMWYw LWM2ZGM3MTc4OTI3MAogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBmbHgKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5EX1NSQyAK KiogZm9udGF3ZXNvbWUKaHR0cHM6Ly9naXRodWIuY29tL3N5b2hleC9lbWFjcy1mb250YXdlc29t ZQojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGZvbnRh d2Vzb21lCiA6ZW5zdXJlIHQKIDpjb25maWcKIAogKQojK0VORF9TUkMgCgoKKiogRmlsbCBjb2x1 bSBtb2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDZkZWRkOTM0LTcwYmMtNDc3OS05 MTRlLTUzZDc5YTZkZGUyYQogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKKHVzZS1wYWNrYWdlIGZpbGwtY29sdW1uLWluZGljYXRvcgo6ZW5zdXJlIHQKOmNvbmZp ZwopCiMrRU5EX1NSQwpxcQoqKiBnaXQtYXV0by1jb21taXQtbW9kZQogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICAwYzI5N2Y5MC1mYzY5LTQ0OGYtOTRkMS04ZmNmZTc0MzlmMWQKICAgOkVO RDoKKioqIHVzZSBwYWNrYWdlIApodHRwczovL2dpdGh1Yi5jb20vcnl1c2xhc2gvZ2l0LWF1dG8t Y29tbWl0LW1vZGUKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFj a2FnZSBnaXQtYXV0by1jb21taXQtbW9kZQogOmVuc3VyZSB0CiA6Y29uZmlnCihzZXRxLWRlZmF1 bHQgZ2FjLWF1dG9tYXRpY2FsbHktcHVzaC1wIHQpCiApCiMrRU5EX1NSQwoqKiogRE9DVQoqKioq IEFzIGZpbGUtbG9jYWwgdmFyaWFibGUKClRoaXMgaXMgdGhlIHdheSBJIHVzZSBpdCBhbmQgSSB3 YW50ZWQgdG8gdXNlIGl0LiBBbnkgZmlsZSB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgYXV0 b21hdGljYWxseSBjb21taXR0ZWQgdXBvbiBzYXZpbmcgZ2V0cyB0aGlzIHByb3AtbGluZToKCiMr QkVHSU5fRVhBTVBMRQo7OyAtKi0gZXZhbDogKGdpdC1hdXRvLWNvbW1pdC1tb2RlIDEpIC0qLQoK IytFTkRfRVhBTVBMRQoqKioqIEFzIGEgZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxlCgpQdXQgdGhl IGZvbGxvd2luZyBpbiBhIC5kaXItbG9jYWxzLmVsIGZpbGUgaW4gYW55IGRpcmVjdG9yeSB3aGVy ZSB5b3Ugd2FudCB0byBlbmFibGUgZ2l0LWF1dG8tY29tbWl0LW1vZGUgZm9yIGFsbCBmaWxlczoK IytCRUdJTl9FWEFNUExFCigobmlsIC4gKChnaXQtYXV0by1jb21taXQtbW9kZSAuIHQpKSkpCiMr RU5EX0VYQU1QTEUKKioqKiBBcyBhIGhvb2sKCkkgZG91YnQgdGhpcyB3aWxsIGV2ZXIgcmVhbGx5 IGJlIHVzZWZ1bCwgYnV0IGl0IGlzIHBvc3NpYmxlOgojK0JFR0lOX0VYQU1QTEUKKGFkZC1ob29r ICdzb21lLWhvb2sgJ2dpdC1hdXRvLWNvbW1pdC1tb2RlKQoKIytFTkRfRVhBTVBMRQoqKioqIEF1 dG9tYXRpY2FsbHkgcHVzaAoKSWYgeW91IHdpc2ggdG8gcHVzaCB5b3VyIGNoYW5nZXMgZWFjaCB0 aW1lIHRoZSBmaWxlIGlzIHNhdmVkIHlvdSBzaG91bGQgc2V0IGdhYy1hdXRvbWF0aWNhbGx5LXB1 c2gtcCB0byB0LiBUaGlzIGlzIGEgYnVmZmVyIGxvY2FsIHZhcmlhYmxlLCBzbyB5b3Ugd2lsbCBo YXZlIHRvIHB1dCBpdCBpbiB5b3VyIGRpci1sb2NhbCBvciBmaWxlLWxvY2FsIHZhcmlhYmxlcy4g QWx0ZXJuYXRpdmVseSwgaWYgeW91J3JlIHN1cmUgeW91IGNhbiBhbHNvIHNldCB0aGUgZGVmYXVs dCB2YWx1ZSB0byB0LCBsaWtlIHNvOgoKIytCRUdJTl9FWEFNUExFCihzZXRxLWRlZmF1bHQgZ2Fj LWF1dG9tYXRpY2FsbHktcHVzaC1wIHQpCgojK0VORF9FWEFNUExFCgoqKiBHbnVzIHJlbGF0ZWQK ICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZjI5ZmIxMWEtMzhiYi00YjFhLWIwZDgtOGZh ZTU1YjA5NzYxCiAgIDpFTkQ6CioqKiBnbnVzLWRlc2t0b3Atbm90aWZ5CiAgICA6UFJPUEVSVElF UzoKICAgIDpJRDogICAgICAgZmNjOGFhNjUtZmY2NC00OWI4LWJjMTktNjA0OTlkZjE2Y2I1CiAg ICA6RU5EOgpodHRwOi8vd3d3LnRocmVnci5vcmcvfndhdmV4eC9zb2Z0d2FyZS9nbnVzLWRlc2t0 b3Atbm90aWZ5LmVsLwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsg KHVzZS1wYWNrYWdlIGdudXMtZGVza3RvcC1ub3RpZnkKICA7OyAgOmVuc3VyZSB0CiAgOzsgIDpj b25maWcKICA7OyAgKHJlcXVpcmUgJ2dudXMtZGVza3RvcC1ub3RpZnkpCiAgOzsgKGdudXMtZGVz a3RvcC1ub3RpZnktbW9kZSkKICA7OyAoZ251cy1kZW1vbi1hZGQtc2Nhbm1haWwpCgogIDs7ICAp CiMrRU5EX1NSQwoqKiBnaXQtdGltZW1hY2hpbmUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAg ICAgMTRiNTQ5NjItZjYxZi00MDMwLThlMzEtNzRhNTIyMzgwYzFjCiAgIDpFTkQ6CgojK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGdpdC10aW1lbWFjaGlu ZQogOmVuc3VyZSB0CiA6Y29uZmlnCgooZGVmdW4gei9naXQtdGltZW1hY2hpbmUtc2hvdy1zZWxl Y3RlZC1yZXZpc2lvbiAoKQogICJTaG93IGxhc3QgKGN1cnJlbnQpIHJldmlzaW9uIG9mIGZpbGUu IgogIChpbnRlcmFjdGl2ZSkKICAobGV0IChjb2xsZWN0aW9uKQogICAgKHNldHEgY29sbGVjdGlv bgogICAgICAgICAgKG1hcGNhciAobGFtYmRhIChyZXYpCiAgICAgICAgICAgICAgICAgICAgOzsg cmUtc2hhcGUgbGlzdCBmb3IgdGhlIGl2eS1yZWFkCiAgICAgICAgICAgICAgICAgICAgKGNvbnMg KGNvbmNhdCAoc3Vic3RyaW5nIChudGggMCByZXYpIDAgNykgInwiIChudGggNSByZXYpICJ8IiAo bnRoIDYgcmV2KSkgcmV2KSkKICAgICAgICAgICAgICAgICAgKGdpdC10aW1lbWFjaGluZS0tcmV2 aXNpb25zKSkpCiAgICAoaXZ5LXJlYWQgImNvbW1pdHM6IgogICAgICAgICAgICAgIGNvbGxlY3Rp b24KICAgICAgICAgICAgICA6YWN0aW9uIChsYW1iZGEgKHJldikKICAgICAgICAgICAgICAgICAg ICAgICAgKGdpdC10aW1lbWFjaGluZS1zaG93LXJldmlzaW9uIHJldikpKSkpCgooZGVmdW4gei9n aXQtdGltZW1hY2hpbmUgKCkKICAiT3BlbiBnaXQgc25hcHNob3Qgd2l0aCB0aGUgc2VsZWN0ZWQg dmVyc2lvbi4gIEJhc2VkIG9uIGl2eS1tb2RlLiIKICAoaW50ZXJhY3RpdmUpCiAgKHVubGVzcyAo ZmVhdHVyZXAgJ2dpdC10aW1lbWFjaGluZSkKICAgIChyZXF1aXJlICdnaXQtdGltZW1hY2hpbmUp KQogIChnaXQtdGltZW1hY2hpbmUtLXN0YXJ0ICMnbXktZ2l0LXRpbWVtYWNoaW5lLXNob3ctc2Vs ZWN0ZWQtcmV2aXNpb24pKQogCiApCiMrRU5EX1NSQyAKCgoKKiogZ3NjaG9sYXItYmlidGV4CiAg IDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGI4ZjhmZWI0LWFjZGEtNDQzNC04N2U5LTAxMGUw YjViOTE3NwogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vY3V0ZS1qdW1wZXIvZ3NjaG9sYXIt YmlidGV4CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdl IGdzY2hvbGFyLWJpYnRleAogOmVuc3VyZSB0CiA6Y29uZmlnCihzZXRxIGdzY2hvbGFyLWJpYnRl eC1kZWZhdWx0LXNvdXJjZSAiR29vZ2xlIFNjaG9sYXIiKQooc2V0cSBnc2Nob2xhci1iaWJ0ZXgt ZGF0YWJhc2UtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9VbmkvcGFwZXJzL2xpYnJhcnku MjAxNS5iaWIiKQoKICkKIytFTkRfU1JDIAoKCioqIGdvb2dsZSBjb250YWN0cwogICA6UFJPUEVS VElFUzoKICAgOklEOiAgICAgICBjMzIwMzJiMy02NmE2LTQ2NzktYjZjNS02NmQ5MWNhZDRlNzMK ICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2th Z2UgZ29vZ2xlLWNvbnRhY3RzCjplbnN1cmUgdAo6Y29uZmlnCikKIytFTkRfU1JDCioqIFRPRE8g Z29vYm9vawogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICAyMzVmMzJlYy0yZTRmLTRmNzYt OGNkMi03YzIxNzA1NDhhYmIKICAgOkVORDoKdGhpcyByZXF1aXJlcyB0aGF0IGdvb2Jvb2sgCmh0 dHBzOi8vZ2l0bGFiLmNvbS9ncm91cHMvZ29vYm9vawppcyBpbnN0YWxsZWQgYW5kIHRoYXQgeW91 IGhhdmUgYSBleGVjdXRhYmxlIHNjcmlwdCBpbiBQQVRIIG5hbWVkIGdvb3NlYXJjaDoKZmlsZTov aG9tZS96ZWx0YWsvYmluL2dvb3NlYXJjaAoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1 bHRzIG5vbmUKIDs7OyBoZWxtLWdvb2Jvb2suZWwKIDs7IENvcHlyaWdodCAyMDE2IFNoaXZhbSBL YWxyYQogOzsKIDs7IEF1dGhvcjogU2hpdmFtIEthbHJhIDxza2FscmFAZ214LmNhPgoKIDs7OyBD b2RlOgogKGRlZnVuIGdvb2Jvb2stc2VhcmNoIChzZWFyY2gtdGVybSkKICAgKG1lc3NhZ2Ugc2Vh cmNoLXRlcm0pCiAgIChwcm9jZXNzLWxpbmVzICJnb29zZWFyY2giIHNlYXJjaC10ZXJtKSkKCgog KGRlZnVuIGhlbG0tZ29vYm9vay1zZWFyY2ggKCkKICAgKG1hcGNhciAobGFtYmRhIChlbnRyeSkK ICAgICAgICAgICAgIChsZXQqICgodmFscyAoc3BsaXQtc3RyaW5nIGVudHJ5ICJcdCIpKQogICAg ICAgICAgICAgICAgICAgIChlbWFpbCAoY2FyIHZhbHMpKQogICAgICAgICAgICAgICAgICAgIChu YW1lIChjYXIgKGNkciB2YWxzKSkpCiAgICAgICAgICAgICAgICAgICAgKGtleSAoZm9ybWF0ICIl cyA8JXM+IiBuYW1lIGVtYWlsKSkpCiAgICAgICAgICAgICAgIGAoLGtleQogICAgICAgICAgICAg ICAgIChuYW1lIC4gLG5hbWUpCiAgICAgICAgICAgICAgICAgKGVtYWlsIC4gLGVtYWlsKQogICAg ICAgICAgICAgICAgICh2YWwgLiAsa2V5KSkpKSAoZ29vYm9vay1zZWFyY2ggaGVsbS1wYXR0ZXJu KSkpCgoKIChkZWZ1biBoZWxtLWdvb2Jvb2staW5zZXJ0LWtleSAoZW50cnkpCiAgICh3aXRoLWhl bG0tY3VycmVudC1idWZmZXIKICAgICAoaW5zZXJ0IChjZHIgKGFzc29jICd2YWwgZW50cnkpKSkp KQoKCiAoZGVmdW4gaGVsbS1nb29ib29rLWluc2VydC1uYW1lIChlbnRyeSkKICAgKHdpdGgtaGVs bS1jdXJyZW50LWJ1ZmZlcgogICAgIChpbnNlcnQgKGNkciAoYXNzb2MgJ25hbWUgZW50cnkpKSkp KQoKCiAoZGVmdW4gaGVsbS1nb29ib29rLWluc2VydC1lbWFpbCAoZW50cnkpCiAgICh3aXRoLWhl bG0tY3VycmVudC1idWZmZXIKICAgICAoaW5zZXJ0IChjZHIgKGFzc29jICdlbWFpbCBlbnRyeSkp KSkpCgoKIChkZWZ2YXIgaGVsbS1zb3VyY2UtZ29vYm9vawogICAnKChuYW1lIC4gIkdvb2Jvb2sg U2VhcmNoIikKICAgICAodm9sYXRpbGUpCiAgICAgKGRlbGF5ZWQpCiAgICAgKHJlcXVpcmVzLXBh dHRlcm4gLiAzKQogICAgIChjYW5kaWRhdGVzIC4gIGhlbG0tZ29vYm9vay1zZWFyY2gpCiAgICAg KGFjdGlvbiAuICgoIkluc2VydCBrZXkiIC4gaGVsbS1nb29ib29rLWluc2VydC1rZXkpCgkJKCJJ bnNlcnQgZW1haWwiIC4gaGVsbS1nb29ib29rLWluc2VydC1lbWFpbCkKCQkoIkluc2VydCBuYW1l IiAuIGhlbG0tZ29vYm9vay1pbnNlcnQtbmFtZSkpKSkpCgoKIChkZWZ1biBoZWxtLWdvb2Jvb2sg KCkKICAgKGludGVyYWN0aXZlKQogICAoaGVsbSA6c291cmNlcyAnKGhlbG0tc291cmNlLWdvb2Jv b2spCgkgOmJ1ZmZlciAiKmhlbG0tZ29vYm9vayoiKSkKICMrRU5EX1NSQwoKCgoqKiBnb3RvLWNo ZwogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBkMTdhODdlZC0yMjdkLTQ5MGItYjkwMy1j ODMwZWZlMzg5MzIKICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQoodXNlLXBhY2thZ2UgZ290by1jaGcKIDplbnN1cmUgdAogOmNvbmZpZwogKHJlcXVpcmUgJ2dv dG8tY2hnKQogOmJpbmQgKCgiQy0uIiAuIGdvdG8tbGFzdC1jaGFuZ2UpCiAgICAgICAgICgiQy0s IiAuIGdvdG8tbGFzdC1jaGFuZ2UtcmV2ZXJzZSkpCiApCiMrRU5EX1NSQyAKCgoqKiBnbWFpbDJi YmRiCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDllOTA5ZDQ2LTMxZDAtNDY0YS04OGNi LTQ3ZDAyNTE0ZTUzYQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vcmVkZ3VhcmR0b28vZ21h aWwyYmJkYgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2Fn ZSBnbWFpbDJiYmRiCiA6ZW5zdXJlIHQKIDpjb25maWcKCiApCiMrRU5EX1NSQyAKCioqIGdub3Ji CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGYwMTg1MWYyLTk3YzMtNGIwYS04YTQ0LWM3 YzAyNmQwMmQxYQogICA6RU5EOgoKaHR0cHM6Ly9naXRodWIuY29tL2dpcnplbC9nbm9yYgoKZXhh bXBsZXM6CgotIFdoYW5nIGF0dGFjaG1lbnRzIGZyb20gR251cyBtZXNzYWdlcyBvbnRvIE9yZyBo ZWFkaW5ncywgdXNpbmcgb3JnLWF0dGFjaC4KLSBBdXRvbWF0ZSB0aGUgYWJvdmUgYXMgcGFydCBv ZiB0aGUgb3JnIGNhcHR1cmUgcHJvY2VzcwotIEVtYWlsIGNvbnRlbnRzIG9mIG9yZyBzdWJ0cmVl IHVuZGVyIHBvaW50IChwcm9tcHQgZm9yIGV4cG9ydCByb3V0aW5lKQotIFNpbmdsZS1rZXlzdHJv a2UgT3JnIGxpbmtzIG9yIGVtYWlsIGNpdGF0aW9ucyBvZiBCQkRCIGNvbnRhY3RzCi0gSW5pdGlh dGUgc2VhcmNoIG9mIGVtYWlscyBmcm9tIGNvbnRhY3RzIGluIG9wZW4gQkJEQiBidWZmZXIKLSBJ bml0aWF0ZSBPcmcgYWdlbmRhIHRhZyBzZWFyY2ggZnJvbSBCQkRCIGJ1ZmZlcgotIEludmVyc2Ug b2YgdGhlIGFib3ZlOiBwb3AgdXAgYSBCQkRCIGJ1ZmZlciBhbG9uZ3NpZGUgYW4gT3JnIHRhZ3Mg c2VhcmNoCi0gVHJlYXQgaGVhZGluZ3MgYXMgZW1haWwtcmVsYXRlZCBUT0RPcywgYW5kIGhhbmRs ZSB0aGVtIERXSU0tc3R5bGUKCiAgIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l CiAgKHVzZS1wYWNrYWdlIGdub3JiCiAgIDplbnN1cmUgdAogICA6Y29uZmlnCiAgICAgICkKICAj K0VORF9TUkMgCioqIGdudXMtZGVza3RvcC1ub3RpZnkKaHR0cHM6Ly9naXRodWIuY29tL3dhdmV4 eC9nbnVzLWRlc2t0b3Atbm90aWZ5LmVsCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQogIDs7ICh1c2UtcGFja2FnZSBnbnVzLWRlc2t0b3Atbm90aWZ5CiAgOzsgIDplbnN1cmUg dAogIDs7ICA6Y29uZmlnCgogIDs7IChyZXF1aXJlICdnbnVzLWRlc2t0b3Atbm90aWZ5KQogIDs7 IChnbnVzLWRlc2t0b3Atbm90aWZ5LW1vZGUpCiAgOzsgKGdudXMtZGVtb24tYWRkLXNjYW5tYWls KQogCiAgOzsgICkKIytFTkRfU1JDIAoKCioqIGdyaXp6bAogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICBjMzY4NjZiMC1iY2IwLTQ3YmItYTJiZS0xZWFkNGVkN2ZlNzQKICAgOkVORDoKZm9y IHByb2plY3RpbGUgZnV6enkgbWF0Y2gKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBncml6emwKIDplbnN1cmUgdAogOmNvbmZpZwogICkKIytFTkRfU1JD IAoqKiBodW5ncnktZGVsZXRlCmh0dHBzOi8vZ2l0aHViLmNvbS9uZmxhdGgvaHVuZ3J5LWRlbGV0 ZQoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBodW5n cnktZGVsZXRlCiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ2h1bmdyeS1kZWxldGUpCihn bG9iYWwtaHVuZ3J5LWRlbGV0ZS1tb2RlKQogKQojK0VORF9TUkMgCioqIGhhbWJ1cmdlci1tZW51 CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAodXNlLXBhY2thZ2Ug aGFtYnVyZ2VyLW1lbnUKICA7OyAgOmVuc3VyZSB0CiAgOzsgIDpjb25maWcKICA7OyAocmVxdWly ZSAnaGFtYnVyZ2VyLW1lbnUpCiAgOzsgKHNldHEgbW9kZS1saW5lLWZyb250LXNwYWNlICdoYW1i dXJnZXItbWVudS1tb2RlLWxpbmUpCiAgOzsgICkKIytFTkRfU1JDIAoKCioqIEhlbG0KICAgOlBS T1BFUlRJRVM6CiAgIDpJRDogICAgICAgNTBmNTk1ZWQtZmY0OC00NWRkLWI1N2YtYTRmMjQ0ODgx YmQ4CiAgIDpFTkQ6CioqKiB1c2UtcGFja2FnZQoqKioqIGxvYWQgSGVsbQogICAgIDpQUk9QRVJU SUVTOgogICAgIDpJRDogICAgICAgMTAzMWEwYjQtNTU1Yy00YjRhLWFmYjQtZDZiYjYwMmM2ODZh CiAgICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKHVzZS1w YWNrYWdlIGhlbG0KIDplbnN1cmUgdAogOmNvbmZpZwogKHJlcXVpcmUgJ2hlbG0tY29uZmlnKQog Ozt0byBoYXZlIGhlbG0gYmUgZ2xvYmFsIHVzZSAnMSctY3VycmVudGx5IGRpc2FibGVkIAogOzso aGVsbS1tb2RlIDEpCiA7KGdsb2JhbC1zZXQta2V5IChrYmQgIk0teCIpICdoZWxtLU0teCkKIChz ZXRxIGhlbG0tTS14LWZ1enp5LW1hdGNoIHQpIDs7IG9wdGlvbmFsIGZ1enp5IG1hdGNoaW5nIGZv ciBoZWxtLU0teAogKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtYyBoIikgJ2hlbG0tY29tbWFuZC1w cmVmaXgpCiAoZ2xvYmFsLXVuc2V0LWtleSAoa2JkICJDLXggYyIpKQogOztBdXRvcmVzaXplCiAo aGVsbS1hdXRvcmVzaXplLW1vZGUgdCkKIDs7IHNldHMgbWluIGFuZCBtYXggaGVsbSBoZWlnaHQK IChzZXRxIGhlbG0tYXV0b3Jlc2l6ZS1tYXgtaGVpZ2h0IDYwKQogKHNldHEgaGVsbS1hdXRvcmVz aXplLW1pbi1oZWlnaHQgNDApCiApCiAjK0VORF9TUkMKKioqKiBoZWxtIG1pbmkgCioqKioqIHNl dCBoZWxtIG1pbmkgc291cmNlcyB0byBhbHNvIGluY2x1ZGUgYm9va21hcmtzIAogIytCRUdJTl9T UkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogKHNldHEgaGVsbS1taW5pLWRlZmF1bHQtc291 cmNlcwogICAgICAgJyhoZWxtLXNvdXJjZS1idWZmZXJzLWxpc3QKICAgICAgICAgaGVsbS1zb3Vy Y2UtYm9va21hcmtzCiAgICAgICAgIGhlbG0tc291cmNlLXJlY2VudGYKICAgICAgICAgaGVsbS1z b3VyY2UtYnVmZmVyLW5vdC1mb3VuZCkpIAogIytFTkRfU1JDCioqKioqIGVuYWJsZSBmdXp6eSBt YXRjaGluZwogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAgICAgICBjY2Y0ODVhMC1iYmI1 LTQxODktYWZkNS0xNWY1MzA5ZjRkNGYKICAgICAgOkVORDoKICAgICMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQogICAgKHNldHEgaGVsbS1idWZmZXJzLWZ1enp5LW1hdGNoaW5n IHQKCSAgaGVsbS1yZWNlbnRmLWZ1enp5LW1hdGNoICAgIHQpCgogICAoZ2xvYmFsLXNldC1rZXkg KGtiZCAiQy14IGIiKSAnaGVsbS1taW5pKQogICAgIytFTkRfU1JDCgoqKioqIEhlbG0gY29uZmln dXJhdGlvbiAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGY0YzRjYzE3LTI4ZDUt NDNlOS1hODU5LTExNjgyZGZmMmZjMAogICAgIDpFTkQ6CioqKioqIEhlbG0gdmlld2luZyBvcHRp b25zIGNvbmZpZyAKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgODE3ZjA4MGMt NDU3OS00MGJhLWIzZTQtM2Q2ZWRiOTdhZGU2CiAgICAgIDpFTkQ6CgogICMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKHNldHEgIGhlbG0tc3BsaXQtd2luZG93LWluLXNpZGUt cCAgICAgICAgICAgdCA7IG9wZW4gaGVsbSBidWZmZXIgaW5zaWRlIGN1cnJlbnQgd2luZG93LCBu b3Qgb2NjdXB5IHdob2xlIG90aGVyIHdpbmRvdwoJaGVsbS1tb3ZlLXRvLWxpbmUtY3ljbGUtaW4t c291cmNlICAgICB0IDsgbW92ZSB0byBlbmQgb3IgYmVnaW5uaW5nIG9mIHNvdXJjZSB3aGVuIHJl YWNoaW5nIHRvcCBvciBib3R0b20gb2Ygc291cmNlLgoJaGVsbS1zY3JvbGwtYW1vdW50ICAgICAg ICAgICAgICAgICAgICA4IDsgc2Nyb2xsIDggbGluZXMgb3RoZXIgd2luZG93IHVzaW5nIE0tPG5l eHQ+L00tPHByaW9yPgoJaGVsbS1mZi1maWxlLW5hbWUtaGlzdG9yeS11c2UtcmVjZW50ZiB0CiAp CiAgIytFTkRfU1JDCgoqKioqKiBzZWFyY2ggb3JnIGZvbGRlcnMKICAgICAgOlBST1BFUlRJRVM6 CiAgICAgIDpJRDogICAgICAgOTVkMDJkMDYtNzliNi00NjU2LWIxOWYtOTllZTE5ZjQzMGIxCiAg ICAgIDpFTkQ6CiAgIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKHVzZS1w YWNrYWdlIGhlbG0tY21kLXQKICA6ZW5zdXJlIHQKICA6Y29uZmlnCiAgKGRlZnZhciBteS1vcmct Zm9sZGVycyAobGlzdCAgIn4vb3JnL2ZpbGVzLyIpCiAgICAibXkgcGVybWFuZW50IGZvbGRlcnMg Zm9yIGhlbG0tbWluaSIpCgogIChkZWZ1biBoZWxtLW15LW9yZyAoJm9wdGlvbmFsIGFyZykKICAg ICJVc2UgQy11IGFyZyB0byB3b3JrIHdpdGggcmVwb3MuIgogICAgKGludGVyYWN0aXZlICJQIikK ICAgIChpZiAoY29uc3AgYXJnKQoJKGNhbGwtaW50ZXJhY3RpdmVseSAnaGVsbS1jbWQtdC1yZXBv cykKICAgICAgKGxldCAoKGhlbG0tZmYtdHJhbnNmb3JtZXItc2hvdy1vbmx5LWJhc2VuYW1lIG5p bCkpCgkoaGVsbSA6c291cmNlcyAobWFwY2FyIChsYW1iZGEgKGRpcikKCQkJCSAoaGVsbS1jbWQt dC1nZXQtY3JlYXRlLXNvdXJjZS1kaXIgZGlyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG15LW9yZy1mb2xkZXJzKQogICAgICAgICAgICAgIDpjYW5kaWRhdGUtbnVtYmVyLWxpbWl0 IDIwCiAgICAgICAgICAgICAgOmJ1ZmZlciAiKmhlbG0tbXktb3JnOioiCiAgICAgICAgICAgICAg OmlucHV0ICJvcmckICIpKSkpCiAgKQogICMrRU5EX1NSQwoKKioqKiogZ29vZ2xlIHN1Z2dlc3Qg CiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIGQ0OGQyMWY1LTQ4MGMtNDVkZi05 OWM1LTIyN2JhYmUyOGRjNQogICAgICA6RU5EOgogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQogICh3aGVuIChleGVjdXRhYmxlLWZpbmQgImN1cmwiKQogICAgKHNldHEgaGVs bS1nb29nbGUtc3VnZ2VzdC11c2UtY3VybC1wIHQpKQogICMrRU5EX1NSQwoKKioqKiogaGVsbSBt YW4td29tYW4gKG1hbiBkb2MgcmVhZGVyKQogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAg ICAgICBjODI1YjhlYS04OTcwLTRiMDMtODkzOS02MjA0YTA0YTU3MWMKICAgICAgOkVORDoKICBl bmFibGUgYXQgcG9pbnQKICAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAo YWRkLXRvLWxpc3QgJ2hlbG0tc291cmNlcy11c2luZy1kZWZhdWx0LWFzLWlucHV0ICdoZWxtLXNv dXJjZS1tYW4tcGFnZXMpCiAgIytFTkRfU1JDCioqKioqIGhlbG0gbG9jYXRlCiAgICAgIDpQUk9Q RVJUSUVTOgogICAgICA6SUQ6ICAgICAgIDM3MmY3MDM3LWNjMDItNDkzNS1iMmRmLWQ0NmJlYzY5 OGJmYgogICAgICA6RU5EOgogIGVuYWJsZSBmdXp6eSAKICAjK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKICAoc2V0cSBoZWxtLWxvY2F0ZS1mdXp6eS1tYXRjaCB0KQkgICAgCiAg IytFTkRfU1JDCioqKioqIGhlbG0gb2NjdXIKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDog ICAgICAgNTdmYjczMTItNWM0ZS00NzFiLWEyN2UtNjZiZjk1Y2QwNTJmCiAgICAgIDpFTkQ6CiBu byBjb25maWcgbmVlZGVkJAoqKioqIGhlbG0tYWcKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6 ICAgICAgIGJhZGM3ZDNiLWY4MzctNGYwZi05MGE0LWM5ZmZjZjA0MjJmNQogICAgIDpFTkQ6CiAg aHR0cHM6Ly9naXRodWIuY29tL3N5b2hleC9lbWFjcy1oZWxtLWFnCiAgIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKHVzZS1wYWNrYWdlIGhlbG0tYWcKICAgOmVuc3VyZSB0 CiAgIDpjb25maWcKIAogICApCiAgIytFTkRfU1JDIAoKCioqKiogaGVsbS1mdXp6aWVyCiAgICAg OlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAxY2E3M2Q0OC1mYmZhLTQ4OTctODU4OS03Njgx MjJlYjY1YmIKICAgICA6RU5EOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9FcGhyYW1QZXJkaXRpb24v aGVsbS1mdXp6aWVyCgogIGJldHRlciBmdXp6eSBtYXRjaGluZyBmb3IgaGVsbQoKICAjK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAodXNlLXBhY2thZ2UgaGVsbS1mdXp6aWVy CiAgIDplbnN1cmUgdAogICA6Y29uZmlnCiAgIChyZXF1aXJlICdoZWxtLWZ1enppZXIpCiAgICAo aGVsbS1mdXp6aWVyLW1vZGUgMSkKICAgKQogICMrRU5EX1NSQyAKCiAgaGVsbS1mdXp6aWVyIHdp bGwgb25seSBlbmhhbmNlIG1hdGNoaW5nIGZvciBzb3VyY2VzIHRoYXQgaGF2ZSBmdXp6eS1tYXRj aGluZyBlbmFibGVkLCBzbyBiZSBzdXJlIHRvIGVuYWJsZSBmdXp6eS1tYXRjaGluZyBmb3IgdGhl IHNvdXJjZXMgeW91J3JlIGludGVyZXN0ZWQgaW4gYnkgc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUg dmFyaWFibGUgKGhlbG0tTS14LWZ1enp5LW1hdGNoLCBoZWxtLW1vZGUtZnV6enktbWF0Y2gsIGhl bG0tYXByb3Bvcy1mdXp6eS1tYXRjaCwgZXRjJykuCgoqKioqIGhlbG0tc3dvb3AKICAgICA6UFJP UEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGZkMjc4YjU2LTgwOTEtNGUwMi1hMzIxLWFlMjRhNDYx ZjdlZgogICAgIDpFTkQ6CiAgaHR0cHM6Ly9naXRodWIuY29tL1NoaW5nb0Z1a3V5YW1hL2hlbG0t c3dvb3AKCiAgIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKHVzZS1wYWNr YWdlIGhlbG0tc3dvb3AKICAgOmVuc3VyZSB0CiAgIDpjb25maWcKICA7OyBNb3ZlIHVwIGFuZCBk b3duIGxpa2UgaXNlYXJjaAogIChkZWZpbmUta2V5IGhlbG0tc3dvb3AtbWFwIChrYmQgIkMtciIp ICdoZWxtLXByZXZpb3VzLWxpbmUpCiAgKGRlZmluZS1rZXkgaGVsbS1zd29vcC1tYXAgKGtiZCAi Qy1zIikgJ2hlbG0tbmV4dC1saW5lKQogIChkZWZpbmUta2V5IGhlbG0tbXVsdGktc3dvb3AtbWFw IChrYmQgIkMtciIpICdoZWxtLXByZXZpb3VzLWxpbmUpCiAgKGRlZmluZS1rZXkgaGVsbS1tdWx0 aS1zd29vcC1tYXAgKGtiZCAiQy1zIikgJ2hlbG0tbmV4dC1saW5lKQoKICA7OyBGcm9tIGhlbG0t c3dvb3AgdG8gaGVsbS1tdWx0aS1zd29vcC1hbGwKICAoZGVmaW5lLWtleSBoZWxtLXN3b29wLW1h cCAoa2JkICJNLWkiKSAnaGVsbS1tdWx0aS1zd29vcC1hbGwtZnJvbS1oZWxtLXN3b29wKQoKICA7 OyBTYXZlIGJ1ZmZlciB3aGVuIGhlbG0tbXVsdGktc3dvb3AtZWRpdCBjb21wbGV0ZQogIChzZXRx IGhlbG0tbXVsdGktc3dvb3AtZWRpdC1zYXZlIHQpCgogIDs7IElmIG5pbCwgeW91IGNhbiBzbGln aHRseSBib29zdCBpbnZva2Ugc3BlZWQgaW4gZXhjaGFuZ2UgZm9yIHRleHQgY29sb3IKICAoc2V0 cSBoZWxtLXN3b29wLXNwZWVkLW9yLWNvbG9yIG5pbCkKCgogICApCiAgIytFTkRfU1JDIAogIGhl bG0tbXVsdGktc3dvb3AKCiAgU2VsZWN0IGFueSBidWZmZXJzIGJ5IFtDLVNQQ10gb3IgW00tU1BD XQogIFByZXNzIFtSRVRdIHRvIHN0YXJ0IGhlbG0tbXVsdGktc3dvb3AKCiAgRWRpdCBtb2RlCgog IFdoaWxlIGRvaW5nIGhlbG0tc3dvb3AgdHlwZSBDLWMgQy1lIHRvIGVudGVyIHRoZSBlZGl0IG1v ZGUuIEJlZm9yZSBlbnRlciB0aGUgZWRpdCBtb2RlLCB5b3UgY2FuIGNob29zZSBzb21lIGxpbmVz IG1hcmtlZCBieSBDLVNQQyBvciBNLVNQQyB0byBlZGl0LiBBcHBseSBjaGFuZ2VzIHRvIG9yaWdp bmFsIGJ1ZmZlciB0eXBlIEMteCBDLXMuCgoqKioqIGhlbG0gbXUKICAgICA6UFJPUEVSVElFUzoK ICAgICA6SUQ6ICAgICAgIDA5Y2MwZjc1LTIwMzItNGRjZi04YTA0LWI3YzgwYTgzM2E4ZAogICAg IDpFTkQ6CiAgaHR0cHM6Ly9naXRodWIuY29tL2VtYWNzLWhlbG0vaGVsbS1tdQoKICBXaGVuIHlv dSB3b3VsZCBsaWtlIHRvIHJlYWQgYW4gZW1haWwgd2l0aG91dCBmaW5pc2hpbmcgdGhlIGhlbG0g c2Vzc2lvbiwgeW91IGNhbiBzZWxlY3QgdGhlIGVtYWlsIGFuZCBwcmVzcyB+Q3RybC16fgogIFRv IHNlYXJjaCBmb3IgY29udGFjdHMgdXNlIGBoZWxtLW11LWNvbnRhY3RzYAoKICAjK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAodXNlLXBhY2thZ2UgaGVsbS1tdQogICA6ZW5z dXJlIHQKICAgOmNvbmZpZwogICAgKQogICMrRU5EX1NSQwoqKioqIGhlbG0tcHJvamVjdGlsZQog ICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNmNmMTY5YTUtYmQ2OS00NTk0LWFhZWMt OTcxYzJlYTI2ZWMxCiAgICAgOkVORDoKCiAgIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCiAgKHVzZS1wYWNrYWdlIGhlbG0tcHJvamVjdGlsZQogICA6ZW5zdXJlIHQKICAgOmNv bmZpZwogCiAgICkKICAjK0VORF9TUkMKKioqKiBoZWxtLWZseXNwZWxsCiAgICAgOlBST1BFUlRJ RVM6CiAgICAgOklEOiAgICAgICBlZDA2YTMyNy1hM2I4LTQ4NTctYjQyYy1lM2EwODMzMGQxOTEK ICAgICA6RU5EOgoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKHVzZS1w YWNrYWdlIGhlbG0tZmx5c3BlbGwKICA6ZW5zdXJlIHQKICA6Y29uZmlnCiAKICApCiAjK0VORF9T UkMKKioqKiBoZWxtLWJ1ZmZlcnMtbGlzdAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgMmMxNTc1ZjgtMGVhMi00NWU3LWJlNTQtNmU5NzQ2NGUyODZlCiAgICAgOkVORDoKIGZpeCB0 ZXJtaW5hbCBmdW5jdGlvbgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQog IChkZWZ1biB6L2hlbG0tYnVmZmVycy1kaXJlZCAoKQogICAgInNob3cgZGlyZWQgYnVmZmVycyIK ICAgIChpbnRlcmFjdGl2ZSkKICAgIChoZWxtIDpzb3VyY2VzICcoaGVsbS1zb3VyY2UtYnVmZmVy cy1saXN0KQogICAgICAgICAgOmZ1bGwtZnJhbWUgdAogICAgICAgICAgOmlucHV0ICIqZGlyZWQg IgogICAgICAgICApKQoKICAoZGVmdW4gei9oZWxtLWJ1ZmZlcnMtb3JnICgpCiAgICAic2hvdyBv cmcgYnVmZmVycyIKICAgIChpbnRlcmFjdGl2ZSkKICAgIChoZWxtIDpzb3VyY2VzICcoaGVsbS1z b3VyY2UtYnVmZmVycy1saXN0KQogICAgICAgICAgOmZ1bGwtZnJhbWUgdAogICAgICAgICAgOmlu cHV0ICIqb3JnICIKICAgICAgICAgKSkKCiAgKGRlZnVuIHovaGVsbS1idWZmZXJzLXRlcm1pbmFs ICgpCiAgICAic2hvdyB0ZXJtIGJ1ZmZlcnMiCiAgICAoaW50ZXJhY3RpdmUpCiAgICAoaGVsbSA6 c291cmNlcyAnKGhlbG0tc291cmNlLWJ1ZmZlcnMtbGlzdCkKICAgICAgICAgIDpmdWxsLWZyYW1l IHQKICAgICAgICAgIDppbnB1dCAiKnRlcm1pbmFsICIKICAgICAgICAgKSkKICMrRU5EX1NSQwoq KiogRE9DVQoqKioqIGludHJvIAoqKioqKiAkc3RhcnQgaGVyZSQgCiFJTVBPUlRBTlQhIFBsZWFz ZSByZW1lbWJlciB0aGF0LCB3aGVuIHlvdSB1c2UgSGVsbSwgQHlvdSBuZXZlciBUQUIgdG8gY29t cGxldGUgcHJlZml4ZXNACmxpa2UgdmFuaWxsYSBvciBvdGhlciBwYWNrYWdlcyBsaWtlIElkbyBh bmQgaXRzIHJlbGF0ZWQgcGFja2FnZXMuIEluIEhlbG0sIHdoZW4geW91IHR5cGUgc29tZXRoaW5n LCBjYW5kaWRhdGVzIGdldCB1cGRhdGVkIGF1dG9tYXRpY2FsbHkuIEluIHZhbmlsbGEgRW1hY3Ms IHlvdSBoYXZlIHRvIFRBQiB0byBnZXQgYSBsaXN0IG9mIGNhbmRpZGF0ZS4gVGhpcyBpcyBhIGdy ZWF0IGZlYXR1cmUgZnJvbSBIZWxtLCBub3QgYSBtaXNzIG9mIGZlYXR1cmUuIFlvdSBoYXZlIHRv IGZvcmdldCB0aGUgbWVudGFsbHkgb2YgVEFCQklORyB0byBnZXQgY2FuZGlkYXRlcy4gSWYgeW91 IHdhbnQgcXVpY2sgY29tcGxldGlvbiBvZiBzZWFyY2ggcGF0dGVybnMgaW4gSGVsbSBwcm9tcHQs IHlvdSBhbHdheXMgaGF2ZSBoaXBwaWUtZXhwYW5kIHRvIHJlcGxhY2UgdGhlIFRBQiBiZWhhdmlv dXIsCgpXaGVuIHlvdSBleGVjdXRlIGEgSGVsbSBjb21tYW5kLCB5b3UgZW50ZXIgYSBIZWxtIHNl c3Npb24uIEEgSGVsbSBzZXNzaW9uIGlzIGEgZGVkaWNhdGVkIHN0YXRlIHRvIHdvcmtpbmcgd2l0 aCBIZWxtIGZlYXR1cmVzOyB3aGlsZSBpbiBhIEhlbG0gc2Vzc2lvbiwgYSBkZWRpY2F0ZWQgSGVs bSBidWZmZXIgaXMgYWx3YXlzIG9wZW5lZC4gV2hlbiB5b3UgcXVpdCBhIEhlbG0gc2Vzc2lvbiwg YSBIZWxtIGJ1ZmZlciBpcyBjbG9zZWQuIEluIEhlbG0sIHlvdSBiYXNpY2FsbHkgbmVlZCB0byBy ZW1lbWJlciB0aGUgMyBjb21tYW5kczoKCkFjY2VzcyB0byBhY3Rpb24gbWVudSB3aXRoIFRBQi4g QW4gYWN0aW9uIGlzIGEgY29tbWFuZCB0byBydW4gb24gbWFya2VkIGNhbmRpZGF0ZXMgKG9uZSBv ciBtb3JlKSBhbmQgcXVpdCBjdXJyZW50IEhlbG0gc2Vzc2lvbjsgYW4gYWN0aW9uIG1lbnUgaXMg YSB0ZXh0LWJhc2VkIG1lbnUgdGhhdCBsaXN0cyBhY3Rpb25zIHlvdSBjYW4gdGFrZS4gRm9yIGV4 YW1wbGUsIEZpbmQgRmlsZSAob3BlbiBmaWxlKSwgRmluZCBGaWxlIGluIERpcmVkLCBHcmVwIEZp bGXigKYKQy16IGV4ZWN1dGVzIGhlbG0tZXhlY3V0ZS1wZXJzaXN0ZW50LWFjdGlvbjsgYSBwZXJz aXN0ZW50IGFjdGlvbiBpcyBhbiBhY3Rpb24gdGhhdCB5b3UgdXNlIGluIGEgSGVsbSBzZXNzaW9u IHdpdGhvdXQgcXVpdHRpbmcgdGhlIHNlc3Npb24uCkluIHNvbWUgSGVsbSBzZXNzaW9uLCBzdWNo IGFzIGhlbG0tZmluZC1maWxlcyBvciBoZWxtLW1pbmksIHlvdSBjYW4gc2VsZWN0IG1vcmUgdGhh biBvbmUgY2FuZGlkYXRlcyBhbmQgZXhlY3V0ZSBhY3Rpb25zIG9uIHRoZW0sIHN1Y2ggYXMgZ3Jl cCBvciBvcGVuLgoKKioqKiogYmFzZSBjb21wbGV0aW9uCkNvbXBsZXRpb24gd2l0aCBIZWxtIGlz IHZlcnkgZGlmZmVyZW50IHdpdGggdGhlIHVzdWFsIEVtYWNzIGNvbXBsZXRpb246CllvdSB0eXBl IHNvbWV0aGluZzoKCkluc3RlYWQgb2YgVEFCIHRvIGV4cGFuZCB0aGUgY29tbW9uIHBhcnQgdW50 aWwgeW91IGZpbmQgeW91ciBjYW5kaWRhdGVzLCBpbiBIZWxtLCB5b3UgdHlwZSBhIHBhcnRzIG9m IHRoZSBjYW5kaWRhdGUgeW91IHdhbnQgdG8gc2VhcmNoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLiBJ biBIZWxtLCB0aGVzZSBzdHJpbmdzIGFyZSBjYWxsZWQgcGF0dGVybnMuIFBhdHRlcm5zIGNhbiBh bHNvIGJlIHJlZ2V4cHMuCkhlbG0gd2lsbCB0cnkgdG8gc2VhcmNoIGFuZCBzb3J0IGFjY29yZGlu ZyB0byBoaWdoZXN0IG1hdGNoLCBmcm9tIHRvcCB0byBib3R0b20uIFRoZSBiZXN0IG1hdGNoIGlz IGF0IHRoZSB0b3AsIHNvIHlvdSBjYW4gcHJlc3MgUkVUIGFuZCBzZWxlY3QgaXQuCllvdSBjYW4g bmF2aWdhdGUgdGhlIGJ1ZmZlciB3aXRoIEMtbiBhbmQgQy1wIG9yIDx1cD4gYW5kIDxkb3duPiB0 byBtb3ZlIHVwL2Rvd24sIEMtdiBhbmQgTS12IHRvIG1vdmUgdG8gbmV4dC9wcmV2aW91cyBwYWdl cywgYW5kIE0tPCBhbmQgTS0+IHRvIG1vdmUgdG8gdG9wIGFuZCBib3R0b20gb2YgdGhlIEhlbG0g YnVmZmVyLgpZb3UgY2FuIG1hcmsgY2FuZGlkYXRlcyB3aXRoIEMtU1BDOyB0aGlzIGlzIHVzZWZ1 bCB3aGVuIHlvdSBuZWVkIHRvIHBlcmZvcm0gYW4gYWN0aW9uIG9uIG1hbnkgY2FuZGlkYXRlcyBv ZiB5b3VyIGNob2ljZS4gTS1hIHRvIHNlbGVjdCBhbGwuCllvdSBjYW4gaW5zZXJ0IG1hcmtlZCBj YW5kaWRhdGVzIGludG8gY3VycmVudCBidWZmZXIgd2l0aCBDLWMgQy1pLiBUaGlzIGlzIHVzZWZ1 bCB3aGVuIHlvdSBuYXJyb3cgdG8gYSBsaXN0IG9mIGNhbmRpZGF0ZXMsIGkuZS4gZmlsZXMsIHRo ZW4geW91IHdhbnQgdG8gc2F2ZSBzdWNoIGNhbmRpZGF0ZXMuCklmIHlvdSBmaW5kIHRoZSBjdXJy ZW50IGhvcml6b250YWwgSGVsbSB3aW5kb3cgaXMgc21hbGwsIHlvdSBjYW4gYWx3YXlzIHN3aXRj aCBpdCB0byB2ZXJ0aWNhbCB3aW5kb3cgd2l0aCBDLXQuIFJ1bm5pbmcgQy10IGFnYWluIHJldHVy bnMgdGhlIEhlbG0gd2luZG93IGJhY2sgdG8gaG9yaXpvbnRhbCBhbmQgc28gb24uCgkgICAKKioq KiogYmFzZSBrZXlzIAkgICAKflRBQn4gc2hvd3MgbWVudSBvZiBsYXVuY2ggb3B0aW9ucwpzZWxl Y3QgdXAvZG9ubiBldGMgd2l0aCBjb21tb24gfnVwL2Rvd24vZW50ZXJ+IAp+Qy16fiBzYW1lIGFz IHRhYiBmb3Igc2VsZWN0IGFjdGlvbiAoYnV0IHRoaXMgaXMgcGVyc2lzdGFudCwgdGhhdCBpcyBo ZWxtIHdvbnQgY2xvc2UpCn5DLVNQQUNFfiBtYXJrIGNhbmlkYWR0ZXMgCn5BbHQtYX4gbWFyayBh bGwKWW91IGNhbiBpbnNlcnQgbWFya2VkIGNhbmRpZGF0ZXMgaW50byBjdXJyZW50IGJ1ZmZlciB3 aXRoIH5DLWMgQy1Jfgp+Qy10fiBjeWNsZSB0aHJvdWdoIGhlbG0gdmlldyBtb2Rlcwp+Qy1DID9+ IGdldCBoZWxwIG9uIGhlbG0gIAkgICAgCn5sZWZ0L3JpZ2h+IG1vdmUgYmV0d2VlbiBoZWxtIGdy b3VwcyBpbiBoZWxtIHZpZXcgCioqKiogZmluZCBpbiBmaWxlcyAoQy14IGYpCnVzZToKYGhlbG0t Zm9yLWZpbGVzYAoqKioqIGhlbG0gb3JnIGludGVncmF0aW9uCioqKioqIHNlYXJoIG9ubHkgb3Jn IGhlYWRlcnMgKHRvcCBsZXZlbCkgd2l0aCBoZWxtCnVzZToKCidIZWxtLW9yZy1oZWFkbGluZScK KioqKiBoZWxtIGNvbG9ycwp1c2VkIHRvIHNlZSBjb2xvcnMgYW5kIGZhY2VzIGN1cnJlbnRseSBp biBzeXN0ZW0sIHVzZToKCiMrQkVHSU5fRVhBTVBMRQpoZWxtLWNvbG9ycwojK0VORF9FWEFNUExF CgpLZXkgYmluZGluZzogbiA8cHJlZml4PiBjIChwcmVmaXggaXMgQy14IGMgYnkgZGVmYXVsdCwg b3IgQy1jIGggaWYgc2V0KS4KCklmIHlvdSB3YW50IHRvIHF1aWNrbHkgdmlldyBhbmQgY29weSBo ZXhhZGVjaW1hbCB2YWx1ZXMgb2YgY29sb3JzLCBoZWxtLWNvbG9yIHByb3ZpZGVzIHN1Y2ggZmVh dHVyZXMuIEJ1dCwgaGVsbS1jb2xvciBpcyBiZXlvbmQgYSBtZXJlIGNvbG9yIHBpY2tlci4gVGhl IHJlYWwgdXNhZ2UgZm9yIGhlbG0tY29sb3IgaXMgZm9yIGZhY2UgY3VzdG9taXphdGlvbjogdGhl IGNvbW1hbmQgbGlzdCBBTEwgYXZhaWxhYmxlIGZhY2VzLCB3aXRoIGEgcHJldmlldyBvZiBlYWNo IGZhY2UgaW4gdGhlIHNhbWUgcm93LiBUaGlzIG1ha2VzIHRoZW1lIGN1c3RvbWl6YXRpb24gcmVh bGx5IHF1aWNrIGJlY2F1c2UgeW91IGNhbiBxdWlja2x5IHZpZXcgYSBmYWNlIHdpdGggaXRzIGNv bG9yLiBCZWNhdXNlIHRoZSB3YXkgSGVsbSB3b3JrLCB5b3UgY2FuIGxvb2sgYXQgYSBncm91cCBv ZiBmYWNlcyB0b2dldGhlciB0byBoYXZlIGEgZ2xvYmFsIHZpZXcgaWYgdGhlIGNvbG9ycyB3b3Jr IHdlbGwgd2l0aCBlYWNoIG90aGVyLgoKaGVsbS1jb2xvciBjb250YWlucyB0d28gZ3JvdXBzLCB3 aXRoIGFjdGlvbnMgaW4gZWFjaDoKCkNvbG9yczoKS2V5CUFjdGlvbgpbZjFdIG9yIEMtYyBOCUNv cHkgTmFtZQogCUNvcHkgY29sb3IgbmFtZSBpbnRvIGtpbGwtcmluZwpbZjJdIG9yIEMtYyBSCUNv cHkgUkdCCiAJQ29weSBoZXggdmFsdWUgaW50byBraWxsLXJpbmcKW2YzXSBvciBDLWMgbglJbnNl cnQgTmFtZQogCUluc2VydCBjb2xvciBuYW1lIGludG8gY3VycmVudCBidWZmZXIKW2Y0XSBvciBD LWMgcglJbnNlcnQgUkdCCiAJSW5zZXJ0IGhleCB2YWx1ZSBpbnRvIGN1cnJlbnQgYnVmZmVyCgpD dXN0b21pemUgRmFjZToKS2V5CUFjdGlvbgpbZjFdCUN1c3RvbWl6ZQogCU9wZW4gQ3VzdG9taXph dGlvbiB3aW5kb3cKW2YyXQlDb3B5IE5hbWUKIAlDb3B5IGZhY2UgbmFtZQoKKioqKiBzZWFyY2hp bmcvbWF0aGNpbmcKKioqKiogc2VhcmNoIHdpdGggMiBzZWFyY2ggdGVybXMgICAgCmhlbG0gaGFz IG91dCBvZiBvcmRlciBtYXRjaGluZywgd2l0aCByZWd1bGFyIGV4cHJlc3Npb24uIFRoYXQncyBy aWdodCwgeW91IGNhbiBlbnRlciBldmVyeSBzZWFyY2ggcGF0dGVybiBhcyByZWdleHAhCkZpcnN0 LCBJIGVudGVyIG1haW4uYywgYW5kIEkgZ290IGxvdHMgb2YgY2FuZGlkYXRlcy4gVGhlbiwgSSBv bmx5IHdhbnQgdGhlIG1haW4uYyBpbnNpZGUgeDg2IGRpcmVjdG9yeSwgc28gSSB0eXBlIHg4Ni4g VGhlIHdob2xlIHBhdHRlcm4gaXM6CiMrQkVHSU5fRVhBTVBMRQptYWluLmMgeDg2IAojK0VORF9F WEFNUExFCmFuZCBIZWxtIHJldHVybnMgdGhlIGNvcnJlY3QgY2FuZGlkYXRlOiBhcmNoL3g4Ni9i b290L21haW4uYy4KKioqKiBoZWxtIG1pbmkKKioqKiogaGVsbS1taW5pIGNvbXByaXNlcyBvZiBt dWx0aXBsZSBzb3VyY2VzOgoKYEN1cnJlbnQgb3BlbmVkYCBidWZmZXJzLCB1bmRlciB0aGUgaGVh ZGVyIEJ1ZmZlcnMuCmBSZWNlbnRseSBvcGVuZWRgIGZpbGVzLCB1bmRlciB0aGUgaGVhZGVyIFJl Y2VudGYuCmBjcmVhdGUgYSBuZXcgYnVmZmVyYCBieSBwcmVzc2luZyBSRVQsIHVuZGVyIHRoZSBo ZWFkZXIgQ3JlYXRlIEJ1ZmZlci4KCllvdSBjYW4gbW92ZSBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVu IHRoZSBncm91cHMgYnkgdXNpbmcgfjxsZWZ0PiAvLyA8cmlnaHQ+fiBhcnJvdyBrZXlzLiBPciB5 b3UgY2FuIGp1c3Qgc2Nyb2xsIGRvd24vdXAgd2l0aCBDLXYgYW5kIE0tdi4KCioqKioqIGZpbHRl ciBvdXQgYnVmZmVycyBieSBtYWpvciBtb2RlIHVzaW5nIHRoZSBwYXR0ZXJuICo8bWFqb3ItbW9k ZT4uCkZvciBleGFtcGxlLAoKIytCRUdJTl9FWEFNUExFCipkaXJlZAojK0VORF9FWEFNUExFCgoq KioqKiBuYXJyb3dzIHRvIG9ubHkgRGlyZWQgYnVmZmVycy4KCllvdSBjYW4gYWxzbyBgZmlsdGVy IG91dGAgYnVmZmVycyB0aGF0IGJlbG9uZyB0byBhIG1ham9yIG1vZGUgYnkgYWRkaW5nIGAhYCB0 byB0aGUgcGF0dGVybi4gRm9yIGV4YW1wbGUsCiMrQkVHSU5fRVhBTVBMRQoqIWRpcmVkCiMrRU5E X0VYQU1QTEUKc2VsZWN0IGFsbCBidWZmZXJzIHRoYXQgYXJlIG5vdCBpbiBEaXJlZCBtb2RlLgoK KioqKiogWW91IGNhbiBhbHNvIHNlbGVjdCBidWZmZXJzIGluIGEgc3BlY2lmaWMgZGlyZWN0b3J5 IGJ5IHVzaW5nIHRoZSBwYXR0ZXJuIGAvZGlyZWN0b3J5YC4KRm9yIGV4YW1wbGUsCiMrQkVHSU5f RVhBTVBMRQovLmVtYWNzLmQvCiMrRU5EX0VYQU1QTEUKCm5hcnJvd3MgdG8gYnVmZmVycyB0aGF0 IGFyZSBvbmx5IGluc2lkZSAuZW1hY3MuZC4gQWRkICEgYmVmb3JlIHRoZSBwYXR0ZXJuIGZvciBy ZXZlcnNlIHZlcnNpb24uIEZvciBleGFtcGxlLCAhLy5lbWFjcy5kLyBuYXJyb3dzIHRvIGJ1ZmZl cnMgbm90IGluIC5lbWFjcy5kLgoKKioqKiogbmFycm93IHRvIGJ1ZmZlcnMgdGhhdCBjb250YWlu cyBhIHJlZ2V4cCBpbiB0aGVpciBjb250ZW50cwpieSBhcHBlbmRpbmcgYEBgIGJlZm9yZSB0aGUg c2VhcmNoIHBhdHRlcm4uIEZvciBleGFtcGxlLCB5b3UgY2FuIHNlbGVjdCBidWZmZXJzIHRoYXQg b25seSBjb250YWluIHRoZSBzdHJpbmcgInRlc3QiOgoKIytCRUdJTl9FWEFNUExFCkB0ZXN0CiMr RU5EX0VYQU1QTEUKCioqKioqIG1lYW5pbmcgb2YgY29sb3JzIGFuZCBwcmVmaXhlcyBmb3IgYnVm ZmVyczoKUmVtb3RlIGJ1ZmZlcnMgYXJlIHByZWZpeGVkIHdpdGggJ0AnLgpSZWQgPT4gQnVmZmVy IGhhdmUgaXRzIGZpbGUgbW9kaWZpZWQgb24gZGlzayBieSBhbiBleHRlcm5hbCBwcm9jZXNzLgpJ bmRpYW5yZWQyID0+IEJ1ZmZlciBleGlzdHMgYnV0IGl0cyBmaWxlIGhhdmUgYmVlbiBkZWxldGVk LgpPcmFuZ2UgPT4gQnVmZmVyIGlzIG1vZGlmaWVkIGFuZCBpdHMgZmlsZSBub3Qgc2F2ZWQgdG8g ZGlzay4KSXRhbGljID0+IEEgbm9uLWZpbGUgYnVmZmVyLgokTm90ZSQtU29tZSBFbWFjcyB0aGVt ZXMgY2hhbmdlIHRoZSBjb2xvcnMuIFlvdSBzaG91bGQgY2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcg Y29sb3VyIGluIHlvdXIgY29sb3IgdGhlbWVzLgoKKioqKiogRXhhbXBsZSBtaW5pIGhlbG0gbmFy cm93IHNlYXJjaGVzCgpJZiBJIGVudGVyIGluIHBhdHRlcm4gcHJvbXB0OiAqbGlzcCBeaGVsbSBA bW9jLCBIZWxtIHdpbGwgbmFycm93IGRvd24gdGhlIGxpc3QgYnkgc2VsZWN0aW5nIG9ubHkgYnVm ZmVycyB0aGF0IGFyZSBpbiBsaXNwIG1vZGUsIHN0YXJ0IGJ5IGhlbG0gYW5kIG1hdGNoICJtb2Mi IGluIHRoZWlyIGNvbnRlbnRzLgpJZiBJIHdhbnQgdG8gc3BlY2lmeSBtb3JlIHRoYW4gb25lIG1h am9yLW1vZGUsIHNlcGFyYXRlIHRoZW0gd2l0aCAsLCBlLmcgKiFsaXNwLCFzaCwhZnVuIHdpbGwg bGlzdCBhbGwgYnVmZmVycyBidXQgdGhlIG9uZXMgaW4gbGlzcC1tb2RlLCBzaC1tb2RlIGFuZCBm dW5kYW1lbnRhbC1tb2RlLgpJZiBJIGVudGVyIGluIHBhdHRlcm4gcHJvbXB0OiAqbGlzcCBeaGVs bSBtb2MuIE5vdGljZSB0aGVyZSBpcyBubyBAIHRoaXMgdGltZSBoZWxtIHdpbGwgbG9vayBmb3Ig bGlzcCBtb2RlIGJ1ZmZlcnMgc3RhcnRpbmcgYnkgImhlbG0iIGFuZCBoYXZlICJtb2MiIGluIHRo ZWlyIG5hbWUuCklmIEkgZW50ZXIgaW4gcGF0dGVybiBwcm9tcHQ6ICohbGlzcCAhaGVsbSBIZWxt IHdpbGwgbmFycm93IGRvd24gdG8gYnVmZmVycyB0aGF0IGFyZSBub3QgaW4gImxpc3AiIG1vZGUg YW5kIHRoYXQgZG8gbm90IG1hdGNoICJoZWxtIi4KSWYgSSBlbnRlciBpbiBwYXR0ZXJuIHByb21w dDogL2hlbG0vIHczIEhlbG0gd2lsbCBuYXJyb3cgZG93biBidWZmZXJzIHRoYXQgYXJlIGluIGFu eSAiaGVsbSIgc3ViLWRpcmVjdG9yeSBhbmQgbWF0Y2hpbmcgdzMuCgkgICAgCioqKiogaGVsbSBm aW5kIGZpbGVzIAoqKioqKiBiYXNlIApoZWxtLWZpbmQtZmlsZXMgaXMgZmlsZSBuYXZpZ2F0aW9u IG9uIHN0ZXJvaWQ6CgpoZWxtLWZpbmQtZmlsZXMgY2FuIGZ1enp5IG1hdGNoIGNhbmRpZGF0ZXMg aW4gY3VycmVudCBkaXJlY3RvcnkuIGUuZyAiZm9iIiBvciAiZmJyIiB3aWxsIGNvbXBsZXRlICJm b29iYXIiLgoKWW91IGNhbiBhbHNvIGV4ZWN1dGUgcGVyc2lzdGVudCBhY3Rpb24sIHdoaWNoIGlz IGJvdW5kIHRvIEMteiAoYnkgZGVmYXVsdCkgb3IgVEFCIGlmIHlvdSBjaGFuZ2VkIHRoZSBkZWZh dWx0IGNvbmZpZ3VyYXRpb24gKHRvIGhhdmUgVEFCIGJlIHBlcnNpc3RhbnQpIHRvIG5hcnJvdyB0 aGUgY3VycmVudCBoaWdobGlnaHRpbmcgY2FuZGlkYXRlCgpwcmVzc2luZyAgQy16IG9yIFRBQiBh Z2FpbiBhbGxvd3MgdG8gIHZpZXcgY29udGVudCBvZiB0aGUgYnVmZmVyIChwcmV2aWV3KQoKWW91 IGNhbiBzY3JvbGwgdGhlIG90aGVyIGJ1ZmZlciB1cC9kb3duIGJ5IE0tPG5leHQ+IGFuZCBNLTxw cmlvcj4uCgp5b3UgY2FuIH5DLWp+ICB0byBuYXJyb3cgdG8gdGhlIGhpZ2hsaWdodGluZyBjYW5k aWRhdGUKYW5kIH5DLWp+IGFnYWluIHRvIHZpZXcgdGhlIGNvbnRlbnQgb2Ygb3RoZXIgYnVmZmVy LiBDLWwgdG8gZ28gYmFjay4KCioqKioqIHF1aWNrIG5hdiAKbGVmdCB0YWtlIHlvdSBiYWNrCnJp Z2h0IGVudGVycyBhIGZvbGRlciAKRW50ZXItb3BlbnMgdGhlIGZpbGUgb3IgdGhlIGZvbGRlciBp biBkaXJlZAoKRW50ZXIgfi8gYXQgZW5kIG9mIHBhdHRlcm4gdG8gcXVpY2tseSByZWFjaCBob21l IGRpcmVjdG9yeS4KRW50ZXIgLyBhdCBlbmQgb2YgcGF0dGVybiB0byBxdWlja2x5IHJlYWNoIHJv b3Qgb2YgeW91ciBmaWxlIHN5c3RlbS4KRW50ZXIgLi8gYXQgZW5kIG9mIHBhdHRlcm4gdG8gcXVp Y2tseSByZWFjaCBgZGVmYXVsdC1kaXJlY3RvcnknIChpbml0aWFsIHN0YXJ0IG9mIHNlc3Npb24p LiBJZiB5b3UgYXJlIGluIGBkZWZhdWx0LWRpcmVjdG9yeScgbW92ZSBjdXJzb3Igb24gdG9wLgoq KioqKiBnbyB1cCBvbmUgZGlyZWN0b3J5IGxldmVsIHdpdGggfkMtbH4KWW91IGNhbiBhbHNvIGdv IHVwIG9uZSBkaXJlY3RvcnkgbGV2ZWwgd2l0aCB+Qy1sfgoKJE5vdGUkIGlmIHlvdSB1c2UgQy1s LCBIZWxtIGdvZXMgdXAgb25lIGxldmVsIGFuZCB0aGUgY3Vyc29yIGlzIG9uIHRoZSBkaXJlY3Rv cnkgeW91J3ZlIGp1c3QgZ290IG91dC4gSWYgeW91IHdhbnQgdG8gZ28gdXAgYW5kIGhhdmUgdGhl IGN1cnNvcnMgb24gdGhlIHBhcmVudCBkaXJlY3RvcnksIGluIEhlbG0gcHJvbXB0LCBlbnRlciAu Li8uCgoqKioqKiBGaWxlIGFuZCBkaXJlY3RvcnkgaGlzdG9yaWVzCldpdGggcHJlZml4IGFyZ3Vt ZW50IGJlZm9yZSBydW5uaW5nIGhlbG0tZmluZC1maWxlcywgSGVsbSBkaXNwbGF5cyBhIGxpc3Qg b2YgdmlzaXRlZCBkaXJlY3Rvcmllcy4gU2VsZWN0IG9uZSBhdCBwb2ludCB0cmFuc2ZlciBoZWxt LWZpbmQtZmlsZXMgdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHlvdSBjYW4gc3RhcnQgbmF2aWdhdGlu ZyB0aGVyZS4KCkR1cmluZyBhIGhlbG0tZmluZC1maWxlcyBzZXNzaW9uLCB5b3UgY2FuIGdldCBh IGxpc3Qgb2YgdmlzaXRlZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2l0aAoKfkMtYyBofgoKRnJv bSB0aGVyZSwgdGhlIGRlZmF1bHQgYWN0aW9uIGlzIFJFVCB0byBvcGVuIHRoZSBmaWxlL2RpcmVj dG9yeSBhdCBwb2ludCwgb3IgY29udGludWUgd2l0aCBoZWxtLWZpbmQtZmlsZXMgc3RhcnRpbmcg YXQgdGhhdCBmaWxlL2RpcmVjdG9yeS4KCllvdSBjYW4gdXNlIE0tcCBhbmQgTS1uIHRvIG1vdmUg YmFjayBhbmQgZm9ydGggYmV0d2VlbiBwcmV2aW91c2x5IHZpc2l0ZWQgZGlyZWN0b3J5LgkgICAg CioqKioqIGNyZWF0ZSBhIGRpcmVjdG9yeS9maWxlCmVudGVyIGEgbmV3IG5hbWUgdGhhdCBkb2Vz IG5vdCBleGlzdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIGFwcGVuZCAvIGF0IHRoZSBl bmQuIEFmdGVyIHlvdSBjcmVhdGVkIGEgZGlyZWN0b3J5LCBIZWxtIGNvbnRpbnVlcyBpbiB0aGF0 IGRpcmVjdG9yeS4KClRvIGNyZWF0ZSBhIG5ldyBmaWxlLCBlbnRlciBhIG5hbWUgYW5kIHNlbGVj dCB0aGUgdG9wIHJvdyB0aGF0IGhhcyB0aGUgc3ltYm9sIFs/XSBuZXh0IHRvIGl0LiBCeSBkZWZh dWx0LCBIZWxtIGFsd2F5cyBzZWxlY3RzIHRoZSBmaXJzdCBtYXRjaCBpbiB0aGUgZGlyZWN0b3J5 LgoKKioqKiogaW52b2tlIGdyZXAgb24gdGhlIGN1cnJlbnQgaGlnaGxpZ2h0aW5nIGVudHJ5IApZ b3UgY2FuIGludm9rZSBncmVwIG9uIHRoZSBjdXJyZW50IGhpZ2hsaWdodGluZyBlbnRyeSBieSBD LXMuIEMtdSBDLXMgdG8gcGVyZm9ybSByZWN1cnNpdmUgZ3JlcC4KKioqKiogZmluZCBmaWxlIG9u IHBvaW50CmhlbG0tZmluZC1maWxlcyBjYW4gYmUgdXNlZCB0byBmaW5kIGZpbGUgcGF0aHMgb24g cG9pbnQgOiBhbGwgeW91IG5lZWQgdG8gZG8gaXMgbW92aW5nIHlvdXIgcG9pbnQgb24gYSBwcm9w ZXIgZmlsZXBhdGgsIGFuZCBIZWxtIHdpbGwgcmVhY2ggdGhlIGNvcnJlY3QgcGF0aCBmb3IgeW91 LCBzaW1pbGFyIHRvIHRoZSBzY3JlZW5zaG90LiBOb3csIHlvdSBoYXZlIG5vIGxvbmdlciB0byB1 c2UgYSBzZXBhcmF0ZSBjb21tYW5kIGZvciBvcGVuIGZpbGUgYXQgcG9pbnQsIGJ1dCB1c2luZyB0 aGUgc2FtZSBDLXggQy1mLiBJdCdzIHJlYWxseSBjb252ZW5pZW50LgoKKioqKiBoZWxtLW1hbi13 b21hbiAocmVhZCBtYW51YWxzIHdpdGggb3JnKQpLZXkgYmluZGluZzoKCjxwcmVmaXg+IG0gKHBy ZWZpeCBpcyBDLXggYyBieSBkZWZhdWx0LCBvciBDLWMgaCBpZiBzZXQpLgoKRGVzY3JpcHRpb246 CgpXaXRoIGhlbG0tbWFuLXdvbWFuLCB5b3UgY2FuIHF1aWNrbHkganVtcCB0byBhbnkgbWFuIGVu dHJ5IHVzaW5nIEhlbG0gaW50ZXJmYWNlLCBlaXRoZXIgYnkgdHlwaW5nIGluIEhlbG0gcHJvbXB0 IG9yIGlmIHBvaW50IGlzIG9uIGEgc3ltYm9sLCBnZXQgYSBtYW4gcGFnZSBhdCBwb2ludC4gVG8g ZW5hYmxlIG1hbiBwYWdlIGF0IHBvaW50LCBhZGQgdGhlIGZvbGxvd2luZyBjb2RlOgoKKGFkZC10 by1saXN0ICdoZWxtLXNvdXJjZXMtdXNpbmctZGVmYXVsdC1hcy1pbnB1dCAnaGVsbS1zb3VyY2Ut bWFuLXBhZ2VzKQoqKioqIGhlbG0gbG9jYXRlICAgIApLZXkgYmluZGluZzoKCjxwcmVmaXg+IGwg KHByZWZpeCBpcyBDLXggYyBieSBkZWZhdWx0LCBvciBDLWMgaCBpZiBzZXQpLgoKRGVzY3JpcHRp b246CgpTaW1pbGFyIHRvIGhlbG0tZmluZCwgYnV0IHVzZSBsb2NhdGUgY29tbWFuZCBhbmQgYWNj ZXB0cyBzZWFyY2ggcGF0dGVybnMgYWNjb3JkaW5nIHRvIGxvY2F0ZSBpbnB1dC4gVXNlIGhlbG0t bWFuLXdvbWFuIHRvIHJlYWQgbG9jYXRlIG1hbiBwYWdlLgoKVG8gdXNlIGxvY2FsIGRhdGFiYXNl LCBleGVjdXRlIGhlbG0tbG9jYXRlIHdpdGggcHJlZml4IGFyZ3VtZW50IEMtdS4gWW91IGNhbiBh bHNvIGN1c3RvbWl6ZSBIZWxtIHRvIHVzZSBsb2NhdGUgd2l0aCBhcmd1bWVudHMgb2YgeW91ciBj aG9pY2U6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgaGVsbS1s b2NhdGUtY29tbWFuZCAibG9jYXRlICVzIC1lIC1BIC0tcmVnZXggJXMiKQojK0VORF9TUkMKCklm IHlvdSB1c2UgaGVsbS1sb2NhdGUgb24gYSBsYXJnZSBkaXJlY3RvcnkgYW5kIGZlZWwgdGhlIHVw ZGF0ZSBpcyB0b28gc2x1Z2dpc2gsIHlvdSBjYW4gYWx3YXlzIHN1c3BlbmQgdGhlIGxpdmUgdXBk YXRpbmcgd2l0aCBDLSEgYW5kIHJlc3VtZSB0aGUgbGl2ZSB1cGRhdGluZyB3aXRoIEMtISBsYXRl ci4KClRvIGVuYWJsZSBmdXp6eSBtYXRjaGluZyBpbiBoZWxtLWxvY2F0ZSwgYWRkIHRoaXMgc2V0 dGluZzoKCiMrQkVHSU5fRVhBTVBMRQooc2V0cSBoZWxtLWxvY2F0ZS1mdXp6eS1tYXRjaCB0KQkg ICAgCgojK0VORF9FWEFNUExFCgoqKioqIGhlbG0tb2NjdXIKQ29tbWFuZDogaGVsbS1vY2N1cgoK S2V5IGJpbmRpbmc6Cgo8cHJlZml4PiBNLXMgbyAocHJlZml4IGlzIEMteCBjIGJ5IGRlZmF1bHQs IG9yIEMtYyBoIGlmIHNldCkuIFNpbmNlIHRoaXMgaXMgYSByYXRoZXIgbG9uZyBiaW5kaW5nLCB3 ZSBzaG91bGQgYmluZCBhIG1vcmUgY29udmVuaWVudCBrZXkgc2VxdWVuY2U6CgooZ2xvYmFsLXNl dC1rZXkgKGtiZCAiQy1jIGggbyIpICdoZWxtLW9jY3VyKQoKU2ltaWxhciB0byBvY2N1ciwgYnV0 IHVzaW5nIEhlbG0gaW50ZXJmYWNlLiBBcyB5b3UgdHlwZSwgbWF0Y2hpbmcgbGluZXMgYXJlIHVw ZGF0ZWQgaW1tZWRpYXRlbHkuIFRoaXMgaXMgY29udmVuaWVudCB3aGVuIHlvdSB3YW50IHRvIGhh dmUgYSBsaXN0IG9mIG1hdGNoZXMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyIHRvIGp1bXAgYmFjayBh bmQgZm9ydGguIFRBQiB0byB0ZW1wb3JhcnkgbW92ZSBwb2ludCB0byB0aGUgbG9jYXRpb24gb2Yg Y3VycmVudCBoaWdobGlnaHRpbmcgbWF0Y2guIEMtZyBjYW5jZWxzIGN1cnJlbnQgSGVsbSBzZXNz aW9uIGFuZCByZXR1cm5zIHRvIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiB3aGVyZSBoZWxtLW9jY3Vy IGlzIGludm9rZWQuIFJFVCBvbiBhIG1hdGNoIGp1bXBzIHRvIHRoYXQgbWF0Y2guCgoqKioqIGhl bG0tYXByb3Bvcwo8cHJlZml4PiBhIChwcmVmaXggaXMgQy14IGMgYnkgZGVmYXVsdCwgb3IgQy1j IGggaWYgc2V0KS4KClByZS1jb25maWd1cmVkIGhlbG0gdG8gZGVzY3JpYmUgY29tbWFuZHMsIGZ1 bmN0aW9ucywgdmFyaWFibGVzIGFuZCBmYWNlcyAtIGFsbCBpbiBvbmUgY29tbWFuZCEuIEl0IGlz IHNpbWlsYXIgdG8gQy1oIGEgd2hpY2ggcnVucyBhcHJvcG9zLWNvbW1hbmQsIGJ1dCBpbnRlcmFj dGl2ZSBpbmNsdWRlcyBtb3JlIHRoYW4ganVzdCBjb21tYW5kcy4gaGVsbS1hcHJvcG9zIGNvbXBy aXNlcyBvZiA1IHNvdXJjZXM6CgpDb21tYW5kczogTGlzdHMgYWxsIGF2YWlsYWJsZSBjb21tYW5k cy4KRnVjbnRpb246IExpc3RzIGFsbCBhdmFpbGFibGUgZnVuY3Rpb25zLgpDbGFzc2VzOiBMaXN0 cyBhbGwgY2xhc3NlcyBjcmVhdGVkIGJ5IGRlZmNsYXNzLiBTZWUgQnVpbGRpbmcgQ2xhc3Nlcy4K R2VuZXJpYyBGdW5jdGlvbnM6IExpc3RzIGFsbCBmdW5jdGlvbnMgY3JlYXRlZCBieSBkZWZtZXRo b2QuIFNlZSBXcml0aW5nIE1ldGhvZHMKVmFyaWFibGVzOiBMaXN0cyBhbGwgYXZhaWxhYmxlIHZh cmlhYmxlcy4KRmFjZXM6IExpc3RzIGFsbCBhdmFpbGFibGUgZmFjZXMuCkhlbG0gYXR0cmlidXRl czogTGlzdHMgYWxsIGF0dHJpYnV0ZXMgdGhhdCB5b3UgY2FuIHVzZSB0byBidWlsZCBhIEhlbG0g c291cmNlLiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gd3JpdGUgZXh0ZW5zaW9uIHdpdGggSGVsbS4K VG8gZW5hYmxlIGZ1enp5IG1hdGNoaW5nLCBhZGQgdGhpcyBzZXR0aW5nOgoKKHNldHEgaGVsbS1h cHJvcG9zLWZ1bmN0aW9uLWxpc3QgdCkKKioqKiBoZWxtLWluZm8tKgoKS2V5IGJpbmRpbmc6Cgo8 cHJlZml4PiBoIDxrZXk+IChwcmVmaXggaXMgQy14IGMgYnkgZGVmYXVsdCwgb3IgQy1jIGggaWYg c2V0KTsgPGtleT4sIGJ5IGRlZmF1bHRzLCBpcyBvbmUgb2YgZywgaSBvciByOgoKU28sIHRoZSBw cmVmaXggZm9yIGluZm8gY29tbWFuZHMgaXMgPHByZWZpeD4gaC4gWW91IGNhbiB0aGluayBvZiBo IGFzIHN0YW5kcyBmb3IgaGVscCBhbmQgPGtleT4gaXMgb25lIG9mIHRoZSBpbmZvIHRvcGljIHRv IG1ha2UgaXQgZWFzaWVyIHRvIHJlbWVtYmVyIGFuZCByZWNhbGwuCgpoZWxtIG9mZmVycyBhIHdp ZGUgcmFuZ2VzIG9mIGluZm8gY29tbWFuZHMgZm9yIHZhcmlvdXMgdG9waWNzLiBNLXggaGVsbSBp bmZvIHRvIHNlZSB0aGVzZSBjb21tYW5kcywgaS5lLiBoZWxtLWluZm8tYXMsIGhlbG0taW5mby1n ZGLigKYgWW91IGNhbiBzZWFyY2ggZm9yIGluZm8gbm9kZXMgZWFzaWx5IHdpdGggSGVsbSBpbnRl cmZhY2UgYW5kIFRBQiBvbiBhbiBlbnRyeSB0byB2aWV3LiBNLTxuZXh0PiBtb3ZlcyB0byB0aGUg bmV4dCBwYWdlLCBNLTxwcmlvcj4gbW92ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UgaW4gdGhlIG90 aGVyIGJ1ZmZlci4KCllvdSBjYW4gaGF2ZSBtb3JlIGhlbG0taW5mby0gY29tbWFuZHMsIHN1Y2gg YXM6CgpoZWxtLWluZm8tZ2RiLgpoZWxtLWluZm8tZmluZC4KaGVsbS1pbmZvLWVsaXNwLgoKVXNl IE0teCBoZWxtLWluZm8gdG8gc2VlIHRoZSBsaXN0IG9mIGhlbG0taW5mby0gY29tbWFuZHMgdXNp bmcgdGhlIGRlZmF1bHQgaW5mbyBwcmVmaXg6IDxwcmVmaXg+IGggb3Iga2V5IGJpbmRpbmdzIG9m IHlvdXIgY2hvaWNlLgoKKioqKiBoZWxtLXJlc3VtZQoKS2V5IGJpbmRpbmc6Cgo8cHJlZml4PiBi IChwcmVmaXggaXMgQy14IGMgYnkgZGVmYXVsdCwgb3IgQy1jIGggaWYgc2V0KS4KCkRlc2NyaXB0 aW9uOgoKVGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gcmVzdW1lIHRoZSBwcmV2aW91cyBIZWxt IHNlc3Npb24sIGFsb25nIHdpdGggeW91ciBwcmV2aW91cyBwYXR0ZXJucyBpbiB0aGUgcHJvbXB0 LiBGb3IgZXhhbXBsZSwgaWYgeW91ciBsYXN0IGhlbG0gc2Vzc2lvbiB3YXMgaGVsbS1mZi1ydW4t Z3JlcCBhbmQgeW91IGVudGVyZWQgcGF0dGVybnMgaW4gSGVsbSBwcm9tcHQsIGhlbG0tcmVzdW1l IHJlc3VtZXMgdGhhdCBzZXNzaW9uIGFsb25nIHdpdGggeW91ciBwcmV2aW91cyBpbnB1dC4KCldp dGggcHJlZml4IGFyZ3VtZW50LCBoZWxtLXJlc3VtZSBhbGxvd3MgeW91IHRvIGNob29zZSBhbW9u ZyBhbGwgZXhpc3RpbmcgSGVsbSBidWZmZXJzLiBoZWxtLW1pbmkgb3IgaGVsbS1idWZmZXItbGlz dCBkb2VzIG5vdCBzaG93IGV4aXN0aW5nIEhlbG0gYnVmZmVyczsgdGhleSBpZ25vcmUgaXQgYnkg ZGVmYXVsdDsgYnV0IGlmIHlvdSBydW4gaWJ1ZmZlciwgeW91IHdpbGwgc2VlIGEgbGlzdCBvZiBI ZWxtIGJ1ZmZlcnMgdmlzaWJsZSB0aGVyZS4gRG9uJ3Qga2lsbCB0aGVtIG9yIHlvdSB3b24ndCBi ZSBhYmxlIHRvIHJlc3VtZS4KClRoaXMgaXMgcmVhbGx5IGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2 ZSBjb21wbGV4IGlucHV0ICxhbmQgcHJlcGFyYXRpb24gc3RlcHMuIEZvciBleGFtcGxlLCBpZiB5 b3UgaGF2ZSBtdWx0aXBsZSByZWdleHAgcGF0dGVybnMgaW4geW91ciBwcmV2aW91cyBIZWxtIHNl c3Npb24sIHRoZW4geW91IGRvbid0IGhhdmUgdG8gdHlwZSBpdCBhZ2Fpbi4gT3IgaW4geW91ciBw cmV2aW91cyBIZWxtIHNlc3Npb24sIHlvdSBoYXZlIHRvIHRyYXZlbCB0byBhIGRlZXAgZGlyZWN0 b3J5LCBhbmQgaGVsbS1yZXN1bWUgaGVscHMgeW91IHRvIHJldXNlIHlvdXIgcHJldmlvdXMgc2Vz c2lvbiB3aXRob3V0IGdvaW5nIHRocm91Z2ggYWxsIHRoZSB0cm91YmxlcyBhZ2Fpbi4KKioqKiBU T0RPIGhlbG0tYWxsLW1hcmstcmluZ3MKS2V5IGJpbmRpbmc6Cgo8cHJlZml4PiBDLWMgU1BDIChw cmVmaXggaXMgQy14IGMgYnkgZGVmYXVsdCwgb3IgQy1jIGggaWYgc2V0KS4gVGhpcyBpcyBhIHJh dGhlciBsb25nIGtleSBzZXF1ZW5jZSwgdGhpcyBjb21tYW5kIGRlc2VydmVzIGEgYmV0dGVyIGJp bmRpbmcsIGZvciBleGFtcGxlOgoKKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtaCBTUEMiKSAnaGVs bS1hbGwtbWFyay1yaW5ncykKRGVzY3JpcHRpb246CgpPbmUgaGFuZHkgY29tbWFuZC4gSXQgYWxs b3dzIHlvdSB0byB2aWV3IHRoZSBjb250ZW50IG9mIHRoZSBib3RoIHRoZSBsb2NhbCBhbmQgZ2xv YmFsIG1hcmsgcmluZ3MgaW4gYSBmcmllbmRseSBpbnRlcmZhY2UsIHNvIHlvdSBjYW4gYWx3YXlz IGp1bXAgYmFjayB0byB3aGVyZSB5b3Ugd2VyZS4gV2l0aG91dCB0aGlzIGNvbW1hbmQsIGlmIHlv dSB3YW50IHRvIHZpZXcgdGhlIG1hcmsgcmluZ3MsIHlvdSBoYXZlIHRvIHJ1biBNLTogYW5kIGVu dGVyIG1hcmstcmluZyBvciBnbG9iYWwtbWFyay1yaW5nIHRvIHZpZXcgdGhlaXIgY29udGVudHMu IEFuZCBldmVuIHNvLCBFbWFjcyBvbmx5IGRpc3BsYXlzIHRoZSBiYXJlIGNvbnRlbnQgb2YgdGhl IG1hcmstcmluZyBhbmQgZ2xvYmFsLW1hcmstcmluZyBsaXN0cywgd2hpY2ggaXMgdGhlIGxpbmUg bnVtYmVyIGFuZCBpdHMgYnVmZmVyIGxpa2UgdGhpczoKCioqKiogaGVsbS10b3AKCktleSBiaW5k aW5nOgoKPHByZWZpeD4gdCAocHJlZml4IGlzIEMteCBjIGJ5IGRlZmF1bHQsIG9yIEMtYyBoIGlm IHNldCkuCgpEZXNjcmlwdGlvbjoKClRoaXMgY29tbWFuZCBwcm92aWRlcyBIZWxtIGludGVyZmFj ZSBmb3IgdG9wIHByb2dyYW0uIFlvdSBjYW4gaW50ZXJhY3Qgd2l0aCBlYWNoIHByb2Nlc3Mgd2l0 aCB0aGUgZm9sbG93aW5nIGFjdGlvbnM6CgpLZXkJQmluZGluZwpbZjFdCWtpbGwgKFNJR1RFUk0p CltmMl0Ja2lsbCAoU0lHS0lMTCkKW2YzXQlraWxsIChTSUdJTlQpCltmNF0Ja2lsbCAoQ2hvb3Nl IHNpZ25hbCkKaGVsbS10b3Agc3BlY2lmaWMgY29tbWFuZHM6CgpLZXkJQmluZGluZwpDLWMgQy11 CVJlZnJlc2ggaGVsbS10b3AKTS1DCVNvcnQgYnkgc2hlbGwgY29tbWFuZHMKTS1QCVNvcnQgYnkg Q1BVIHVzYWdlCk0tVQlTb3J0IGJ5IHVzZXIKTS1NCVNvcnQgYnkgbWVtb3J5CnVzZXIgYW5kIHNo ZWxsIGNvbW1hbmRzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkuCgoqKioqIGhlbG0tY2FsY3Vs LWV4cHJlc3Npb24KCktleSBiaW5kaW5nOgoKPHByZWZpeD4gQy0sIChwcmVmaXggaXMgQy14IGMg YnkgZGVmYXVsdCwgb3IgQy1jIGggaWYgc2V0KS4KCkRlc2NyaXB0aW9uOgoKVGhpcyBjb21tYW5k cyBwcm92aWRlcyBhIEhlbG0gaW50ZXJmYWNlIGZvciBjYWxjIGNvbW1hbmQKCioqKiogaGVsbSBt LXgKKioqKiogcHJlZml4IGtleQpuIHRoZSBvcmlnaW5hbCBNLXgsIHlvdSBwYXNzIHByZWZpeCBh cmd1bWVudHMgYmVmb3JlIE0teC5JCidJbiBIZWxtJywgeW91IHBhc3MgcHJlZml4IGFydWdtZW50 cyBhZnRlciBydW5uaW5nIGhlbG0tTS14LgpJbiBhIGhlbG0tTS14IHNlc3Npb24sIGlmIHlvdSB0 eXBlIGFueSBwcmVmaXggYXJndW1lbnQsIGl0IHdpbGwgYmUgdmlzaWJsZSwgaS5lLiBpZiB5b3Ug dHlwZSBDLXUgMTAwLCBhIG1lc3NhZ2UgcHJlZml4IGFyZ3VtZW50OiAxMDAgYXBwZWFycy4gVGhl biBydW4geW91ciBjb21tYW5kIGFzIHVzdWFsLCB0aGUgaW50ZXJhY3RpdmUgY29tbWFuZCB3aWxs IHJlY2VpdmUgdGhlIGFyZ3VtZW50IHlvdSBwYXNzZWQgaW4uCgoqKiBoZWxwLWZucysKICAgOlBS T1BFUlRJRVM6CiAgIDpJRDogICAgICAgZDZiZjFiZTMtYTkyYi00ZWMyLTg1ODgtNDk0M2ExZWU0 YTZmCiAgIDpFTkQ6Cmh0dHA6Ly93d3cuZW1hY3N3aWtpLm9yZy9lbWFjcy9oZWxwLWZucysuZWwK CnVzZWQgYWxzbyBpbiBkaXJlZAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KHVzZS1wYWNrYWdlIGhlbHAtZm5zKwogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytFTkRfU1JD IAoKCioqIGhlbG0tYmlidGV4CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGQyNWVjNzY2 LWM0NGQtNGU3NS1hZTgzLTE3Y2JkNTdiMDIwNQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20v dG1hbHNidXJnL2hlbG0tYmlidGV4CioqKiB1c2UgcGFja2FnZXMKKioqKiBtYWluIGNvbmYgCiAj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICh1c2UtcGFja2FnZSBoZWxtLWJp YnRleAogIDplbnN1cmUgdAogIDpjb25maWcKCiA7OztpZiBub3QgaW5zdGFsbGluZyB0aHJvdWdo IE1FTFBBCiA7OzsoYXV0b2xvYWQgJ2hlbG0tYmlidGV4ICJoZWxtLWJpYnRleCIgIiIgdCkKCiA7 OzsgdGVsbGluZyBoZWxtLWJpYnRleCB3aGVyZSB5b3VyIGJpYmxpb2dyYXBoaWVzIGNhbiBiZSBm b3VuZDoKIChzZXRxIGhlbG0tYmlidGV4LWJpYmxpb2dyYXBoeSAnKCIvaG9tZS96ZWx0YWsvb3Jn L2ZpbGVzL1VuaS9wYXBlcnMvemVsdGFrLnBhcGVycy5iaWIiICIvaG9tZS96ZWx0YWsvb3JnL2Zp bGVzL1VuaS9wYXBlcnMvbGlicmFyeS5iaWIiICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL1VuaS9w YXBlcnMvemVsdGFrLm1pc2MuYmliIiApKQoKIDs7U3BlY2lmeSB3aGVyZSBQREZzIGNhbiBiZSBm b3VuZDoKIChzZXRxIGhlbG0tYmlidGV4LWxpYnJhcnktcGF0aCAobGlzdCAiL2hvbWUvemVsdGFr L1N5bmMvVW5pL3BkZl9saWIvIiAiL2hvbWUvemVsdGFrL1N5bmMvVW5pL3BkZl9saWJfZ2VuLyIp ICkgCgogOzs7SWYgdGhlIEJpYlRlWCBlbnRyaWVzIGhhdmUgYSBmaWVsZCB0aGF0IHNwZWNpZmll cyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBQREZzLCB0aGF0IGZpZWxkIGNhbiBhbHNvIGJlIHVzZWQK IChzZXRxIGhlbG0tYmlidGV4LXBkZi1maWVsZCAiRmlsZSIpCgogOzs7OyBOb3RlIGZpbGVzCiAo c2V0cSBoZWxtLWJpYnRleC1ub3Rlcy1wYXRoICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL1VuaS9w YXBlcnMvbm90ZXMiKQogKHNldHEgaGVsbS1iaWJ0ZXgtbm90ZXMtZXh0ZW5zaW9uICIub3JnIikK CiAoc2V0cSBoZWxtLWJpYnRleC1mb3JtYXQtY2l0YXRpb24tZnVuY3Rpb25zCiAgICcoKG9yZy1t b2RlICAgICAgLiBoZWxtLWJpYnRleC1mb3JtYXQtY2l0YXRpb24tb3JnLWxpbmstdG8tUERGKQog ICAgIChsYXRleC1tb2RlICAgIC4gaGVsbS1iaWJ0ZXgtZm9ybWF0LWNpdGF0aW9uLWNpdGUpCiAg ICAgKG1hcmtkb3duLW1vZGUgLiBoZWxtLWJpYnRleC1mb3JtYXQtY2l0YXRpb24tcGFuZG9jLWNp dGVwcm9jKQogICAgIChkZWZhdWx0ICAgICAgIC4gaGVsbS1iaWJ0ZXgtZm9ybWF0LWNpdGF0aW9u LWRlZmF1bHQpKSkKCiA7O0ZpZWxkcyB1c2VkIGZvciBzZWFyY2hpbmcKIChzZXRxIGhlbG0tYmli dGV4LWFkZGl0aW9uYWwtc2VhcmNoLWZpZWxkcyAnKHRhZ3MpKQoKIDs7O1N5bWJvbHMgdXNlZCBm b3IgaW5kaWNhdGluZyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5vdGVzIGFuZCBQREYgZmlsZXMKIChz ZXRxIGhlbG0tYmlidGV4LXBkZi1zeW1ib2wgIvCdjYwiKQogKHNldHEgaGVsbS1iaWJ0ZXgtbm90 ZXMtc3ltYm9sICLinI4iKQoKIDs7c2V0IGRlZmF1bHQgYnJvd3NlcgogKHNldHEgaGVsbS1iaWJ0 ZXgtYnJvd3Nlci1mdW5jdGlvbgo7ICAgKGxhbWJkYSAodXJsIF8pIChzdGFydC1wcm9jZXNzICJx dXRlYnJvd3NlciIgIipxdXRlYnJvd3NlcioiICJxdXRlYnJvd3NlciIgdXJsKSkpCjsgICAobGFt YmRhICh1cmwgXykgKHN0YXJ0LXByb2Nlc3MgImZpcmVmb3giICIqZmlyZWZveCoiICJmaXJlZm94 IiB1cmwpKSkKICAgKGxhbWJkYSAodXJsIF8pIChzdGFydC1wcm9jZXNzICJjaHJvbWl1bSIgIipj aHJvbWl1bSoiICJjaHJvbWl1bSIgdXJsKSkpCgooc2V0cSBiaWJ0ZXgtY29tcGxldGlvbi1kaXNw bGF5LWZvcm1hdHMKICAgICcoCiAgICAodCAgLiIkez1rZXk9OjE0fSAke2F1dGhvcjozNn0gJHt0 aXRsZToqfSAke3llYXI6NH0gJHs9aGFzLXBkZj06MX0kez1oYXMtbm90ZT06MX0gJHs9dHlwZT06 N30iKQogICAgKSkKCgoKCiAgKQogIytFTkRfU1JDIAoKKHNldHEgYmlidGV4LWNvbXBsZXRpb24t ZGlzcGxheS1mb3JtYXRzCiAgICAnKAogICAgKGFydGljbGUgLiAgIiR7PWtleT06MTR9ICR7YXV0 aG9yOjM2fSAke3RpdGxlOip9ICR7eWVhcjo0fSAkez1oYXMtcGRmPToxfSR7PWhhcy1ub3RlPTox fSAkez10eXBlPTo3fSIpCiAgICAodCAgLiIkez1rZXk9OjE0fSAke2F1dGhvcjozNn0gJHt0aXRs ZToqfSAke3llYXI6NH0gJHs9aGFzLXBkZj06MX0kez1oYXMtbm90ZT06MX0gJHs9dHlwZT06N30i KQogICAgKSkKCgoqKioqIG15IHBhcGVycyAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAg ICAgIDk0NGI3ZmQzLTMzNTQtNDNmYS05MjVkLWQ0NmM2NzMwNzI1MAogICAgIDpFTkQ6CiB0aGlz IGV4YW1wbGUgYmVsb3cgYWxzbyByZXN0cmljdHMgdG8gYSBzcGVjaWZpYyBiaWIgZmlsZQoKICMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIChkZWZ1biBoZWxtLWJpYnRleC1p emVsdGFrLXB1YmxpY2F0aW9ucyAoKQogICAgIlNlYXJjaCBCaWJUZVggZW50cmllcyBhdXRob3Jl ZCBieSBtZSIKICAgIChpbnRlcmFjdGl2ZSkKIChsZXQgKChoZWxtLWJpYnRleC1iaWJsaW9ncmFw aHkgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL3BhcGVycy96ZWx0YWsucGFwZXJzLmJpYiIp KQogICAgKGhlbG0gOnNvdXJjZXMgJyhoZWxtLXNvdXJjZS1iaWJ0ZXgpCiAgICA6ZnVsbC1mcmFt ZSB0CiAgICAgICAgICA6aW5wdXQgInplbHRhayAha3ByZXAgIWt0YWxrICFrY29uZiAhdW5wdWJs aXNoZWQgIgogICAgICAgICAgOmNhbmRpZGF0ZS1udW1iZXItbGltaXQgNTAwKSkpCgkgCiAjK0VO RF9TUkMKKioqKiBwYXBlcnMgUlRPRE8gKHRvIHJlYWQpCiAgICAgOlBST1BFUlRJRVM6CiAgICAg OklEOiAgICAgICA4NWYzNWEwMC03ZTBhLTQyMjktOThmNS1iMzI5NTIyMTlmMzYKICAgICA6RU5E OgogdGhpcyBleGFtcGxlIGJlbG93IGFsc28gcmVzdHJpY3RzIHRvIGEgc3BlY2lmaWMgYmliIGZp bGUKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAoZGVmdW4gaGVsbS1i aWJ0ZXgtcGFwZXJzLXJ0b2RvICgpCiAgICAiU2VhcmNoIEJpYlRlWCBlbnRyaWVzIGF1dGhvcmVk IGJ5IG1lIgogICAgKGludGVyYWN0aXZlKQogKGxldCAoKGhlbG0tYmlidGV4LWJpYmxpb2dyYXBo eSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9VbmkvcGFwZXJzL2xpYnJhcnkuYmliIikpCiAgICAo aGVsbSA6c291cmNlcyAnKGhlbG0tc291cmNlLWJpYnRleCkKICAgICAgICAgIDpmdWxsLWZyYW1l IHQKICAgICAgICAgIDppbnB1dCAicnRvZG8gIgogICAgICAgICAgOmNhbmRpZGF0ZS1udW1iZXIt bGltaXQgNTAwKSkpCgogIytFTkRfU1JDCgoKKioqKiBteSBwYXBlcnMgKGFsbCkKICAgICA6UFJP UEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDYzMmYyZDcxLThkYTctNDIzZC1hMjBhLWEyODY1MTNh ZmFhMwogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKCiAg OzsgRGVmaW5lIGhlbG0tc2VhcmNoIHdpdGggcHJlZGVmaW5lZCBzZWFyY2ggZXhwcmVzc2lvbjoK ICAoZGVmdW4gaGVsbS1iaWJ0ZXgtaXplbHRhay1wdWJsaWNhdGlvbnMtYWxsICgpCiAgICAiU2Vh cmNoIEJpYlRlWCBlbnRyaWVzIGF1dGhvcmVkIGJ5IG1lIChBTEwgaW5jbHVkaW5nIHByZXApIgog ICAgKGludGVyYWN0aXZlKQogICAgKGhlbG0gOnNvdXJjZXMgJyhoZWxtLXNvdXJjZS1iaWJ0ZXgp CiAgICAgICAgICA6ZnVsbC1mcmFtZSB0CiAgICAgICAgICA6aW5wdXQgInplbHRhayAhdW5wdWJs aXNoZWQgIgogICAgICAgICAgOmNhbmRpZGF0ZS1udW1iZXItbGltaXQgNTAwKSkKICMrRU5EX1NS QwoKKioqKiBteSBwcmVwYXJlZCBtYXVuc2NyaXB0cwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJ RDogICAgICAgNGE0Yjg1YWQtOGEyYy00NjAwLWJjOTMtNWUwOGQyODcyMjRiCiAgICAgOkVORDoK ICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoKICA7OyBEZWZpbmUgaGVsbS1z ZWFyY2ggd2l0aCBwcmVkZWZpbmVkIHNlYXJjaCBleHByZXNzaW9uOgogIChkZWZ1biBoZWxtLWJp YnRleC1pemVsdGFrLXByZXAgICAgICAgICAoKQogICAgIlNlYXJjaCBCaWJUZVggZW50cmllcyBp biBwcmVwZXJhdGlvbiB3aXRoIG1lIgogICAgKGludGVyYWN0aXZlKQogICAgKGhlbG0gOnNvdXJj ZXMgJyhoZWxtLXNvdXJjZS1iaWJ0ZXgpCiAgICAgICAgICA6ZnVsbC1mcmFtZSB0CiAgICAgICAg ICA6aW5wdXQgInplbHRhayBrcHJlcCAhdW5wdWJsaXNoZWQgIgogICAgICAgICAgOmNhbmRpZGF0 ZS1udW1iZXItbGltaXQgNTAwKSkKCiAgIytFTkRfU1JDCioqKiBET0NVCioqKiogbmFtaW5nIHBk ZiAKSGVsbS1iaWJ0ZXggYXNzdW1lcyB0aGF0IHRoZSBuYW1lIG9mIGEgUERGIGNvbnNpc3RzIG9m IHRoZSBCaWJUZVgga2V5IGZvbGxvd2VkIGJ5IHRoZSBzdWZmaXggLnBkZi4gRm9yIGV4YW1wbGUs IGlmIGEgQmliVGVYIGVudHJ5IGhhcyB0aGUga2V5IERhcndpbjE4NTksIGhlbG0tYmlidGV4IHNl YXJjaGVzIGZvciBEYXJ3aW4xODU5LnBkZi4KCnlvdSBjYW4gdXNlID1rZXk9IGluIHRoZSBmb3Jt YXQgc3RyaW5nOiBlLmcuLCAkez1rZXk9OjE0fQoKKioqKiBjaGFuZ2UgY29sb3Igb2YgbW9kbGlu ZSBtYXRjaGVzCmNoYW5nZSB0aGlzIHZhcmlhYmxlIHdpdGhlciBpbiB0aGVtZSBvciB3aXRoIE0t eCA+IGN1c3RvbWl6ZSBmYWNlcyAKIytCRUdJTl9FWEFNUExFCjs7bW9kbGluZSBjb2xvciBmb3Ig aGVsbSBpbm9mIHRoZXJlCmAoaGVsbS1jYW5kaWRhdGUtbnVtYmVyICgoLGNsYXNzICg6Zm9yZWdy b3VuZCAiZ3JlZW4iIDpiYWNrZ3JvdW5kICIjMDczNjQyIikpKSkgCiMrRU5EX0VYQU1QTEUKKioq KiBjdXN0b20gaGVsbS1iaWJ0ZXggc2VhcmNoIApleGFtcGxlIDoKIytCRUdJTl9FWEFNUExFCgo7 OyBEZWZpbmUgaGVsbS1zZWFyY2ggd2l0aCBwcmVkZWZpbmVkIHNlYXJjaCBleHByZXNzaW9uOgoo ZGVmdW4gaGVsbS1iaWJ0ZXgtbXktcHVibGljYXRpb25zICgpCiAgIlNlYXJjaCBCaWJUZVggZW50 cmllcyBhdXRob3JlZCBieSBYZWJhciBTYXJhLiIKICAoaW50ZXJhY3RpdmUpCiAgKGhlbG0gOnNv dXJjZXMgJyhoZWxtLXNvdXJjZS1iaWJ0ZXgpCiAgICAgICAgOmZ1bGwtZnJhbWUgdAogICAgICAg IDppbnB1dCAieGViYXIgc2FyYW0iCiAgICAgICAgOmNhbmRpZGF0ZS1udW1iZXItbGltaXQgNTAw KSkKCjs7IEJpbmQgdGhpcyBzZWFyY2ggZnVuY3Rpb24gdG8gQ3RybC14IHA6CjsoZ2xvYmFsLXNl dC1rZXkgKGtiZCAiQy14IHAiKSAnaGVsbS1iaWJ0ZXgtbXktcHVibGljYXRpb25zKQojK0VORF9F WEFNUExFCgoqKioqIHNlYXJjaCBvbiBjdXN0b20ga2V5d29yZHMKZnJvbSBkZXYgZW1haWwKCkkg dXNlIHR3byBCaWJUZVggZmllbGRzIHRvIHRhZyBlbnRyaWVzOiDigJxrZXl3b3Jkc+KAnSBmb3Ig a2V5d29yZHMKZGVzY3JpYmluZyB0aGUgY29udGVudCBvZiB0aGUgcGFwZXIgKGFzIHVzdWFsKSBh bmQg4oCcdGFnc+KAnSBmb3IgbWV0YQpkYXRhLiAgVmFsdWVzIHRoYXQgSSB1c2UgaW4gdGFncyBh cmUg4oCcb3du4oCdLCDigJxtYW51c2NyaXB04oCdLCDigJxwb3N0ZXLigJ0sCuKAnHRhbGvigJ0s IOKApiBTbyBpZiBJIHdhbnQgYSBsaXN0IG9mIGFsbCBhcnRpY2xlcyBpbiBwcm9ncmVzcywgSSBz ZWFyY2ggZm9yCuKAnG93biBtYW51c2NyaXB04oCdLiAgU2luY2UgdGhlIHRhZ3MgZmllbGQgaXMg bm9uLXN0YW5kYXJkLCBpdCBoYXMgdG8gYmUKYWRkZWQgdG8gYGhlbG0tYmlidGV4LWFkZGl0aW9u YWwtc2VhcmNoLWZpZWxkc2AuCgpBbm90aGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHVzZSB0aGUg cHVic3RhdGUgZmllbGQgYW5kIHRvIHNlYXJjaCBmb3IKeW91ciBuYW1lIGFuZCDigJxmb3J0aGNv bWluZ+KAnSAoYWRkIHB1YnN0YXRlIHRvCmhlbG0tYmlidGV4LWFkZGl0aW9uYWwtc2VhcmNoLWZp ZWxkcyBmb3IgdGhpcyB0byB3b3JrKS4KCmluIG15IGV4YW1wbGUgSSBhZGQgdG8gbXkgKi5iaWIg ZmlsZSBhIGB0YWdzYCBmaWxlZC4gdGhlbiBJIGFkZCB0aGlzIHRvIG15IGhlbG0tYmlidGV4IGNv bmZpZwoKIytCRUdJTl9FWEFNUExFCihzZXRxIGhlbG0tYmlidGV4LWFkZGl0aW9uYWwtc2VhcmNo LWZpZWxkcyAnKHRhZ3MpKQojK0VORF9FWEFNUExFCgoqKioqIHNlcmFjaCB0aXBzCnRoZSBrZXkg dG8gTk9UIHNlbGVjdCBpcwpgIWAKCi1QdWJsaWNhdGlvbnMgZnJvbSAyMDEwIGFuZCAyMDExOgoj K0JFR0lOX0VYQU1QTEUKXCgyMDEwXHwyMDExXCkKIytFTkRfRVhBTVBMRQoKKioqKiBTZWFyY2gg dGhlIHdvcmQgdW5kZXIgdGhlIGN1cnNvcgpBIGNvbW1vbiB1c2UgY2FzZSBpcyB3aGVyZSBhIHNl YXJjaCB0ZXJtIGlzIHdyaXR0ZW4gaW4gYSBkb2N1bWVudCAoc2F5IGluIHlvdXIgTGFUZVggbWFu dXNjcmlwdCkgYW5kIHlvdSB3YW50IHRvIHNlYXJjaCBmb3IgaXQgaW4geW91ciBiaWJsaW9ncmFw aHkuIEluIHRoaXMgc2l0dWF0aW9uLCBqdXN0IHN0YXJ0IGhlbG0tYmlidGV4IGFuZCBlbnRlciBN LW4uIFRoaXMgaW5zZXJ0cyB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29yIGFzIHRoZSBzZWFyY2gg dGVybS4gKFRoaXMgaXMgYSBoZWxtIGZlYXR1cmUgYW5kIGNhbiBiZSB1c2VkIGluIGFsbCBoZWxt IHNvdXJjZXMgbm90IGp1c3QgaGVsbS1iaWJ0ZXguKSBOb3RlIHRoYXQgaXQgaXMgYWxzbyBwb3Nz aWJsZSB0byB1c2UgQmliVGVYIGtleXMgZm9yIHNlYXJjaGluZy4gU28gaWYgeW91ciBjdXJzb3Ig aXMgb24gYSBCaWJUZVgga2V5IChlLmcuLCBpbiBhIExhVGVYIGNpdGUgY29tbWFuZCkgeW91IGNh biBzdGFydCBoZWxtLWJpYnRleCwgaGl0IE0rbiBhbmQgc2VlIHRoZSBlbnRyeSBhc3NvY2lhdGVk IHdpdGggdGhhdCBCaWJUZVgga2V5LiBTcGVjaWFsIGNhc2U6IHlvdSB3YW50IHRvIG9wZW4gdGhl IFBERiBhc3NvY2lhdGVkIHdpdGggdGhlIEJpYlRlWCBrZXkgdW5kZXIgdGhlIGN1cnNvcjogTS14 IGhlbG0tYmlidGV4IE0tbiBFbnRlci4gVGhpcyBpcyBvZiBjb3Vyc2Ugc2hvcnRlciBpZiB5b3Ug YmluZCBoZWxtLWJpYnRleCB0byBhIGNvbnZlbmllbnQga2V5IChzZWUgS2V5LWJpbmRpbmdzKS4K KioqKiBDaGFuZ2Ugb3JkZXIgb2YgZW50cmllcwpZZXMuICBIZWxtIHVzZXMgdGhlIGZpcnN0IGFj dGlvbiBhcyB0aGUgZGVmYXVsdCBhY3Rpb24uICBUbyBtb3ZlIGFuCmFjdGlvbiB0byB0aGUgdG9w IG9mIHRoZSBsaXN0IHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29kZToKCiMrQkVHSU5fRVhB TVBMRQooaGVsbS1kZWxldGUtYWN0aW9uLWZyb20tc291cmNlICJJbnNlcnQgQmliVGVYIGtleSIg aGVsbS1zb3VyY2UtYmlidGV4KQooaGVsbS1hZGQtYWN0aW9uLXRvLXNvdXJjZSAiSW5zZXJ0IEJp YlRlWCBrZXkiICdoZWxtLWJpYnRleC1pbnNlcnQta2V5IGhlbG0tc291cmNlLWJpYnRleCAwKQoK IytFTkRfRVhBTVBMRQoKVGhlIHNlY29uZCBhcmd1bWVudCBpbiB0aGUgc2Vjb25kIGxpbmUgaXMg dGhlIGZ1bmN0aW9uIHRoYXQgZXhlY3V0ZXMgdGhlCmFjdGlvbi4gIEhlcmUgaXMgYSBsaXN0IG9m IGFsbCBhY3Rpb25zIGFuZCB0aGVpciBmdW5jdGlvbnM6CiMrQkVHSU5fRVhBTVBMRQogIE9wZW4g UERGIGZpbGUgKGlmIHByZXNlbnQpOiBoZWxtLWJpYnRleC1vcGVuLXBkZgogIE9wZW4gVVJMIG9y IERPSSBpbiBicm93c2VyOiBoZWxtLWJpYnRleC1vcGVuLXVybC1vci1kb2kKICBJbnNlcnQgY2l0 YXRpb246IGhlbG0tYmlidGV4LWluc2VydC1jaXRhdGlvbgogIEluc2VydCByZWZlcmVuY2U6IGhl bG0tYmlidGV4LWluc2VydC1yZWZlcmVuY2UKICBJbnNlcnQgQmliVGVYIGtleTogaGVsbS1iaWJ0 ZXgtaW5zZXJ0LWtleQogIEluc2VydCBCaWJUZVggZW50cnk6IGhlbG0tYmlidGV4LWluc2VydC1i aWJ0ZXgKICBBdHRhY2ggUERGIHRvIGVtYWlsOiBoZWxtLWJpYnRleC1hZGQtUERGLWF0dGFjaG1l bnQKICBFZGl0IG5vdGVzOiBoZWxtLWJpYnRleC1lZGl0LW5vdGVzCiAgU2hvdyBlbnRyeTogaGVs bS1iaWJ0ZXgtc2hvdy1lbnRyeQojK0VORF9FWEFNUExFCgoqKioqIFNlbmQgZW1haWxzIChtdTRl KSB3aXRoIHJlZmVyZW5jZXMvcGRmcyAKU3RhcnQgYW4gZW1haWwgdG8geW91ciBjb2xsZWFndWUg YW5kIE0teCBoZWxtLWJpYnRleC4gU2VsZWN0IHlvdXIgbmV3IHB1YmxpY2F0aW9ucyBhbmQgc2Vs ZWN0IOKAnEF0dGFjaCBQREYgdG8gZW1haWwu4oCdIFRoZW4gTS14IGhlbG0tcmVzdW1lICh0aGUg cHVibGljYXRpb25zIGFyZSBzdGlsbCBtYXJrZWQpIGFuZCBzZWxlY3Qg4oCcSW5zZXJ0IEJpYlRl WCBlbnRyeS7igJ0gT3B0aW9uYWxseSBpbnNlcnQgbW9yZSBodW1hbiByZWFkYWJsZSByZWZlcmVu Y2VzIGJ5IE0teCBoZWxtLXJlc3VtZSBhbmQg4oCcSW5zZXJ0IHJlZmVyZW5jZS7igJ0gU2VuZCBl bWFpbC4gRG9uZS4gVGhpcyB0YWtlcyBsZXNzIHRoYW4gMTAgc2Vjb25kcy4gT2YgY291cnNlLCB0 aGlzIGFzc3VtZXMgdGhhdCB5b3XigJlyZSBzZW5kaW5nIGVtYWlsIGZyb20gRW1hY3MsIGUuZy4g dmlhIE11NGUuCioqKiogc2VsZWN0IGFsbCAKfk0tYX4gc2VsZWN0cyBhbGwgY2FuZGlkYXRlcwoq KioqIHVzZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIHNlYXJjaCBmb3IgYSByYW5nZSBvZgp5ZWFy czogMjAxWzItNV0KCioqIGhlbG0tYmJkYgpodHRwczovL2dpdGh1Yi5jb20vZW1hY3MtaGVsbS9o ZWxtLWJiZGIvYmxvYi9tYXN0ZXIvaGVsbS1iYmRiLmVsCgoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBoZWxtLWJiZGIKOmVuc3VyZSB0CiA6Y29uZmln CikKIytFTkRfU1JDIAoKCioqIGlzZWFyY2gKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAg ZTM0M2FhZjYtZWM5Yy00NGNiLWI3MjYtMmUzZmMxZTUzMjg4CiAgIDpFTkQ6CioqKiBtYWluIApB bmQgeW91IGNhbiB1c2UgTS1lIChpc2VhcmNoLWVkaXQtc3RyaW5nKSB0byBpbnRlcnJ1cHQgSXNl YXJjaCB0byBlZGl0IHRoZSBjdXJyZW50IHNlYXJjaCBzdHJpbmcsIHVzaW5nIHRoZSBtaW5pYnVm ZmVyCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAocHJvZ24KICAgIDs7 IHNldCBhcnJvdyBrZXlzIGluIGlzZWFyY2guIGxlZnQvcmlnaHQgaXMgYmFja3dhcmQvZm9yd2Fy ZCwgdXAvZG93biBpcyBoaXN0b3J5LiBwcmVzcyBSZXR1cm4gdG8gZXhpdAogICAgKGRlZmluZS1r ZXkgaXNlYXJjaC1tb2RlLW1hcCAoa2JkICI8dXA+IikgJ2lzZWFyY2gtcmluZy1yZXRyZWF0ICkK ICAgIChkZWZpbmUta2V5IGlzZWFyY2gtbW9kZS1tYXAgKGtiZCAiPGRvd24+IikgJ2lzZWFyY2gt cmluZy1hZHZhbmNlICkKICAgIChkZWZpbmUta2V5IGlzZWFyY2gtbW9kZS1tYXAgKGtiZCAiPGxl ZnQ+IikgJ2lzZWFyY2gtcmVwZWF0LWJhY2t3YXJkKSA7IHNpbmdsZSBrZXksIHVzZWZ1bAogICAg KGRlZmluZS1rZXkgaXNlYXJjaC1tb2RlLW1hcCAoa2JkICI8cmlnaHQ+IikgJ2lzZWFyY2gtcmVw ZWF0LWZvcndhcmQpIDsgc2luZ2xlIGtleSwgdXNlZnVsCiAgICAoZGVmaW5lLWtleSBpc2VhcmNo LW1vZGUtbWFwIChrYmQgIkMteSIpICdpc2VhcmNoLXJlcGVhdC1mb3J3YXJkKSA7IHNpbmdsZSBr ZXksIHVzZWZ1bAogICAgKGRlZmluZS1rZXkgaXNlYXJjaC1tb2RlLW1hcCAoa2JkICJTLTxpbnNl cnQ+IikgJ2lzZWFyY2gtcmVwZWF0LWZvcndhcmQpIDsgc2luZ2xlIGtleSwgdXNlZnVsCiAgICkK Cjs7IGNvbG9yIGlzZWFyY2gKCgogIDs7IChhZGQtaG9vayAnaXNlYXJjaC1tb2RlLWhvb2sKICA7 OyAgICAgICAgICAgKGxhbWJkYSAoKQogIDs7ICAgICAgICAgICAgIChzZXQgKG1ha2UtbG9jYWwt dmFyaWFibGUgJ2lzZWFyY2gtbW9kZS1saW5lLWZhY2UtcmVtYXAtY29va2llKQogIDs7ICAgICAg ICAgICAgICAgICAgKGZhY2UtcmVtYXAtYWRkLXJlbGF0aXZlCiAgOzsgICAgICAgICAgICAgICAg ICAgJ21vZGUtbGluZSAnKCg6Zm9yZWdyb3VuZCAiaXZvcnkiIDpiYWNrZ3JvdW5kICJyZWQiKSBt b2RlLWxpbmUpKSkpKQoKICA7OyAoYWRkLWhvb2sgJ2lzZWFyY2gtbW9kZS1lbmQtaG9vawogIDs7 ICAgICAgICAgICAobGFtYmRhICgpCiAgOzsgICAgICAgICAgICAgKGZhY2UtcmVtYXAtcmVtb3Zl LXJlbGF0aXZlIGlzZWFyY2gtbW9kZS1saW5lLWZhY2UtcmVtYXAtY29va2llKSkpCgojK0VORF9T UkMKKioqIENvbm5lY3RlZCBwYWNrYWdlcwoqKioqIGlzZWFyY2gtZGFiYnJldgpodHRwczovL2dp dGh1Yi5jb20vRGV3ZHJvcHMvaXNlYXJjaC1kYWJicmV2CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgaXNlYXJjaC1kYWJicmV2CiA6ZW5zdXJlIHQKIDpj b25maWcKKGRlZmluZS1rZXkgaXNlYXJjaC1tb2RlLW1hcCAoa2JkICI8dGFiPiIpICdpc2VhcmNo LWRhYmJyZXYtZXhwYW5kKSAKICkKIytFTkRfU1JDCioqKiogVE9ETyBhY2UtaXNlYXJjaApodHRw czovL2dpdGh1Yi5jb20vdGFtMTdha2kvYWNlLWlzZWFyY2gKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBhY2UtaXNlYXJjaAogOmVuc3VyZSB0CiA6Y29u ZmlnCjsoYWNlLWlzZWFyY2gtbW9kZSArMSkgCjsoZ2xvYmFsLWFjZS1pc2VhcmNoLW1vZGUgKzEp Cgooc2V0cSBhY2UtaXNlYXJjaC1mdW5jaXRvbiAnYXZ5LWdvdG8td29yZC0xKSAKKGRlZmluZS1r ZXkgaXNlYXJjaC1tb2RlLW1hcCAoa2JkICJDLSciKSAnYWNlLWlzZWFyY2gtanVtcC1kdXJpbmct aXNlYXJjaCkKCiApCiMrRU5EX1NSQwoqKioqIGlzZWFyY2grCmh0dHBzOi8vd3d3LmVtYWNzd2lr aS5vcmcvZW1hY3MvSXNlYXJjaFBsdXMKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgaXNlYXJjaCsKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5E X1NSQyAKCioqIGl2eS1iaWJ0ZXggCmh0dHBzOi8vZ2l0aHViLmNvbS90bWFsc2J1cmcvaGVsbS1i aWJ0ZXgKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBp dnktYmlidGV4CiA6ZW5zdXJlIHQKIDpjb25maWcKIAogKQojK0VORF9TUkMgCioqIGhlbG0tdW5p Y29kZSAKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ug aGVsbS11bmljb2RlCiA6ZW5zdXJlIHQKIDpjb25maWcKIAogKQojK0VORF9TUkMgCgoKKiogaGVs bS1vcmctcmlmbGUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYWFkNDBkZjYtY2VjMi00 OGI4LWFlNmItZmQ2ZTRjNDljMWY3CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYXBh cGEvaGVsbS1vcmctcmlmbGUKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoo dXNlLXBhY2thZ2UgaGVsbS1vcmctcmlmbGUKIDplbnN1cmUgdAogOmNvbmZpZwogKQojK0VORF9T UkMgCioqIGhlbG0gcGFzcyAKaHR0cHM6Ly9naXRodWIuY29tL2phYnJhbmhhbS9oZWxtLXBhc3MK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgaGVsbS1w YXNzCiAgOmVuc3VyZSB0CiAgKQojK0VORF9TUkMKKiogVE9ETyBoZWxtLXJlY29sbApodHRwczov L2dpdGh1Yi5jb20vZW1hY3MtaGVsbS9oZWxtLXJlY29sbAojK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGhlbG0tcmVjb2xsCiA6ZW5zdXJlIHQKIDpjb25m aWcKOzsgeW91IGNhbiBhbHNvIGNyZWF0ZSBkYXRhIHNvdXJjZXMgCihoZWxtLXJlY29sbC1jcmVh dGUtc291cmNlICJvcmciICJ+Ly5yZWNvbGwtb3JnLyIpCikKIytFTkRfU1JDIAoKaW5zdGFsbGlu ZzoKCkZpcnN0IHlvdSBoYXZlIHRvIGNyZWF0ZSBhbiBpbmRleCBmb3IgZWFjaCBkaXJlY3Rvcnkg eW91IHdhbnQgc3VjaCBhcyB+Ly5yZWNvbGwtPHlvdXItZGlyZWN0b3J5LW5hbWUuIHNlZToKCmZp bGU6fi8ucmVjb2xsLW9yZy8KCnRoZW4gY3JlYXRlICJyZWNvbGwuY29uZiIgY29uZmlnIGZpbGVz IGluIGVhY2ggZGlyZWN0b3J5IGNvbnRhaW5pbmcKdG9wZGlycyA9IDxmdWxsL3BhdGgvdG8veW91 ci9kaXJlY3Rvcnk+CiMrQkVHSU5fRVhBTVBMRQp0b3BkaXJzID0gL2hvbWUvemVsdGFrL29yZyAv aG9tZS96ZWx0YWsvU3luYwojK0VORF9FWEFNUExFCgp0aGVuIHJ1biByZWNvbGxpbmRleCAtYyB+ Ly5yZWNvbGwtPHlvdXItZGlyZWN0b3J5LW5hbWU+CgojK0JFR0lOX0VYQU1QTEUKcmVjb2xsaW5k ZXggLWMgfi8ucmVjb2xsLW9yZyAgICAgICAgIAojK0VORF9FWEFNUExFCgphbHNvIHlvdSBjYW4g dXNlIGNvdW5zZWwtcmVjb2xsLiB0aGlzIHVzZXMgdGhlIH4vLnJlY29sbCBkYXRhYmFzZSAKKiog bXU0ZS1hbGVydAkJCQkJCQkKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgM2Q1YjIyZmMt YmNlNi00NjE1LWI2MzQtN2UxOTY0N2Q3NTNmCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9p cWJhbGFuc2FyaS9tdTRlLWFsZXJ0CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogIDs7ICh1c2UtcGFja2FnZSBtdTRlLWFsZXJ0CiAgOzsgIDplbnN1cmUgdAogIDs7ICA6Y29u ZmlnCiAgOzsgOzsgQ2hvb3NlIHRoZSBzdHlsZSB5b3UgcHJlZmVyIGZvciBkZXNrdG9wIG5vdGlm aWNhdGlvbnMKICA7OyAobXU0ZS1hbGVydC1zZXQtZGVmYXVsdC1zdHlsZSAnbGlibm90aWZ5KQog IDs7IChhZGQtaG9vayAnYWZ0ZXItaW5pdC1ob29rICMnbXU0ZS1hbGVydC1lbmFibGUtbm90aWZp Y2F0aW9ucykgCiAgOzsgKGFkZC1ob29rICdhZnRlci1pbml0LWhvb2sgIydtdTRlLWFsZXJ0LWVu YWJsZS1tb2RlLWxpbmUtZGlzcGxheSkKICA7OyA7O2JlbG93IHdpbGwgY29sb3IgdGhlIGZyaW5n ZSAobGVmdCBzaWRlIG9mIGFuIEVtYWNzIHdpbmRvdykuLndvcmtlZCBidXQgY291bGRuJ3Qgc2Vl IGhvdyB0byBkaXNhYmxlIGl0CiAgOzsgOzs7KGFsZXJ0LWFkZC1ydWxlIDpjYXRlZ29yeSAibXU0 ZS1hbGVydCIgOnN0eWxlICdmcmluZ2UgOnByZWRpY2F0ZSAobGFtYmRhIChfKSAoc3RyaW5nLW1h dGNoLXAgIl5tdTRlLSIgKHN5bWJvbC1uYW1lIG1ham9yLW1vZGUpKSkgOmNvbnRpbnVlIHQpCiAg OzsgKG11NGUtYWxlcnQtZW5hYmxlLW5vdGlmaWNhdGlvbnMpCgogIDs7ICApCiMrRU5EX1NSQyAK CioqKiB0byByZXN0b3JlIHRoZSBmcmluZ2UgdG8gdG8gYSBidWcKICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICA4ZGM2NjhkZi01MzQ4LTQ1YjctYTgzMC0wMzI2NGU5MWIyOWYKICAgIDpF TkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gYWxlcnQtZnJp bmdlLXJlc3RvcmUgKGluZm8pCiAgKGNvcHktZmFjZSAnYWxlcnQtc2F2ZWQtZnJpbmdlLWZhY2Ug J2ZyaW5nZSkpCiMrRU5EX1NSQwoKKiogSGlnaGxpZ2h0IHN5bWJvbAogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICA4OTRmNGIxMS1jMTM2LTQzODUtOWZjNi1hNDYzMjU5MGZmYjQKICAgOkVO RDoKaHR0cHM6Ly9naXRodWIuY29tL25zY2h1bS9oaWdobGlnaHQtc3ltYm9sLmVsCmhpZ2hsaWdo dCB3b3JkIGF0IHBvaW50IGFuZCBtb3ZlIGZvcndhcmQgbmV4dCB0byBvdGhlciB3b3JkcwojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGhpZ2hsaWdodC1z eW1ib2wKIDplbnN1cmUgdAogOmNvbmZpZwogKQojK0VORF9TUkMgCioqIGllZGl0CiAgIDpQUk9Q RVJUSUVTOgogICA6SUQ6ICAgICAgIGMxYjRkMjlkLTIwZWUtNDg5OC1iZTFhLWU1YTA2NDkwNjBj YQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vdmljdG9yaGdlL2llZGl0CgojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGllZGl0CiA6ZW5zdXJlIHQK IDpjb25maWcKICkKIytFTkRfU1JDIAoqKiBgaXZ5YCBmYW1pbHkKICAgOlBST1BFUlRJRVM6CiAg IDpJRDogICAgICAgOWMxN2U5ZDktYzI4ZC00YzQ4LWE4OTctNTA0ZGE0ZmFjZTdhCiAgIDpFTkQ6 CioqKiBpdnkgCioqKiogYmFzZSAKaHR0cDovL29yZW1hY3MuY29tL3N3aXBlci8jZ2V0dGluZy1z dGFydGVkCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICh1c2UtcGFja2Fn ZSBpdnkKICA6ZW5zdXJlIHQKICA6Y29uZmlnCiA7O2l2eSBldmVyeXdoZXJlIAogKGl2eS1tb2Rl IDEpCiAoc2V0cSBpdnktdXNlLXZpcnR1YWwtYnVmZmVycyB0KQogOztnbyBiYWNrIHRvIGZpcnN0 IGVudHJ5IHdoZW4gcmVhY2hpbmcgZW5kIG9mIGNvbXBsZXRpb24gbGlzdCAod3JhcCkKIChzZXRx IGl2eS13cmFwIG5pbCkKIDs7aGVpZ2h0IG9mIGl2eSBidWZmZXIKIChzZXRxIGl2eS1oZWlnaHQg MTYpCgoKIDs7O2tleXMgCjsgKGdsb2JhbC1zZXQta2V5ICJcQy1zIiAnY291bnNlbC1ncmVwLW9y LXN3aXBlcikKIDsoZ2xvYmFsLXNldC1rZXkgIlxDLXMiICdzd2lwZXIpCjsgKGdsb2JhbC1zZXQt a2V5ICJcQy1yIiAnc3dpcGVyLWF0LXBvaW50KQogKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtYyBD LXIiKSAnaXZ5LXJlc3VtZSkKCgogOzsoZGVmaW5lLWtleSBpdnktbWluaWJ1ZmZlci1tYXAgKGti ZCAiPGxlZnQ+IikgJ2l2eS1iYWNrd2FyZC1kZWxldGUtY2hhcikKIChkZWZpbmUta2V5IGl2eS1t aW5pYnVmZmVyLW1hcCAoa2JkICI8bGVmdD4iKSAnY291bnNlbC11cC1kaXJlY3RvcnkpCiAoZGVm aW5lLWtleSBpdnktbWluaWJ1ZmZlci1tYXAgKGtiZCAiPHJpZ2h0PiIpICdpdnktYWx0LWRvbmUp CiAKKGRlZmluZS1rZXkgaXZ5LW1pbmlidWZmZXItbWFwIChrYmQgIjxNLWRvd24+IikgJ2l2eS1l bmQtb2YtYnVmZmVyKQooZGVmaW5lLWtleSBpdnktbWluaWJ1ZmZlci1tYXAgKGtiZCAiPE0tdXA+ IikgJ2l2eS1iZWdpbm5pbmctb2YtYnVmZmVyKQogCgoKOzthbGxvd+OAkE0tbyBJ44CRIHVzZSB0 byBpbnNlcnQgTS14IGNvbW1hbmRzIGludG8gY3VycmVudCBidWZmZXIgIAogKGRlZnVuIGl2eS1p bnNlcnQtYWN0aW9uICh4KQogICAod2l0aC1pdnktd2luZG93CiAgICAgKGluc2VydCB4KSkpCgoK CiAoaXZ5LXNldC1hY3Rpb25zCiB0CiAgJygoImoiIGZpbmQtZmlsZS1vdGhlci13aW5kb3cgIm90 aGVyIHdpbmRvdyIpCiAgICAoImkiIGl2eS1pbnNlcnQtYWN0aW9uICJpbnNlcnQgY3VycmVudCBj b21tYW5kIGludG8gYnVmZmVyIikKICAgICgicyIgaXZ5LXN1ZG8tZWRpdC1hY3Rpb24gIm9wZW4g YXMgcm9vdCIpCiAgICAoImMiIChsYW1iZGEgKF8pIChpbnRlcmFjdGl2ZSkgKGNvdW5zZWwtYm9v a21hcmspKSAib3BlbiBib29rbWFyayBidWZmZXIiKQogICAgKCJmIiBjb3Vuc2VsLWZpbmQtZmls ZS1jZC1ib29rbWFyay1hY3Rpb24gImNkIGluIHN3aXBlciB0byBib29rbWFyayIpCiAgKSkKCgog KQogIytFTkRfU1JDIAoKKioqKiBlbmFibGUgZnV6enkgbWF0Y2hpbmcgYnkgZGVmYXVsdAogICAg IDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNThhN2EwYTItOWU1OS00ZGUyLWFlZTQtY2M5 MzAxNDJhYTNiCiAgICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogKHNldHEgaXZ5LXJlLWJ1aWxkZXJzLWFsaXN0CiAgICAgICAnKCh0IC4gaXZ5LS1yZWdleC1m dXp6eSkpKQogIytFTkRfU1JDCioqKiogRW5hYmxlIGZhbmN5IG1vZGUKICAgICA6UFJPUEVSVElF UzoKICAgICA6SUQ6ICAgICAgIGQ0NjYxYzAwLTQ0ZmQtNGE2ZS1iMDlhLTExOGRhNzE1OTAxMgog ICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChzZXRxIGl2 eS1kaXNwbGF5LXN0eWxlICdmYW5jeSkKCiAoY3VzdG9tLXNldC1mYWNlcwogICcoc3dpcGVyLW1p bmlidWZmZXItbWF0Y2gtZmFjZS0xCiAgICAoKHQgOmJhY2tncm91bmQgIiNkZGRkZGQiKSkpCiAg Jyhzd2lwZXItbWluaWJ1ZmZlci1tYXRjaC1mYWNlLTIKICAgICgodCA6YmFja2dyb3VuZCAiI2Ji YmJiYiIgOndlaWdodCBib2xkKSkpCiAgJyhzd2lwZXItbWluaWJ1ZmZlci1tYXRjaC1mYWNlLTMK ICAgICgodCA6YmFja2dyb3VuZCAiI2JiYmJmZiIgOndlaWdodCBib2xkKSkpCiAgJyhzd2lwZXIt bWluaWJ1ZmZlci1tYXRjaC1mYWNlLTQKICAgICgodCA6YmFja2dyb3VuZCAiI2ZmYmJmZiIgOndl aWdodCBib2xkKSkpKQogIytFTkRfU1JDCioqKiogc2hvdyBtb3JlIHZlcmJvc2UgbWF0Y2hpbmcg CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAzOWRkYmFhZS0xM2VjLTQzNjgtOWM2 ZS0zNmZkNzc0ODI3MGQKICAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCiAoc2V0cSBpdnktY291bnQtZm9ybWF0ICIoJWQvJWQpICIpCiAjK0VORF9TUkMKKioq KiBub3RlcwppdnktaW1tZWRpYXRlLWRvbmUg44CQQy1NLWog44CRIHRvIGZpbmlhbGl6ZSBmaWxl IG5hbWVzCgoqKiogQ291bnNlbAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDc0MGMz NTVkLTM2ZmQtNDg2ZS1iYmE4LWM5OTZhOTc5MmEzZQogICAgOkVORDoKICMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIGNvdW5zZWwKICA6ZW5zdXJlIHQK ICA6Y29uZmlnCjs7IERvIG5vdCBzaG93ICIuLyIgYW5kICIuLi8iIGluIHRoZSBgY291bnNlbC1m aW5kLWZpbGUnIGNvbXBsZXRpb24gbGlzdAooc2V0cSBpdnktZXh0cmEtZGlyZWN0b3JpZXMgbmls KSA7IGRlZmF1bHQgdmFsdWU6ICgiLi4vIiAiLi8iKQoKICAgKQogIytFTkRfU1JDIAoqKioqIG5v dGVzIAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgZWYyMjY2YjUtZDA2Ny00MTY0 LWE5ODYtNjE0MGYzMWM0Yjc3CiAgICAgOkVORDoKdG8gbWFrZSBzdXJlIGNvdW5zZWwtZ3JlcC1v ci1zd2lwZXIgaXNuJ3QgY2FzZSBzZW5zaXRpdmUgdXNlIHRoZSBjdXN0b21pemUtdmFyaWFibGUg bWVudSBhbmQgbWFrZSB0aGUg44CWY291bnNlbC1ncmVwLWJhc2UtY29tbWFuZOOAlyAgdmFsdWUg YmUg44CWZ3JlcCAtbkVpIFwiJXNcIiAlc+OAlyAKCioqIGl2eS1wYWdlcwpodHRwczovL2dpdGh1 Yi5jb20vaWdvcmVwc3QvaXZ5LXBhZ2VzCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2UgaXZ5LXBhZ2VzCiA6ZW5zdXJlIHQKIDpjb25maWcKIAogKQojK0VO RF9TUkMgCgoKKiogaWJ1ZmZlcgogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA3ZTYzZGQ1 ZC1iMDI2LTRiMzEtYTJiYi00Nzc1NjQ1NjMzZmIKICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsgVXNlIGh1bWFuIHJlYWRhYmxlIFNpemUgY29sdW1uIGlu c3RlYWQgb2Ygb3JpZ2luYWwgb25lCihkZWZpbmUtaWJ1ZmZlci1jb2x1bW4gc2l6ZS1oCiAgKDpu YW1lICJTaXplIiA6aW5saW5lIHQpCiAgKGNvbmQKICAgKCg+IChidWZmZXItc2l6ZSkgMTAwMDAw MCkgKGZvcm1hdCAiJTcuMWZNIiAoLyAoYnVmZmVyLXNpemUpIDEwMDAwMDAuMCkpKQogICAoKD4g KGJ1ZmZlci1zaXplKSAxMDAwMDApIChmb3JtYXQgIiU3LjBmayIgKC8gKGJ1ZmZlci1zaXplKSAx MDAwLjApKSkKICAgKCg+IChidWZmZXItc2l6ZSkgMTAwMCkgKGZvcm1hdCAiJTcuMWZrIiAoLyAo YnVmZmVyLXNpemUpIDEwMDAuMCkpKQogICAodCAoZm9ybWF0ICIlOGQiIChidWZmZXItc2l6ZSkp KSkpCgo7OyBNb2RpZnkgdGhlIGRlZmF1bHQgaWJ1ZmZlci1mb3JtYXRzCiAgKHNldHEgaWJ1ZmZl ci1mb3JtYXRzCgknKChtYXJrIG1vZGlmaWVkIHJlYWQtb25seSAiICIKCQkobmFtZSAxOCAxOCA6 bGVmdCA6ZWxpZGUpCgkJIiAiCgkJKHNpemUtaCA5IC0xIDpyaWdodCkKCQkiICIKCQkobW9kZSAx NiAxNiA6bGVmdCA6ZWxpZGUpCgkJIiAiCgkJZmlsZW5hbWUtYW5kLXByb2Nlc3MpKSkKIytFTkRf U1JDCioqIG94LWNsaXAKaHR0cHM6Ly9naXRodWIuY29tL2praXRjaGluL3NjaW1heAoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBveC1jbGlwCiA6ZW5z dXJlIHQKIDpjb25maWcKIAogKQojK0VORF9TUkMgCgoKKiogb3JnLWdyZXAKICAgOlBST1BFUlRJ RVM6CiAgIDpJRDogICAgICAgM2I3ZTIyMGYtYzdiZC00YTNhLWIxZWItNjE2YTVmMGRjNTAwCiAg IDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9waW5hcmQvb3JnLWdyZXAKCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ugb3JnLWdyZXAKIDplbnN1cmUgdAog OmNvbmZpZwoKICkKIytFTkRfU1JDIAoKCioqIG9yZyBoaWdobGlnaHQKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgZDEyYzIxYTktZDdhZS00NGE4LWE2NDItNDllZTVjODJmZTQ0CiAgIDpF TkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7KHJlcXVpcmUgJ2hpZ2hs aWdodHMpCjs7IG1ha2Ugc3VyZSB5b3UgaGF2ZSBkYXNoLCBoZWxtLCBoZWxtLWJpYnRleCwgZWJp YiwgcywgZiwgaHlkcmEgYW5kIGtleS1jaG9yZAo7OyBpbiB5b3VyIGxvYWQtcGF0aAo7cmVxdWly ZSAnaGlnaGxpZ2h0cykKIytFTkRfU1JDCioqIFRPRE8gb3JnLXRyZWUtc2xpZGUKCmh0dHBzOi8v Z2l0aHViLmNvbS90YWtheHAvb3JnLXRyZWUtc2xpZGUKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBvcmctdHJlZS1zbGlkZQogOmVuc3VyZSB0CiA6Y29u ZmlnCiAKICkKIytFTkRfU1JDIAoKCioqIGh5ZHJhCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAg ICAgIDk0MzI2OTQwLWE2NjEtNGRjNS1hM2U5LThlZTMxZjUxYmFkNwogICA6RU5EOgoqKiogdXNl IHBhY2thZ2UgCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNr YWdlIGh5ZHJhCjplbnN1cmUgdCAKOmNvbmZpZwoocmVxdWlyZSAnaHlkcmEtZXhhbXBsZXMpIDs7 Zm9yIHdpbmRvdyBzcGxpdHMgZXRjCikKICMrRU5EX1NSQwoqKiogRE9DVQoqKioqIFRoZSBmdWxs IGRlZmh5ZHJhIHN5bnRheAoqKioqKiBiYXNlIApodHRwOi8vb3JlbWFjcy5jb20vMjAxNS8wMi8w Mi9jb2xvcmZ1bC1oeWRyYWUvCgpodHRwczovL2dpdGh1Yi5jb20vYWJvLWFiby9oeWRyYQoKTm90 ZSB0aGF0IGBkZWZoeWRyYWAgbG9va3MgaW50ZW50aW9uYWxseSBsaWtlIGEgZGVmdW4sIOKChklu IGV4YW1wbGXigoYgOgoKIytCRUdJTl9FWEFNUExFCihkZWZoeWRyYSBoeWRyYS10b2dnbGUgKGds b2JhbC1tYXAgIkMtYyIgOmNvbG9yIHJlZCkKICAgInRvZ2dsZSIKICAgKCJhIiBhYmJyZXYtbW9k ZSAiYWJicmV2IiA6Y29sb3IgYmx1ZSkKICAgKCJkIiB0b2dnbGUtZGVidWctb24tZXJyb3IgImRl YnVnIiA6Y29sb3IgYmx1ZSkKICAgKCJmIiBhdXRvLWZpbGwtbW9kZSAiZmlsbCIgOmNvbG9yIGJs dWUpCiAgICgidCIgdG9nZ2xlLXRydW5jYXRlLWxpbmVzICJ0cnVuY2F0ZSIgOmNvbG9yIGJsdWUp CiAgICgidyIgd2hpdGVzcGFjZS1tb2RlICJ3aGl0ZXNwYWNlIiA6Y29sb3IgYmx1ZSkKICAgKCJ2 IiByZWNlbnRlci10b3AtYm90dG9tICJyZWNlbnRlciIgOmNvbG9yIHJlZCkKICAgKCJxIiBuaWwg ImNhbmNlbCIgOmNvbG9yIGJsdWUpKQooZ2xvYmFsLXNldC1rZXkgKGtiZCAiQy1jIEMtdiIpICdo eWRyYS10b2dnbGUvYm9keSkKIytFTkRfRVhBTVBMRQoKVGhlIGNvZGUgYWJvdmU6CgpiaW5kcyBD LWMgYSwgQy1jIGQgZXRjIHdpdGggdGhlIHVzdWFsIGdsb2JhbC1zZXQta2V5IGFwcHJvYWNoLgpi aW5kcyBDLWMgQy12IGEsIEMtYyBDLXYgZCB3aXRoIHRoZSBuZXcgYXBwcm9hY2gsIHdoaWNoIHNo b3dzIHlvdSB0aGUgaGludCByaWdodCBhZnRlciBDLWMgQy12IGFuZCBhbGxvd3MgeW91IHRvIGNh bmNlbCBlYXNpZXIuCmJpbmRzIEMtYyB2IHRvIGJlIHJlcGVhdGFibGUsIGkuZS4geW91IGNhbiBw cmVzcyBDLWMgdiB2IHYuIFNhbWUgd2l0aCBDLWMgQy12IHYgdiB2LgoKKioqKiogRmlyc3QgYXJn dW1lbnQ6IEh5ZHJhIG5hbWUKClRoaXMgYXJndW1lbnQgZGVjaWRlcyB0aGUgcHJlZml4IHRvIGFs bCB0aGUgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBnZW5lcmF0ZWQuIEluIHRoaXMgY2FzZSB0aGUg Zm9sbG93aW5nIGZ1bmN0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZDoKCiMrQkVHSU5fRVhBTVBMRQpo eWRyYS10b2dnbGUvYWJicmV2LW1vZGUKaHlkcmEtdG9nZ2xlL3RvZ2dsZS1kZWJ1Zy1vbi1lcnJv cgpoeWRyYS10b2dnbGUvdG9nZ2xlLWRlYnVnLW9uLWVycm9yCmh5ZHJhLXRvZ2dsZS9hdXRvLWZp bGwtbW9kZQpoeWRyYS10b2dnbGUvdG9nZ2xlLXRydW5jYXRlLWxpbmVzCmh5ZHJhLXRvZ2dsZS93 aGl0ZXNwYWNlLW1vZGUKaHlkcmEtdG9nZ2xlL3JlY2VudGVyLXRvcC1ib3R0b20KaHlkcmEtdG9n Z2xlL25pbApoeWRyYS10b2dnbGUvYm9keQojK0VORF9FWEFNUExFCgpUaGUgZmluYWwgZnVuY3Rp b24gY2FsbHMgdGhlIEh5ZHJhcyBib2R5LCBkaXNwbGF5aW5nIHRoZSBoaW50IGluIHRoZSBlY2hv IGFyZWEgYW5kIHNldHRpbmcgdGhlIHRyYW5zaWVudCBtYXAuIEl0J3MgdGhlIHJldHVybiByZXN1 bHQgb2YgZGVmaHlkcmEsIHRoYXRzIHdoeSBpdCB3YXMgcG9zc2libGUgdG8gcGFzcyBpdCB0byBn bG9iYWwtc2V0LWtleSBpbiB0aGUgZmlyc3QgZXhhbXBsZS4KCioqKioqIFNlY29uZCBhcmd1bWVu dDogSHlkcmEgYm9keQoKVGhlIEh5ZHJhIGJvZHkgY29uc2lzdHMgb2Y6CgphIG1hcCB1c2VkIGZv ciBiaW5kaW5nLCBsaWtlIGdsb2JhbC1tYXAgb3IgYysrLW1vZGUtbWFwIG9yIHByb2plY3RpbGUt bW9kZS1tYXAKCnRoZSBib2R5IHByZWZpeDogaXRzIGEgc3RyaW5nIHBhc3NhYmxlIHRvIGtiZCB0 aGF0IHdpbGwgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGhlYWRzJyBwcmVmaXhlcyB0byBi aW5kIHRoZSBmdW5jdGlvbnMKYW4gb3B0aW9uYWwgcGxpc3QsIHdoaWNoIGN1cnJlbnRseSByZWNv Z25pemVzIG9ubHkgdGhlIDpjb2xvciBrZXksIHdoaWNoIGluIHR1cm4gY2FuIGJlIGVpdGhlciBy ZWQgKHRoZSBvbGQgYmVoYXZpb3IpIG9yIGJsdWUuCgpJdHMgcG9zc2libGUgdG8gb21pdCB0aGUg bWFwIGFuZCB0aGUgYm9keSBwcmVmaXggc2ltdWx0YW5lb3VzbHkgKGl0IGRvZXNuJ3QgbWFrZSBz ZW5zZSB0byBvbWl0IG9uZSBidXQgbm90IHRoZSBvdGhlciksIG9yIGp1c3QgcGFzcyAoKSBpZiB5 b3Ugd2FudCB0byBnZXQgYSByZWQgSHlkcmEgYm9keSB0aGF0IHlvdSBjYW4gYmluZCB5b3Vyc2Vs Zi4KCioqKioqIFRoaXJkIGFyZ3VtZW50OiBIeWRyYSBoaW50CgpUaGlzIHN0cmluZyB3aWxsIGJl IHVzZWQgaW4gdGhlIGVjaG8gYXJlYSB0byBkaXN0aW5ndWlzaCB0aGUgY3VycmVudCBIeWRyYS4g VGhpcyBpcyBvcHRpb25hbCwgaXQgY2FzZSB5b3UgZG9uJ3QgcHJvdmlkZSBpdCwgaXQgd2lsbCBk ZWZhdWx0IHRvICJoeWRyYSIuCgoqKioqKiBGb3VydGggYXJndW1lbnQ6IEh5ZHJhIGhlYWRzCgpF YWNoIEh5ZHJhIGhlYWQgaXMgYSBsaXN0IG9mOgp0aGUga2V5IGV4dGVuc2lvbgp0aGUgZnVuY3Rp b24Kb3B0aW9uYWwgaGludApvcHRpb25hbCBwbGlzdC4KQWdhaW4sIHRoZSBwbGlzdCByZWNvZ25p emVzIG9ubHkgOmNvbG9yIGN1cnJlbnRseS4gVGhlIGNvbG9yIGlzIGluaGVyaXRlZCBmcm9tIHRo ZSBib2R5LCBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSBpdC4gSW4gdHVybiwgdGhlIGJvZHkgY29sb3Ig aXMgcmVkIGlmIHlvdSBkb250IHNwZWNpZnkgaXQuCgoqKioqKiBsYXVuY2ggYSBkaWZmZXJlbnQg aHlkcmEgZnJvbSBhIGh5ZHJhCnRvIGRvIHNvIHlvdSB3b3VsZCB3YW50IHRvIGlzc3VlIHRoZSBu YW1lL2JvZHkgY29tbWFuZCBvZiB0aGUgbmV3IGh5ZHJhLCDigoZJbiBleGFtcGxl4oKGCiMrQkVH SU5fRVhBTVBMRQooZ2xvYmFsLXNldC1rZXkKIChrYmQgIkMtTS1vIikKIChkZWZoeWRyYSBoeWRy YS1vcmctZWRpdCAoKQogICAieWFzIGNvbW1hbmQgIgogICAoInQiIG9yZy1pbnNlcnQtdG9kby1o ZWFkaW5nLXJlc3BlY3QtY29udGVudCAiaW5zZXJ0IFRPRE8iIDpjb2xvciBibHVlKQogICAoImQi IG9yZy1jdXQtc3VidHJlZSAgIm9yZyBjdXQiIDpjb2xvciBibHVlKQogICAoIngiIGh5ZHJhLW9y ZzIvYm9keSAgICJpbnMgZGF0ZSIgOmNvbG9yIGJsdWUpCgojK0VORF9FWEFNUExFCgpoZXJlIHdl IGNhbGwgb24gYSBkaWZmZXJlbnQgaHlkcmEgYGh5ZHJhLW9yZy9ib2R5YCB2aWEga2V5YmluZCB4 CioqKioqIGNvbG9ycyAKU2luY2UgdmVyc2lvbiAwLjUuMCwgSHlkcmEncyBoZWFkcyBhbGwgaGF2 ZSBhIGNvbG9yIGFzc29jaWF0ZWQgd2l0aCB0aGVtOgoKYHJlZGAgKGRlZmF1bHQpIG1lYW5zIHRo ZSBjYWxsaW5nIHRoaXMgaGVhZCB3aWxsICpub3QqIHZhbnF1aXNoIHRoZSBIeWRyYQpgYmx1ZWAg bWVhbnMgdGhhdCB0aGUgSHlkcmEgd2lsbCBiZSB2YW5xdWlzaGVkIGFmdGVyIGNhbGxpbmcgdGhp cyBoZWFkCmBhbWFyYW50aGAgSHlkcmFzIHdpdGggYW1hcmFudGggYm9keSBhcmUgaW1wb3NzaWJs ZSB0byBxdWl0IHdpdGggYW55IGJpbmRpbmcgZXhjZXB0IGEgYmx1ZSBoZWFkLiBBIGNoZWNrIGZv ciBhdCBsZWFzdCBvbmUgYmx1ZSBoZWFkIGV4aXN0cyBpbiBkZWZoeWRyYSwgc28gdGhhdCB5b3Ug ZG9uJ3QgZ2V0IHN0dWNrIGJ5IGFjY2lkZW50LgoKcmVtZW1iZXJ0IHRoYXQgaGVhZHMgY2FuIGlu aGVyaXQgdGhlIGNvbG9yIGZyb20gdGhlIGJvZHksIHRoZSBmb2xsb3dpbmcgaXMgZXF1aXZhbGVu dDoKCiMrQkVHSU5fRVhBTVBMRQooZ2xvYmFsLXNldC1rZXkKIChrYmQgIkMtYyBDLXYiKQogKGRl Zmh5ZHJhIHRvZ2dsZSAoOmNvbG9yIGJsdWUpCiAgICJ0b2dnbGUiCiAgICgiYSIgYWJicmV2LW1v ZGUgImFiYnJldiIpCiAgICgiZCIgdG9nZ2xlLWRlYnVnLW9uLWVycm9yICJkZWJ1ZyIpCiAgICgi ZiIgYXV0by1maWxsLW1vZGUgImZpbGwiKQogICAoInQiIHRvZ2dsZS10cnVuY2F0ZS1saW5lcyAi dHJ1bmNhdGUiKQogICAoInciIHdoaXRlc3BhY2UtbW9kZSAid2hpdGVzcGFjZSIpCiAgICgicSIg bmlsICJjYW5jZWwiKSkpCgojK0VORF9FWEFNUExFCioqKioqIENhbiBIeWRyYXMgY2FuIGJlIGhl bHBmdWw/ClRoZXkgY2FuLCBpZgoKCiMrQkVHSU5fRVhBTVBMRQooc2V0cSBoeWRyYS1pcy1oZWxw ZnVsIHQpCgojK0VORF9FWEFNUExFClRoaXMgaXMgdGhlIGRlZmF1bHQgc2V0dGluZy4gSW4gdGhp cyBjYXNlLCB5b3UnbGwgZ2V0IGEgaGludCBpbiB0aGUgZWNobyBhcmVhIGNvbnNpc3Rpbmcgb2Yg Y3VycmVudCBIeWRyYSdzIGJhc2UgY29tbWVudCBhbmQgaGVhZHMuIFlvdSBjYW4gZXZlbiBhZGQg Y29tbWVudHMgdG8gdGhlIGhlYWRzIGxpa2UgdGhpczoKCiMrQkVHSU5fRVhBTVBMRQooZGVmaHlk cmEgaHlkcmEtem9vbSAoZ2xvYmFsLW1hcCAiPGYyPiIpCiAgInpvb20iCiAgKCJnIiB0ZXh0LXNj YWxlLWluY3JlYXNlICJpbiIpCiAgKCJsIiB0ZXh0LXNjYWxlLWRlY3JlYXNlICJvdXQiKSkKCiMr RU5EX0VYQU1QTEUKV2l0aCB0aGlzLCB5b3UnbGwgc2VlIHpvb206IFtnXTogaW4sIFtsXTogb3V0 LiBpbiB5b3VyIGVjaG8gYXJlYSwgb25jZSB0aGUgem9vbSBIeWRyYSBiZWNvbWVzIGFjdGl2ZS4K KioqKiogYXdlc29tZS1kb2NzdHJpbmcgKGhlbHAgbWVudXMpCgpUaGlzIGNhbiBiZSBhIHNpbXBs ZSBzdHJpbmcgdXNlZCB0byBidWlsZCB0aGUgZmluYWwgaHlkcmEgaGludC4gSG93ZXZlciwgaWYg eW91IHN0YXJ0IGl0IHdpdGggYSBuZXdsaW5lLCB0aGUga2V5LWhpZ2hsaWdodGluZyBhbmQgUnVi eS1zdHlsZSBzdHJpbmcgaW50ZXJwb2xhdGlvbiBiZWNvbWVzIGVuYWJsZWQsIGFzIHlvdSBjYW4g c2VlIGluIGh5ZHJhLWJ1ZmZlci1tZW51IGFib3ZlLgoKVG8gaGlnaGxpZ2h0IGEga2V5LCBqdXN0 IHdyYXAgaXQgaW4gdW5kZXJzY29yZXMuCgokTm90ZSQgdGhhdCB0aGUga2V5IG11c3QgYmVsb25n IHRvIG9uZSBvZiB0aGUgaGVhZHMuCgogVGhlIGtleSB3aWxsIGJlIGhpZ2hsaWdodGVkIHdpdGgg dGhlIGNvbG9yIHRoYXQgaXMgYXBwcm9wcmlhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBrZXks IGkuZS4gaWYgdGhlIGtleSB3aWxsIG1ha2UgdGhlIGh5ZHJhIGV4aXQsIHRoZSBjb2xvciB3aWxs IGJlIGJsdWUuCgpUbyBpbnNlcnQgYW4gZW1wdHkgY2hhcmFjdGVyLCB1c2UgXi4gVGhlIG9ubHkg dXNlIG9mIHRoaXMgaXMgdG8gaGF2ZSB5b3VyIGNvZGUgYWxpZ25lZCBhcyBuaWNlbHkgYXMgdGhl IHJlc3VsdC4KClRvIGluc2VydCBhIGR5bmFtaWMgRWxpc3AgdmFyaWFibGUsIHVzZSAlYCBmb2xs b3dlZCBieSB0aGUgdmFyaWFibGUuIEVhY2ggdGltZSB0aGUgdmFyaWFibGUgY2hhbmdlcyBkdWUg dG8gYSBoZWFkLCB0aGUgZG9jc3RyaW5nIHdpbGwgYmUgdXBkYXRlZC4gZm9ybWF0LXN0eWxlIHdp ZHRoIHNwZWNpZmllcnMgY2FuIGJlIHVzZWQuCgpUbyBpbnNlcnQgYSBkeW5hbWljIEVsaXNwIGV4 cHJlc3Npb24sIHVzZSBlLmcuICUobGVuZ3RoIChkaXJlZC1nZXQtbWFya2VkLWZpbGVzKSkuIElm IGEgaGVhZCB3aWxsIGNoYW5nZSB0aGUgYW1vdW50IG9mIG1hcmtlZCBmaWxlcywgZm9yIGV4YW1w bGUsIGl0IHdpbGwgYmUgYXBwcm9wcmlhdGVseSB1cGRhdGVkLgoKSWYgdGhlIHJlc3VsdCBvZiB0 aGUgRWxpc3AgZXhwcmVzc2lvbiBpcyBhIHN0cmluZyBhbmQgeW91IGRvbid0IHdhbnQgdG8gcXVv dGUgaXQsIHVzZSB0aGlzIGZvcm06ICVzKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nICJkdSAtaHMi KS4KCioqKiogSHlkcmEgZXhhbXBsZSBhbmQgcmVjaXBlcwoqKioqKiBoZWxtLXJlbGF0ZWQgZnVu Y3Rpb25zCiMrQkVHSU5fRVhBTVBMRQooZ2xvYmFsLXNldC1rZXkKICLOuiIKIChkZWZoeWRyYSBo eWRyYS1oZWxtICg6Y29sb3IgYmx1ZSkKICAgImhlbG0iCiAgICgiZiIgcHJvamVjdGlsZS1maW5k LWZpbGUgImZpbGUiKQogICAoInciIGhlbG0tb3JnLXdpa2kgIndpa2kiKQogICAoInIiIGhlbG0t cmVjZW50ZiAicmVjZW50IikKICAgKCJzIiBoZWxtLXN3b29wICJzd29vcCIpCiAgICgicSIgbmls ICJxdWl0IikpKQojK0VORF9FWEFNUExFCioqKioqIHVzZSBudW1yaWMgcHJlZml4ZXMKTm93IGl0 J3MgcG9zc2libGUgdG8gd3JpdGUgdGhpczoKCiMrQkVHSU5fRVhBTVBMRQooZ2xvYmFsLXNldC1r ZXkKIChrYmQgIkMteiIpCiAoZGVmaHlkcmEgaHlkcmEtdmkgKCkKICAgInZpIgogICAoImwiIGZv cndhcmQtY2hhcikKICAgKCJoIiBiYWNrd2FyZC1jaGFyKQogICAoImoiIG5leHQtbGluZSkKICAg KCJrIiBwcmV2aW91cy1saW5lKSkpCiMrRU5EX0VYQU1QTEUKCkFuZCBub3cgfkMteiA1ajdsfiB3 aWxsIG1vdmUgNSBsaW5lcyBkb3duIGFuZCA3IGNoYXJhY3RlcnMgbGVmdCwgc3RpbGwgd2l0aCB0 aGUgb3B0aW9uIHRvIHByZXNzIGgsIGosIGssIGwgc29tZSBtb3JlLgoKQWRkaXRpb25hbGx5IH5D LXogQy11IEMtdSBDLXUga34gd2lsbCBtb3ZlIDY0IGxpbmVzIHVwLCBzaW5jZSBDLXUgbXVsdGlw bGllcyBpdHMgYXJndW1lbnQgYnkgNCBlYWNoIHRpbWUuCgpvdGhlciBleGFtcGxlIAoKIytCRUdJ Tl9FWEFNUExFCihkZWZoeWRyYSBoeWRyYS16b29tIChnbG9iYWwtbWFwICI8ZjI+IikKICAiem9v bSIKICAoImciIHRleHQtc2NhbGUtaW5jcmVhc2UgImluIikKICAoImwiIHRleHQtc2NhbGUtZGVj cmVhc2UgIm91dCIpKQojK0VORF9FWEFNUExFCgpOb3csIDxmMj4gZyA0ZyAybCB3aWxsIHpvb20g aW4gNSB0aW1lcywgYW5kIHpvb20gb3V0IDIgdGltZXMgZm9yIGEgdG90YWwgb2YgKzMgem9vbS4K KioqKiogbW92ZS1zcGxpdHRlcgoKIytCRUdJTl9FWEFNUExFCihkZWZoeWRyYSBoeWRyYS1zcGxp dHRlciAoZ2xvYmFsLW1hcCAiQy1NLXMiKQogICJzcGxpdHRlciIKICAoImgiIGh5ZHJhLW1vdmUt c3BsaXR0ZXItbGVmdCkKICAoImoiIGh5ZHJhLW1vdmUtc3BsaXR0ZXItZG93bikKICAoImsiIGh5 ZHJhLW1vdmUtc3BsaXR0ZXItdXApCiAgKCJsIiBoeWRyYS1tb3ZlLXNwbGl0dGVyLXJpZ2h0KSkK IytFTkRfRVhBTVBMRQoKVGhpcyBIeWRyYSBjYW4gYmVuZWZpdCBmcm9tIG51bWVyaWMgYXJndW1l bnRzIGFzIHdlbGw6IEMtTS1zIGwgNDBsIHdpbGwgcXVpY2tseSBtYWtlIHRoZSByaWdodCB3aW5k b3cgYSBsb3Qgc21hbGxlci4KCklmIEkgd2FudGVkIHRvIHR5cGUgQy1NLXMgNDAgbCwgSSB3b3Vs ZCBoYXZlIHRvIHVzZSB0aGlzIGRlZmluaXRpb24gaW5zdGVhZDoKCiMrQkVHSU5fRVhBTVBMRQoo Z2xvYmFsLXNldC1rZXkKIChrYmQgIkMtTS1zIikKIChkZWZoeWRyYSBoeWRyYS1zcGxpdHRlciAo KQogICAic3BsaXR0ZXIiCiAgICgiaCIgaHlkcmEtbW92ZS1zcGxpdHRlci1sZWZ0KQogICAoImoi IGh5ZHJhLW1vdmUtc3BsaXR0ZXItZG93bikKICAgKCJrIiBoeWRyYS1tb3ZlLXNwbGl0dGVyLXVw KQogICAoImwiIGh5ZHJhLW1vdmUtc3BsaXR0ZXItcmlnaHQpKSkKIytFTkRfRVhBTVBMRQoKRm9y IHRoYXQgY2FzZSwgSSB3b3VsZCBnZXQgdGhlIGhpbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgQy1NLXMg YW5kIHdvdWxkIGJlIGFibGUgdG8gZ2l2ZSB0aGUgbnVtZXJpYyBhcmd1bWVudCBpbW1lZGlhdGVs eSwgYnV0IEkgd291bGRuJ3QgYmUgYWJsZSB0byBiaW5kIGFueXRoaW5nIGVsc2Ugb24gQy1NLXMg YXMgYSBwcmVmaXgsIGUuZy46CgojK0JFR0lOX0VYQU1QTEUKKGdsb2JhbC1zZXQta2V5IChrYmQg IkMtTS1zIHoiKSAncmVjZW50ZXItdG9wLWJvdHRvbSkKIytFTkRfRVhBTVBMRQoKClRoZSBjb2Rl IGFib3ZlIHdvdWxkIGdpdmUgdGhlIGVycm9yICJLZXkgc2VxdWVuY2UgQy1NLXMgeiBzdGFydHMg d2l0aCBub24tcHJlZml4IGtleSBDLU0tcyIuIFNvIHlvdSBjYW4gcGljayB0aGUgbWV0aG9kIHRo YXQgeW91IHByZWZlciwgdGhlIGNob2ljZSBpcyB0aGVyZS4KCioqKioqIHJlY3RhbmdsZSBzZWxl Y3RvciAKIytCRUdJTl9FWEFNUExFCihkZWZ1biBvcmEtZXgtcG9pbnQtbWFyayAoKQogIChpbnRl cmFjdGl2ZSkKICAoaWYgcmVjdGFuZ2xlLW1hcmstbW9kZQogICAgICAoZXhjaGFuZ2UtcG9pbnQt YW5kLW1hcmspCiAgICAobGV0ICgobWsgKG1hcmspKSkKICAgICAgKHJlY3RhbmdsZS1tYXJrLW1v ZGUgMSkKICAgICAgKGdvdG8tY2hhciBtaykpKSkKCihkZWZoeWRyYSBoeWRyYS1yZWN0YW5nbGUg KDpib2R5LXByZSAocmVjdGFuZ2xlLW1hcmstbW9kZSAxKQogICAgICAgICAgICAgICAgICAgICAg ICAgICA6Y29sb3IgcGluawogICAgICAgICAgICAgICAgICAgICAgICAgICA6cG9zdCAoZGVhY3Rp dmF0ZS1tYXJrKSkKICAiCiAgXl9rX14gICAgIF9kX2VsZXRlICAgIF9zX3RyaW5nICAgICB8XFwg ICAgIF8sLCwtLSwsXwpfaF8gICBfbF8gICBfb19rICAgICAgICBfeV9hbmsgICAgICAgLyxgLi0n YCcgICAuXyAgXC07OyxfCiAgXl9qX14gICAgIF9uX2V3LWNvcHkgIF9yX2VzZXQgICAgIHwsNC0g ICkgKV8gICAuOy4oICBgJy0nCl5eXl4gICAgICAgIF9lX3hjaGFuZ2UgIF91X25kbyAgICAgJy0t LScnKF8vLl8pLScoX1xfKQpeXl5eICAgICAgICBeIF4gICAgICAgICBfcF9hc3RlCiIKICAoImgi IGJhY2t3YXJkLWNoYXIgbmlsKQogICgibCIgZm9yd2FyZC1jaGFyIG5pbCkKICAoImsiIHByZXZp b3VzLWxpbmUgbmlsKQogICgiaiIgbmV4dC1saW5lIG5pbCkKICAoImUiIG9yYS1leC1wb2ludC1t YXJrIG5pbCkKICAoIm4iIGNvcHktcmVjdGFuZ2xlLWFzLWtpbGwgbmlsKQogICgiZCIgZGVsZXRl LXJlY3RhbmdsZSBuaWwpCiAgKCJyIiAoaWYgKHJlZ2lvbi1hY3RpdmUtcCkKICAgICAgICAgICAo ZGVhY3RpdmF0ZS1tYXJrKQogICAgICAgICAocmVjdGFuZ2xlLW1hcmstbW9kZSAxKSkgbmlsKQog ICgieSIgeWFuay1yZWN0YW5nbGUgbmlsKQogICgidSIgdW5kbyBuaWwpCiAgKCJzIiBzdHJpbmct cmVjdGFuZ2xlIG5pbCkKICAoInAiIGtpbGwtcmVjdGFuZ2xlIG5pbCkKICAoIm8iIG5pbCBuaWwp KQooZ2xvYmFsLXNldC1rZXkgKGtiZCAiQy14IFNQQyIpICdoeWRyYS1yZWN0YW5nbGUvYm9keSkK CiMrRU5EX0VYQU1QTEUKKioqKiogZ251cyBoeWRyYQoKIytCRUdJTl9FWEFNUExFCihkZWZoeWRy YSBoeWRyYS1nbnVzLXJlcGx5ICg6Y29sb3IgYmx1ZSkKICAicmVwbHkiCiAgKCJvIiBnbnVzLXN1 bW1hcnktcmVwbHktd2l0aC1vcmlnaW5hbCAib25lIikKICAoIk8iIGdudXMtc3VtbWFyeS1yZXBs eSkKICAoImEiIGdudXMtc3VtbWFyeS13aWRlLXJlcGx5LXdpdGgtb3JpZ2luYWwgImFsbCIpCiAg KCJBIiBnbnVzLXN1bW1hcnktd2lkZS1yZXBseSkKICAoInUiIGdudXMtc3VtbWFyeS12ZXJ5LXdp ZGUtcmVwbHktd2l0aC1vcmlnaW5hbCAidW5pdmVyc2UiKQogICgiVSIgZ251cy1zdW1tYXJ5LXZl cnktd2lkZS1yZXBseSkKICAoInEiIG5pbCAicXVpdCIpKQooZGVmaW5lLWtleSBnbnVzLXN1bW1h cnktbW9kZS1tYXAgInIiICdoeWRyYS1nbnVzLXJlcGx5L2JvZHkpCiMrRU5EX0VYQU1QTEUKCioq IGluZGVudCBndWlkZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBmMzNlMWRjYy0zNWY5 LTQzODYtOTFlOC1hMDZiMWQ3ZjVkMGUKICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBpbmRlbnQtZ3VpZGUKOmVuc3VyZSB0Cjpjb25maWcK KQojK0VORF9TUkMKKiogaW50ZXJsZWF2ZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA1 NGE5OTA1Zi02N2Q1LTQwOGMtOTRjMy0yNmQ3MTZhN2M4YjMKICAgOkVORDoKaHR0cHM6Ly9naXRo dWIuY29tL3J1ZG9sZm9jaHJpc3QvaW50ZXJsZWF2ZQoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBpbnRlcmxlYXZlCiA6ZW5zdXJlIHQKIDpjb25maWcK IAogKQojK0VORF9TUkMgCgoqKiBpc3BlbGwKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAg NDFlYzMxNTItYjMzZS00NDM3LWJlOTctNzFlY2E5OGNjNDdkCiAgIDpFTkQ6CiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBpc3BlbGwtcGVyc29uYWwtZGljdGlvbmFy eSAifi8uZW1hY3MuZC9pc3BlbGwtZGljby1wZXJzb25hbCIpCjs7YmVsb3cgY29tbWFuZCBza2lw cHMgY2hlY2tpbmcgaW5zaWRlIG9yZyBtb2RlIGNvZGUgYmxvY2tzIAooYWRkLXRvLWxpc3QgJ2lz cGVsbC1za2lwLXJlZ2lvbi1hbGlzdCAnKCIjXFwrYmVnaW5fc3JjIi4gIiNcXCtlbmRfc3JjIikp CiMrRU5EX1NSQwoqKiBrZXlmcmVxCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGRlNmIx OWYwLTgwN2MtNDFjNS04Y2ZkLWFiNzY1MjYxZjBiNQogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBrZXlmcmVxCiA6ZW5zdXJlIHQKIDpj b25maWcKIChyZXF1aXJlICdrZXlmcmVxKQooc2V0cSBrZXlmcmVxLWV4Y2x1ZGVkLWNvbW1hbmRz CiAgICAgICcoc2VsZi1pbnNlcnQtY29tbWFuZAogICAgICAgIGFib3J0LXJlY3Vyc2l2ZS1lZGl0 CiAgICAgICAgcHJldmlvdXMtbGluZQogICAgICAgIG5leHQtbGluZSkpCihrZXlmcmVxLW1vZGUg MSkKKGtleWZyZXEtYXV0b3NhdmUtbW9kZSAxKQogKQojK0VORF9TUkMgCgoKKiogbGluayBoaW50 CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGU2ZTg2MTFiLThiMGItNGVmYS05OTVjLTUy YzQxZDE3MmM5NgogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vbm9jdHVpZC9saW5rLWhpbnQu ZWwKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBsaW5r LWhpbnQKIDplbnN1cmUgdAogOmNvbmZpZwogOzsgVXNlIGNocm9taXVtIHRvIG9wZW4gdXJscwoo c2V0cSBicm93c2UtdXJsLWJyb3dzZXItZnVuY3Rpb24gJ2Jyb3dzZS11cmwtY2hyb21pdW0pCjs7 IFlvdSBjYW4gYWx0ZXJuYXRpdmVseSBjaGFuZ2UgdGhpcyBzZXR0aW5nIGluIHRoZSBjb25maWcK Cjs7OyBtdTRlCihkZWZ1biBteS9tdTRlLW9wZW4tYWxsLWF0dGFjaG1lbnRzICgpCiAgIk9wZW4g YWxsIHZpc2libGUgbXU0ZSBhdHRhY2htZW50cy4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChs aW5rLWhpbnQtaWdub3JlLXR5cGVzCiAgICAgICAgIChyZW1vdmUgJ211NGUtYXR0YWNobWVudCBs aW5rLWhpbnQtYWxsLXR5cGVzLWxpc3QpKQogICAgICAgIGxpbmstaGludC1hY3Qtb24tYWxsLWln bm9yZS10eXBlcykKICAgIChsaW5rLWhpbnQtb3Blbi1hbGwtbGlua3MpKSkKICkKIytFTkRfU1JD CioqIGxhdGV4LXByZXZpZXctcGFuZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA0Zjdi NmZkMy04ZDQ2LTRmNDEtOWQ2OC02YWFlMDI0MzI2MWMKICAgOkVORDoKaHR0cHM6Ly93d3cuZW1h Y3N3aWtpLm9yZy9lbWFjcy9MYVRlWFByZXZpZXdQYW5lCgojK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGxhdGV4LXByZXZpZXctcGFuZQogOmVuc3VyZSB0 CiA6Y29uZmlnCiAKICkKIytFTkRfU1JDIAoqKiBUT0RPIGx5cmljcwpAd29ya3MgZm9yIGVtYWNz IDI1QCAgICAKaHR0cHM6Ly9naXRodWIuY29tL2VtYWNzLXBlL2x5cmljcy5lbAojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAodXNlLXBhY2thZ2UgbHlyaWNzIAogIDs7 ICA6ZW5zdXJlIHQKICA7OyAgOmNvbmZpZwogCiAgOzsgICkKIytFTkRfU1JDIAoKCgoqKiBtYWdp dAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBjZWI4ZmMwMS01NDM5LTRjNTQtOWUyMy01 MGUwMTAyMjUyM2QKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL21hZ2l0L21hZ2l0CiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgbWFnaXQKOmVuc3Vy ZSB0Cjpjb25maWcKKQojK0VORF9TUkMgCgoqKiBtYW5hZ2UtbWlub3ItbW9kZSAgCiAgIDpQUk9Q RVJUSUVTOgogICA6SUQ6ICAgICAgIGNiNjQwNmI0LTI1NGMtNGU1ZC04N2M3LTE5YTRiNmU4MzZk NwogICA6RU5EOgoKaHR0cHM6Ly9naXRodWIuY29tL1NoaW5nb0Z1a3V5YW1hL21hbmFnZS1taW5v ci1tb2RlCgpTZXQgbWlub3ItbW9kZXMgc3RhdHVzIGZvciBlYWNoIG1ham9yLW1vZGUgaW4gYWR2 YW5jZQoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIG1hbmFnZS1t aW5vci1tb2RlLWRlZmF1bHQKICAgICAgJygoZ2xvYmFsCiAgICAgICAgIChvbiAgIHJhaW5ib3ct bW9kZSkKICAgICAgICAgKG9mZiAgbGluZS1udW1iZXItbW9kZSkpCiAgICAgICAgIChlbWFjcy1s aXNwLW1vZGUKICAgICAgICAgKG9uICAgcmFpbmJvdy1kZWxpbWl0ZXJzLW1vZGUgZWxkb2MtbW9k ZSBzaG93LXBhcmVuLW1vZGUpKQogICAgICAgICAoanMyLW1vZGUKICAgICAgICAgKG9uICAgY29s b3ItaWRlbnRpZmllcnMtbW9kZSkKICAgICAgICAgKG9mZiAgZmx5Y2hlY2stbW9kZSkpKSkKIytF TkRfU1JDCgoqKiBtaWMtcGFyZW5zCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGQ0MGIw NDJjLWUzNjgtNDhmNS04N2ZjLTMxYzE3NGIxODJkOAogICA6RU5EOgpodHRwczovL3d3dy5lbWFj c3dpa2kub3JnL2VtYWNzL21pYy1wYXJlbi5lbApiZXR0ZXIgcGFyZW5zIG1hdGNoIHRoYW4gYnVs aXQgaW4gRW1hY3Mgb25lIAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVz ZS1wYWNrYWdlIG1pYy1wYXJlbgogOmVuc3VyZSB0CiA6Y29uZmlnCiAgKQojK0VORF9TUkMKKiog bXU0ZS1tYWlsZGlycy1leHRlbnNpb24KICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNTM5 NmQ4OWMtOTE5NC00MmUwLTg3NDAtNGEyMWVmMTA3N2JiCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHVi LmNvbS9hZ3BjaGlsL211NGUtbWFpbGRpcnMtZXh0ZW5zaW9uCiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQo7KHVzZS1wYWNrYWdlIG11NGUtbWFpbGRpcnMtZXh0ZW5zaW9uCjsg OmVuc3VyZSB0CjsgOmNvbmZpZwo7KHNldHEgbXU0ZS1tYWlsZGlycy1leHRlbnNpb24tdGl0bGUg Ik1haWwiKQo7KHNldHEgbXU0ZS1tYWlsZGlycy1leHRlbnNpb24tY3VzdG9tLWxpc3QgKHF1b3Rl ICgiSU5CT1giICJTdGFycmVkIiAgKSkpCjsgKQojK0VORF9TUkMKCioqIG11bHRpcGxlLWN1cnNv cnMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNmFiOGNjNjAtNmM5Yy00YmEyLWE3OGIt ZmMyNWVlNGRmOTI5CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9tYWduYXJzL211bHRpcGxl LWN1cnNvcnMuZWwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2UgbXVsdGlwbGUtY3Vyc29ycwogOmVuc3VyZSB0CiA6Y29uZmlnCiAocmVxdWlyZSAnbXVs dGlwbGUtY3Vyc29ycykKKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtUy1jIEMtUy1jIikgJ21jL2Vk aXQtbGluZXMpCgogKQojK0VORF9TUkMgCldoZW4geW91IHdhbnQgdG8gYWRkIG11bHRpcGxlIGN1 cnNvcnMgbm90IGJhc2VkIG9uIGNvbnRpbnVvdXMgbGluZXMsIGJ1dCBiYXNlZCBvbiBrZXl3b3Jk cyBpbiB0aGUgYnVmZmVyLCB1c2U6CgooZ2xvYmFsLXNldC1rZXkgKGtiZCAiQy0+IikgJ21jL21h cmstbmV4dC1saWtlLXRoaXMpCihnbG9iYWwtc2V0LWtleSAoa2JkICJDLTwiKSAnbWMvbWFyay1w cmV2aW91cy1saWtlLXRoaXMpCihnbG9iYWwtc2V0LWtleSAoa2JkICJDLWMgQy08IikgJ21jL21h cmstYWxsLWxpa2UtdGhpcykKCkZpcnN0IG1hcmsgdGhlIHdvcmQsIHRoZW4gYWRkIG1vcmUgY3Vy c29ycy4KKiogbXVsdGktdGVybQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBmN2Y0ZDZh Yi03ZjI2LTQxOGYtYmZiNS1iMWU2ZTI2ODdhOWMKICAgOkVORDoKaHR0cHM6Ly93d3cuZW1hY3N3 aWtpLm9yZy9lbWFjcy10ZXN0L011bHRpVGVybQphbHNvOiBodHRwczovL2lsb3ZlZW1hY3Mud29y ZHByZXNzLmNvbS8yMDE0LzA5LzEwL2VtYWNzLWFzLWFuLWFkdmFuY2VkLXRlcm1pbmFsLW11bHRp cGxleGVyLwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2Fn ZSBtdWx0aS10ZXJtCiA6ZW5zdXJlIHQKIDpjb25maWcKKHNldHEgbXVsdGktdGVybS1wcm9ncmFt ICIvYmluL3pzaCIpCiApCiMrRU5EX1NSQwoqKiBubGludW0KICAgOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgMDk1NDkwYjYtZjJhMy00YTZlLWE3YzgtZTRmOGU4MDViNTA2CiAgIDpFTkQ6Cgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIG5saW51bQog OmVuc3VyZSB0CiA6Y29uZmlnCgogKQojK0VORF9TUkMKKiogbm90LW11Y2ggCgojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIG5vdG11Y2gKIDplbnN1cmUg dAogOmNvbmZpZwogCiApCiMrRU5EX1NSQwoqKiBub2ZlbHQgCgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBub2ZsZXQKICA6ZW5zdXJlIHQgKQooZGVm dW4gbWFrZS1jYXB0dXJlLWZyYW1lICgpCiAgIkNyZWF0ZSBhIG5ldyBmcmFtZSBhbmQgcnVuIG9y Zy1jYXB0dXJlLiIKICAoaW50ZXJhY3RpdmUpCiAgKG1ha2UtZnJhbWUgJygobmFtZSAuICJjYXB0 dXJlIikpKQogIChzZWxlY3QtZnJhbWUtYnktbmFtZSAiY2FwdHVyZSIpCiAgKGRlbGV0ZS1vdGhl ci13aW5kb3dzKQogIChub2ZsZXQgKChzd2l0Y2gtdG8tYnVmZmVyLW90aGVyLXdpbmRvdyAoYnVm KSAoc3dpdGNoLXRvLWJ1ZmZlciBidWYpKSkKICAgIChvcmctY2FwdHVyZSkpKQoKKGRlZmFkdmlj ZSBvcmctY2FwdHVyZS1maW5hbGl6ZSAKICAgIChhZnRlciBkZWxldGUtY2FwdHVyZS1mcmFtZSBh Y3RpdmF0ZSkgIAogICJBZHZpc2UgY2FwdHVyZS1maW5hbGl6ZSB0byBjbG9zZSB0aGUgZnJhbWUi ICAKICAoaWYgKGVxdWFsICJjYXB0dXJlIiAoZnJhbWUtcGFyYW1ldGVyIG5pbCAnbmFtZSkpICAK ICAgIChkZWxldGUtZnJhbWUpKSkKCihkZWZhZHZpY2Ugb3JnLWNhcHR1cmUtZGVzdHJveSAKICAg IChhZnRlciBkZWxldGUtY2FwdHVyZS1mcmFtZSBhY3RpdmF0ZSkgIAogICJBZHZpc2UgY2FwdHVy ZS1kZXN0cm95IHRvIGNsb3NlIHRoZSBmcmFtZSIgIAogIChpZiAoZXF1YWwgImNhcHR1cmUiIChm cmFtZS1wYXJhbWV0ZXIgbmlsICduYW1lKSkgIAogICAgKGRlbGV0ZS1mcmFtZSkpKSAgCgojK0VO RF9TUkMKCioqIGhlbG0tbm90bXVjaApodHRwczovL2dpdGh1Yi5jb20veHVjaHVueWFuZy9oZWxt LW5vdG11Y2gKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2Fn ZSBoZWxtLW5vdG11Y2gKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5EX1NSQyAKCgoKKiog b3JnLXJlZgogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBhNmI4YzRmOC05NjkyLTRmMTUt YmJlZS1jYTAzMDNhODZiZDYKICAgOkVORDoKKioqIGNvbmZpZyAKICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICA4ZjdlNzk0YS1mMjQwLTQ0MWUtYWMwYi1hN2RlNzljZjU3MzEKICAgIDpF TkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICh1c2UtcGFja2FnZSBv cmctcmVmIAogICA6ZW5zdXJlIHQKICAgOmNvbmZpZwoocmVxdWlyZSAnb3JnLXJlZikKOzsgZm9y IHBkZiBzdXBwb3J0ICAKKHJlcXVpcmUgJ29yZy1yZWYtcGRmKQoocmVxdWlyZSAnb3JnLXJlZi11 cmwtdXRpbHMpCihyZXF1aXJlICdvcmctcmVmLXdvcykKKHJlcXVpcmUgJ29yZy1yZWYtcHVibWVk KQo7OyhzZXRxIHJlZnRleC1kZWZhdWx0LWJpYmxpb2dyYXBoeSAnKCIvaG9tZS96ZWx0YWsvb3Jn L2ZpbGVzL1VuaS9wYXBlcnMvemVsdGFrLnBhcGVycy5iaWIiKSkKCihzZXRxIHJlZnRleC1kZWZh dWx0LWJpYmxpb2dyYXBoeQogICAgICAocXVvdGUKICAgICAgICgiL2hvbWUvemVsdGFrL29yZy9m aWxlcy9VbmkvcGFwZXJzL2xpYnJhcnkuYmliIiAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9Vbmkv cGFwZXJzL3plbHRhay5wYXBlcnMuYmliIikpKQoKICA7OyBzZWUgb3JnLXJlZiBmb3IgdXNlIG9m IHRoZXNlIHZhcmlhYmxlcwooc2V0cSBvcmctcmVmLWJpYmxpb2dyYXBoeS1ub3RlcyAiL2hvbWUv emVsdGFrL29yZy9maWxlcy9VbmkvcGFwZXJzL25vdGVzLyIKICAgICAgICBvcmctcmVmLWRlZmF1 bHQtYmlibGlvZ3JhcGh5ICcoIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL3BhcGVycy96ZWx0 YWsucGFwZXJzLmJpYiIgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL3BhcGVycy9saWJyYXJ5 LmJpYiIgKQogICAgICAgIG9yZy1yZWYtcGRmLWRpcmVjdG9yeSAiL2hvbWUvemVsdGFrL1N5bmMv VW5pL3BkZl9saWIvIikKCihzZXRxIG9yZy1yZWYtY29tcGxldGlvbi1saWJyYXJ5ICdvcmctcmVm LWl2eS1iaWJ0ZXgpCgogIChzZXRxIGJpYnRleC1hdXRva2V5LXllYXItbGVuZ3RoIDQKICAgICAg ICBiaWJ0ZXgtYXV0b2tleS1uYW1lLXllYXItc2VwYXJhdG9yICItIgogICAgICAgIGJpYnRleC1h dXRva2V5LXllYXItdGl0bGUtc2VwYXJhdG9yICItIgogICAgICAgIGJpYnRleC1hdXRva2V5LXRp dGxld29yZC1zZXBhcmF0b3IgIi0iCiAgICAgICAgYmlidGV4LWF1dG9rZXktdGl0bGV3b3JkcyAy CiAgICAgICAgYmlidGV4LWF1dG9rZXktdGl0bGV3b3Jkcy1zdHJldGNoIDEKICAgICAgICBiaWJ0 ZXgtYXV0b2tleS10aXRsZXdvcmQtbGVuZ3RoIDUpCgo7Ozsgb3BlbiBwZGZzIGludGVybmFsbHkg CihkZWZ1biBteS9vcmctcmVmLW9wZW4tcGRmLWF0LXBvaW50ICgpCiAgIk9wZW4gdGhlIHBkZiBm b3IgYmlidGV4IGtleSB1bmRlciBwb2ludCBpZiBpdCBleGlzdHMuIgogIChpbnRlcmFjdGl2ZSkK ICAobGV0KiAoKHJlc3VsdHMgKG9yZy1yZWYtZ2V0LWJpYnRleC1rZXktYW5kLWZpbGUpKQogICAg ICAgICAoa2V5IChjYXIgcmVzdWx0cykpCiAgICAgICAgIChwZGYtZmlsZSAoZnVuY2FsbCBvcmct cmVmLWdldC1wZGYtZmlsZW5hbWUtZnVuY3Rpb24ga2V5KSkpCiAgICAoaWYgKGZpbGUtZXhpc3Rz LXAgcGRmLWZpbGUpCiAgICAgICAgKGZpbmQtZmlsZSBwZGYtZmlsZSkKICAgICAgKG1lc3NhZ2Ug Ik5vIFBERiBmb3VuZCBmb3IgJXMiIGtleSkpKSkKCihzZXRxIG9yZy1yZWYtb3Blbi1wZGYtZnVu Y3Rpb24gJ215L29yZy1yZWYtb3Blbi1wZGYtYXQtcG9pbnQpCgoKOzsgZml4IG5pbCBpc3N1ZQoo ZGVmdW4gb3JnLXJlZi1yZW1vdmUtbmlsICgpCiAgKHNhdmUtcmVzdHJpY3Rpb24KICAgIChiaWJ0 ZXgtbmFycm93LXRvLWVudHJ5KQogICAgKGJpYnRleC1iZWdpbm5pbmctb2YtZW50cnkpCiAgICAo d2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJce25pbFx9IiBuaWwgdCkKICAgICAgKHJlcGxhY2Ut bWF0Y2ggInt9IikpKSkKCihhZGQtdG8tbGlzdCAnb3JnLXJlZi1jbGVhbi1iaWJ0ZXgtZW50cnkt aG9vayAnb3JnLXJlZi1yZW1vdmUtbmlsIHQpCiAgICkKIytFTkRfU1JDCioqIG9yZyBsaW5rIGVk aXQKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYzZkZGViY2EtNjI0My00N2Q3LWE4Njgt NjE1MmUyODM5NDQ5CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9reWxlYW0vb3JnLWxpbmst ZWRpdAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICds b2FkLXBhdGggIi9ob21lL3plbHRhay8uZW1hY3MuZy9vcmctbGluay1lZGl0LyIpCihyZXF1aXJl ICdvcmctbGluay1lZGl0KQojK0VORF9TUkMKCioqIG9yZy1idWxsZXRzCiAgIDpQUk9QRVJUSUVT OgogICA6SUQ6ICAgICAgIDYzN2Y4YmQzLTIzNzAtNDQwZi1iYTY2LTA1ZDQyYmJlZDRkMwogICA6 RU5EOgpodHRwczovL2dpdGh1Yi5jb20vc2Fib2Yvb3JnLWJ1bGxldHMKCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogICh1c2UtcGFja2FnZSBvcmctYnVsbGV0cyAKICAgOmVu c3VyZSB0CiAgIDpjb25maWcKKHJlcXVpcmUgJ29yZy1idWxsZXRzKQooYWRkLWhvb2sgJ29yZy1t b2RlLWhvb2sgKGxhbWJkYSAoKSAob3JnLWJ1bGxldHMtbW9kZSAxKSkpCihzZXRxICBvcmctYnVs bGV0cy1idWxsZXQtbGlzdCAnKAogICAgIuKRoCIKICAgICLikaEiCiAgICAi4pGiICIKICAgICLi kaMiCiAgICAi4pGkIgogICAgIuKRpSIKICAgICLikaYiCiAgICAi4pGnIgogICAgIuKRqCIKICAg ICLikakiCiAgICAi4pGqIgogICAgIuKRqyIKICAgICLikawiCiAgICAi4pGtIgogICAgIuKRriIK ICAgICkpCiApCiMrRU5EX1NSQwoqKiBvcmctYm9va21hcmstaGVhZGluZwogICA6UFJPUEVSVElF UzoKICAgOklEOiAgICAgICA1OTRkMDE0OS0yOWNmLTQ1N2YtYWUwZi1lOThiZGIyZWYwNTYKICAg OkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2FscGhhcGFwYS9vcmctYm9va21hcmstaGVhZGluZwoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIG9yZy1ib29r bWFyay1oZWFkaW5nCiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ29yZy1ib29rbWFyay1o ZWFkaW5nKSAKICkKIytFTkRfU1JDIAoKCioqIG9yZy1jbGlwbGluawogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICA3ZDIzNWI0Ni05ZDQ1LTRjNjUtYjhmMC03ZTc3MmQwN2EzZmEKICAgOkVO RDoKaHR0cHM6Ly9naXRodWIuY29tL3JleGltL29yZy1jbGlwbGluawoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBvcmctY2xpcGxpbmsKIDplbnN1cmUg dAogOmNvbmZpZwogCiApCiMrRU5EX1NSQyAKKiogb3JnLURvd25sb2FkCiAgIDpQUk9QRVJUSUVT OgogICA6SUQ6ICAgICAgIDU0ZTAxNjE4LTM1ZWItNDVjNS1iMGI3LTZmODMwZmFlZjMxNgogICA6 QXR0YWNobWVudHM6IHNjcmVlbnNob3RfMjAxNS0wNC0wNV8wODoxNToyMi5wbmcKICAgOkVORDoK aHR0cHM6Ly9naXRodWIuY29tL2Fiby1hYm8vb3JnLWRvd25sb2FkCgpwcm92aWRlcyBmdW5jdGlv biB0byBkcmFnIGltYWdlcyBmcm9tIGJyb3dzZXIgYW5kIGxpbmsgYWRkcmVzcwokTm90ZSQgdGhp cyByZXF1aXJlcyBwYWNrYWdlIGFzeW5jIHRvIGJlIGluc3RhbGxlZCwgQGFzeW5jIG11c3QgYmUg bG9hZGVkIGJlZm9yZSB0aGlzIHBhY2thZ2VACgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKICAgICh1c2UtcGFja2FnZSBvcmctZG93bmxvYWQgCiAgICAgOmVuc3VyZSB0CiAg ICAgOmNvbmZpZwogICAgIChzZXRxLWRlZmF1bHQgb3JnLWRvd25sb2FkLWhlYWRpbmctbHZsIG5p bCkKICAgICAoc2V0cSAgb3JnLWRvd25sb2FkLWltYWdlLXdpZHRoIDcwMCApCiAgICAgKHNldHEt ZGVmYXVsdCBvcmctZG93bmxvYWQtaW1hZ2UtZGlyICIvaG9tZS96ZWx0YWsvU3luYy9hdHRhY2gv aW1hZ2VzXzIwMTUiKQogICAgIDs7OyB0byBnZXQgcmlkIG9mIHRoZSAjK0RPV05MT0FERUQgcGFy dAogIDs7KHNldHEgb3JnLWRvd25sb2FkLWFubm90YXRlLWZ1bmN0aW9uIChsYW1iZGEgKF8pICIi KSkKICAgICkKICMrRU5EX1NSQwoKKioqIG9sZCBjb25maWdzIAogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIDFiYjIxOGE3LWZkMjctNDNhMC1hZTEyLTNjYzE0NmRjYjM1MwogICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgKHNldHEgb3JnLWRv d25sb2FkLW1ldGhvZCAnYXR0YWNoCiAgOzsgICAgICAgIG9yZy1kb3dubG9hZC1zY3JlZW5zaG90 LW1ldGhvZCAic2Nyb3QgLXMgJXMiCiAgOzsgICAgICAgIG9yZy1kb3dubG9hZC1iYWNrZW5kIChp ZiAoZXhlY3V0YWJsZS1maW5kICJjdXJsIikgImN1cmwgXCIlc1wiIC1vIFwiJXNcIiIgdCkpKQoj K0VORF9TUkMKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOyhpZiAoc3Ry aW5nPSBzeXN0ZW0tbmFtZSAidm9pY2VzIikgKHNldHEtZGVmYXVsdCBvcmctZG93bmxvYWQtaW1h Z2UtZGlyICIvaG9tZS96ZWx0YWsvb3JnL2F0dGFjaC9pbWFnZXNfMjAxNC8iKSAoc2V0cS1kZWZh dWx0IG9yZy1kb3dubG9hZC1pbWFnZS1kaXIgIi9tZWRpYS9OQVMvVW5pL29yZy9hdHRhY2gvaW1h Z2VzXzIwMTMvIikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICMrRU5EX1NSQ1xOCioqIG9yZy1kcCAod3JhcCBjb2RlIGJsb2NrcyBm dW5jdGlvbnMpIAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA1YzUxYjkwNi1kNWNjLTRj ZmUtYWQ0MC1lOWJiNTRlNzJjMTYKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL3RqNjQvb3Jn LWRwCgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBv cmctZHAKIDplbnN1cmUgdAogOmNvbmZpZwogKHJlcXVpcmUgJ29yZy1kcC1saWIpCiApCiMrRU5E X1NSQyAKKioqIG15IHdyYXAgZnVuY3Rpb25zCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAg ICAgNjczNWVhYzItNDAxOC00MWYxLThmOWEtZDY0MTViMzIzODZjCiAgICA6RU5EOgoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih3aGVuIChyZXF1aXJlICdvcmctZHAtbGli IG5pbCB0KQoKOzs7Ozs7Ozs7OyB3cmFwIGluIGVsaXNwCiAgKGRlZnVuIHovd3JhcC1lbGlzcCAo KQogICAgICAgIChvcmctZHAtd3JhcC1pbi1ibG9jawogICAgICAgICBuaWwgJyhzcmMtYmxvY2sg bmlsIG5pbCBuaWwgKDpsYW5ndWFnZSAiZW1hY3MtbGlzcCIgOnByZXNlcnZlLWluZGVudCAxICA6 cGFyYW1ldGVycyAiOnJlc3VsdHMgbm9uZSIgKSkpKQoKO2ZvciBoeWRyYSBjcmVhdGUgaW50ZXJh Y3RpdmUgbmV3IGZ1bmN0aW9ucwooZGVmdW4gei9oeWRyYS13cmFwLWVsaXNwICgpIChpbnRlcmFj dGl2ZSkgKGJlZ2lubmluZy1vZi1saW5lKSAoei93cmFwLWVsaXNwKSkKCjs7Ozs7Ozs7Ozsgd3Jh cCBpbiBiYXNoCiAgKGRlZnVuIHovd3JhcC1iYXNoICgpCiAgICAgICAgKG9yZy1kcC13cmFwLWlu LWJsb2NrCiAgICAgICAgIG5pbCAnKHNyYy1ibG9jayBuaWwgbmlsIG5pbCAoOmxhbmd1YWdlICJz aCIgOnByZXNlcnZlLWluZGVudCAxICA6cGFyYW1ldGVycyAiOnJlc3VsdHMgbm9uZSIgKSkpKQoK O2ZvciBoeWRyYSBjcmVhdGUgaW50ZXJhY3RpdmUgbmV3IGZ1bmN0aW9ucwooZGVmdW4gei9oeWRy YS13cmFwLWJhc2ggKCkgKGludGVyYWN0aXZlKSAoYmVnaW5uaW5nLW9mLWxpbmUpICh6L3dyYXAt YmFzaCkpCgoKOzs7Ozs7Ozs7OyB3cmFwIGluIGJhc2gKICAoZGVmdW4gei93cmFwLWV4YW1wbGUg KCkKICAgICAgICAob3JnLWRwLXdyYXAtaW4tYmxvY2sKICAgICAgICAgbmlsICcoc3JjLWJsb2Nr IG5pbCBuaWwgbmlsICg6bGFuZ3VhZ2UgImV4YW1wbGUiIDpwcmVzZXJ2ZS1pbmRlbnQgMSAgOnBh cmFtZXRlcnMgIjpyZXN1bHRzIG5vbmUiICkpKSkKCjtmb3IgaHlkcmEgY3JlYXRlIGludGVyYWN0 aXZlIG5ldyBmdW5jdGlvbnMKKGRlZnVuIHovaHlkcmEtd3JhcC1leGFtcGxlICgpIChpbnRlcmFj dGl2ZSkgKGJlZ2lubmluZy1vZi1saW5lKSAoei93cmFwLWV4YW1wbGUpKQoKCgo7Ozs7Ozs7Ozs7 IHdyYXAgaW4gUgogIChkZWZ1biB6L3dyYXAtUiAoKQogICAgICAgIChvcmctZHAtd3JhcC1pbi1i bG9jawogICAgICAgICBuaWwgJyhzcmMtYmxvY2sgbmlsIG5pbCBuaWwgKDpsYW5ndWFnZSAiUiIg OnByZXNlcnZlLWluZGVudCAxICA6cGFyYW1ldGVycyAiOnJlc3VsdHMgbm9uZSIgKSkpKQoKO2Zv ciBoeWRyYSBjcmVhdGUgaW50ZXJhY3RpdmUgbmV3IGZ1bmN0aW9ucwooZGVmdW4gei9oeWRyYS13 cmFwLVIgKCkgKGludGVyYWN0aXZlKSAoYmVnaW5uaW5nLW9mLWxpbmUpICh6L3dyYXAtUikpCgo7 Ozs7Ozs7Ozs7IHdyYXAgaW4gbGF0ZXgKICAoZGVmdW4gei93cmFwLWxhdGV4ICgpCiAgICAgICAg KG9yZy1kcC13cmFwLWluLWJsb2NrCiAgICAgICAgIG5pbCAnKHNyYy1ibG9jayBuaWwgbmlsIG5p bCAoOmxhbmd1YWdlICJsYXRleCIgOnByZXNlcnZlLWluZGVudCAxICA6cGFyYW1ldGVycyAiOnJl c3VsdHMgbm9uZSIgKSkpKQoKO2ZvciBoeWRyYSBjcmVhdGUgaW50ZXJhY3RpdmUgbmV3IGZ1bmN0 aW9ucwooZGVmdW4gei9oeWRyYS13cmFwLWxhdGV4ICgpIChpbnRlcmFjdGl2ZSkgKGJlZ2lubmlu Zy1vZi1saW5lKSAoei93cmFwLWxhdGV4KSkKCgo7ZW5kIHBhcmVuCiAgICAgKQojK0VORF9TUkMK Kiogb3JnLWZzdHJlZSAKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNl LXBhY2thZ2Ugb3JnLWZzdHJlZSAKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5EX1NSQyAK CnVzYWdlOgojK0JFR0lOX0VYQU1QTEUKOzsgVXNhZ2U6Cjs7ICAgLSBlbnRlciBhIGxpbmUgY29u dGFpbmluZyAiIytCRUdJTl9GU1RSRUU6IDxkaXI+IiBpbnRvIGFuIG9yZyBidWZmZXIsIAo7OyAg ICAgd2hlcmUgPGRpcj4gaXMgdGhlIGRpcmVjdG9yeSwgdGhhdCBpcyB0byBiZSBpbnNlcnRlZC4K OzsgICAtIHdoaWxlIHRoZSBjdXJzb3IgaXMgaW4gdGhlIGxpbmUgbWVudGlvbmVkLCBwcmVzcyAi Qy1jIEMtYyIKOzsKOzsgT3B0aW9uczoKOzsgICBTcGVjaWZ5IG9wdGlvbnMgaW4gdGhlIGZvcm06 Cjs7ICAgIiMrQkVHSU5fRlNUUkVFOiA8ZGlyPiA6PG9wdGlvbm5hbWUxPiA8b3B0aW9udmFsdWUx PiA6PG9wdGlvbm5hbWUyPiA8b3B0aW9udmFsdWUyPiAgLi4uCjs7ICAgT3B0aW9ucyBhcmU6Cjs7 ICAgICAtIDpub24tcmVjdXJzaXZlIHQgLCB0byBzdXBwcmVzcyByZWN1cnNpb24gaW50byBkaXJl Y3Rvcmllcwo7OyAgICAgLSA6ZXhjbHVkZS1yZWdleHAtbmFtZSA8bGlzdCBvZiByZWdleHAgc3Ry aW5ncz4gLCBleGNsdWRlIGZpbGUvZGlyZWN0b3J5IG5hbWVzIG1hdGNoaW5nIGVpdGhlciAKOzsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBn aXZlbiByZWdleHAgZXhwcmVzc2lvbnMKOzsgICAgICAgRXhhbXBsZXM6IAo7OyAgICAgICAgIDpl eGNsdWRlLXJlZ2V4cC1uYW1lICgiLipcXC5wZGYkIiAiLipcXC56aXAkIiksIGV4Y2x1ZGVzIGZp bGVzL2RpcmVjdG9yaWVzIGVuZGluZyB3aXRoIGVpdGhlciAiLnBkZiIgb3IgIi56aXAiCjs7ICAg ICAgICAgOmV4Y2x1ZGUtcmVnZXhwLW5hbWUgKCJeXFwuZ2l0JCIpICwgZXhjbHVkZXMgZmlsZXMv ZGlyZWN0b3JpZXMgbmFtZWQgIi5naXQiCjs7Cjs7ICAgICAtIDpleGNsdWRlLXJlZ2V4cC1mdWxs cGF0aCA8bGlzdCBvZiByZWdleHAgc3RyaW5ncz4sIHNhbWUgYXMgOmV4Y2x1ZGUtcmVnZXhwLW5h bWUgYnV0IG1hdGNoZXMgYWJzb2x1dGUgcGF0aCB0byBmaWxlL2RpcmVjdG9yeQo7OyAgICAgLSA6 cmVsYXRpdmUtbGlua3MgdCAsIGdlbmVyYXRlcyByZWxhdGl2ZSBpbnN0ZWFkIG9mIGFic29sdXRl IGxpbmtzCjs7ICAgICAtIDpzaG93LW9ubHktbWF0Y2hlcyB0ICwgb25seSBmaWxlcyB0aGF0IGFy ZSBiZWluZyBsaW5rZWQgdG8gc2hvdyB1cAo7OyAgICAgLSA6ZHluYW1pYy11cGRhdGUgdCAsIFtF WFBFUklNRU5UQUxdIGR5bmFtaWNhbGx5IHVwZGF0ZSBhIHN1YnRyZWUgb24gdmlzaWJpbGl0eSBj eWNsaW5nLgo7OyAgICAgLSA6bGlua3MtYXMtcHJvcGVydGllcyB0LCBzZXRzIHRoZSBsaW5rcyBh cyBwcm9wZXJ0aWVzIExpbmsxLCBMaW5rMiwuLi4gZm9yIHVzZSBpbiBjb2x1bW4gdmlldyBbRG9l cyBub3Qgd29yayB3aXRoIGR5bmFtaWMtdXBkYXRlIV0KIytFTkRfRVhBTVBMRQoKKiogb3JnLWNv bnRhY3RzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDgyYmVlN2UwLTc3MTgtNGE1Yy04 NzRmLWU0YjM2NDNkNzcwZAogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKKHJlcXVpcmUgJ29yZy1jb250YWN0cykKIytFTkRfU1JDCioqIG9yZy12Y2FyZAogICA6 UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBiMWE1YWIyOS1iY2M0LTQ0YmUtYTA1MS0zMjJhNmRj ZDkxZTEKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2ZsZXhpYmVhc3Qvb3JnLXZjYXJkCgph bHNvIGV4cGxvcmUgaG93IHRoaXMgcmVsYXRlcyB0byBvcmctY29udGFjcwojK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIG9yZy12Y2FyZAogOmVuc3VyZSB0 CiA6Y29uZmlnCiAKICkKIytFTkRfU1JDIAoqKiBveC1wYW5kb2MKICAgOlBST1BFUlRJRVM6CiAg IDpJRDogICAgICAgNzdjNWRlNTQtYjQxZS00YmI4LTkxNmUtOTNkZDE1MWVkMTYxCiAgIDpFTkQ6 Cmh0dHBzOi8vZ2l0aHViLmNvbS9rYXdhYmF0YS9veC1wYW5kb2MKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ugb3gtcGFuZG9jCiA6ZW5zdXJlIHQKIDpj b25maWcKICkKIytFTkRfU1JDCgoqKiBvcmctcGRmdmlldwogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICAyODVlOGE0NS05NTM0LTQ1NWUtYmVmMy0yNmQ3MWNiYzVlZTkKICAgOkVORDoKb25s eSBlbmFibGUgaWYgcGRmLXRvb2xzIGlzIGluc3RhbGxlZCAKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCiAgOzsgKHVzZS1wYWNrYWdlIG9yZy1wZGZ2aWV3CiAgOzsgIDplbnN1 cmUgdAogIDs7ICA6Y29uZmlnCiAgOzsgICkKIytFTkRfU1JDCioqIFRPRE8gb3YtaGlnaGxpZ2h0 ZXIuZWwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdl IGx1bmFyeW9ybi1zaW1wbGUKICA6bG9hZC1wYXRoICIvaG9tZS96ZWx0YWsvLmVtYWNzLmcvb3Yt aGlnaGxpZ2h0ZXIuZWwvIgogIDpjb25maWcKCjsob3YtbWFrZS1oaWdobGlnaHQgIldhcm5pbmci ICcoOmZvcmVncm91bmQgIiNCNDAwMDAiIDpiYWNrZ3JvdW5kICIjRkZEREREIiAgOndlaWdodCBi b2xkKSkKOyhvdi1tYWtlLWhpZ2hsaWdodCAiIW5vdGljZSEiICcoOmZvcmVncm91bmQgIiNCNDAw MDAiIDp3ZWlnaHQgYm9sZCkpCjsob3YtbWFrZS1oaWdobGlnaHQgIiV0aXAlIiAnKDpmb3JlZ3Jv dW5kICIjRERGRkREIiA6d2VpZ2h0IGJvbGQpKQo7KG92LW1ha2UtaGlnaGxpZ2h0ICJ6L2dyZWVu IiAnKDpmb3JlZ3JvdW5kICIjMzVGRjAwIiA6d2VpZ2h0IGJvbGQpKQoKKQojK0VORF9TUkMKCjt0 aXAKKGZvbnQtbG9jay1hZGQta2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwoJVteJVxuXSslXFwp IiAoMCAnKDp3ZWlnaHQgdWx0cmEtYm9sZCA6YmFja2dyb3VuZCAiI0RERkZERCIgOmZvcmVncm91 bmQgIiMwMDAwMDAiKSB0KSkpKQoKO25vdGljZQooZm9udC1sb2NrLWFkZC1rZXl3b3JkcwogJ29y Zy1tb2RlCicoKCJcXCghW14hXG5dKyFcXCkiICgwICcoOndlaWdodCB1bHRyYS1ib2xkIDpmb3Jl Z3JvdW5kICIjQjQwMDAwIikgdCkpKSkKCjtoaWdoLWdyZWVuCihmb250LWxvY2stYWRkLWtleXdv cmRzCiAnb3JnLW1vZGUKJygoIlxcKCdbXidcbl0rJ1xcKSIgKDAgJyg6YmFja2dyb3VuZCAiIzM1 RkYwMCIgOndlaWdodCB1bHRyYS1ib2xkKSB0KSkpKQoKO2hpZ2gteWVsbG93Cihmb250LWxvY2st YWRkLWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKGBbXmBcbl0rYFxcKSIgKDAgJyg6Zm9yZWdy b3VuZCAiIzAwMDAwMCIgOndlaWdodCB1bHRyYS1ib2xkIDpiYWNrZ3JvdW5kICIjRkJGRjAwIikg dCkpKSkKCjsKKGZvbnQtbG9jay1hZGQta2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwo4oKGW17i goZcbl0r4oKGXFwpIiAoMCAnKDpmb3JlZ3JvdW5kICIjMDAwMDAwIiA6dW5kZXJsaW5lIHQgOmJh Y2tncm91bmQgIiNGRjlBRUEiIDp3ZWlnaHQgdWx0cmEtYm9sZCkgdCkpKSkKCjsKKGZvbnQtbG9j ay1hZGQta2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwo4oKFW17igoVcbl0r4oKFXFwpIiAoMCAn KDp3ZWlnaHQgdWx0cmEtYm9sZCA6Zm9yZWdyb3VuZCAiIzFFMDBERSIpIHQpKSkpCgoKOwooZm9u dC1sb2NrLWFkZC1rZXl3b3JkcwogJ29yZy1tb2RlCicoKCJcXCjigoRbXuKChFxuXSvigoRcXCki ICgwICcoOndlaWdodCB1bHRyYS1ib2xkIDpmb3JlZ3JvdW5kICIjRkY5ODAwIikgdCkpKSkKCjti bHVzaXNoCihmb250LWxvY2stYWRkLWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKOKAolte4oCi XG5d4oCiK1xcKSIgKDAgJyg6d2VpZ2h0IHVsdHJhLWJvbGQgOmZvcmVncm91bmQgIiMzOTNEOTAw IikgdCkpKSkKCgogCjs7OztTUEVDSUZJQyBXT1JEUyAKCjtzZXJ2ZXIKKGZvbnQtbG9jay1hZGQt a2V5d29yZHMKJ29yZy1tb2RlCicoKCJcXGJbU3NdZXJ2ZXJcXGIiICgwICcoOndlaWdodCB1bHRy YS1ib2xkIDpmb3JlZ3JvdW5kICIjRkY5ODAwIikgdCkpKSkKCjtjbGllbnQKKGZvbnQtbG9jay1h ZGQta2V5d29yZHMKJ29yZy1tb2RlCicoKCJcXGJbQ2NdbGllbnRcXGIiICgwICcoOndlaWdodCB1 bHRyYS1ib2xkIDpmb3JlZ3JvdW5kICIjMDA0NEZGIikgdCkpKSkKCjtwcml2YXRlCihmb250LWxv Y2stYWRkLWtleXdvcmRzCidvcmctbW9kZQonKCgiXFxiW1BwXXJpdmF0ZVxcYiIgKDAgJyg6d2Vp Z2h0IHVsdHJhLWJvbGQgOmZvcmVncm91bmQgIiNGRjY3NjciKSB0KSkpKQoKO3B1YmxpYwooZm9u dC1sb2NrLWFkZC1rZXl3b3Jkcwonb3JnLW1vZGUKJygoIlxcYltQcF11YmxpY1xcYiIgKDAgJyg6 d2VpZ2h0IHVsdHJhLWJvbGQgOmZvcmVncm91bmQgIiM1OUJEN0UiKSB0KSkpKQoKCjtJbiBFeGFt cGxlCihmb250LWxvY2stYWRkLWtleXdvcmRzCidvcmctbW9kZQonKCgiXFxiW0lpXW4gZXhhbXBs ZVxcYiIgKDAgJyg6Zm9yZWdyb3VuZCAiIzAwMDAwMCIgOnVuZGVybGluZSB0IDpiYWNrZ3JvdW5k ICIjRkY5QUVBIiA6d2VpZ2h0IHVsdHJhLWJvbGQpIHQpKSkpCgoKO2hlYWRlcgooZm9udC1sb2Nr LWFkZC1rZXl3b3JkcwogJ29yZy1tb2RlCicoKCJcXCjigKFbXuKAoVxuXSvigKFcXCkiICgwICco OmZvcmVncm91bmQgIiNmZmZmZmYiIDp3ZWlnaHQgdWx0cmEtYm9sZCA6c2xhbnQgaXRhbGljIDpi YWNrZ3JvdW5kICIjNTlCRDdGIiA6aGVpZ2h0IDEuMykgdCkpKSkKCjs7O0ZPUiBTUEVDSUFMIENI QVJBQ1RFUlMKCjtmb3Iga2V5IHNob3J0dWN0cwooZm9udC1sb2NrLWFkZC1rZXl3b3JkcwogJ29y Zy1tb2RlCicoKCJcXChcXD9bXj9cbl0rXFw/XFwpIiAoMCAnKDpmb3JlZ3JvdW5kICIjMDAwMDAw IiA6d2VpZ2h0IHVsdHJhLWJvbGQgOmJhY2tncm91bmQgIiNGRjlDMkMiKSB0KSkpKQoKO2ZvciAk Tm90ZSQgCihmb250LWxvY2stYWRkLWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKFxcJFteJFxu XStcXCRcXCkiICgwICcoOmJhY2tncm91bmQgIiNERERERkYiIDpmb3JlZ3JvdW5kICIjMDAwMDAw IiA6d2VpZ2h0IHVsdHJhLWJvbGQpIHQpKSkpCgo7Zm9yIF4KKGZvbnQtbG9jay1hZGQta2V5d29y ZHMKICdvcmctbW9kZQonKCgiXFwoXFxeW15eXG5dK1xcXlxcKSIgKDAgJyg6d2VpZ2h0IGJvbGQg IDpib3ggKDpsaW5lLXdpZHRoIDEgOmNvbG9yICIjQTVBMEZGIikgIDpmb3JlZ3JvdW5kICIjMDAw MDZGIiA6YmFja2dyb3VuZCAiI0ZGRkZGRiIpIHQpKSkpCgo7Zm9yIOKAoCAKKGZvbnQtbG9jay1h ZGQta2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwoXFzigKBbXuKAoFxuXStcXOKAoFxcKSIgKDAg Jyg6d2VpZ2h0IGJvbGQgIDpib3ggKDpsaW5lLXdpZHRoIDEgOmNvbG9yICIjQTVBMEZGIikgIDpm b3JlZ3JvdW5kICIjMDAwMDZGIiA6YmFja2dyb3VuZCAiI0ZGRkZGRiIpIHQpKSkpCgoKCgoqKiBw YXNzIG1vZGUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMDcxNDQ3NzktNmM2Mi00MGY2 LWE4YWEtZTFlYWFiOGIzMThjCiAgIDpFTkQ6CmZvciBwYXNzd29yZCBzdG9yZSBmaWxlcyA6IApo dHRwczovL2dpdGh1Yi5jb20vTmljb2xhc1BldHRvbi9wYXNzCgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHBhc3MKIDplbnN1cmUgdAogOmNvbmZpZwog ICkKIytFTkRfU1JDIAoKCioqIHBhc3N3b3JkLXN0b3JlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIDM1ZjhjNzA1LWRkYzgtNDMwZC1hMDhjLWFiYzczZmYxMGYyOAogICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHBhc3N3b3JkLXN0 b3JlCiA6ZW5zdXJlIHQKIDpjb25maWcKKHJlcXVpcmUgJ3Bhc3N3b3JkLXN0b3JlKQogKQojK0VO RF9TUkMgCgoqKiBwYW5kb2MtbW9kZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBlZTc1 NzUxOS04NDIxLTQyNzEtOWU5Ny05MjA3ODFhNGJjN2MKICAgOkVORDoKaHR0cDovL2pvb3N0a3Jl bWVycy5naXRodWIuaW8vcGFuZG9jLW1vZGUvCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQoodXNlLXBhY2thZ2UgcGFuZG9jLW1vZGUKIDplbnN1cmUgdAogOmNvbmZpZwogICkK IytFTkRfU1JDIAoqKiBwYWJicmV2CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGE4OTMy NDQyLTEwM2MtNDkxZi04ZjllLTY4NWMyMDZjZjcxZQogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSAgcGFiYnJldgogOmVuc3VyZSB0CiA6 Y29uZmlnCihyZXF1aXJlICdwYWJicmV2KQo7OyB0byBhdXRvbG9hZAooZ2xvYmFsLXBhYmJyZXYt bW9kZSkKOztkaXNhYmxlIGFubm95aW5nIG1lc3NhZ2UgZXZlcnkgZmV3IHNlY29uZHMgCihzZXRx IHBhYmJyZXYtaWRsZS10aW1lci12ZXJib3NlIG5pbCkKICkKIytFTkRfU1JDIAoKKiogcGRmLXRv b2xzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGU5OTgwNGY2LWNhOGItNGVkNC04YWVm LTRkNDY5Mjc2ZTcxOQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vcG9saXR6YS9wZGYtdG9v bHMKCmlmIHlvdSBoYXZlIGlzc3VlcyByZW1vdmUsIHJlaW50c2FsbCBhbmQgcmVidWlsZCBzZXJ2 ZXIKIytCRUdJTl9FWEFNUExFCihwZGYtdG9vbHMtaW5zdGFsbCkKIytFTkRfRVhBTVBMRQoKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooaWYgKHN0cmluZz0gc3lzdGVtLW5h bWUgInp4MXZvaWNzIikKICAodXNlLXBhY2thZ2UgcGRmLXRvb2xzCiAgICAgOmVuc3VyZSB0CiAg ICAgOmNvbmZpZwoocGRmLXRvb2xzLWluc3RhbGwpCjs7O2VuYWJsZSBQREYgdG9vbHMgZXZlcnl0 aGltZSBpbnN0ZWFkIG9mIGRvYyB2aWV3Cjs7ZnJvbSBodHRwOi8vZW1hY3Muc3RhY2tleGNoYW5n ZS5jb20vcXVlc3Rpb25zLzQwODkvY2FuLWktY29uZmlndXJlLWV3dy10by11c2UtcGRmLXZpZXct bW9kZS1mcm9tLXBkZi10b29scy1mb3ItcGRmcy1pbnN0ZWFkLW9mLWRvCihkZWZ2YXIgdHYvcHJl ZmVyLXBkZi10b29scyAoZmJvdW5kcCAncGRmLXZpZXctbW9kZSkpCihkZWZ1biB0di9zdGFydC1w ZGYtdG9vbHMtaWYtcGRmICgpCiAgKHdoZW4gKGFuZCB0di9wcmVmZXItcGRmLXRvb2xzCiAgICAg ICAgICAgICAoZXEgZG9jLXZpZXctZG9jLXR5cGUgJ3BkZikpCiAgICAocGRmLXZpZXctbW9kZSkp KQooYWRkLWhvb2sgJ2RvYy12aWV3LW1vZGUtaG9vayAndHYvc3RhcnQtcGRmLXRvb2xzLWlmLXBk ZikKICAgICAgKQopCgoKKGlmIChzdHJpbmc9IHN5c3RlbS1uYW1lICJ6YmVhc3QiKQogICh1c2Ut cGFja2FnZSBwZGYtdG9vbHMKICAgICA6ZW5zdXJlIHQKICAgICA6Y29uZmlnCihwZGYtdG9vbHMt aW5zdGFsbCkKOzs7ZW5hYmxlIFBERiB0b29scyBldmVyeXRoaW1lIGluc3RlYWQgb2YgZG9jIHZp ZXcKOztmcm9tIGh0dHA6Ly9lbWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNDA4OS9j YW4taS1jb25maWd1cmUtZXd3LXRvLXVzZS1wZGYtdmlldy1tb2RlLWZyb20tcGRmLXRvb2xzLWZv ci1wZGZzLWluc3RlYWQtb2YtZG8KKGRlZnZhciB0di9wcmVmZXItcGRmLXRvb2xzIChmYm91bmRw ICdwZGYtdmlldy1tb2RlKSkKKGRlZnVuIHR2L3N0YXJ0LXBkZi10b29scy1pZi1wZGYgKCkKICAo d2hlbiAoYW5kIHR2L3ByZWZlci1wZGYtdG9vbHMKICAgICAgICAgICAgIChlcSBkb2Mtdmlldy1k b2MtdHlwZSAncGRmKSkKICAgIChwZGYtdmlldy1tb2RlKSkpCihhZGQtaG9vayAnZG9jLXZpZXct bW9kZS1ob29rICd0di9zdGFydC1wZGYtdG9vbHMtaWYtcGRmKQogICAgICApCgoKOztrZXlzCihk ZWZpbmUta2V5IHBkZi12aWV3LW1vZGUtbWFwIChrYmQgIlxDLXMiKSAnaXNlYXJjaC1mb3J3YXJk KQoKKQojK0VORF9TUkMgCgoqKiBwcm9qZWN0aWxlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAg ICAgIDAyOGIzMmM3LTM2ODQtNDBlOS04MzRiLWYxOTdmMDczN2I4YgogICA6RU5EOgoKQFdhcm5p bmdAOiBwcm9qZWN0aWxlIGdsb2JhbCBtb2RlIHdpbGwga2lsbCBzc2gvc3VkbyBpbiB0cmFtcCB3 aXRoIGhhbmdpbmcgaW46CiMrQkVHSU5fRVhBTVBMRQpEZWNyeXB0aW5nIC9ob21lL2Noei8uYXV0 aGluZm8uZ3BnLi4uZG9uZQojK0VORF9FWEFNUExFCmZvbGxvdyB0aGlzIDogaHR0cHM6Ly9naXRo dWIyLmNvbS9iYmF0c292L3Byb2plY3RpbGUvaXNzdWVzLzgzNSBmb3IgbW9yZSBkZXRhaWxzIAoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgICAodXNlLXBhY2thZ2Ug cHJvamVjdGlsZQogIDs7ICAgIDplbnN1cmUgdAogIDs7ICAgIDpjb25maWcKICA7OyA7OztkaXNh YmxlIGdsb2JhbCBtb2RlIG90aGVyd2lzZSBpdCBraWxscyB0cmFtcCBzaGgKICA7OyA7Oyhwcm9q ZWN0aWxlLWdsb2JhbC1tb2RlKQogIDs7IDs7IGNhY2hpbmcgY2FuIHNpZ25pZmljYW50bHkgc3Bl ZWR1cCBmaWxlIGFuZCBkaXJlY3RvcnkgbGlzdGluZ3MsIG1ha2luZyBpdCBkaXNwbGF5IGluc3Rh bnRseS4KICA7OyAoc2V0cSBwcm9qZWN0aWxlLWVuYWJsZS1jYWNoaW5nIHQpCgogIDs7IDs7YmVs b3cgaXMgbmVlZGVkIGlmIHlvdSBnZXQgdGhlIHByb2plY3RpbGUtY3VycmVudC1wcm9qZWN0LWZp bGVzOiBXcm9uZyB0eXBlIGFyZ3VtZW50OiBoYXNoLXRhYmxlLXAsIG5pbCBlcnJvciAKICA7OyAo c2V0cSBwcm9qZWN0aWxlLWdsb2JhbC1tb2RlIHQpCgogIDs7IDs7KHNldHEgcHJvamVjdGlsZS1j b21wbGV0aW9uLXN5c3RlbSAnZ3JpenpsKQogIDs7IChzZXRxIHByb2plY3RpbGUtY29tcGxldGlv bi1zeXN0ZW0gJ2hlbG0pCiAgOzsgKGhlbG0tcHJvamVjdGlsZS1vbikKICA7OyA7OyhzZXRxIHBy b2plY3RpbGUtc3dpdGNoLXByb2plY3QtYWN0aW9uICdoZWxtLXByb2plY3RpbGUtZmluZC1maWxl KQogIDs7IChzZXRxIHByb2plY3RpbGUtc3dpdGNoLXByb2plY3QtYWN0aW9uICdoZWxtLXByb2pl Y3RpbGUpCgogIDs7IChzZXRxIHByb2plY3RpbGUtZ2xvYmFsbHktaWdub3JlZC1kaXJlY3Rvcmll cwogIDs7ICAgICAgIChhcHBlbmQgJygKICA7OyAgICAgICAgICIuZ2l0IgogIDs7ICAgICAgICAg Ii5zdm4iCiAgOzsgICAgICAgICAib3V0IgogIDs7ICAgICAgICAgInJlcGwiCiAgOzsgICAgICAg ICAidGFyZ2V0IgogIDs7ICAgICAgICAgInZlbnYiCiAgOzsgICAgICAgICApCiAgOzsgICAgICAg ICAgIHByb2plY3RpbGUtZ2xvYmFsbHktaWdub3JlZC1kaXJlY3RvcmllcykpCiAgOzsgKHNldHEg cHJvamVjdGlsZS1nbG9iYWxseS1pZ25vcmVkLWZpbGVzCiAgOzsgICAgICAgKGFwcGVuZCAnKAog IDs7ICAgICAgICAgIi5EU19TdG9yZSIKICA7OyAgICAgICAgICIqLmd6IgogIDs7ICAgICAgICAg IioucHljIgogIDs7ICAgICAgICAgIiouamFyIgogIDs7ICAgICAgICAgIioudGFyLmd6IgogIDs7 ICAgICAgICAgIioudGd6IgogIDs7ICAgICAgICAgIiouemlwIgogIDs7ICAgICAgICAgKQogIDs7 ICAgICAgICAgICBwcm9qZWN0aWxlLWdsb2JhbGx5LWlnbm9yZWQtZmlsZXMpKQoKICA7OyAgICAp CiMrRU5EX1NSQwoqKiBwZXJzcC1tb2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGZi N2ZmNDM4LTkzYzQtNGM4My1iZTI5LWM2Mjk3MzM0MTQwNAogICA6RU5EOgoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgKHVzZS1wYWNrYWdlIHBlcnNwLW1vZGUKICA7 OyAgOmVuc3VyZSB0CiAgOzsgIDpjb25maWcKICA7OyAod2l0aC1ldmFsLWFmdGVyLWxvYWQgInBl cnNwLW1vZGUtYXV0b2xvYWRzIgogIDs7ICAgKHNldHEgd2ctbW9ycGgtb24gbmlsKSA7OyBzd2l0 Y2ggb2ZmIGFuaW1hdGlvbgogIDs7ICAgKGFkZC1ob29rICdhZnRlci1pbml0LWhvb2sgIycobGFt YmRhICgpIChwZXJzcC1tb2RlIDEpKSkpCgogIDs7ICAgKQojK0VORF9TUkMgCioqIHBlcnNpc3Rl bnQtc2NyYXRjaApodHRwczovL2dpdGh1Yi5jb20vRmFuYWVsL3BlcnNpc3RlbnQtc2NyYXRjaAoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7OyBwZXJzaXN0ZW50LXNjcmF0 Y2gKKHVzZS1wYWNrYWdlIHBlcnNpc3RlbnQtc2NyYXRjaAogIDpjb25maWcKICAocGVyc2lzdGVu dC1zY3JhdGNoLXNldHVwLWRlZmF1bHQpKQojK0VORF9TUkMKKiogVE9ETyBwdXJwb3NlCndhaXQg dW50aWwgaXQgaGl0cyBtZWxwYSAKaHR0cHM6Ly9naXRodWIuY29tL2JtYWcvZW1hY3MtcHVycG9z ZQojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAodXNlLXBhY2thZ2Ug cHVycG9zZS1tb2RlCiAgOzsgIDplbnN1cmUgdAogIDs7ICA6Y29uZmlnCiAgOzsgKHJlcXVpcmUg J3dpbmRvdy1wdXJwb3NlKQogIDs7IChwdXJwb3NlLW1vZGUpCiAKICA7OyAgKQojK0VORF9TUkMg CgoKKiogcGVyc3BlY3RpdmUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYTY0ZDM4MzEt M2IzNS00ZTFiLThhZWEtM2EzOTk3ZjlkYTE2CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQogIDs7ICh1c2UtcGFja2FnZSBwZXJzcGVjdGl2ZQogIDs7ICA6ZW5z dXJlIHQKICA7OyAgOmNvbmZpZwogIDs7ICApCiMrRU5EX1NSQyAKKiogVE9ETyBwbHVyCmh0dHBz Oi8vZ2l0aHViLmNvbS94dWNodW55YW5nL3BsdXIKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQogICh1c2UtcGFja2FnZSBwbHVyCiAgOmVuc3VyZSB0CiAgOmNvbmZpZwoKICAp CiMrRU5EX1NSQyAKCgoqKiBwb2x5bW9kZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBl NTQ3ZTBjNS0xZDk5LTRiMWYtYWRjYS1iY2JlNzI4MWRiNzEKICAgOkVORDoKaHR0cHM6Ly9naXRo dWIuY29tL3ZzcGludS9wb2x5bW9kZQoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBwb2x5bW9kZQogOmVuc3VyZSB0CiA6Y29uZmlnCihyZXF1aXJlICdw b2x5LVIpIAoocmVxdWlyZSAncG9seS1vcmcpCihhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0 ICcoIlxcLm9yZyIgLiBwb2x5LW9yZy1tb2RlKSkKICkKIytFTkRfU1JDIAoKV2hlbiBwb2ludCBp cyBpbnNpZGUgYSBzcmMtYmxvY2sgdGhlIGxvY2FsIG1vZGUgcHJldmFpbHMuClNvOgpDLWMgQy1u IGluc2lkZSBhbiBSIHNyYyBibG9jayBzZW5kcyB0aGUgbGluZSBwb2ludCBpcyBvbiB0byB0aGUg UiBwcm9jZXNzLgpDLWMgQy1jIHNlbmRzIHRoZSByZWdpb24gKG9yIGZ1bmN0aW9uIG9yIHBhcmFn cmFwaCkgdG8gdGhlIHByb2Nlc3Mgd2hlbiBwb2ludCBpcyBpbiB0aGUgYm9keS4gClRvIGV4ZWN1 dGUgYG9yZy1jdHJsLWMtY3RybC1jJyBvbiB0aGUgc3JjIGJsb2NrIHdpdGggdGhlIEMtYyBDLWMg a2V5aW5nLCBpdCBpcyBuZWNlc3NhcnkgdG8gbW92ZSBwb2ludCB0byBiZWZvcmUgb3IgYWZ0ZXIg dGhlIGJvZHkuCioqIFJhaW5ib3cgbW9kZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBk YzFjMzdlYy1kZmQyLTQ1NmYtOTM3NC00OWRhM2JiZGEzMDIKICAgOkVORDoKaHR0cDovL2p1bGll bi5kYW5qb3UuaW5mby9wcm9qZWN0cy9lbWFjcy1wYWNrYWdlcyNyYWluYm93LW1vZGUKCmZpeCBv ciB1cGRhdGUgc2luY2UgaXQgc2VlbXMgYnJva2VuIGFuZCBjb2xvcnMgYXJlIHdoaXRlCgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAodXNlLXBhY2thZ2UgcmFpbmJvdy1t b2RlCiAgOmVuc3VyZSB0CiAgOmNvbmZpZwogICkKCiAgKGRvbGlzdCAoaG9vayAnKGNzcy1tb2Rl LWhvb2sKICAgICAgICAgICAgICAgICAgaHRtbC1tb2RlLWhvb2sKICAgICAgICAgICAgICAgICAg anMtbW9kZS1ob29rCiAgICAgICAgICAgICAgICAgIGVtYWNzLWxpc3AtbW9kZS1ob29rCiAgICAg ICAgICAgICAgICAgIG9yZy1tb2RlLWhvb2sKICAgICAgICAgICAgICAgICAgdGV4dC1tb2RlLWhv b2sKICAgICAgICAgICAgICAgICAgKSkKICAgIChhZGQtaG9vayBob29rICdyYWluYm93LW1vZGUp KQojK0VORF9TUkMKKiogcmFpbmJvdy1kZWxpbWl0ZXJzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIDdkNjA5ZWZiLWEzNTAtNDA3ZS05ZDY2LWZlZWY1N2E1ODI2YwogICA6RU5EOgpodHRw czovL2dpdGh1Yi5jb20vRmFuYWVsL3JhaW5ib3ctZGVsaW1pdGVycwojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHJhaW5ib3ctZGVsaW1pdGVycwogOmVu c3VyZSB0CiA6Y29uZmlnCiAoYWRkLWhvb2sgJ3Byb2ctbW9kZS1ob29rICdyYWluYm93LWRlbGlt aXRlcnMtbW9kZSkKKHJlcXVpcmUgJ3JhaW5ib3ctZGVsaW1pdGVycykKKHNldC1mYWNlLWF0dHJp YnV0ZSAncmFpbmJvdy1kZWxpbWl0ZXJzLXVubWF0Y2hlZC1mYWNlIG5pbAogICAgICAgICAgICAg ICAgICAgIDpmb3JlZ3JvdW5kICd1bnNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgIDppbmhl cml0ICdlcnJvcikKICkKIytFTkRfU1JDIAoqKiBSYW5nZXIKICAgOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgMzI2MzUwYTgtOTRhZC00YTNjLWJmOWYtZTljYmU2YTY4NTI4CiAgIDpFTkQ6Cmh0 dHBzOi8vZ2l0aHViLmNvbS9yYWxlc2kvcmFuZ2VyLwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSByYW5nZXIKIDplbnN1cmUgdAogOmNvbmZpZwooc2V0 cSByYW5nZXItY2xlYW51cC1lYWdlcmx5IHQpCihzZXRxIHJhbmdlci1zaG93LWRvdGZpbGVzIHQp CihzZXRxIHJhbmdlci1wYXJlbnQtZGVwdGggMSkKKHNldHEgcmFuZ2VyLWlnbm9yZWQtZXh0ZW5z aW9ucyAnKCJta3YiICJpc28iICJtcDQiKSkKKHNldHEgcmFuZ2VyLWNsZWFudXAtb24tZGlzYWJs ZSB0KQooc2V0cSByYW5nZXItc2hvdy1saXRlcmFsIHQpCihzZXRxIHJhbmdlci13aWR0aC1wcmV2 aWV3IDAuNTUpCgogKQojK0VORF9TUkMgCuOAkHdl44CRIHRvIG9wZW4gaW4gZXh0ZXJuYWwgYXBw IAoqKiByZXN0YXJ0LWVtYWNzIAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l Cih1c2UtcGFja2FnZSByZXN0YXJ0LWVtYWNzIAogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytF TkRfU1JDIAoKCioqIHJlZ2lvbi1iaW5kaW5ncy1tb2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIGZmMzk0NTZiLWQ4ZjgtNDEzNy05OTlmLWFmNWJjNDYzN2ZkMwogICA6RU5EOgoKb2xk IHJlcGxhY2VkIGJ5IHNlbGVjdGVkLmVsCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKICA7OyAodXNlLXBhY2thZ2UgcmVnaW9uLWJpbmRpbmdzLW1vZGUKICA7OyAgOmVuc3Vy ZSB0CiAgOzsgIDpjb25maWcKICA7OyAocmVxdWlyZSAncmVnaW9uLWJpbmRpbmdzLW1vZGUpCiAg OzsgKHJlZ2lvbi1iaW5kaW5ncy1tb2RlLWVuYWJsZSkKICA7OyAoZGVmaW5lLWtleSByZWdpb24t YmluZGluZ3MtbW9kZS1tYXAgImQiICdraWxsLXJlZ2lvbikKICA7OyAoZGVmaW5lLWtleSByZWdp b24tYmluZGluZ3MtbW9kZS1tYXAgInkiICdraWxsLXJpbmctc2F2ZSkKICA7OyAoZGVmaW5lLWtl eSByZWdpb24tYmluZGluZ3MtbW9kZS1tYXAgImUiICdkdXBsaWNhdGUtY3VycmVudC1saW5lLW9y LXJlZ2lvbikKICA7OyAoZGVmaW5lLWtleSByZWdpb24tYmluZGluZ3MtbW9kZS1tYXAgImciICdn b29nbGUtc2VhcmNoKQogCiAgOzsgICkKIytFTkRfU1JDIAoKKiogc2NyYXRjaAogICA6UFJPUEVS VElFUzoKICAgOklEOiAgICAgICBhZDEwM2Y4Yi1iMzJjLTQzNWItYTEwMy01M2Y2YjZkZTUwMzcK ICAgOkVORDoKSW5zdGFudCBzY3JhdGNoIGJ1ZmZlciBmb3IgY3VycmVudCBtb2RlCmh0dHA6Ly9w cmFnbWF0aWNlbWFjcy5jb20vZW1hY3MvaW5zdGFudC1zY3JhdGNoLWJ1ZmZlci1mb3ItY3VycmVu dC1tb2RlLwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2Fn ZSBzY3JhdGNoCiA6ZW5zdXJlIHQKIDpjb25maWcKIChhdXRvbG9hZCAnc2NyYXRjaCAic2NyYXRj aCIgbmlsIHQpCiApCiMrRU5EX1NSQwoqKiBzaHJpbmstd2hpdGVzcGFjZQogICA6UFJPUEVSVElF UzoKICAgOklEOiAgICAgICBmMGNlOTM0YS0yYzI0LTRmMjYtYTcwMC0zNWE1NmY1MGJlMTQKICAg OkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2pjcGV0a292aWNoL3Nocmluay13aGl0ZXNwYWNlLmVs CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHNocmlu ay13aGl0ZXNwYWNlCiA6ZW5zdXJlIHQKIDpjb25maWcKICkKIytFTkRfU1JDIAoqKiBzZWxlY3Rl ZCAKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNTk5ZjEyYTktYmY3OS00YmY0LWE3Njkt NDdmNzUwY2U0ZTBhCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9LdW5nc2dldGVuL3NlbGVj dGVkLmVsCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogICh1c2UtcGFja2Fn ZSBzZWxlY3RlZAogICA6ZW5zdXJlIHQKOmNvbmZpZwogIChyZXF1aXJlICdzZWxlY3RlZCkKICAo c2VsZWN0ZWQtZ2xvYmFsLW1vZGUpIAoKICAoZGVmaW5lLWtleSBzZWxlY3RlZC1rZXltYXAgKGti ZCAicSIpICMnc2VsZWN0ZWQtb2ZmKQogIChkZWZpbmUta2V5IHNlbGVjdGVkLWtleW1hcCAoa2Jk ICJVIikgIyd1cGNhc2UtcmVnaW9uKQogIChkZWZpbmUta2V5IHNlbGVjdGVkLWtleW1hcCAoa2Jk ICJEIikgIydkb3duY2FzZS1yZWdpb24pCiAgKGRlZmluZS1rZXkgc2VsZWN0ZWQta2V5bWFwIChr YmQgInciKSAjJ2NvdW50LXdvcmRzLXJlZ2lvbikKICAoZGVmaW5lLWtleSBzZWxlY3RlZC1rZXlt YXAgKGtiZCAibSIpICMnYXBwbHktbWFjcm8tdG8tcmVnaW9uLWxpbmVzKQogIChkZWZpbmUta2V5 IHNlbGVjdGVkLWtleW1hcCAoa2JkICJkIikgIydraWxsLXJlZ2lvbikKICAoZGVmaW5lLWtleSBz ZWxlY3RlZC1rZXltYXAgKGtiZCAieSIpICMna2lsbC1yaW5nLXNhdmUpCiAgKGRlZmluZS1rZXkg c2VsZWN0ZWQta2V5bWFwIChrYmQgImUiKSAjJ2R1cGxpY2F0ZS1jdXJyZW50LWxpbmUtb3ItcmVn aW9uKQogIChkZWZpbmUta2V5IHNlbGVjdGVkLWtleW1hcCAoa2JkICJnIikgIydnb29nbGUtc2Vh cmNoKQogICApCiMrRU5EX1NSQyAKCgoqKiBTaGVsbC1wb3AKICAgOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgOTA4Yzk1MzEtMWIyYS00NzYyLTlhY2YtMmMxMWUwN2FlNzU3CiAgIDpFTkQ6Cgpo dHRwczovL2dpdGh1Yi5jb20va3lhZ2kvc2hlbGwtcG9wLWVsCgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHNoZWxsLXBvcAogOmVuc3VyZSB0CiA6Y29u ZmlnCiAoY3VzdG9tLXNldC12YXJpYWJsZXMKICcoc2hlbGwtcG9wLWRlZmF1bHQtZGlyZWN0b3J5 ICIvaG9tZS96ZWx0YWsvIikKICcoc2hlbGwtcG9wLXNoZWxsLXR5cGUgKHF1b3RlICgiYW5zaS10 ZXJtIiAiKmFuc2ktdGVybSoiIChsYW1iZGEgbmlsIChhbnNpLXRlcm0gc2hlbGwtcG9wLXRlcm0t c2hlbGwpKSkpKQogJyhzaGVsbC1wb3AtdGVybS1zaGVsbCAiL2Jpbi96c2giKQogJyhzaGVsbC1w b3AtdW5pdmVyc2FsLWtleSAiQy10IikKICcoc2hlbGwtcG9wLXdpbmRvdy1zaXplIDMwKQogJyhz aGVsbC1wb3AtZnVsbC1zcGFuIHQpCiAnKHNoZWxsLXBvcC13aW5kb3ctcG9zaXRpb24gImJvdHRv bSIpKQogKQojK0VORF9TUkMgCioqIHNtYXJ0IHRhYgogICA6UFJPUEVSVElFUzoKICAgOklEOiAg ICAgICAxODdmZTQ0Yy1jMGJlLTQ0OTYtOTQzYy00NmJmYTkxNDJkMDEKICAgOkVORDoKaHR0cHM6 Ly9naXRodWIuY29tL2dlbmVoYWNrL3NtYXJ0LXRhYgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCiAgOzsgKHVzZS1wYWNrYWdlICBzbWFydC10YWIgCiAgOzsgIDplbnN1cmUg dAogIDs7ICA6Y29uZmlnCiAgOzsgKHJlcXVpcmUgJ3NtYXJ0LXRhYikKICA7OyAoZ2xvYmFsLXNt YXJ0LXRhYi1tb2RlIDEpCgogIDs7IChzZXRxIHNtYXJ0LXRhYi1kaXNhYmxlZC1tYWpvci1tb2Rl cwogIDs7ICAgICAgIChsaXN0ICd0ZXJtLW1vZGUKICA7OyAgICAgICAgICAgICAnaW5mZXJpb3It cHl0aG9uLW1vZGUgJ3JjaXJjLW1vZGUgICdtdTRlLXZpZXctbW9kZQogIDs7ICAgICAgICAgICAg ICdtdTRlLW1haW4tbW9kZSAnbXU0ZS1oZWFkZXJzLW1vZGUgCiAgOzsgICAgICAgICAgICAgJ211 NGUtYWJvdXQtbW9kZSkpCgogIDs7IChzZXRxIGhpcHBpZS1leHBhbmQtdHJ5LWZ1bmN0aW9ucy1s aXN0CiAgOzsgICAgICAgJyh0cnktZXhwYW5kLWRhYmJyZXYKICA7OyAgICAgICAgIHRyeS1leHBh bmQtZGFiYnJldi1hbGwtYnVmZmVycwogIDs7ICAgICAgICAgdHJ5LWV4cGFuZC1kYWJicmV2LWZy b20ta2lsbAogIDs7ICAgICAgICAgdHJ5LWNvbXBsZXRlLWZpbGUtbmFtZQogIDs7ICAgICAgICAg dHJ5LWNvbXBsZXRlLWxpc3Atc3ltYm9sKSkKCiAgOzsgKHNldHEgc21hcnQtdGFiLXVzaW5nLWhp cHBpZS1leHBhbmQgdCkKCiAgOzsgICkKIytFTkRfU1JDIAoKCioqIHNtYXJ0IGNvbW1lbnQKICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNmY0ZDg5Y2MtMjFlZC00NTliLWE1YTItYzZlZjM3 ZGY0YTU3CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9wYWxkZXBpbmQvc21hcnQtY29tbWVu dAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBzbWFy dC1jb21tZW50CiA6ZW5zdXJlIHQKIDpjb25maWcKIDpiaW5kICgiTS07IiAuIHNtYXJ0LWNvbW1l bnQpIAogKQojK0VORF9TUkMKKiogc21hcnQgcGFyZW5zIAogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICBmYmY1ZGQzNS1jZDQ4LTRlYzctYTlhNy1kOTBmYjBhZDE0Y2EKICAgOkVORDoKaHR0 cHM6Ly9naXRodWIuY29tL0Z1Y28xL3NtYXJ0cGFyZW5zCgojK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHNtYXJ0cGFyZW5zCiA6ZW5zdXJlIAogOmNvbmZp ZwoocmVxdWlyZSAnc21hcnRwYXJlbnMtY29uZmlnKSAKICkKIytFTkRfU1JDIAoKCioqIHNtb290 aC1zY3JvbGxpbmcKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZGUxZDFjMDMtZmI2Yy00 MWFmLWJjMDAtMzU3ZTgzODJhOTdhCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9hc3BpZXJz L3Ntb290aC1zY3JvbGxpbmcKCmZvciAibm9ybWFsIiBzY3JvbGxpbmcKCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ugc21vb3RoLXNjcm9sbGluZwogOmVu c3VyZSB0CiA6Y29uZmlnCihyZXF1aXJlICdzbW9vdGgtc2Nyb2xsaW5nKQogKQojK0VORF9TUkMg CgoKKiogc21leAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA0NDg3ZjgzNS1hZTM0LTQ4 YWItOThlZS02MTY0Y2IxZTE5NmIKICAgOkVORDoKQG5lZWRlZCBmb3IgY291bnNlbCBpdnkgY29t cGxldGlvbnNACiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2th Z2Ugc21leAo6ZW5zdXJlIHQKOmNvbmZpZwopCiMrRU5EX1NSQwoqKiBTdXBlci1zYXZlCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGZkZWMxYzdhLTIyMDctNDU4Ni04OTQwLWEwMWM0YWEw ZmU5OQogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vYmJhdHNvdi9zdXBlci1zYXZlCgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHN1cGVyLXNhdmUK IDplbnN1cmUgdAogOmNvbmZpZwooc3VwZXItc2F2ZS1tb2RlICsxKQooc2V0cSBzdXBlci1zYXZl LWF1dG8tc2F2ZS13aGVuLWlkbGUgdCkKKHNldHEgYXV0by1zYXZlLWRlZmF1bHQgbmlsKQogKQoj K0VORF9TUkMgCgoKKiogc3VucmlzZS1jb21tYW5kZXIKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgMTlhNjVmZTktYjAzNC00ZmIwLWI4MDYtMDdmNzZkN2NhZDRkCiAgIDpFTkQ6CioqKiBt YWluIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGNmMDVhN2FlLTUyZTUtNDgyYS1h Mzc0LWYxYzE2ZWQzYTg5MQogICAgOkVORDoKaHR0cDovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNz L1N1bnJpc2VfQ29tbWFuZGVyX1RpcHMKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSBzdW5yaXNlLWNvbW1hbmRlcgogOmVuc3VyZSB0CiA6Y29uZmlnCjs7 d2hhdCB0byBzaG9lIGluIGxpc3Qgdmlldwooc2V0cSBzci1hdHRyaWJ1dGVzLWRpc3BsYXktbWFz ayAnKG5pbCBuaWwgdCB0IHQgdCB0KSkKO3N0YXJ0IHdpdGggbm8gYXR0cmlidXRlcyBpbiB2aWV3 IChpZiBzZXQgdG8gbmlsKQooc2V0cSBzci1zaG93LWZpbGUtYXR0cmlidXRlcyBuaWwpCjtzb3J0 aW5nCihzZXRxIHNyLWxpc3Rpbmctc3dpdGNoZXMgIi0tdGltZS1zdHlsZT1sb2NhbGUgLS1ncm91 cC1kaXJlY3Rvcmllcy1maXJzdCAtQWxEaGdHIikKCgo7O2Rpc2JhbGUgRiBrZXlzCjsoc2V0cSBz ci11c2UtY29tbWFuZGVyLWtleXMgbmlsKQoKCjtIZXJl4oCZcyBob3cgdG8gZGlzYWJsZSDigJxj bGljayB0byB2aXNpdCBmaWxl4oCdIGFuZCDigJxjdXJzb3IgZm9sbG93cyBtb3VzZeKAnS4KKHNl dHEgc3ItY3Vyc29yLWZvbGxvd3MtbW91c2UgbmlsKQooc2V0cSBzci10b2dnbGUtYXR0cmlidXRl IDEpCihkZWZpbmUta2V5IHNyLW1vZGUtbWFwIFttb3VzZS0xXSAgICAgICAgbmlsKQooZGVmaW5l LWtleSBzci1tb2RlLW1hcCBbbW91c2UtbW92ZW1lbnRdIG5pbCkKCjs7bmljZXIgaWNvbnMgaW4g bW9kbGluZQooc2V0cSBzci1tb2RlbGluZS11c2UtdXRmOC1tYXJrcyB0KQo7O3doZXJlIGlzIGF2 ZnMgcm9vdAooc2V0cSBzci1hdmZzLXJvb3QgIn4vLmF2ZnMiKQoKICkKIytFTkRfU1JDIAoqKiog cGx1Z2lucwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDk2MDQ1MzE5LTVjMGUtNDgx MC1iMzAyLThjMmU5NmJiZTI2YQogICAgOkVORDoKKioqKiBzdW5yaXNlLXgtcG9wdmlld2VyCiAg ICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBkZmY0NzMzYi1hODAwLTRjMDUtYTAzMi02 ZjhiMDZhNzA4YmEKICAgICA6RU5EOgoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQogKHVzZS1wYWNrYWdlIHN1bnJpc2UteC1wb3B2aWV3ZXIKICA6ZW5zdXJlIHQKICA6Y29u ZmlnCihyZXF1aXJlICdzdW5yaXNlLXgtcG9wdmlld2VyKQooc3ItcG9wdmlld2VyLW1vZGUgMSkK OzsgdG8gb3BlbiBpbiBuZXh0IHBhbmUgYW5kIG5vdCBuZXcgd2luZG93CihzZXRxIHNyLXBvcHZp ZXdlci1zZWxlY3Qtdmlld2VyLWFjdGlvbgogICAgICAgICAobGFtYmRhIG5pbCAobGV0ICgoc3It cnVubmluZyBuaWwpKSAob3RoZXItd2luZG93IDEpKSkpCiAgKQogIytFTkRfU1JDIAoqKioqIHN1 bnJpc2UteC1taXJyb3IKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGRkZGRkOWUw LTIyNWUtNGMxZi1hMTczLTJiOTQ1NmE1ODM3OQogICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHN1bnJpc2UteC1taXJyb3IKIDplbnN1 cmUgdAogOmNvbmZpZwogKHJlcXVpcmUgJ3N1bnJpc2UteC1taXJyb3IpCihzZXRxIHNyLW1pcnJv ci11bmlvbmZzLWltcGwgKHF1b3RlIHVuaW9uZnMtZnVzZSkpCiApCiMrRU5EX1NSQyAKKioqKiBz dW5yaXNlLXgtbG9vcAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYmI4YzE4MmIt MWNlZi00NmY1LTk3Y2ItMDU3NTVkMTJiMTU1CiAgICAgOkVORDoKd2hlbiB5byBuZWVkIHRvIGNv cHkgb2YgbW92ZSBhbnkgYmlnIGZpbGVzLCBqdXN0IHByZWZpeCB0aGUgYXBwcm9wcmlhdGUgY29t bWFuZCB3aXRoIEMtdS4KCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNl LXBhY2thZ2Ugc3VucmlzZS14LWxvb3AKIDplbnN1cmUgdAogOmNvbmZpZwoocmVxdWlyZSAnc3Vu cmlzZS14LWxvb3ApIAogKQojK0VORF9TUkMgCgoqKioqIHN1bnJpc2UteC1tb2RlbGluZQogICAg IDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgOGFiMWNjN2UtNWY3MC00NTI0LTgwNTktNDVk ZjkzZGJjNjE1CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l CiAgKHVzZS1wYWNrYWdlICBzdW5yaXNlLXgtbW9kZWxpbmUKICAgOmVuc3VyZSB0CiAgIDpjb25m aWcKICAgKQojK0VORF9TUkMgCgoqKioqIHN1bnJpc2UteC10YWJzCiAgICAgOlBST1BFUlRJRVM6 CiAgICAgOklEOiAgICAgICA4MWJiY2JhMy0xZTQ4LTRiYzQtYTNjMy1lZGZhYjAwYjAyZjUKICAg ICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2Fn ZSBzdW5yaXNlLXgtdGFicwogOmVuc3VyZSB0CiA6Y29uZmlnCjsocmVxdWlyZSAnc3VucmlzZeKA kHjigJB0YWJzKSAKICkKIytFTkRfU1JDIAoKKioqKiBzdW5yaXNlLXgtY2hlY2twb2ludHMKICAg ICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGZmOWU5NGMyLWQxOGMtNGIzYi1hMTdjLTlh YWM3YzA2MTE2MQogICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKKHVzZS1wYWNrYWdlIHN1bnJpc2UteC1jaGVja3BvaW50cwogOmVuc3VyZSB0CiA6Y29uZmln CiAgKQojK0VORF9TUkMgCioqKiBmdW5jdGlvbnMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICBmZjdlYjA0YS0zYmU4LTQ3MzUtYjdkZi0yNzFhMzUxOWZkY2EKICAgIDpFTkQ6CioqKiog b3BlbiB3aXRoIGV4dGVybmFsIHByb2dyYW1zCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAg ICAgICA0YzE4ZmViMi0wNjM3LTRjNGYtYmVjOS1lZTRmMjk1ZDg2YzQKICAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzs7IEFkZGluZyBmaWxlcyBvcGVuZWQg d2l0aCBleHRlcm5hbCBhcHBzIHRvIHRoZSBoaXN0b3J5IG9mIHJlY2VudCBmaWxlcy4KKGRlZmFk dmljZSBvcGVud2l0aC1maWxlLWhhbmRsZXIKICAoYXJvdW5kIGFkdmljZS1vcGVud2l0aC1maWxl LWhhbmRsZXIgKG9wZXJhdGlvbiAmcmVzdCBhcmdzKSkKICAoY29uZGl0aW9uLWNhc2UgZGVzY3Jp cHRpb24KICAgICAgYWQtZG8taXQKICAgIChlcnJvciAocHJvZ24KICAgICAgICAgICAgIChyZWNl bnRmLWFkZC1maWxlIChjYXIgYXJncykpCiAgICAgICAgICAgICAoZXJyb3IgKGNhZHIgZGVzY3Jp cHRpb24pKSkpKSkKKGFkLWFjdGl2YXRlICdvcGVud2l0aC1maWxlLWhhbmRsZXIpCgooZGVmdW4g ZXIvc3VucmlzZS1mbGF0dGVuICgpCiAoaW50ZXJhY3RpdmUpCiAoc3ItZmluZCAiLXR5cGUgZiIp KQoKOyBLaWxsIGFsbCBzdW5yaXNlIGFuZCBkaXJlZCBidWZmZXJzIHdoZW4gY2xvc2luZyBTdW5y aXNlIENvbW1hbmRlcgooZGVmdW4gZXIva2lsbC1hbGwtc3VucmlzZS1idWZmZXJzKCkKICAgICAg IktpbGwgYWxsIGRpcmVkIGJ1ZmZlcnMuIgogICAgICAoaW50ZXJhY3RpdmUpCiAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgIChsZXQoKGNvdW50IDApKQogICAgICAgICAgKGRvbGlzdChidWZm ZXIgKGJ1ZmZlci1saXN0KSkKICAgICAgICAgICAgKHNldC1idWZmZXIgYnVmZmVyKQogICAgICAg ICAgICAod2hlbiAoZGVyaXZlZC1tb2RlLXAgJ2RpcmVkLW1vZGUgJ3NyLXZpcnR1YWwtbW9kZSAn c3ItbW9kZSkKICAgICAgICAgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpCiAgICAgICAg ICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCiAgICAgICAgICAobWVzc2FnZSAiS2lsbGVk ICVpIHN1bnJpc2UgYnVmZmVyKHMpLiIgY291bnQgKSkpKQooc2V0cSBzci1xdWl0LWhvb2sgJ2Vy L2tpbGwtYWxsLXN1bnJpc2UtYnVmZmVycykKCiMrRU5EX1NSQyAKKioqIGtleXMKICAgIDpQUk9Q RVJUSUVTOgogICAgOklEOiAgICAgICBhNWQxMGY3Ny03NWMwLTQ5ZjMtODNkNS0xNzc4MDlmODI4 MTEKICAgIDpFTkQ6CioqKiogbWFpbiAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAg IDk3Yjc4NzUyLTVmODUtNDZjYS1iOTYyLWFlMGM4MDdiYTBiNQogICAgIDpFTkQ6CiMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmaW5lLWtleSBzci1tb2RlLW1hcCAoa2Jk ICIvIikgJ3NyLWZ1enp5LW5hcnJvdykgCihkZWZpbmUta2V5IHNyLW1vZGUtbWFwIChrYmQgIiIp ICdlci9zdW5yaXNlLWZsYXR0ZW4pIAooZGVmaW5lLWtleSBzci1tb2RlLW1hcCAoa2JkICJcXCIp ICdoeWRyYS1zci1jaGQvYm9keSApIAooZGVmaW5lLWtleSBzci1tb2RlLW1hcCAoa2JkICJgIikg J2h5ZHJhLXN1bnJpc2UtbGVhZGVyL2JvZHkgKSAKO2x5bnggbGlrZQooZGVmaW5lLWtleSBzci1t b2RlLW1hcCAoa2JkICI8bGVmdD4iKSAnc3ItZGlyZWQtcHJldi1zdWJkaXIgKSAKKGRlZmluZS1r ZXkgc3ItbW9kZS1tYXAgKGtiZCAiPHJpZ2h0PiIpICdzci1hZHZlcnRpc2VkLWZpbmQtZmlsZSAp IAo7bW92ZSBiYWNrL2ZvcndhcmQgaW0gaGlzdG9yeQooZGVmaW5lLWtleSBzci1tb2RlLW1hcCAo a2JkICJNLTxsZWZ0PiIpICdzci1oaXN0b3J5LXByZXYgKSAKKGRlZmluZS1rZXkgc3ItbW9kZS1t YXAgKGtiZCAiTS08cmlnaHQ+IikgJ3NyLWhpc3RvcnktbmV4dCApIAojK0VORF9TUkMKKiogc3It c3BlZWRiYXIKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgY2NjNjAxMTQtNzk0Yy00MjJm LWIxNGMtZTg2YjNlMmI4Y2M0CiAgIDpFTkQ6ClNyU3BlZWRiYXIgaXMgbW9kZSBtYWtlIFNwZWVk QmFyIHNob3cgaW4gQ3VycmVudCBGcmFtZSAKaHR0cDovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNz L1NyU3BlZWRiYXIKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2Ugc3Itc3BlZWRiYXIKIDplbnN1cmUgdAogOmNvbmZpZwogICkKIytFTkRfU1JDIAoqKiBT d2lwZXIKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMDFjMWMyMjUtNzZiOC00NDdjLTg5 NjctYjkwZWVlNzM4ZTNhCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQoodXNlLXBhY2thZ2Ugc3dpcGVyIAogOmVuc3VyZSB0CiA6Y29uZmlnCjsoaXZ5LW1vZGUg MSkKCiApCiMrRU5EX1NSQwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihk ZWZ1biBzd2lwZXItYXQtcG9pbnQgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHN3aXBlciAodGhpbmct YXQtcG9pbnQgJ3N5bWJvbCkpKQojK0VORF9TUkMKCioqIHN3aXBlciBoZWxtCiAgIDpQUk9QRVJU SUVTOgogICA6SUQ6ICAgICAgIDI4MTE1YzliLTA3NTgtNGQ0Mi05YzEzLWM1OGUyMWVlOWQxOAog ICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdl IHN3aXBlci1oZWxtCiA6ZW5zdXJlIHQKIDpjb25maWcKICApCiMrRU5EX1NSQwoqKiBzcGFjZWxp bmUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYzBkZTFhMzMtNGY5OS00Y2IxLWE0NjQt ZWFhODU1NWFmMzAzCiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9UaGVCQi9zcGFjZWxpbmUK CkVhY2ggc2VnbWVudCBoYXMgYSB2YXJpYWJsZSBzcGFjZWxpbmUtTkFNRS1wIHRoYXQgY2FuIHN3 aXRjaCB0aGUgc2VnbWVudCBvZmYgYnkgc2V0dGluZyBpdCB0byBuaWwuIFRoZXJlIGFyZSBhbHNv IHRocmVlIGNvbnZlbmllbnQgaW50ZXJhY3RpdmUgZnVuY3Rpb25zIGZvciB0b2dnbGluZzoKIytC RUdJTl9FWEFNUExFCiAgICBzcGFjZWxpbmUtdG9nZ2xlLTxuYW1lPgogICAgc3BhY2VsaW5lLXRv Z2dsZS08bmFtZT4tb24KICAgIHNwYWNlbGluZS10b2dnbGUtPG5hbWU+LW9mZgojK0VORF9FWEFN UExFCgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKHVzZS1wYWNrYWdl IHNwYWNlbGluZSAKICA6ZW5zdXJlIHQKICA6Y29uZmlnCiAgKHJlcXVpcmUgJ3NwYWNlbGluZS1j b25maWcpCiAgKHNwYWNlbGluZS1zcGFjZW1hY3MtdGhlbWUpCiAgOmNvbmZpZwooZGVmdW4gd2lu ZG93LW51bWJlcmluZy1pbnN0YWxsLW1vZGUtbGluZSAoJm9wdGlvbmFsIHBvc2l0aW9uKQogICJE byBub3RoaW5nLiIpCjs7IGFkZCBldmlsLXN0YXRlcyAKKHNldHEgc3BhY2VsaW5lLWhpZ2hsaWdo dC1mYWNlLWZ1bmMgJ3NwYWNlbGluZS1oaWdobGlnaHQtZmFjZS1ldmlsLXN0YXRlKQo7OyB0eXBl IG9mIHNlcGVyYXRvciAKKHNldHEgcG93ZXJsaW5lLWRlZmF1bHQtc2VwYXJhdG9yICd1dGYtOCkK OztuZWVkZWQgdG8gZ2V0IHRoZSBwcm9wZXIgc2VwZXJhdG9yIAooc3BhY2VsaW5lLWNvbXBpbGUp CihzZXRxIHBvd2VybGluZS1oZWlnaHQgMjApCihzZXRxIHNwYWNlbGluZS13aW5kb3ctbnVtYmVy cy1Vbmljb2RlIHQpCihzZXRxIHNwYWNlbGluZS13b3Jrc3BhY2UtbnVtYmVycy1Vbmljb2RlIHQp CihzZXRxIHBvd2VybGluZS1kZWZhdWx0LXNlcGFyYXRvciAndXRmLTgpCgo7O2V2aWwgc3RhdGUK KHNwYWNlbGluZS10b2dnbGUtZXZpbC1zdGF0ZS1vbikKOzs7Z2V0IHJpZCBvZiBhbGwgb2YgdGhl IG1pbm9yIG1vZGVzIGluIG1vZGxpbmUgCihzcGFjZWxpbmUtdG9nZ2xlLW1pbm9yLW1vZGVzLW9m ZikKOztsaWtld2lzZSB1bmNvbW1ldCBpZiB5b3Ugd2FudCB0byBnZXQgcmlkIG9mIG1ham9yIG1v ZGVzCjs7KHNwYWNlbGluZS10b2dnbGUtbWFqb3ItbW9kZS1vZmYpCihzcGFjZWxpbmUtdG9nZ2xl LWJ1ZmZlci1tb2RpZmllZC1vbikKOzs7IHNpemUgb2YgYnVmZmVyIGluZGljYXRvciAKKHNwYWNl bGluZS10b2dnbGUtYnVmZmVyLXNpemUtb2ZmKQo7OyBnZXQgcmlkIG9mIGdpdCBpbmZvIAooc3Bh Y2VsaW5lLXRvZ2dsZS12ZXJzaW9uLWNvbnRyb2wtb2ZmKQo7O2J1ZmZlciBtb2RpZmVkIAooc3Bh Y2VsaW5lLXRvZ2dsZS1idWZmZXItbW9kaWZpZWQtb24pCihzcGFjZWxpbmUtdG9nZ2xlLWJ1ZmZl ci1pZC1vbikKKHNwYWNlbGluZS10b2dnbGUtcmVtb3RlLWhvc3Qtb24pCgoKKQojK0VORF9TUkMg CgoKKiogc3B1IChzaWxlbnQgcGFja2FnZSB1cGdyYWRlKQogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICBhOGE1NDk5Yy0xMDk4LTQxMmItOTE1Mi0zNDI1ZTcxOTgxYzkKICAgOkVORDoKaHR0 cHM6Ly9naXRodWIuY29tL21vbGEtVC9zcHUKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3Vs dHMgbm9uZQoodXNlLXBhY2thZ2Ugc3B1CiAgOmRlZmVyIDUgOzsgZGVmZXIgcGFja2FnZSBsb2Fk aW5nIGZvciA1IHNlY29uZAogIDpjb25maWcgKHNwdS1wYWNrYWdlLXVwZ3JhZGUtZGFpbHkpKQoj K0VORF9TUkMKKiogdHdpdHRlcmluZy1tb2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAg IDhhOTdiZjM2LTIyNmQtNDBmNi05OTZkLTIxZDU0ZTU4NDM5ZgogICA6RU5EOgpodHRwczovL2dp dGh1Yi5jb20vaGF5YW1pei90d2l0dGVyaW5nLW1vZGUvCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgdHdpdHRlcmluZy1tb2RlCiA6ZW5zdXJlIHQKIDpj b25maWcKOzsgc2F2ZSBlbmNyeXB0ZWQgcGFzc3dvcmQgCihzZXRxIHR3aXR0ZXJpbmctdXNlLW1h c3Rlci1wYXNzd29yZCB0KQo7O1RvIGRpc3BsYXkgaWNvbnMKKHNldHEgdHdpdHRlcmluZy1pY29u LW1vZGUgdCkKOztzYXZlIGxvY2FsIGljb25zCihzZXRxIHR3aXR0ZXJpbmctdXNlLWljb24tc3Rv cmFnZSB0KQo7O3N0YXJ0IHdpdGggb2xkZXIgZmlyc3QKKHNldHEgdHdpdHRlcmluZy1yZXZlcnNl LW1vZGUgdCkKCgogKQoKIytFTkRfU1JDIAoKCioqIHRpbnkKICAgOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgYjEzMTI1ZjAtYjQzYS00OGIyLWExNTItMDQ2ZDU2ZWY1MGY1CiAgIDpFTkQ6Cioq KiBjb25maWcKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICAxZGFiOTM3NS0yMzA5LTRl MzEtYWQwNy01MjlhNzBlY2Y1NjEKICAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9hYm8tYWJv L3RpbnkKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSB0 aW55CiAgOmNvbmZpZwo7ICAoZ2xvYmFsLXNldC1rZXkgKGtiZCAiQy1zLXQiKSAndGlueS1leHBh bmQpCikKIytFTkRfU1JDCioqKiBleGFtcGxlcwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAg ICAgIGU1Mjk0Mzg2LWYxMDgtNGI0YS1hMjgzLWEzMGQ4YzAwYWZlYgogICAgOkVORDoKR2VuZXJh bCBGb3JtYXQ6IG1bcmFuZ2Ugc3RhcnRdW3NlcGFyYXRvcihzKV1bcmFuZ2UgZW5kXQrigoZJbiBl eGFtcGxl4oKGIAo7OyBtQlNFT3xGCjs7ICB8fHx8fHwKOzsgIHx8fHx8Ky0tPiAob3B0aW9uYWwp IEZvcm1hdCAtICV4IHwgMHgleCB8ICVjIHwgJXMgfCAlKCsgeCB4KSB8ICUwMTQuMmYgfCAlMDNk IHwgJShkYXRlICJKYW4gMTYiICgqIHggNykpCjs7ICB8fHx8Ky0tLT4gKG9wdGlvbmFsKSBQaXBl IGNoYXJhY3RlciB0byBzZXBhcmF0ZSBGb3JtYXQgZm9yIHJlYWRpbmcgY2xhcml0eQo7OyAgfHx8 Ky0tLS0+IChvcHRpb25hbCkgT3BlcmF0b3IgLSAqeHggfCAoKiB4IHgpIHwgKCsgeCA/QSkgfCAq MiszeCB8ICgqIDIgKCsgMyB4KSkKOzsgIHx8Ky0tLS0tPiBFbmQgdmFsdWUKOzsgIHwrLS0tLS0t PiAob3B0aW9uYWwpIFNlcGFyYXRvciAtIFNwYWNlIHwgLCB8IFxuIChkZWZhdWx0PVNwYWNlKQo7 OyAgKy0tLS0tLS0+IChvcHRpb25hbCkgQmVnaW4gdmFsdWUgKGRlZmF1bHQ9MCkKOzsgLSBObyBz cGFjZSBhbGxvd2VkIGJldHdlZW4gJ20nIGFuZCAnQicKOzsgLSBObyBzcGFjZSBhbGxvd2VkIGJl dHdlZW4gJ0UnIGFuZCAnTycKIApGYW5jaWVyIEZvcm1hdHRpbmcKRG8geW91IGtub3cgaG93IEkg Z2VuZXJhdGVkIHRoYXQgbnVtYmVyZWQgbGlzdCBvZiBmb3VyIGVsZW1lbnRzPyBJIHVzZWQgbTFc blxuNHwlZC4sIHdoaWNoIFRpbnkgZXhwYW5kcyBpbnRvOgoKMS4KCjIuCgozLgoKNC4KVGhpcyBk ZW1vbnN0cmF0ZXMgdGhhdCB5b3UgY2FuIGhhdmUgbXVsdGlwbGUgc2VwYXJhdG9yIGNoYXJhY3Rl cnM7IGhlcmUgSSB1c2UgdHdvIFxu4oCZcyBmb3IgdGhlIGV4dHJhIHNwYWNlLiBCdXQgdGhlcmUg aXMgdGhhdCB8JWQuIGF0IHRoZSBlbmQuIFRpbnkgbGV0cyB5b3UgdXNlIEVtYWNzIExpc3AgZm9y bWF0IHN0cmluZ3MsIHdoaWNoIHlvdSB3cml0ZSBhdCB0aGUgZW5kIG9mIHlvdXIgZXhwcmVzc2lv biBhbmQgZGVsaW1pdCB3aXRoIGEgdmVydGljYWwgYmFyLiBUaGUgZm9ybWF0dGluZyBzdHJpbmcg JWQuIHByaW50cyBlYWNoIG51bWJlciBhcyBhIGRpZ2l0ICglZCkgd2l0aCBhIHBlcmlvZCBhZnRl ciBpdC4gVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBuZXdsaW5lIHNlcGFyYXRvcnMgaXQg Z2l2ZXMgbWUgZXhhY3RseSB0aGUgb3V0cHV0IEkgd2FudCBmb3IgYSBudW1iZXJlZCBsaXN0IGlu IE1hcmtkb3duLgoqKiBUT0RPIHRpbGUKKioqIHVzZS1wYWNrYWdlCmh0dHBzOi8vZ2l0aHViLmNv bS9JdmFuTWFsaXNvbi90aWxlCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KHVzZS1wYWNrYWdlIHRpbGUgCiA6ZW5zdXJlIHQKIDpjb25maWcKCgoocHJvZ24KICAgIChkZWZ2 YXIgaW1hbGlzb246dGFsbC10aWxlLXN0cmF0ZWd5ICh0aWxlLXNwbGl0LW4tdGFsbCAzKSkKICAg IChkZWZ2YXIgaW1hbGlzb246d2lkZS10aWxlLXN0cmF0ZWd5IHRpbGUtd2lkZSkKICAgIChkZWZ2 YXIgaW1hbGlzb246bWFzdGVyLXRpbGUtc3RyYXRlZ3kgKHRpbGUtYXJndW1lbnQtYnVmZmVyLWZl dGNoZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsYXlvdXQg dGlsZS1tYXN0ZXItbGVmdCkpCiAgICAoZGVmaHlkcmEgaW1hbGlzb246aHlkcmEtdGlsZQogICAg ICBuaWwKICAgICAgInRpbGUiCiAgICAgICgidCIgKHRpbGUgOnN0cmF0ZWd5IGltYWxpc29uOnRh bGwtdGlsZS1zdHJhdGVneSkpCiAgICAgICgidyIgKHRpbGUgOnN0cmF0ZWd5IGltYWxpc29uOndp ZGUtdGlsZS1zdHJhdGVneSkpCiAgICAgICgibSIgKHRpbGUgOnN0cmF0ZWd5IGltYWxpc29uOm1h c3Rlci10aWxlLXN0cmF0ZWd5KSkKICAgICAgKCJzIiB0aWxlLXNlbGVjdCkKICAgICAgKCIwIiAo dGlsZSA6c3RyYXRlZ3kgdGlsZS1vbmUpKQogICAgICAoIm4iIHRpbGUpCiAgICAgICgibCIgd2lu bmVyLXVuZG8pKQogICAgKHNldHEgdGlsZS1jeWNsZXIKICAgICAgICAgICh0aWxlLXN0cmF0ZWdp ZXMgOnN0cmF0ZWdpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgaW1hbGlzb246 dGFsbC10aWxlLXN0cmF0ZWd5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWxp c29uOm1hc3Rlci10aWxlLXN0cmF0ZWd5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGltYWxpc29uOndpZGUtdGlsZS1zdHJhdGVneQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aWxlLW9uZSkpKSkKKQojK0VORF9TUkMgCgoKKiogVE9ETyB0cmFuc2Zlci5zaAphZGQg cXVpY2sga2V5YmluZHMKCmh0dHBzOi8vZ2l0aHViLmNvbS9CcmlsbG93L3RyYW5zZmVyLXNoLmVs CgpBbiB1cGxvYWQgY2FuIGJlIHBlcmZvcm1lZCBieSBzZWxlY3RpbmcgdGhlIHJlZ2lvbi9idWZm ZXIgdG8gdXBsb2FkIGFuZCB0aGVuIGV4ZWN1dGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb21t YW5kczoKCjs7IFRoaXMgc2ltcGx5IHVwbG9hZHMgdGhlIHNlbGVjdGVkIHRleHQgdG8gdHJhbnNm ZXItc2ggYW5kIHJldHVybnMgdGhlIGxpbmsKdHJhbnNmZXItc2gtdXBsb2FkCgo7OyBVc2UgdGhp cyB0byBlbmNyeXB0IGZpbGVzIGJlZm9yZSB1cGxvYWRpbmcuIEl0IHdpbGwgcHJvbXB0IHlvdSBm b3IgYSBwYXNzY29kZSB0byBwYXNzIHRvIGdwZy4KdHJhbnNmZXItc2gtdXBsb2FkLWdwZwoKV2hl biBjYWxsZWQgd2l0aCB0aGUgdW5pdmVyc2FsIHByZWZpeCBhcmd1bWVudCAoQy11KSwgdGhlIHVw bG9hZCB3aWxsIGJlIGRvbmUgYXN5bmNocm9ub3VzbHkuIFRoaXMgcHJldmVudHMgZW1hY3MgZnJv bSBsb2NraW5nIHdoaWxlIHVwbG9hZGluZyBsYXJnZSBmaWxlcy4gVGhpcyBmdW5jdGlvbmFsaXR5 IHJlcXVpcmVzIHRoZSBhc3luYy5lbCBwYWNrYWdlIHRvIGJlIGluc3RhbGxlZC4KCiMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgdHJhbnNmZXItc2gKIDpl bnN1cmUgdAogOmNvbmZpZwoKICkKIytFTkRfU1JDCgoKKiogdGFiYmFyCiAgIDpQUk9QRVJUSUVT OgogICA6SUQ6ICAgICAgIDQwMjBhMjM1LTIzZTktNDYxNy1hOWFlLWZkYmQ2OTM5NmY3NAogICA6 RU5EOgpodHRwczovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNzL1RhYkJhck1vZGUKCmh0dHA6Ly9l bWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTAwODEvYnJvd3Nlci1zdHlsZS10YWJz LWZvci1FbWFjcwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgOzsgKHVz ZS1wYWNrYWdlIHRhYmJhcgogIDs7ICA6ZW5zdXJlIHQKICA7OyAgOmNvbmZpZwogIDs7IChyZXF1 aXJlICd0YWJiYXIpCiAgOzsgOyB0dXJuIG9uIHRoZSB0YWJiYXIKICA7OyAodGFiYmFyLW1vZGUg dCkKICA7OyA7IGRlZmluZSBhbGwgdGFicyB0byBiZSBvbmUgb2YgMyBwb3NzaWJsZSBncm91cHM6 IOKAnEVtYWNzIEJ1ZmZlcuKAnSwg4oCcRGlyZWTigJ0sCiAgOzsgO+KAnFVzZXIgQnVmZmVy4oCd LgoKICA7OyAoZGVmdW4gdGFiYmFyLWJ1ZmZlci1ncm91cHMgKCkKICA7OyAgICJSZXR1cm4gdGhl IGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhlIGN1cnJlbnQgYnVmZmVyIGJlbG9uZ3MgdG8uCiAgOzsg VGhpcyBmdW5jdGlvbiBpcyBhIGN1c3RvbSBmdW5jdGlvbiBmb3IgdGFiYmFyLW1vZGUncyB0YWJi YXItYnVmZmVyLWdyb3Vwcy4KICA7OyBUaGlzIGZ1bmN0aW9uIGdyb3VwIGFsbCBidWZmZXJzIGlu dG8gMyBncm91cHM6CiAgOzsgVGhvc2UgRGlyZWQsIHRob3NlIHVzZXIgYnVmZmVyLCBhbmQgdGhv c2UgZW1hY3MgYnVmZmVyLgogIDs7IEVtYWNzIGJ1ZmZlciBhcmUgdGhvc2Ugc3RhcnRpbmcgd2l0 aCDigJwq4oCdLiIKICA7OyAgIChsaXN0CiAgOzsgICAgKGNvbmQKICA7OyAgICAgKChzdHJpbmct ZXF1YWwgIioiIChzdWJzdHJpbmcgKGJ1ZmZlci1uYW1lKSAwIDEpKQogIDs7ICAgICAgIkVtYWNz IEJ1ZmZlciIKICA7OyAgICAgICkKICA7OyAgICAgKChlcSBtYWpvci1tb2RlICdkaXJlZC1tb2Rl KQogIDs7ICAgICAgIkRpcmVkIgogIDs7ICAgICAgKQogIDs7ICgobWVtcSBtYWpvci1tb2RlCiAg OzsgICAgICAgICcob3JnLW1vZGUgdGV4dC1tb2RlIHJzdC1tb2RlKSkKICA7OyAgIm9yZyIKICA7 OyAgKQoKICA7OyAgICAodAogIDs7ICAgICAgIkdlbmVyYWwiCiAgOzsgICAgICApCiAgOzsgICAg ICkpKSAKCiAgOzsgKHNldHEgdGFiYmFyLWJ1ZmZlci1ncm91cHMtZnVuY3Rpb24gJ3RhYmJhci1i dWZmZXItZ3JvdXBzKQoKICA7OyA7O1NvcnQgdGFiYmFyIGJ1ZmZlcnMgYnkgbmFtZQoKICA7OyAo ZGVmdW4gdGFiYmFyLWFkZC10YWIgKHRhYnNldCBvYmplY3QgJm9wdGlvbmFsIGFwcGVuZF9pZ25v cmVkKQogIDs7ICAgIkFkZCB0byBUQUJTRVQgYSB0YWIgd2l0aCB2YWx1ZSBPQkpFQ1QgaWYgdGhl cmUgaXNuJ3Qgb25lIHRoZXJlIHlldC4KICA7OyBJZiB0aGUgdGFiIGlzIGFkZGVkLCBpdCBpcyBh ZGRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0YWIgbGlzdCwKICA7OyB1bmxlc3MgdGhlIG9w dGlvbmFsIGFyZ3VtZW50IEFQUEVORCBpcyBub24tbmlsLCBpbiB3aGljaCBjYXNlIGl0IGlzCiAg OzsgYWRkZWQgYXQgdGhlIGVuZC4iCiAgOzsgICAoZXQgKCh0YWJzICh0YWJiYXItdGFicyB0YWJz ZXQpKSkKICA7OyAgICAgKGlmICh0YWJiYXItZ2V0LXRhYiBvYmplY3QgdGFic2V0KQogIDs7ICAg ICAgICAgdGFicwogIDs7ICAgICAgIChsZXQgKCh0YWIgKHRhYmJhci1tYWtlLXRhYiBvYmplY3Qg dGFic2V0KSkpCiAgOzsgICAgICAgICAodGFiYmFyLXNldC10ZW1wbGF0ZSB0YWJzZXQgbmlsKQog IDs7ICAgICAgICAgKHNldCB0YWJzZXQgKHNvcnQgKGNvbnMgdGFiIHRhYnMpCiAgOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChhIGIpIChzdHJpbmc8IChidWZmZXItbmFtZSAo Y2FyIGEpKSAoYnVmZmVyLW5hbWUgKGNhciBiKSkpKSkpKSkpKQoKICA7OyAgKQojK0VORF9TUkMK KiogdHJhbnNtaXNzaW9uCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGIxMzJkNmIwLTBl ZmUtNDM0Ny1iODEyLTRhOWJmMGQ1Yjc0NgogICA6RU5EOgoqKiogdXNlLXBhY2thZ2UKbmVlZCB0 byBpbnN0YWxsIGxldC1hbGlzdCBhbmQgc2VxIHBhY2thZ2VzIGZyb20gbWVscGEKaHR0cHM6Ly9n aXRodWIuY29tL2hvbG9tb3JwaC90cmFuc21pc3Npb24vaXNzdWVzLzEKCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgdHJhbnNtaXNzaW9uCiA6ZW5zdXJl IHQKIDpjb25maWcKKHJlcXVpcmUgJ3RyYW5zbWlzc2lvbikKKHNldHEgdHJhbnNtaXNzaW9uLWhv c3QgIjEwLjAuMC4yIikKKHNldHEgdHJhbnNtaXNzaW9uLXJwYy1hdXRoICcoOnVzZXJuYW1lICJ6 ZWx0YWsiIDpwYXNzd29yZCAiWFhYWCIgKSApCiApCiMrRU5EX1NSQyAKKioqIERPQ1UgCioqKiog eW91IGNhbiB0cnkgYW5kIGFkZCB0aGUgdXNlciBwYXNzIHRvIHlvdSBjb25maWcgZmlsZQojK0JF R0lOX0VYQU1QTEUKKHNldHEgdHJhbnNtaXNzaW9uLXJwYy1hdXRoICcoOnVzZXJuYW1lICJVU0VS IiA6cGFzc3dvcmQgIlBBU1MiICkgKQojK0VORF9FWEFNUExFCgoqKiBVbmRvIHRyZWUKICAgOlBS T1BFUlRJRVM6CiAgIDpJRDogICAgICAgODlkOGI0OGUtYjU1MS00OGUxLThhZDctNjhjZTQ5MTg0 YWM5CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2UgdW5kby10cmVlIAo6ZW5zdXJlIHQKOmNvbmZpZwooZ2xvYmFsLXVuZG8tdHJlZS1tb2Rl IDEpCjs7IHVuZG8tdHJlZS1hdXRvLXNhdmUtaGlzdG9yeSB3aGVuIHNldCB0byAndCcgd2lsbCBv ZnRlbiBjcmFzaCBlbWFjcy4uLiBiZSBjYXJlZnVsIHdoZW4gdXNpbmcgdGhpcyAgCihzZXRxIHVu ZG8tdHJlZS1hdXRvLXNhdmUtaGlzdG9yeSBuaWwpCihzZXRxIHVuZG8tdHJlZS1oaXN0b3J5LWRp cmVjdG9yeS1hbGlzdCAnKCgiLioiIC4gIn4vLmVtYWNzLnQvdW5kby1maWxlcyIpKSkKKHNldHEg dW5kby10cmVlLW1vZGUtbGlnaHRlciAiIikJIAopCiMrRU5EX1NSQwoqKiBUT0RPIHZpa2luZy1t b2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGMxMWI4OWRmLTk5N2QtNDVmMi1iMGI2 LTJiYmI2NGI1YTkzZAogICA6RU5EOgpodHRwczovL2dpdGh1Yi5jb20vdGxpbmRlbi92aWtpbmct bW9kZQp0aGUgZGVmYXVsdCBrZXkgYmluZCBpcyDjgJBDLWTjgJEKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgdmlraW5nLW1vZGUKIDplbnN1cmUgdAog OmNvbmZpZwoodmlraW5nLWdsb2JhbC1tb2RlKQogKQojK0VORF9TUkMgCgoKKiogdmltaXNoLWZv bGQgCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGJlMWFhZDlhLTZkZDEtNDUyNi1iMDY0 LTIxYmQwMTBhNTYyZQogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCih1c2UtcGFja2FnZSB2aW1pc2gtZm9sZAogOmVuc3VyZSB0CiA6Y29uZmlnCiAocmVxdWly ZSAndmltaXNoLWZvbGQpCjsoZ2xvYmFsLXNldC1rZXkgKGtiZCAiPG1lbnU+IHYgZiIpICMndmlt aXNoLWZvbGQpCjsoZ2xvYmFsLXNldC1rZXkgKGtiZCAiPG1lbnU+IHYgdiIpICMndmltaXNoLWZv bGQtZGVsZXRlKQogKQojK0VORF9TUkMgCgoKKiogdW5maWxsCiAgIDpQUk9QRVJUSUVTOgogICA6 SUQ6ICAgICAgIGZmMjhiZmM1LTc1OGUtNGYzOS05NTZjLTIxYjIzMDdhOGNmYgogICA6RU5EOgpo dHRwczovL2dpdGh1Yi5jb20vcHVyY2VsbC91bmZpbGwKCm1ha2VzIG9yIHVubWFrZXMgYSBtYXJr ZWQgc2VjdGlvbiB3aWRlci9zaG9ydGVyIChsb29rIGZpbGwgY29tbWFuZCkKCiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2UgdW5maWxsCjplbnN1cmUgdAo6 Y29uZmlnCikKIytFTkRfU1JDCioqIHVuaXNvbi1tb2RlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIGQzN2NiMGU0LWY4YTAtNDUzMi1iMDY4LTA1Mzc5ZDhjZWMyNwogICA6RU5EOgpodHRw czovL2dpdGh1Yi5jb20vaW1wYWt0b3IvdW5pc29uLW1vZGUKCnN5bnRheCBoaWdobGlnaHQgZm9y IHVuaXNvbiBmaWxlcyAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1c2Ut cGFja2FnZSB1bmlzb24tbW9kZQogOmVuc3VyZSB0CiA6Y29uZmlnCihhdXRvbG9hZCAndW5pc29u LW1vZGUgInVuaXNvbi1tb2RlIiAibXkgdW5pc29uIG1vZGUiIHQpCihzZXRxIGF1dG8tbW9kZS1h bGlzdCAoYXBwZW5kICcoKCJcXC5wcmYkIiAuIHVuaXNvbi1tb2RlKSkgYXV0by1tb2RlLWFsaXN0 KSkKICkKIytFTkRfU1JDIAoqKiB2aXN1YWwtcmVnZXhwCmh0dHBzOi8vZ2l0aHViLmNvbS9iZW5t YS92aXN1YWwtcmVnZXhwLmVsCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoo dXNlLXBhY2thZ2UgdmlzdWFsLXJlZ2V4cAogOmVuc3VyZSB0CiA6Y29uZmlnCiAKICkKIytFTkRf U1JDIAoKCioqIHZvbGF0aWxlLWhpZ2hsaWdodHMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAg ICAgZDlmMzFmZGYtY2ZmZi00OTYxLTgyZmUtMzNlMjYyNjY3NjA1CiAgIDpFTkQ6Cmh0dHBzOi8v Z2l0aHViLmNvbS9rLXRhbG8vdm9sYXRpbGUtaGlnaGxpZ2h0cy5lbAojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIHZvbGF0aWxlLWhpZ2hsaWdodHMKIDpl bnN1cmUgdAogOmNvbmZpZwoocmVxdWlyZSAndm9sYXRpbGUtaGlnaGxpZ2h0cykKKHZvbGF0aWxl LWhpZ2hsaWdodHMtbW9kZSB0KSAKICkKIytFTkRfU1JDIAoKKiogd2FuZGVybHVzdAogICA6UFJP UEVSVElFUzoKICAgOklEOiAgICAgICBhOWUxYTY2NC1iNzM2LTQ0MjgtODY3Ni0yYjBkNGZmYTI3 MTgKICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAxcDpyZXN1bHRzIG5vbmUKKHVzZS1w YWNrYWdlIHdhbmRlcmx1c3QKIDplbnN1cmUgdAogOmNvbmZpZwogCiApCiMrRU5EX1NSQwoqKiB3 aXRoIGVkaXRvciAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2Ugd2l0aC1lZGl0b3IKICA6ZW5zdXJlIHQKICA6aW5pdAogIChwcm9nbgogICAgKGFkZC1o b29rICdzaGVsbC1tb2RlLWhvb2sgICd3aXRoLWVkaXRvci1leHBvcnQtZWRpdG9yKQogICAgKGFk ZC1ob29rICdlc2hlbGwtbW9kZS1ob29rICd3aXRoLWVkaXRvci1leHBvcnQtZWRpdG9yKSkpCiMr RU5EX1NSQwoqKiB3b3JmCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDYzODQ1MmU3LWI5 YmUtNGUwNy05NDU0LWRmNzYwYmIyZmZkNAogICA6RU5EOgpsb29rIGhlcmUgZm9yIG1vcmUgZGV0 YWlscyBvbiBrZXliaW5kcwpodHRwczovL2dpdGh1Yi5jb20vYWJvLWFiby93b3JmL2Jsb2IvbWFz dGVyL3dvcmYuZWwKdGhpcyBwYWNrYWdlIHVzCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKICAodXNlLXBhY2thZ2Ugd29yZgogICA6ZW5zdXJlIHQKICAgOmNvbmZpZwogICAp CiMrRU5EX1NSQwoqKiB3Z3JlcCAKaHR0cHM6Ly9naXRodWIuY29tL21oYXlhc2hpMTEyMC9FbWFj cy13Z3JlcAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdl IHdncmVwCiA6ZW5zdXJlIHQKIDpjb25maWcKIAogKQojK0VORF9TUkMgCgoKKiogd2VlY2hhdC5l bAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICAyMTRhZGNmNS1kN2FhLTQwODAtODM5YS03 Y2I0NGFmYTY2ZDkKICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogICh1c2UtcGFja2FnZSB3ZWVjaGF0CiAgIDplbnN1cmUgdAogICA6Y29uZmlnCiAgKHJlcXVp cmUgJ3dlZWNoYXQpCihzZXRxIHdlZWNoYXQtbW9kdWxlcyAnKHdlZWNoYXQtYnV0dG9uCiAgICAg ICAgICAgICAgICAgICAgICAgIHdlZWNoYXQtY29tcGxldGUKICAgICAgICAgICAgICAgICAgICAg ICAgd2VlY2hhdC1zcGVsbGluZwogICAgICAgICAgICAgICAgICAgICAgICB3ZWVjaGF0LWNvcnJl Y3RvcgogICAgICAgICAgICAgICAgICAgICAgICB3ZWVjaGF0LXRyYWNraW5nCiAgICAgICAgICAg ICAgICAgICAgICAgIHdlZWNoYXQtbm90aWZpY2F0aW9ucykpCiAgICkKIytFTkRfU1JDIAoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihldmFsLWFmdGVyLWxvYWQgJ3dlZWNo YXQKICAnKHByb2duCiAgICAgKHNldHEgd2VlY2hhdC1ob3N0LWRlZmF1bHQgImthcmlmLnNlcnZl ci1zcGVlZC5uZXQiCiAgICAgICAgICAgd2VlY2hhdC1wb3J0LWRlZmF1bHQgOTAwMQogICAgICAg ICAgIHdlZWNoYXQtY29sb3ItbGlzdAogICAgICAgICAgICcodW5zcGVjaWZpZWQgImJsYWNrIiAi ZGFyayBncmF5IiAiZGFyayByZWQiICJyZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZGFy ayBncmVlbiIgImxpZ2h0IGdyZWVuIiAiYnJvd24iCiAgICAgICAgICAgICAgICAgICAgICAgICAi eWVsbG93IiAiUm95YWxCbHVlMyIKICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodCBibHVl IgogICAgICAgICAgICAgICAgICAgICAgICAgImRhcmsgbWFnZW50YSIgIm1hZ2VudGEiICJkYXJr IGN5YW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHQgY3lhbiIgImdyYXkiICJ3aGl0 ZSIpCiAgICAgICAgICAgd2VlY2hhdC1wcm9tcHQgIj4gIgogICAgICAgICAgIHdlZWNoYXQtbm90 aWZpY2F0aW9uLW1vZGUgdAogICAgICAgICAgIHdlZWNoYXQtYXV0by1tb25pdG9yLWJ1ZmZlcnMg dCAKICAgICAgICAgICB3ZWVjaGF0LWNvbXBsZXRlLW5pY2staWdub3JlLXNlbGYgbmlsCiAgICAg ICAgICAgd2VlY2hhdC1idXR0b24tYnV0dG9uaXplLW5pY2tzIG5pbAogICAgICAgICAgIHdlZWNo YXQtdHJhY2tpbmctdHlwZXMgJyg6aGlnaGxpZ2h0ICgiLisjd2VlY2hhdC5lbCIgLiA6bWVzc2Fn ZSkpCiAgICAgICAgICAgd2VlY2hhdC1zeW5jLWFjdGl2ZS1idWZmZXIgdCkKICAgICAoc2V0cSB3 ZWVjaGF0LWF1dG8tbW9uaXRvci1idWZmZXJzCiAgICAgICcoImZyZWVub2RlLiNyb2ZpIiApKQog ICAgIChzZXQtZmFjZS1iYWNrZ3JvdW5kICd3ZWVjaGF0LWhpZ2hsaWdodC1mYWNlICJkYXJrIHJl ZCIpCiAgICAgKHNldC1mYWNlLWZvcmVncm91bmQgJ3dlZWNoYXQtaGlnaGxpZ2h0LWZhY2UgImxp Z2h0IGdyZXkiKQogICAgIChhZGQtaG9vayAnd2VlY2hhdC1tb2RlLWhvb2sgJ3Zpc3VhbC1saW5l LW1vZGUpCiAgICAgKHRyYWNraW5nLW1vZGUpKSkKIytFTkRfU1JDCioqIHdjLW1vZGUKaHR0cHM6 Ly9naXRodWIuY29tL2JuYmVja3dpdGgvd2MtbW9kZSAKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIHdjLW1vZGUKICA6ZW5zdXJlIHQKICA6Y29uZmln CihhZGQtaG9vayAnb3JnLW1vZGUtaG9vayAnd2MtbW9kZSkKKQogIytFTkRfU1JDIAogCiAKKiog d2lubmVyLW1vZGUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMjdhYjAyYmUtYjU2Ny00 OGM4LWE3MGMtMzBiMzkwMzhiMWQ1CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQood2lubmVyLW1vZGUgMSkKIytFTkRfU1JDCioqIHdoaWNoIGtleQogICA6UFJP UEVSVElFUzoKICAgOklEOiAgICAgICA0YmRjYTI1My1mYThjLTQyZGEtYjQyOS04MjI0YWM4Yjkz ZGEKICAgOkVORDoKaHR0cHM6Ly9naXRodWIuY29tL2p1c3RidXIvZW1hY3Mtd2hpY2gta2V5CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ugd2hpY2gta2V5 CiA6ZW5zdXJlIHQKIDpjb25maWcKKHdoaWNoLWtleS1tb2RlKQood2hpY2gta2V5LXNldHVwLW1p bmlidWZmZXIpCjs7UG9wdXAgc2lkZSB3aW5kb3cgb24gcmlnaHQuIEZvciBkZWZhdWx0cyB1c2UK Ozsod2hpY2gta2V5LXNldHVwLXNpZGUtd2luZG93LXJpZ2h0KQoKICkKIytFTkRfU1JDIAoKCioq IFdyYXAgcmVnaW9uCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGFkM2FjMWIzLTcxOTIt NGFmNy05ZmRjLWIwNTU5M2Y5ZThmNAogICA6RU5EOgoKaHR0cHM6Ly9naXRodWIuY29tL3JlamVl cC93cmFwLXJlZ2lvbi5lbAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCih1 c2UtcGFja2FnZSB3cmFwLXJlZ2lvbgogIDplbnN1cmUgdAogIDpjb25maWcKICAod3JhcC1yZWdp b24tYWRkLXdyYXBwZXJzCiAgICcoKCIqIiAiKiIgbmlsIG9yZy1tb2RlKQogICAgICgifiIgIn4i IG5pbCBvcmctbW9kZSkKICAgICAoIi8iICIvIiBuaWwgb3JnLW1vZGUpCiAgICAgKCI9IiAiPSIg bmlsIG9yZy1tb2RlKQogICAgICgiXyIgIl8iIG5pbCBvcmctbW9kZSkKICAgICAoIiUiICIlIiBu aWwgb3JnLW1vZGUpCiAgICAgKCIhIiAiISIgbmlsIG9yZy1tb2RlKQogICAgICgiYCIgImAiIG5p bCBvcmctbW9kZSkKICAgICAoIiciICInIiBuaWwgb3JnLW1vZGUpCiAgICAgKCJAIiAiQCIgbmls IG9yZy1tb2RlKQogICAgICgiJCIgIiQiIG5pbCAob3JnLW1vZGUgbGF0ZXgtbW9kZSkpCikpCiAg KGFkZC1ob29rICdvcmctbW9kZS1ob29rICd3cmFwLXJlZ2lvbi1tb2RlKQogIChhZGQtaG9vayAn bGF0ZXgtbW9kZS1ob29rICd3cmFwLXJlZ2lvbi1tb2RlKQopCiMrRU5EX1NSQyAKCgoqKiB3b3Jr Z3JvdXAyCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGQ0YzA3MGM5LTAxN2EtNGQ0MC1h OTBjLTlhNmZkYTZiMzlhNwogICA6RU5EOgpodHRwOi8vd29ya2dyb3VwczIucmVhZHRoZWRvY3Mu b3JnL2VuL2xhdGVzdC9ndWlkZS9pbnN0YWxsYXRpb24uaHRtbAojK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKOzsgICh1c2UtcGFja2FnZSB3b3JrZ3JvdXBzMgo7OyAgOmVuc3Vy ZSB0Cjs7ICA6Y29uZmlnCjs7ICAod29ya2dyb3Vwcy1tb2RlIDEpICAgICAgICA7IHB1dCB0aGlz IG9uZSBhdCB0aGUgYm90dG9tIG9mIC5lbWFjcyAoaW5pdC5lbCkKOzsgIChyZXF1aXJlICd3b3Jr Z3JvdXBzMikKIDs7IENoYW5nZSB3b3JrZ3JvdXBzIHNlc3Npb24gZmlsZQo7OyAgKHNldHEgd2ct c2Vzc2lvbi1maWxlICJ+Ly5lbWFjcy5kLy5lbWFjc193b3JrZ3JvdXBzIikgCjs7ICApCiMrRU5E X1NSQyAKCioqIHhhaC1maW5kCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDk1N2JkYjM4 LTgyNTgtNDlkZC05ZDAwLWQwYjVhYWQwOTFmNwogICA6RU5EOgpodHRwOi8vZXJnb2VtYWNzLm9y Zy9lbWFjcy9lbGlzcC14YWgtZmluZC10ZXh0Lmh0bWwKVGhpcyBpcyB0aGUgaG9tZSBwYWdlIGZv ciDigJx4YWgtZmluZC5lbOKAnS4KClRoaXMgcGFja2FnZSBwcm92aWRlcyBlbWFjcyBjb21tYW5k cyBmb3IgZmluZC9yZXBsYWNlIGluIGEgZGlyZWN0b3J5LCBsaWtlIHtncmVwLCByZ3JlcCwgbGdy ZXAsIHVuaXggc2VkfSwgYnV0IHdyaXR0ZW4gZW50aXJlbHkgaW4gZW1hY3MgbGlzcC4KClRoaXMg cGFja2FnZSBwcm92aWRlcyB0aGVzZSBjb21tYW5kczoKCnhhaC1maW5kLXRleHQKeGFoLWZpbmQt dGV4dC1yZWdleAp4YWgtZmluZC1jb3VudAp4YWgtZmluZC1yZXBsYWNlLXRleHQKeGFoLWZpbmQt cmVwbGFjZS10ZXh0LXJlZ2V4CgpQcmVzcyBFbnRlciDihrUgb24gYSBsaW5rIHRvIGp1bXAgdG8g dGhlIGZpbGUgbG9jYXRpb24uIChvciBtb3VzZSBjbGljKWsKUHJlc3Mg44CQVGFiIOKGueOAkSB0 byBqdW1wIHRvIG5leHQgb2NjdXJlbmNlLiAo44CQ4oenIFNoaWZ0K1RhYiDihrnjgJEgZm9yIHBy ZXZpb3VzKQpQcmVzcyDjgJBBbHQrcOOAkSBvciDjgJBBbHQrbuOAkSB0byBtb3ZlIGN1cnNvciB0 byBwcmV2aW91cy9uZXh0IGZpbGUgbmFtZS4KCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQoodXNlLXBhY2thZ2UgeGFoLWZpbmQKIDplbnN1cmUgdAogOmNvbmZpZwogICkKIytF TkRfU1JDIAoKKiogb3JnLXJldmVhbCAob3gtcmV2ZWFsKQogICA6UFJPUEVSVElFUzoKICAgOklE OiAgICAgICBkODYzYTgwYS04YmI1LTQ3YzMtYmUzYi05ODdjMzM5NzdmMmQKICAgOkVORDoKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBhY2thZ2Ugb3gtcmV2ZWFs CiA6ZW5zdXJlIHQKIDpjb25maWcKOzt3aGVyZSB0aGUgcm9vdCByZXZlYWwgZm9sZGVyIGlzCihz ZXRxIG9yZy1yZXZlYWwtcm9vdCAgImZpbGU6Ly8vaG9tZS96ZWx0YWsvYXBwcy9yZXZlYWwuanMi KSAKICkKIytFTkRfU1JDIAoKKiogb3JnLXZlbG9jaXR5CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIDBhZDU4MGY0LTYwYjktNDhiMy04NTA4LTQzOGE1M2UyNDBmOQogICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwCihyZXF1aXJlICdvcmctdmVsb2NpdHkpCiMrRU5EX1NSQwoqKiBZ YXNuaXBwZXQKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNGQ3MTEwYWItMTcyMi00ZGJl LWJkZGQtMzBlYTYyNDA2YTBjCiAgIDpFTkQ6CioqKiBsb2FkIHlhc25pcHBldAogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIDcyOWE5NzhmLTcyOWMtNDcxMS04OTlmLTFhNjkwYzg3Y2Q4 NwogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoodXNlLXBh Y2thZ2UgeWFzbmlwcGV0CjplbnN1cmUgdAogOmNvbmZpZyAKKHJlcXVpcmUgJ3lhc25pcHBldCkK KHlhcy1nbG9iYWwtbW9kZSAxKQo7OyBVc2UgY3VzdG9tIHNuaXBwZXRzLgooeWFzLXJlbG9hZC1h bGwpCihzZXRxIHlhcy1zbmlwcGV0LWRpcnMgJygifi8uZW1hY3MuZC9zbmlwcGV0cy8iKSkKO2Zv ciBvcmdtb2RlIHByb3BlcnRpZXMgZml4IAooc2V0cSB5YXMtaW5kZW50LWxpbmUgJ2ZpeGVkKQo7 c2V0IGluc2VydCBhdCBwb2ludCBwcm9tcHQgdHlwZS0gaGVyZSBpZG8KKHNldHEgeWFzL3Byb21w dC1mdW5jdGlvbnMgJyh5YXMvaWRvLXByb21wdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg eWFzL2NvbXBsZXRpbmctcHJvbXB0KSkKKQojK0VORF9TUkMKKioqIGZ1bmN0aW9uIGhlbG0gCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgODNkMjdlMzEtOWY4ZS00ODUxLWE5NTYtYWQ5 YzYxYzgzMDc1CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KGRlZnVuIHNoay15YXMvaGVsbS1wcm9tcHQgKHByb21wdCBjaG9pY2VzICZvcHRpb25hbCBkaXNw bGF5LWZuKQogICJVc2UgaGVsbSB0byBzZWxlY3QgYSBzbmlwcGV0LiBQdXQgdGhpcyBpbnRvIGB5 YXMvcHJvbXB0LWZ1bmN0aW9ucy4nIgogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSBkaXNwbGF5LWZu IChvciBkaXNwbGF5LWZuICdpZGVudGl0eSkpCiAgKGlmIChyZXF1aXJlICdoZWxtLWNvbmZpZykK ICAgICAgKGxldCAodG1wc291cmNlIGNhbmRzIHJlc3VsdCBybWFwKQogICAgICAgIChzZXRxIGNh bmRzIChtYXBjYXIgKGxhbWJkYSAoeCkgKGZ1bmNhbGwgZGlzcGxheS1mbiB4KSkgY2hvaWNlcykp CiAgICAgICAgKHNldHEgcm1hcCAobWFwY2FyIChsYW1iZGEgKHgpIChjb25zIChmdW5jYWxsIGRp c3BsYXktZm4geCkgeCkpIGNob2ljZXMpKQogICAgICAgIChzZXRxIHRtcHNvdXJjZQogICAgICAg ICAgICAgIChsaXN0CgkgICAgICAgKGNvbnMgJ25hbWUgcHJvbXB0KQoJICAgICAgIChjb25zICdj YW5kaWRhdGVzIGNhbmRzKQoJICAgICAgICcoYWN0aW9uIC4gKCgiRXhwYW5kIiAuIChsYW1iZGEg KHNlbGVjdGlvbikgc2VsZWN0aW9uKSkpKQoJICAgICAgICkpCiAgICAgICAgKHNldHEgcmVzdWx0 IChoZWxtLW90aGVyLWJ1ZmZlciAnKHRtcHNvdXJjZSkgIipoZWxtLXNlbGVjdC15YXNuaXBwZXQi KSkKICAgICAgICAoaWYgKG51bGwgcmVzdWx0KQogICAgICAgICAgICAoc2lnbmFsICdxdWl0ICJ1 c2VyIHF1aXQhIikKICAgICAgICAgIChjZHIgKGFzc29jIHJlc3VsdCBybWFwKSkpKQogICAgbmls KSkKIytFTkRfU1JDCgoqKiogRE9DCioqKiogaW5zdGFsbCBhbmQgY29uZmlndXJlIFlhc25pcHBl dAoqKioqKiB3aGVyZSBkbyBzbmlwcGV0cyBhcHBlYXIgYW5kIHdoZW4gKHlhcyBtb2RlcykKdGhp cyBpcyBzZXQgYnkgdGhlIG5hbWUgb2YgdGhlIGZvbGRlciAoaW4geW91ciBjdXN0b20gc25pcHBl dCBmb2xkZXIgZGVmaW5lZCBpbiB0aGUgYHlhcy1zbmlwcGV0LWRpcnNgCuKChkluIGV4YW1wbGXi goYgdG8gZ2V0IHNuaXBwZXRzIHRvIGFwcGVhciBpbiBlc3MtbW9kZSAociBhbmQgc2FzIHNuaXBw ZXRzKSB5b3Ugd291bGQgY3JlYXRlIGEgZm9sZGVyIG5hbWVkOgoKZmlsZTp+Ly5lbWFjcy5kL3Nu aXBwZXRzL2Vzcy1tb2RlLwoKYW5kIHB1dCBhbGwgeW91IC5zbmlwcGV0cyB0aGVyZQoKeW91IGNh biB1c2UgZm9sZGVyIG5hbWVzIGxpa2Ugb3JnLW1vZGUsIHB5dGhvbi1tb2RlIGV0YyBldGMuCgol VGlwLSB5b3UgY2FuIGdldCBvdGhlciBtb2RlcyBzbmlwcGV0cyBpbiB5b3UgY3VycmVudCBtb2Rl IGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGlwczolCgoxLiB1c2UgYSBgdGV4dC1tb2RlYCBmb2xk ZXIgYW5kIHRoaXMgd2lsbCBtYWtlIHN1cmUgaXQgd2lsbCBhcHBlYXIgaW4gbWFueSBtb2RlcwoK Mi4gaXNzdWUgdGhlIGNvbW1hbmQgYHlhcy1hY3RpdmF0ZS1leHRyYS1tb2RlYCB3aGljaCBjYW4g YWN0aXZhdGUgYXJiaXRyYXJ5ICJ5YXMtb25seSIgbW9kZXMgY29ycmVzcG9uZGluZyB0byB0aGUg bmFtZXMgb2Ygc25pcHBldCBzdWJkaXJlY3RvcmllcywgYW5kIG5vdCBuZWNlc3NhcmlseSBhY3R1 YWwgbWFqb3ItbW9kZSBuYW1lcwrigoZJbiBleGFtcGxl4oKGIGlmIEkgYW0gaW4gb3JnLW1vZGUg YW5kIGlzc3VlIGB5YXMtYWN0aXZhdGUtZXh0cmEtbW9kZWAgPj4gZXNzLW1vZGUuIEkgd2lsbCBn ZXQgbXkgZXNzIHNuaXBwZXRzIGluIG9yZy1tb2RlIAoKMy4gdXNlIGEgZm9sZGVyIG5hbWVkIGBm dW5kYW1lbnRhbC1tb2RlYCBhbmQgYWRkIHRoaXMgc25pcHBldCB0byB5b3UgY29uZmlnCgpodHRw czovL2dpdGh1Yi5jb20vY2FwaXRhb21vcnRlL3lhc25pcHBldC9pc3N1ZXMvNTU3CgojK0JFR0lO X0VYQU1QTEUKKGFkZC1ob29rICd5YXMtbWlub3ItbW9kZS1ob29rCiAgICAgICAgICAobGFtYmRh ICgpCiAgICAgICAgICAgICh5YXMtYWN0aXZhdGUtZXh0cmEtbW9kZSAnZnVuZGFtZW50YWwtbW9k ZSkpKQojK0VORF9FWEFNUExFCgp0aGlzIHdpbGwgbG9hZCBhbGwgYGZ1bmRhbWVudGFsLW1vZGVg IHNuaXBwZXQgCgo0LiBUaGUgLnlhcy1wYXJlbnRzIGZpbGUKCkl0J3MgdmVyeSB1c2VmdWwgdG8g aGF2ZSBjZXJ0YWluIG1vZGVzIHNoYXJlIHNuaXBwZXRzIGJldHdlZW4gdGhlbXNlbHZlcy4gVG8g ZG8gdGhpcywgY2hvb3NlIGEgbW9kZSBzdWJkaXJlY3RvcnkgYW5kIHBsYWNlIGEgYC55YXMtcGFy ZW50c2AgZmlsZSAgY29udGFpbmluZyBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygb3Ro ZXIgbW9kZSBuYW1lcy4KV2hlbiB5b3UgcmVsb2FkIHRob3NlIG1vZGVzIGJlY29tZSBwYXJlbnRz IG9mIHRoZSBvcmlnaW5hbCBtb2RlLgoKIytCRUdJTl9FWEFNUExFCgp8LS0gYy1tb2RlCnwgICB8 LS0gLnlhcy1wYXJlbnRzICAgICMgY29udGFpbnMgImNjLW1vZGUgdGV4dC1tb2RlIgp8ICAgYC0t IHByaW50Zgp8LS0gY2MtbW9kZQp8ICAgfC0tIGZvcgp8ICAgYC0tIHdoaWxlCnwtLSBqYXZhLW1v ZGUKfCAgIHwtLSAueWFzLXBhcmVudHMgICAgIyBjb250YWlucyAiY2MtbW9kZSB0ZXh0LW1vZGUi CnwgICBgLS0gcHJpbnRsbgpgLS0gdGV4dC1tb2RlCiAgICB8LS0gZW1haWwKICAgIGAtLSB0aW1l CiMrRU5EX0VYQU1QTEUKCgoqKioqIFF1aWNrbHkgZmluZGluZyBzbmlwcGV0cwoKVGhlcmUgYXJl IHNvbWUgd2F5cyB5b3UgY2FuIHF1aWNrbHkgZmluZCBhIHNuaXBwZXQgZmlsZToKCiMrQkVHSU5f RVhBTVBMRQpNLXggeWFzLW5ldy1zbmlwcGV0CiMrRU5EX0VYQU1QTEUKClByb21wdHMgeW91IGZv ciBhIHNuaXBwZXQgbmFtZSwgdGhlbiB0cmllcyB0byBndWVzcyBhIHN1aXRhYmxlIGRpcmVjdG9y eSB0byBzdG9yZSBpdCwgcHJvbXB0aW5nIHlvdSBmb3IgY3JlYXRpb24gaWYgaXQgZG9lcyBub3Qg ZXhpc3QuIEZpbmFsbHksIHBsYWNlcyB5b3UgaW4gYSBuZXcgYnVmZmVyIHNldCB0byBzbmlwcGV0 LW1vZGUgc28geW91IGNhbiB3cml0ZSB5b3VyIHNuaXBwZXQuCgojK0JFR0lOX0VYQU1QTEUKTS14 IHlhcy12aXNpdC1zbmlwcGV0LWZpbGUKIytFTkRfRVhBTVBMRQoKUHJvbXB0cyB5b3UgZm9yIHBv c3NpYmxlIHNuaXBwZXQgZXhwYW5zaW9ucyBsaWtlIHlhcy1pbnNlcnQtc25pcHBldCwgYnV0IGlu c3RlYWQgb2YgZXhwYW5kaW5nIGl0LCB0YWtlcyB5b3UgZGlyZWN0bHkgdG8gdGhlIHNuaXBwZXQg ZGVmaW5pdGlvbidzIGZpbGUsIGlmIGl0IGV4aXN0cy4KCioqKiogRGVmaW5lIGN1c3RvbSBUZW1w bGF0ZXMKCm1ha2Ugc3VyZSB0aGUgaW4geW91IHlhcyBjb25maWcgKFtbaW5zdGFsbCUyMGFuZCUy MGNvbmZpZ3VyZSUyMFlhc25pcHBldF1bY29uZmlnXV0pICB0aGUgbG9jYWwgbG9jYXRpb24gZm9y IHRoZSB1c2VyIHNuaXBwZXRzIGFyZSBjb3JyZWN0IChpbmxjdWRpbmcgdG9wIGZvbGRlcikKdGhl biBjcmVhdGUgZmlsZXMgbGlrZSB0aGVzZSB0aGVyZQojK0JFR0lOX0VYQU1QTEUKCiMgLS0gbW9k ZTogc25pcHBldCAtLQojIG5hbWU6Y2JfYnNoCiMga2V5OiBjYmIKIyAtLQoKdGVzdCQxCnRlc3Qk MgpldGMKCiMrRU5EX0VYQU1QTEUKClRoZSBgbmFtZWAgb2YgdGhlIHNuaXBwZXQsIGZ1bmN0aW9u IGlzIG1vcmUgbGlrZSBhIGNvbW1lbnQgdGhhbiBhbnl0aGluZyBlbHNlLgpPbiB0aGUgb3RoZXIg aGFuZCwgYGtleWAgaXMgdmVyeSBpbXBvcnRhbnQ6IGl0J3Mgd2hhdCBJIGhhdmUgdG8gaW5zZXJ0 IGluIHRoZSBidWZmZXIgdG8gZ2V0IHRoZSBleHBhbnNpb24gd2l0aCBNLXggeWFzLWV4cGFuZC4K RXZlcnl0aGluZyBhZnRlciAjIC0tIGlzIHRoZSBzbmlwcGV0IGJvZHkuClRoaXMgcGFydGljdWxh ciBzbmlwcGV0IGhhcyB0d28gZmllbGRzLCBpbiBwbGFjZXMgb2YgJDEgYW5kICQyLgokMCBpcyB3 aGVyZSB0aGUgcG9pbnQgd2lsbCBiZSB3aGVuIHRoZSBzbmlwcGV0IGV4cGFuc2lvbiBpcyBmaW5p c2hlZApBcyBJIGV4cGFuZCwgcHJlc3NpbmcgVEFCIHdpbGwgbW92ZSBmcm9tIGZpZWxkIHRvIGZp ZWxkIHVudGlsIHRoZSBleHBhbnNpb24gaXMgZmluaXNoZWQuCgoqKioqIGVzY2FwZSBzcGVjaWFs IGNoYXJhY3RlcnMKQXJiaXRyYXJ5IHRleHQgY2FuIGJlIGluY2x1ZGVkIGFzIHRoZSBjb250ZW50 IG9mIGEgdGVtcGxhdGUuIFRoZXkgYXJlIHVzdWFsbHkgaW50ZXJwcmV0ZWQgYXMgcGxhaW4gdGV4 dCwgZXhjZXB0CgojK0JFR0lOX0VYQU1QTEUKJCBhbmQgPT0uIAoKWW91IG5lZWQgdG8gdXNlIFxg IHRvIGVzY2FwZSB0aGVtOiBcJCBhbmQgXC4gIAojK0VORF9FWEFNUExFClRoZSBcYCBpdHNlbGYg bWF5IGFsc28gbmVlZGVkIHRvIGJlIGVzY2FwZWQgYXMgXFwgc29tZXRpbWVzLgoqKioqIFRhYiBz dG9wIGZpZWxkcwpmb3IgbW9yZSBpbmZvIGxvb2sgaGVyZToKaHR0cDovL2NhcGl0YW9tb3J0ZS5n aXRodWIuaW8veWFzbmlwcGV0L3NuaXBwZXQtZGV2ZWxvcG1lbnQuaHRtbAoKVGFiIHN0b3BzIGFy ZSBmaWVsZHMgdGhhdCB5b3UgY2FuIG5hdmlnYXRlIGJhY2sgYW5kIGZvcnRoIGJ5IFRBQiBhbmQg Uy1UQUIuIFRoZXkgYXJlIHdyaXR0ZW4gYnkgYCRgIGZvbGxvd2VkIHdpdGggYSBudW1iZXIuCmAk MGAgaGFzIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgdGhlIGV4aXQgcG9pbnQgb2YgYSBzbmlwcGV0 LiBUaGF0IGlzIHRoZSBsYXN0IHBsYWNlIHRvIGdvIHdoZW4geW91dmUgdHJhdmVsZWQgYWxsIHRo ZSBmaWVsZHMuCkhlcmUgaXMgYSB0eXBpY2FsIGV4YW1wbGU6CgojK0JFR0lOX0VYQU1QTEUKPGRp diQxPgogICAgJDAKPC9kaXY+CiMrRU5EX0VYQU1QTEUKKioqKiB1c2luZyB5YXNuaXBwZXRzIHdp dGggUgoKc2luY2UgUiB1c2VzICQgaW4gc3ludGF4LCBZb3UgbmVlZCB0byB1c2UgYmFja3NsYXNo IHRvIGVzY2FwZSB0aGUgJDoK4oKGSW4gZXhhbXBsZeKChiAKCiMrQkVHSU5fRVhBTVBMRQokMVwk JDIKCiMrRU5EX0VYQU1QTEUKb3IKCiMrQkVHSU5fRVhBTVBMRQokezE6REFUQX1cJCR7MjpWQVJ9 CgojK0VORF9FWEFNUExFCgoqKioqIGNob29zZSBwcmUgZGVmaW5lZCB2YWx1ZXMgb24gZXhwYW5z aW9uCnVzZSB0aGUgeWFzLWNob29zZS12YWx1ZSBjb21tYW5kCuKChkluIGV4YW1wbGXigoYgCiMr QkVHSU5fRVhBTVBMRQogIDpQUk9QRVJUSUVTOgogICAgOklEOiAKICAgIDpUaW1lOiAgJHsxOiQk KHlhcy1jaG9vc2UtdmFsdWUgJygiMTAiICIxNSIgIjMwIiAiNjAiKSl9CiAgICA6UmF0aW5nOiAg JHsyOiQkKHlhcy1jaG9vc2UtdmFsdWUgJygiMSIgIjIiICIzIiAiNCIgIjUiKSl9IAogICAgOlNv dXJjZTogJDMKICAgIDpDdWlzaW5lOiAgJHs0OiQkKHlhcy1jaG9vc2UtdmFsdWUgJygiSW5kaWFu IiAiVGhhaSIgIkFzaWFuIiAiVmlldG5hbWVzZSIgIkNoaW5lc2UiICJJc3JhZWxpIiAiSXRhbGlh biIgIkFtZXJpY2FuIiAiRWFzdEV1cm8iICJNZXhpY2FuIiAiRnJlbmNoIiAiUGVyc2lhbiIgIkF1 c3RyaWEiICkpfQogICAgOlR5cGU6ICAgJHs1OiQkKHlhcy1jaG9vc2UtdmFsdWUgJygibWFpbiIg InNpZGUiICJzdGFydGVyIiAic3dlZXRzIiAiZHJpbmtzIiAic2F1Y2UiICJicmVha2Zhc3QiKSl9 ICAgCiAgICA6U2VydmVzOiAgJHs2OiQkKHlhcy1jaG9vc2UtdmFsdWUgJygiMSIgIjIiICI0IiAi NiIgIjgiKSl9IAogICAgOkZhdjogJDcKICAgIDpFTkQ6CiMrRU5EX0VYQU1QTEUKCioqIHlhbmtw YWQKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZDViYzdmZDgtM2QyNi00YTYwLWJhN2Ut ZDg4YWUyNWExMjY0CiAgIDpFTkQ6Cmh0dHBzOi8vZ2l0aHViLmNvbS9LdW5nc2dldGVuL3lhbmtw YWQKKioqIHVzZS1wYWNrYWdlCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KHVzZS1wYWNrYWdlIHlhbmtwYWQKIDplbnN1cmUgdAogOmNvbmZpZwogIChyZXF1aXJlICd5YW5r cGFkKQogIChzZXRxIHlhbmtwYWQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9oZWxwL3lh bmtwYWQub3JnIikKOzsgdG8gbWFrZSBsdjMgc25pcHBldHMgKGFuZCB1c2UgbHYyIGFzIHN1YiBj YXRlZ29yeSkKKHNldHEgeWFua3BhZC1zbmlwcGV0LWhlYWRpbmctbGV2ZWwgMykgCiApCiMrRU5E X1NSQwoqKiogRE9DVQoqKioqIHBlciBmaWxlIGNhdGVnb3J5CiBTb21ldGltZXMgaXQgbWF5IGJl IHVzZWZ1bCB0byBzZXQgdGhlIGNhdGVnb3J5IGF1dG9tYXRpY2FsbHkgZm9yIGEgc3BlY2lmaWMg ZmlsZS4gSW4gdGhpcyBjYXNlIHlvdSBjYW4gYWRkIHlhbmtwYWQtY2F0ZWdvcnkgYXMgYSBmaWxl IHZhcmlhYmxlLCBmb3IgaW5zdGFuY2UgYnkgYWRkaW5nIHRoaXMgbGluZSBhdCB0aGUgdG9wIG9m IHlvdXIgZmlsZToKCiAjK0JFR0lOX0VYQU1QTEUKIC0qLSB5YW5rcGFkLWNhdGVnb3J5OiAiQ2F0 ZWdvcnkgbmFtZSI7IC0qLQogIytFTkRfRVhBTVBMRQogVGhlIGFib3ZlIHdpbGwgbm90IGFkZCBr ZXliaW5kaW5ncyB0byB5YW5rcGFkLW1hcC4gSW4gb3JkZXIgdG8gZG8gdGhhdCBvbiBhIGZpbGUt dG8tZmlsZSBiYXNpcywgYWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSBp bnN0ZWFkOgoKICMrQkVHSU5fRVhBTVBMRQogLSotIGV2YWw6ICh5YW5rcGFkLXNldC1sb2NhbC1j YXRlZ29yeSAiQ2F0ZWdvcnkgbmFtZSIpIC0qLQogIytFTkRfRVhBTVBMRQoKIGlmIHlvdSBuZWVk IHRvIHB1dCBpdCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIHRoZSBzeW50YXggaXMgYSBiaXQgZGlm ZmVyZW50CiMrQkVHSU5fRVhBTVBMRQo7IC8qIExvY2FsIFZhcmlhYmxlczogICovCjsgLyogICB5 YW5rcGFkLWNhdGVnb3J5OiAic2V0dGluZ3MiOyAgICAgICAgICovCjsgLyogRW5kOiAgICAgICAg ICAgICAgKi8KIytFTkRfRVhBTVBMRQoKKioqKiB0byBhdXRvIHN3aXRjaCB0byBhIGNhdGVnb3J5 IGZvciBhICBzcGVjaWZpYyBmaWxlIGFkZCB0aGlzIHRvIHRoZSB0b3Agb2YgYSBmaWxlIAoKIytC RUdJTl9FWEFNUExFCi0qLSB5YW5rcGFkLWNhdGVnb3J5OiAiZm9vZCI7IC0qLQojK0VORF9FWEFN UExFCgoqKiB1bmlxdWlmeSAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQoo dXNlLXBhY2thZ2UgdW5pcXVpZnkKICA6Y29uZmlnCiAgKHNldHEgdW5pcXVpZnktYnVmZmVyLW5h bWUtc3R5bGUgJ3Bvc3QtZm9yd2FyZC1hbmdsZS1icmFja2V0cykKKQojK0VORF9TUkMgICAKCgoK CgoKCgoKKiBPcmcKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAgICAgIDU4NjJjMTJmLTVjYmEtNDIy MC1hZGQ1LWU5MjMwN2JjZWFhYwogIDpFTkQ6CioqIG9yZyBmYWNlcwogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICA3ZmE3OTAzZS1lZjY1LTRjNTMtOTZiOC03Mjc5YWQ3ZTFlYjgKICAgOkVO RDoKKioqIGFkZCBtb3JlIGxldmVscwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGNj NzYwZTBkLTg2MWYtNDFjNS1hOWQzLWY5ZTczODVhNjgzYwogICAgOkVORDoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQoKOzs7IGFkZCBtb3JlIG9yZyBsZXZlbHMKCjs7OyBs ZXZlbCA5CgoocHJvZ24KICAoZGVmZmFjZSBvcmctbGV2ZWwtOSAKICAgIChvcmctY29tcGF0aWJs ZS1mYWNlIG5pbCA7OyBub3QgaW5oZXJpdGluZyBmcm9tIG91dGxpbmUtOSBiZWNhdXNlIHRoYXQg ZG9lcyBub3QgZXhpc3QKICAgICAgJygoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgMTYpIChi YWNrZ3JvdW5kIGxpZ2h0KSkgKDpmb3JlZ3JvdW5kICIjRmE4MDcyIikpCiAgICAgICAgKCgoY2xh c3MgY29sb3IpIChtaW4tY29sb3JzIDE2KSAoYmFja2dyb3VuZCBkYXJrKSkgKDpmb3JlZ3JvdW5k ICIjRmE4MDcyIikpCiAgICAgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDgpKSAoOmZv cmVncm91bmQgImdyZWVuIikpKSkKICAgICJGYWNlIHVzZWQgZm9yIGxldmVsIDkgaGVhZGxpbmVz LiIKICAgIDpncm91cCAnb3JnLWZhY2VzKQogIChzZXRxIG9yZy1sZXZlbC1mYWNlcyAoYXBwZW5k IG9yZy1sZXZlbC1mYWNlcyAobGlzdCAnb3JnLWxldmVsLTkpKSkKICAoc2V0cSBvcmctbi1sZXZl bC1mYWNlcyAobGVuZ3RoIG9yZy1sZXZlbC1mYWNlcykpKQoKOztsZXZlbCAxMAoKKHByb2duCiAg KGRlZmZhY2Ugb3JnLWxldmVsLTEwIAogICAgKG9yZy1jb21wYXRpYmxlLWZhY2UgbmlsIDs7IG5v dCBpbmhlcml0aW5nIGZyb20gb3V0bGluZS05IGJlY2F1c2UgdGhhdCBkb2VzIG5vdCBleGlzdAog ICAgICAnKCgoKGNsYXNzIGNvbG9yKSAobWluLWNvbG9ycyAxNikgKGJhY2tncm91bmQgbGlnaHQp KSAoOmZvcmVncm91bmQgIiNEYWE1MjAiKSkKICAgICAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1j b2xvcnMgMTYpIChiYWNrZ3JvdW5kIGRhcmspKSAoOmZvcmVncm91bmQgIiNEYWE1MjAiKSkKICAg ICAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgOCkpICg6Zm9yZWdyb3VuZCAiZ3JlZW4i KSkpKQogICAgIkZhY2UgdXNlZCBmb3IgbGV2ZWwgMTAgaGVhZGxpbmVzLiIKICAgIDpncm91cCAn b3JnLWZhY2VzKQogIChzZXRxIG9yZy1sZXZlbC1mYWNlcyAoYXBwZW5kIG9yZy1sZXZlbC1mYWNl cyAobGlzdCAnb3JnLWxldmVsLTEwKSkpCiAgKHNldHEgb3JnLW4tbGV2ZWwtZmFjZXMgKGxlbmd0 aCBvcmctbGV2ZWwtZmFjZXMpKSkKCjs7IGxldmVsIDExIAoocHJvZ24KICAoZGVmZmFjZSBvcmct bGV2ZWwtMTEgCiAgICAob3JnLWNvbXBhdGlibGUtZmFjZSBuaWwgOzsgbm90IGluaGVyaXRpbmcg ZnJvbSBvdXRsaW5lLTkgYmVjYXVzZSB0aGF0IGRvZXMgbm90IGV4aXN0CiAgICAgICcoKCgoY2xh c3MgY29sb3IpIChtaW4tY29sb3JzIDE2KSAoYmFja2dyb3VuZCBsaWdodCkpICg6Zm9yZWdyb3Vu ZCAiIzZiOGUyMyIpKQogICAgICAgICgoKGNsYXNzIGNvbG9yKSAobWluLWNvbG9ycyAxNikgKGJh Y2tncm91bmQgZGFyaykpICg6Zm9yZWdyb3VuZCAiIzZiOGUyMyIpKQogICAgICAgICgoKGNsYXNz IGNvbG9yKSAobWluLWNvbG9ycyA4KSkgKDpmb3JlZ3JvdW5kICJncmVlbiIpKSkpCiAgICAiRmFj ZSB1c2VkIGZvciBsZXZlbCAxMSBoZWFkbGluZXMuIgogICAgOmdyb3VwICdvcmctZmFjZXMpCiAg KHNldHEgb3JnLWxldmVsLWZhY2VzIChhcHBlbmQgb3JnLWxldmVsLWZhY2VzIChsaXN0ICdvcmct bGV2ZWwtMTEpKSkKICAoc2V0cSBvcmctbi1sZXZlbC1mYWNlcyAobGVuZ3RoIG9yZy1sZXZlbC1m YWNlcykpKQoKIytFTkRfU1JDCioqKiBoaWRlIG1hcmt1cHMgaW4gb3JnIGJ1ZmZlcgoqZG9uJ3Qq IGhpZGUgdGhpbmdzIGxpa2UgPSBhbmQgLyBmb3IgZW1waGFzaXMgbWFya2Vycwp0byBoaWRlIGNo YW5nZSBuaWwgdG8gdCAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooc2V0 cSBvcmctaGlkZS1lbXBoYXNpcy1tYXJrZXJzIG5pbCkKIytFTkRfU1JDCioqKiBnZW5lcmFsCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgOGRlZGY3M2UtYzVhMC00ZjcwLTgzMzgtMzMw MjdiNDRhMGU1CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KGZzZXQgJ29yZ3N0eWxlLXRub3RlCiAgIFs/ISBob21lID8hXSkKKGRlZmluZS1rZXkgb3JnLW1v ZGUtbWFwIChrYmQgIkMtMSIpICdvcmdzdHlsZS10bm90ZSkKCgooZnNldCAnb3Jnc3R5bGUtd2Fy bmluZwogICAiQFwzNDFAV0FSTklORzoiKQooZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgKGtiZCAi Qy0yIikgJ29yZ3N0eWxlLXdhcm5pbmcpCgooZnNldCAnb3Jnc3R5bGUtd2FybmluZzIKICAgWz9A IGhvbWUgP0BdKQooZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgKGtiZCAiQy1TLTIiKSAnb3Jnc3R5 bGUtd2FybmluZzIpCgoKCihmc2V0ICdvcmdzdHlsZS1jb20xCiAgIFs/fiBob21lID9+XSkKKGRl ZmluZS1rZXkgb3JnLW1vZGUtbWFwIChrYmQgIkMtMyIpICdvcmdzdHlsZS1jb20xKQoKKGZzZXQg J29yZ3N0eWxlLW5vdGUKICAgIiRcMzQxJE5PVEU6IikKKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFw IChrYmQgIkMtNCIpICdvcmdzdHlsZS1ub3RlKQoKKGZzZXQgJ29yZ3N0eWxlLW5vdGUyCiAgIFs/ JCBob21lID8kXSkKKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIChrYmQgIkMtUy00IikgJ29yZ3N0 eWxlLW5vdGUyKQoKKGZzZXQgJ29yZ3N0eWxlLXRpcAogICAiJVwzNDElVElQOiIpCihkZWZpbmUt a2V5IG9yZy1tb2RlLW1hcCAoa2JkICJDLTUiKSAnb3Jnc3R5bGUtdGlwKQoKCihmc2V0ICdvcmdz dHlsZS10aXAyCiAgIFs/JSBob21lID8lXSkKKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIChrYmQg IkMtUy01IikgJ29yZ3N0eWxlLXRpcDIpCgoKKGZzZXQgJ29yZ3N0eWxlLWNvZGUKICAgWz9eIGhv bWUgP15dKQooZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgKGtiZCAiQy02IikgJ29yZ3N0eWxlLWNv ZGUpCgooZnNldCAnb3Jnc3R5bGUtaGVhZGVyCiAgIFs/JiBob21lID8mXSkKKGRlZmluZS1rZXkg b3JnLW1vZGUtbWFwIChrYmQgIkMtNyIpICdvcmdzdHlsZS1oZWFkZXIpCgooZnNldCAnb3Jnc3R5 bGUtYm9sZAogICBbPyogaG9tZSA/Kl0pCihkZWZpbmUta2V5IG9yZy1tb2RlLW1hcCAoa2JkICJD LTciKSAnb3Jnc3R5bGUtYm9sZCkKCihmc2V0ICdvcmdzdHlsZS1oaWdobGlnaHQtZ3JlZW4KICAg Wz8nIGhvbWUgPyddKQooZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgKGtiZCAiQy05IikgJ29yZ3N0 eWxlLWhpZ2hsaWdodC1ncmVlbikKCihmc2V0ICdvcmdzdHlsZS1jb20yCiAgIFs/YCBob21lID9g XSkKKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIChrYmQgIkMtMCIpICdvcmdzdHlsZS1jb20yKQoK KGZzZXQgJ3VuZGVybGluZV9uZXRfZGVsZXRlCiAgIFs/XE0tJSA/XMKgIHJldHVybiByZXR1cm4g PyFdKQoKIytFTkRfU1JDCioqKiBvcmctZm9udGlmeS13aG9sZS1oZWFkaW5nLWxpbmUgCiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKb3JnLWZvbnRpZnktd2hvbGUtaGVhZGlu Zy1saW5lIHQKIytFTkRfU1JDCioqKiBUT0RPIGNvbG9yIG1vbmRheS9XZWQgaGVhZGVycwpodHRw Oi8vZW1hY3Muc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzI4OTA1L2NvbG9yLXNwZWNpZmlj LWRheXMtaW4tZGlmZmVyZW50LWJhY2tncm91bmQtaW4tb3JnLWFnZW5kYS8yODkyMyMyODkyMwoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gbXktb3JnLWFnZW5k YS1nZXQtZGF5LWZhY2UtZm4gKGRhdGUpCiJSZXR1cm4gdGhlIGZhY2UgREFURSBzaG91bGQgYmUg ZGlzcGxheWVkIHdpdGguIgogIChsZXQgKChkYXktb2Ytd2VlayAoY2FsZW5kYXItZGF5LW9mLXdl ZWsgZGF0ZSkpKQogICAgKGNvbmQKICAgICAgKChvciAoPSBkYXktb2Ytd2VlayAxKSAoPSBkYXkt b2Ytd2VlayAzKSkKICAgICAgICAnKDpiYWNrZ3JvdW5kICJEYXJrU2VhR3JlZW4iKSkKICAgICAg KChvcmctYWdlbmRhLXRvZGF5cCBkYXRlKQogICAgICAgICdvcmctYWdlbmRhLWRhdGUtdG9kYXkp CiAgICAgICgobWVtYmVyIChjYWxlbmRhci1kYXktb2Ytd2VlayBkYXRlKSBvcmctYWdlbmRhLXdl ZWtlbmQtZGF5cykKICAgICAgICAnb3JnLWFnZW5kYS1kYXRlLXdlZWtlbmQpCiAgICAgICh0ICdv cmctYWdlbmRhLWRhdGUpKSkpCgooc2V0cSBvcmctYWdlbmRhLWRheS1mYWNlLWZ1bmN0aW9uICdt eS1vcmctYWdlbmRhLWdldC1kYXktZmFjZS1mbikKIytFTkRfU1JDCioqIEJhc2UKICAgOlBST1BF UlRJRVM6CiAgIDpJRDogICAgICAgMDk3YzEwMWUtNDI3MC00NzAwLTg3MTktMGQ4NGFiN2Y5ZWJk CiAgIDpFTkQ6CioqKiBzd2FwIEMgYW5kIE0gUkVUVVJOCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgMTYxNmU2NzctMzg5Ni00NTVhLWFlNWUtMTliNTA4MTYwZTU4CiAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHdpdGgtZXZhbC1hZnRlci1sb2Fk ICJvcmciIAooZGVmaW5lLWtleSBvcmctbW9kZS1tYXAgKGtiZCAiPEMtcmV0dXJuPiIpICdvcmct aW5zZXJ0LWhlYWRpbmcpCihkZWZpbmUta2V5IG9yZy1tb2RlLW1hcCAoa2JkICI8TS1yZXR1cm4+ IikgICdvcmctaW5zZXJ0LWhlYWRpbmctcmVzcGVjdC1jb250ZW50KQopIAojK0VORF9TUkMKKioq IG9yZyBiYXNlIGNvbmZpZ3MKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBmZjIyNWVh NC05NjdhLTRjZDYtYjgwNi0wNjNhNGQ3MjU5NzQKICAgIDpFTkQ6CioqKiogZGVmaW5lIG9yZyBt b2RlIGxvY2F0aW9ucyBmb3IgYWxsIG9wZXJhdGlvbnMKICAgICA6UFJPUEVSVElFUzoKICAgICA6 SUQ6ICAgICAgIGQwZWE4Yzk3LWM3OGEtNGM1Ny05YTc0LTU5ZjhhYzljMDg0NAogICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBvcmctZGlyZWN0b3J5 ICJ+L29yZy9maWxlcy8iKQooc2V0cSBvcmctZGVmYXVsdC1ub3Rlcy1maWxlICJ+L29yZy9maWxl cy9yZWZpbGUub3JnIikKIytFTkRfU1JDIAoqKioqIG1haW4gY29uZmlncwogICAgIDpQUk9QRVJU SUVTOgogICAgIDpJRDogICAgICAgNmYxMWI4NzAtMzcwMS00MTU0LWFjNzMtODUzYWE1MzQ5ZDdl CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjthc3NvY2lh dGUgdGhlc2UgZmlsZXMgd2l0aCBvcmcKCihhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFsaXN0ICco IlxcLlxcKG9yZ1xcfG9yZ19hcmNoaXZlXFx8dHh0XFwpJCIgLiBvcmctbW9kZSkpCgo7bWFrZSBu ZXcgaGVhZGluZ3MgYXBwZWFyIGFmdGVyIHRoZSBjb250ZW50IGZvciB0aGUgY3VycmVudCBvbmUK KHNldHEgb3JnLWluc2VydC1oZWFkaW5nLXJlc3BlY3QtY29udGVudCB0KQoKO2dvaW5nIHRvIHRo ZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgaGVhZGluZyBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50 IGxpbmUKKHNldHEgb3JnLXNwZWNpYWwtY3RybC1hL2UgdCkKO3JlYmluZCBjZXJ0YWluIG9uZS1s ZXR0ZXIga2V5YmluZGluZ3Mgd2hlbiB0aGUgY3Vyc29yIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIHJvdyAtIG1vc3Qgbm90YWJseSDigJh04oCZIGZvciBvcmctdG9kbyBpbnN0ZWFkIG9mIOKA mEMtYyBDLXTigJkKKHNldHEgb3JnLXN0YXJ0dXAtYWxpZ24tYWxsLXRhYmxlcyB0KQooc2V0cSBv cmctYXJjaGl2ZS1sb2NhdGlvbiAoY29uY2F0IG9yZy1kaXJlY3RvcnkgImFyY2hpdmUvJXNfYXJj aGl2ZTo6IikpCihzZXRxIG9yZy1hdHRhY2gtc3RvcmUtbGluay1wIDEpCjt0byBtYWtlIGlkbyBt b2RlIHdvcmsgaW4gb3JnIG1vZGUgYXMgd2VsCihzZXRxIG9yZy1jb21wbGV0aW9uLXVzZS1pZG8g dCkKO2FsbG93IHNwZWVka2V5cwooc2V0cSBvcmctdXNlLXNwZWVkLWNvbW1hbmRzIHQpCihzZXRx IG9yZy1zcGVlZC1jb21tYW5kcy11c2VyIG5pbCkKICMrRU5EX1NSQwoqKiogYWRkIHRpbWUgc3Rh bXAgb24gZXZlcnkgb3JnIGhlYWRlcgogICAgOlBST1BFUlRJRVM6CiAgICA6TEFTVC1FRElURUQ6 IFswMy0wOC0yMDE1KDIwOjU3KV0KICAgIDpJRDogICAgICAgZGQyNzgzOWQtZTQ5My00MzBlLTgy M2UtZmZmOWRmMzg3ZGNiCiAgICA6RU5EOgp0aGlzIHdpbGwgdXBkYXRlIHdoZW4gdGhlIGhlYWRl ciB0ZXh0IHdpbGwgY2hhbmdlCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwCiAgOzsgICAoZGVmdW4g dXBkYXRlLWxhc3QtZWRpdGVkIChiZWcgZW5kIGxlbmd0aCkKICA7OyAgICAgKHdoZW4KICA7OyAg ICAgICAgIChhbmQKICA7OyAgICAgICAgICAobm90IChvcmctYmVmb3JlLWZpcnN0LWhlYWRpbmct cCkpCiAgOzsgICAgICAgICAgKG9yZy1nZXQtaGVhZGluZykpCiAgOzsgICAgICAgKG9yZy1lbnRy eS1wdXQgbmlsICJMQVNULUVESVRFRCIgKGZvcm1hdC10aW1lLXN0cmluZyAiWyVkLSVtLSVZKCVI OiVNKV0iKSkpKQoKICA7OyAoYWRkLWhvb2sgJ29yZy1tb2RlLWhvb2sgKGxhbWJkYSAoKQogIDs7 IChhZGQtdG8tbGlzdCAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyAndXBkYXRlLWxhc3QtZWRpdGVk KSkpIAojK0VORF9TUkMKCiMrUkVTVUxUUzoKKioqIG9yZy1jcnlwdAojK0JFR0lOX1NSQyBlbWFj cy1saXNwICA6cmVzdWx0cyBub25lCihyZXF1aXJlICdvcmctY3J5cHQpCihvcmctY3J5cHQtdXNl LWJlZm9yZS1zYXZlLW1hZ2ljKQooc2V0cSBvcmctdGFncy1leGNsdWRlLWZyb20taW5oZXJpdGFu Y2UgKHF1b3RlICgiY3J5cHQiKSkpCjs7IEdQRyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uCjs7 IEVpdGhlciB0aGUgS2V5IElEIG9yIHNldCB0byBuaWwgdG8gdXNlIHN5bW1ldHJpYyBlbmNyeXB0 aW9uLgooc2V0cSBvcmctY3J5cHQta2V5IG5pbCkKIytFTkRfU1JDCgojK0VORF9TUkMKKioqIFNh dmUgYWxsIG9yZyBidWZmZXJzIGV2ZXJ5IGhvdXIKICAgIDpQUk9QRVJUSUVTOgogICAgOkxBU1Qt RURJVEVEOiBbMDItMDgtMjAxNSgyMTozMildCiAgICA6SUQ6ICAgICAgIDUzYmM3YjRhLWY1NWYt NDhkZC1iYTUxLTE2Y2E0M2U5NTVjZgogICAgOkVORDoKcmVkdWRuZGFudCB0byB0byBhdXRvIHNh dmUgcGFja2FnZT8/CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHJ1bi1h dC10aW1lICIwMDo1OSIgMzYwMCAnb3JnLXNhdmUtYWxsLW9yZy1idWZmZXJzKQojK0VORF9TUkMg CgoqKiogZmx5c3BlbGwKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4MDE2ODJhOC0x YmY0LTRkYjMtYmZkOC1hNmNlZjE3MmQ5NWMKICAgIDpFTkQ6CiMrYmVnaW5fc3JjIGVtYWNzLWxp c3AKO2VuYWJsZSBmbHlzcGVsbGwKKGFkZC1ob29rICdvcmctbW9kZS1ob29rICAKICAgICAgICAg IChsYW1iZGEgKCkgICAgICAKICAgICAgICAgICAgKGZseXNwZWxsLW1vZGUpKSkKCjs7IDIuIGln bm9yZSBtZXNzYWdlIGZsYWdzIHdoaWNoIGNhbiBzbG93IG9yZyAKKHNldHEgZmx5c3BlbGwtaXNz dWUtbWVzc2FnZS1mbGFnIG5pbCkKCjs7IGlnbm9yZSB0ZXggY29tbWFuZHMgaW4gb3JnIAooYWRk LWhvb2sgJ29yZy1tb2RlLWhvb2sgKGxhbWJkYSAoKSAoc2V0cSBpc3BlbGwtcGFyc2VyICd0ZXgp KSkKKGRlZnVuIGZseXNwZWxsLWlnbm9yZS10ZXggKCkKICAoaW50ZXJhY3RpdmUpCiAgKHNldCAo bWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2lzcGVsbC1wYXJzZXIpICd0ZXgpKQooYWRkLWhv b2sgJ29yZy1tb2RlLWhvb2sgJ2ZseXNwZWxsLWlnbm9yZS10ZXgpCgojK2VuZF9zcmMKCiMrUkVT VUxUUzoKfCBvcmctbWFyay1yZWFkb25seSB8IG15LW9yZy1tb2RlLWhvb2sgfCBmbHlzcGVsbC1p Z25vcmUtdGV4IHwgKGxhbWJkYSBuaWwgKHNldHEgaXNwZWxsLXBhcnNlciAocXVvdGUgdGV4KSkp IHwgKGxhbWJkYSBuaWwgKGZseXNwZWxsLW1vZGUpKSB8IHdyYXAtcmVnaW9uLW1vZGUgfCByYWlu Ym93LW1vZGUgfCAobGFtYmRhIG5pbCAob3JnLWJ1bGxldHMtbW9kZSAxKSkgfCBvcmctcmVmLW9y Zy1tZW51IHwgKGxhbWJkYSBuaWwgKGFkdmljZS1hZGQgKHF1b3RlIG9yZy1hY3RpdmF0ZS1icmFj a2V0LWxpbmtzKSA6YWZ0ZXIgKGZ1bmN0aW9uIG9yZy1yZWYtbWFrZS1vcmctbGluay1jaXRlLWtl eS12aXNpYmxlKSkgKGZvbnQtbG9jay1hZGQta2V5d29yZHMgbmlsIChxdW90ZSAoKG9yZy1yZWYt bWF0Y2gtbmV4dC1jaXRlLWxpbmsgKDAgKHF1b3RlIG9yZy1yZWYtY2l0ZS1mYWNlKSB0KSkgKG9y Zy1yZWYtbWF0Y2gtbmV4dC1sYWJlbC1saW5rICgwIChxdW90ZSBvcmctcmVmLWxhYmVsLWZhY2Up IHQpKSAob3JnLXJlZi1tYXRjaC1uZXh0LXJlZi1saW5rICgwIChxdW90ZSBvcmctcmVmLXJlZi1m YWNlKSB0KSkgKG9yZy1yZWYtbWF0Y2gtbmV4dC1iaWJsaW9ncmFwaHktbGluayAoMCAocXVvdGUg b3JnLWxpbmspIHQpKSAob3JnLXJlZi1tYXRjaC1uZXh0LWJpYmxpb2dyYXBoeXN0eWxlLWxpbmsg KDAgKHF1b3RlIG9yZy1saW5rKSB0KSkpKSB0KSkgfCAoY2xvc3VyZSAodCkgbmlsIChmb250LWxv Y2stYWRkLWtleXdvcmRzIG5pbCAocXVvdGUgKChvci1uZXh0LWFjcm9ueW0tbGluayAoMCAocXVv dGUgb3JnLXJlZi1hY3JvbnltLWZhY2UpIHQpKSkpIHQpKSB8IChjbG9zdXJlICh0KSBuaWwgKGZv bnQtbG9jay1hZGQta2V5d29yZHMgbmlsIChxdW90ZSAoKG9yLW5leHQtZ2xvc3NhcnktbGluayAo MCAocXVvdGUgb3JnLXJlZi1nbG9zc2FyeS1mYWNlKSB0KSkpKSB0KSkgfCBlci9hZGQtb3JnLW1v ZGUtZXhwYW5zaW9ucyB8ICNbbmlsIFwzMDBcMzAxXDMwMlwzMDNcMzA0JFwyMDcgW29yZy1hZGQt aG9vayBjaGFuZ2UtbWFqb3ItbW9kZS1ob29rIG9yZy1zaG93LWJsb2NrLWFsbCBhcHBlbmQgbG9j YWxdIDVdIHwgI1tuaWwgXDMwMFwzMDFcMzAyXDMwM1wzMDQkXDIwNyBbb3JnLWFkZC1ob29rIGNo YW5nZS1tYWpvci1tb2RlLWhvb2sgb3JnLWJhYmVsLXNob3ctcmVzdWx0LWFsbCBhcHBlbmQgbG9j YWxdIDVdIHwgb3JnLWJhYmVsLXJlc3VsdC1oaWRlLXNwZWMgfCBvcmctYmFiZWwtaGlkZS1hbGwt aGFzaGVzIHwgb3JnLWVsZG9jLWxvYWQgfAoKKioqIExhdGVYIHN1cHBvcnQKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICBlYWM4MThmMC0xMDlhLTRkN2ItYmM4My05NjQ0ZjQ1MWQ3NTcK ICAgIDpFTkQ6CkNETGFUZVggaXMg4oCcaXMgYSBtaW5vciBtb2RlIHRoYXQgaXMgbm9ybWFsbHkg dXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgbWFqb3IgTGFUZVggbW9kZSBsaWtlIEFVQ1RlWCBp biBvcmRlciB0byBzcGVlZC11cCBpbnNlcnRpb24gb2YgZW52aXJvbm1lbnRzIGFuZCBtYXRoIHRl bXBsYXRlc+KAnS4KdGhlIE9yZyBtYW51YWwgZ2l2ZXMgYSB2ZXJ5IGVhc3kgd2F5IHRvIGVuYWJs ZSBpdDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjs7IGVuYWJsZSBjZGxh dGV4IAo7OyhhZGQtaG9vayAnb3JnLW1vZGUtaG9vayAndHVybi1vbi1vcmctY2RsYXRleCkKIytF TkRfU1JDCioqKiBkaXNhYmxlIGxpbml1bSBtb2RlIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIDdiYzQwNDY5LTAyY2UtNGZjNy04OGVkLWZkNWE4YWM1MmVmMgogICAgOkVORDoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjs7ZGlzYWJsZSBsaW5lbW9kZSBvbiBv cmcKKGRlZnVuIG15LW9yZy1tb2RlLWhvb2sgKCkgCiAgKGxpbnVtLW1vZGUgMCkpIAooYWRkLWhv b2sgJ29yZy1tb2RlLWhvb2sgJ215LW9yZy1tb2RlLWhvb2spCiMrRU5EX1NSQwoqKiogbWFrZSBk ZWZhdWx0IG5vdGVzIHJlYWQtb25seQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDNm ZWExNzBkLTI3ZDctNDUxMy1iNDczLTMzMzE4NGJhODFkNAogICAgOkVORDoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjsoYWRkLWhvb2sgJ29yZy1tb2RlLWhvb2sgKGxhbWJk YSAoKSAodmlldy1tb2RlIDEpKSkKIytFTkRfU1JDCioqKiBtYWtlIG9yZyBtb2RlIHJlYWQtb25s eSBhZnRlciA1IG1pbnV0ZXMgQG1heSBjYXVzZSB3aWVyZCBpc3N1ZXNACiAgICA6UFJPUEVSVElF UzoKICAgIDpJRDogICAgICAgODY5NzY1ZjQtMDAwNS00MjEyLWI0YzQtMTgwMGY4NzExOWE3CiAg ICA6RU5EOgoKQFdhcm5pbmctIHRoaXMgbWF5IGNhdXNlIHN0cmFuZ2UgYmVodmlvdXJACgojK2Jl Z2luX3NyYyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAoZGVmdmFyIHRqL2xhc3QtYnVm ZmVyLXRpY2sgbmlsKQogIDs7IChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAndGovbGFzdC1i dWZmZXItdGljaykKICAKICA7OyAoZGVmdW4gdGovbmV3LWJ1ZmZlci10aWNrcy1wICgpCiAgOzsg ICAobGV0ICgoY3Vyci10aWNrIChidWZmZXItbW9kaWZpZWQtdGljaykpCiAgOzsgICAgICAgICAo bGFzdC10aWNrIHRqL2xhc3QtYnVmZmVyLXRpY2spKQogIDs7ICAgICAoc2V0cSB0ai9sYXN0LWJ1 ZmZlci10aWNrIGN1cnItdGljaykKICA7OyAgICAgKGFuZCBsYXN0LXRpY2sgKD0gbGFzdC10aWNr IGN1cnItdGljaykpKSkKICAKICA7OyAoZGVmdW4gdGovcmVzZXQtdmlldy1tb2RlICgpCiAgOzsg ICAocnVuLXdpdGgtdGltZXIgMCAoKiA1IDYwKQogIDs7ICAgICAgICAgICAgICAgICAgIChsYW1i ZGEgKCkKICA7OyAgICAgICAgICAgICAgICAgICAgICh3aGVuICh0ai9uZXctYnVmZmVyLXRpY2tz LXApCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICh2aWV3LW1vZGUgdCkpKSkpCiAgCiAgOzsg KGFkZC1ob29rICdvcmctbW9kZS1ob29rICd0ai9yZXNldC12aWV3LW1vZGUpCiMrZW5kX3NyYwoK KioqIGVuYWJsZSBzaGlmdCBzZWxlY3Rpb24gCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAg ICAgZjc0MThiOTUtODhkMy00NmZhLWE4ZWUtMzRjMmM1MDNiZDkwCiAgICA6RU5EOgoKdXNlIHNl dHEgb3JnLXN1cHBvcnQtc2hpZnQtc2VsZWN0OgoKJ2Fsd2F5cy0gdG8gYWx3YXlzIHVzZSBpdAon bmlsLSB0byBkaXNhYmxlIG9uIG9yZyBtb2RlCid0LSBmb3IgV2hlbiBvdXRzaWRlIHNwZWNpYWwg Y29udGV4dAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIG9yZy1z dXBwb3J0LXNoaWZ0LXNlbGVjdCAndCkKIytFTkRfU1JDCgoqKiogSGVhZGVyIGJlaGF2aW9yCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgN2ZlOGI1YjMtYzA3MS00MGNhLWI3NjQtMTVh MDQ0MDU2NzExCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK Ozsgd2hlbiBjcmVhdGluZyBuZXcgaGVhZGVycyBtYWtlIHN1cmUgdGhlcmUgaXNuJ3QgYSBzcGFj ZQooc2V0cSBvcmctYmxhbmstYmVmb3JlLW5ldy1lbnRyeSAnKChoZWFkaW5nIC4gbmlsKSAocGxh aW4tbGlzdC1pdGVtIC4gbmlsKSkpCjs7O3RoaXMgd2lsbCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5v IGVtcHR5IGxpbmVzIGJldHd3biBoZWFkZXJzIGFmdGVyIGNvbGxhcHNpbmcgaGVhZGVycyAKKHNl dHEgb3JnLWN5Y2xlLXNlcGFyYXRvci1saW5lcyAwKSAKIytFTkRfU1JDCioqKiBkb24ndCBsZXQg ZWRpdCBpbnZpc2libGUgYXJlYXMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA0ZDQx YWQxNi1iNDU3LTRjNzctYjkzZC01Yjg2YWEwMjZkMTAKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKIDs7IGRvbid0IGxldCBtZSBhY2NpZGVudGFsbHkgZGVs ZXRlIHRleHQgd2l0aG91dCByZWFsaXppbmcgaXQgaW4gb3JnLiAgaWU6IHBvaW50IGlzIGJ1cmll ZCBpbiBhIHN1YnRyZWUsIGJ1dCB5b3Ugb25seQogOzsgc2VlIHRoZSBoZWFkaW5nIGFuZCB5b3Ug YWNjaWRlbnRhbGx5IGtpbGwgYSBsaW5lIHdpdGhvdXQga25vd2luZyBpdC4KIDs7IHRoaXMgbWln aHQgbm90IGJlIHN1cHBvcnRlZCBmb3IgZXZpbC1tb2RlCiBvcmctY2F0Y2gtaW52aXNpYmxlLWVk aXRzICdzaG93LWFuZC1lcnJvcgojK0VORF9TUkMKKiogbGlua3MKOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgYWMzZjczOWQtYWExMS00ZDc0LThmZDctM2M0OTE1MmEzMjA2CiAgIDpFTkQ6Cioq KiBmb2xsb3cgbGlua3Mgb24gZW50ZXIKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMg bm9uZQo7YWxsb3cgUkVUVVJOIHRvIG9wZW4gbGlua3MgKG5pbCBvciB0KQooc2V0cSBvcmctcmV0 dXJuLWZvbGxvd3MtbGluayBuaWwpCiMrRU5EX1NSQwoKKioqIGdyZXAgbGluawogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIDdhNGFjODU2LWUyY2YtNDFlZC04NmUwLTZkZThlNWMwNDYz NgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihvcmctYWRk LWxpbmstdHlwZQogImdyZXAiCiAoZGVmdW4gZW5kbGVzcy9mb2xsb3ctZ3JlcC1saW5rIChyZWdl eHApCiAgICJSdW4gYHJncmVwJyB3aXRoIFJFR0VYUCBhcyBhcmd1bWVudC4iCiAgIChncmVwLWNv bXB1dGUtZGVmYXVsdHMpCiAgIChyZ3JlcCByZWdleHAgIioiIChleHBhbmQtZmlsZS1uYW1lICIu LyIpKSkpCiMrRU5EX1NSQyAKKioqIGRpcmVkIGxpbmtzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgNjY2Zjc4NWMtOWZjZi00YzdhLWFmYTMtNWEwMTdmNTQzM2M2CiAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAob3JnLWFkZC1saW5rLXR5cGUg ImZpbGUrZW1hY3MrZGlyZWQiICdvcmctb3Blbi1maWxlLXdpdGgtZW1hY3MtZGlyZWQpCiAgKGFk ZC1ob29rICdvcmctc3RvcmUtbGluay1mdW5jdGlvbnMgJ29yZy1kaXJlZC1zdG9yZS1saW5rKQoK ICAoZGVmdW4gb3JnLW9wZW4tZmlsZS13aXRoLWVtYWNzLWRpcmVkIChwYXRoKQogICAgIk9wZW4g aW4gZGlyZWQuIgogICAgKGxldCAoKGQgKGZpbGUtbmFtZS1kaXJlY3RvcnkgcGF0aCkpCiAgICAg ICAgICAoZiAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBwYXRoKSkpCiAgICAgIChkaXJlZCBkKQog ICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAoc2VhcmNoLWZvcndhcmQgZiBuaWwg dCkpKQoKICAoZGVmdW4gb3JnLWRpcmVkLXN0b3JlLWxpbmsgKCkKICAgICJTdG9yZSBsaW5rIHRv IGZpbGVzL2RpcmVjdG9yaWVzIGZyb20gZGlyZWQuIgogICAgKHJlcXVpcmUgJ2RpcmVkKykKICAg ICh3aGVuIChlcSBtYWpvci1tb2RlICdkaXJlZC1tb2RlKQogICAgICAobGV0ICgoZiAoZGlyZWQt Z2V0LWZpbGVuYW1lKSkpCiAgICAgICAgKHNldHEgbGluayAoY29uY2F0ICJmaWxlK2VtYWNzK2Rp cmVkIiAiOiIgZikKICAgICAgICAgICAgICBkZXNjIChjb25jYXQgZiAiIChkaXJlZCkiKSkKICAg ICAgICAob3JnLWFkZC1saW5rLXByb3BzIDpsaW5rIGxpbmsgOmRlc2NyaXB0aW9uIGRlc2MpCiAg ICAgICAgbGluaykpKQojK2VuZF9zcmMKCioqKiBvcmcgbGluayBvcGVuIHdpdGgKICAgIDpQUk9Q RVJUSUVTOgogICAgOklEOiAgICAgICAwN2QwYTIxZi0zMWQ2LTQ2MDEtYTkzZi04MmJjNTFjNjVj MWEKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZXZhbC1h ZnRlci1sb2FkICJvcmciCiAgKGxhbWJkYSAoKQogICAgKGlmIChhc3NvYyAiXFwuYXZpXFwnIiBv cmctZmlsZS1hcHBzKQoJKHNldGNkciAoYXNzb2MgIlxcLmF2aVxcJyIgb3JnLWZpbGUtYXBwcykg InZsYyAlcyIpCiAgICAgIChhZGQtdG8tbGlzdCAnb3JnLWZpbGUtYXBwcyAnKCJcXC5hdmlcXCci IC4gInZsYyAlcyIpIHQpKQogICAgKGlmIChhc3NvYyAiXFwubXA0XFwnIiBvcmctZmlsZS1hcHBz KQoJKHNldGNkciAoYXNzb2MgIlxcLm1wNFxcJyIgb3JnLWZpbGUtYXBwcykgInZsYyAlcyIpCiAg ICAgIChhZGQtdG8tbGlzdCAnb3JnLWZpbGUtYXBwcyAnKCJcXC5tcDRcXCciIC4gInZsYyAlcyIp IHQpKSkpCgojK0VORF9TUkMKCioqKiBpbnNlcnQgaWQgYmFzZWQgbGlua3MKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICAzM2NmZmU1My0xYjM0LTQ0ZmEtYTk0OS02Y2FkNzJlNDQyZTAK ICAgIDpFTkQ6CnRoaXMgd2lsbCBtYWtlIG9yZy1zdG9yZS1saW5rIHVzZSBpZCB3aGVuIGNyZWF0 aW5nIGEgbGluay4KIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihyZXF1aXJl ICdvcmctaWQpCihzZXRxIG9yZy1pZC1saW5rLXRvLW9yZy11c2UtaWQgdCkKOzsgVXNlIGdsb2Jh bCBJRHMKOzsgVXBkYXRlIElEIGZpbGUgLm9yZy1pZC1sb2NhdGlvbnMgb24gc3RhcnR1cAoob3Jn LWlkLXVwZGF0ZS1pZC1sb2NhdGlvbnMpCiAjK0VORF9TUkMKCioqKiBvcmctY29sb3JlZC10ZXh0 CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNjViNjEyZDctN2VlZC00YTlhLTgyNTYt ZTQwNDY2ODZhN2Y0CiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMg bm9uZQoocmVxdWlyZSAncykKKGRlZnZhciBvcmctbGluay1jb2xvcnMgJygoImNvbG9yMSIgLiAn KDpmb3JlZ3JvdW5kICJibHVlIikpCiAgICAgICAgICAgICAgKCJjb2xvcjIiIC4gJyg6Zm9yZWdy b3VuZCAicmVkIiA6YmFja2dyb3VuZCAieWVsbG93IikpKSkKCihkZWZ1biBjb2xvci1jb21wICgm b3B0aW9uYWwgYXJnKQogIChsZXQgKChjb2xvci1kYXRhIChwcm9nbgogICAgICAgICAgICAgIChz YXZlLXNlbGVjdGVkLXdpbmRvdwogICAgICAgICAgICAobGlzdC1jb2xvcnMtZGlzcGxheSkpCiAg ICAgICAgICAgICAgKGFwcGVuZAogICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKGNlbGwp CiAgICAgICAgICAgICAgICAgKGNvbnMgKHByb3BlcnRpemUgKGNhciBjZWxsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAnZmFjZSAoY2RyIGNlbGwpKQogICAgICAgICAgICAgICAgICAgICAg IChsaXN0IChjYXIgY2VsbCkpKSkKICAgICAgICAgICAgICAgICAgIG9yZy1saW5rLWNvbG9ycykK ICAgICAgICAgICAgICAgKHByb2cxCiAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IChnZXQtYnVmZmVyICIqQ29sb3JzKiIpCiAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRh IChsaW5lKQogICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKGxpc3QgbGluZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHMtc3BsaXQgIiAiIGxpbmUgdCkpKQogICAgICAgICAgICAg ICAgICAgICAocy1zcGxpdCAiXG4iIChidWZmZXItc3RyaW5nKSkpKQogICAgICAgICAgICAgKGtp bGwtYnVmZmVyICIqQ29sb3JzKiIpKSkpKSkKICAgIChmb3JtYXQgImNvbG9yOiVzIgogICAgICAg IChzLXRyaW0gKGNhZHIgKGFzc29jIChjb21wbGV0aW5nLXJlYWQgIkNvbG9yOiAiIGNvbG9yLWRh dGEpIGNvbG9yLWRhdGEpKSkpKSkKCgooZGVmdW4gY29sb3ItbGluay1mYWNlIChwYXRoKQogIChv ciAoY2RyIChhc3NvYyBwYXRoIG9yZy1saW5rLWNvbG9ycykpCiAgICAgIGAoOmZvcmVncm91bmQg LHBhdGgpKSkKCihkZWZ1biBjb2xvci1saW5rLWV4cG9ydCAocGF0aCBkZXNjcmlwdGlvbiBiYWNr ZW5kKQogIChjb25kCiAgICAoKGVxIGJhY2tlbmQgJ2h0bWwpCiAgICAgKGxldCAoKHJnYiAoYXNz b2MgKGRvd25jYXNlIHBhdGgpIGNvbG9yLW5hbWUtcmdiLWFsaXN0KSkKICAgICAgIHIgZyBiKQog ICAgICAgKGlmIHJnYgogICAgICAgKHByb2duCiAgICAgICAgIChzZXRxIHIgKCogMjU1ICgvIChu dGggMSByZ2IpIDY1NTM1LjApKQogICAgICAgICAgIGcgKCogMjU1ICgvIChudGggMiByZ2IpIDY1 NTM1LjApKQogICAgICAgICAgIGIgKCogMjU1ICgvIChudGggMyByZ2IpIDY1NTM1LjApKSkKICAg ICAgICAgKGZvcm1hdCAiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKCVzLCVzLCVzKVwiPiVzPC9z cGFuPiIKICAgICAgICAgICAgICh0cnVuY2F0ZSByKSAodHJ1bmNhdGUgZykgKHRydW5jYXRlIGIp CiAgICAgICAgICAgICAob3IgZGVzY3JpcHRpb24gcGF0aCkpKQogICAgIChmb3JtYXQgIk5vIENv bG9yIFJHQiBmb3IgJXMiIHBhdGgpKSkpKSkKCgoob3JnLWxpbmstc2V0LXBhcmFtZXRlcnMgImNv bG9yIiAgICAgICAgIAogICAgICAgICAgICAgOmZhY2UgJ2NvbG9yLWxpbmstZmFjZQogICAgICAg ICAgICAgOmNvbXBsZXRlICdjb2xvci1jb21wCiAgICAgICAgICAgICA6ZXhwb3J0ICdjb2xvci1s aW5rLWV4cG9ydCkKIytFTkRfU1JDCgoKKiogbG9hZGluZyBvbiBzdGFydHVwCiAgIDpQUk9QRVJU SUVTOgogICA6SUQ6ICAgICAgIDcyNjczODY3LTEzZTEtNDdmOS05ZTBhLTlmN2MzOTc4NWU3Ngog ICA6RU5EOgoqKiogb3JnIG1vZGVscwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDVl MDAwN2RmLTFhNzItNGRiZi1hNmM1LTA0MjMzNDdkNzIzNwogICAgOkVORDoKCiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3QgJ29yZy1tb2R1bGVzICJvcmct aGFiaXQiKQojK0VORF9TUkMKCioqIEFnZW5kYQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAg ICBlZjQ2MmNkMi1mODUzLTRiYjEtOWQ5Yy00MzBlNDY1NjE3ODkKICAgOkVORDoKKioqIHNldCBh Z2VuZGEgbG9jYXRpb24KICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBjNjBkMzliNC1h ZmZjLTQ4MDAtODZmNC00NTUwMGJiZmVkOTIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgOnJlc3VsdHMgbm9uZQo7KHNldHEgb3JnLWFnZW5kYS1maWxlcyAnKCJ+L29yZy9maWxlcy9h Z2VuZGEvIikpCihzZXRxIG9yZy1hZ2VuZGEtZmlsZXMgKGxpc3QgIn4vb3JnL2ZpbGVzL2FnZW5k YS8iICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL3dlYi93Ym9va21hcmtzLm9yZyIpKQojK0VORF9T UkMKKioqIGFnZW5kYSBwb3B1cCBiZWhpdm91cgogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAg ICAgIDE0MTFkNDVhLWYwMTgtNGZlMy1iNGNhLWQzYzM3MTdhOWQyYwogICAgOkVORDoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIG9yZy1hZ2VuZGEtd2luZG93LXNl dHVwICJjdXJyZW50LXdpbmRvdyIpCjs7cmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBz Y3JlZW4gYmVmb3JlIGFnZW5kYSBkaXNwbGF5CihzZXRxIG9yZy1hZ2VuZGEtcmVzdG9yZS13aW5k b3dzLWFmdGVyLXF1aXQgdCkKIytFTkRfU1JDCioqKiBrZWVwIHJlZnJlc2hpbmcgb3JnIGFnZW5k YQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDJjYzAzYzk0LTAyZjItNGQ0ZC05MTIx LTEzNzlhMGY4YjhjNAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMg bm9uZQoocnVuLXdpdGgtaWRsZS10aW1lciA2MDAgdCAjJ29yZy1hZ2VuZGEtcmVkbykgOzsgdG8g cmVidWlsZCBpdCBldmVyeSA2MDAgc2Vjb25kcwojK0VORF9TUkMKKioqIGFnZW5kYSB2aWV3CiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNTg3YWZmMDYtNGU0Ny00NzM5LTk5ZmUtYTkx ZWY3MTRhZDk5CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK O2NoYW5nZSBhZ2VuZGEgY29sb3JzCjsoc2V0cSBvcmctdXBjb21pbmctZGVhZGxpbmUgJyg6Zm9y ZWdyb3VuZCAiYmx1ZSIgOndlaWdodCBib2xkKSkKO21heCBkYXlzIHRvIHNob3cgaW4gYWdlbmRh IHZpZXcKKHNldHEgb3JnLWFnZW5kYS1uZGF5cyAxNCkKO3N0YXJ0IGFnZW5kYSBmcm9tIHRvZGF5 LSAgZG9uJ3Qgc2hvdyBsaXN0aW5ncyBmcm9tIGVhcmxpZXIgaW4gdGhlIHdlZWsKOyhzZXRxIG9y Zy1hZ2VuZGEtc3RhcnQtb24td2Vla2RheSBuaWwpCjs7O2NvbnN0YW50IGFnZW5kYSBzdGFydCBv biBzdW5kYXkgYWx3YXlzICgwKQooc2V0cSBvcmctYWdlbmRhLXN0YXJ0LW9uLXdlZWtkYXkgMCkK O0l0ZW1zIHRoYXQgaGF2ZSBkZWFkbGluZXMgYXJlIGRpc3BsYXllZCAxMCBkYXlzIGluIGFkdmFu Y2UKKHNldHEgb3JnLWRlYWRsaW5lLXdhcm5pbmctZGF5cyAxMCkKO2RvbuKAmXQgZGlzcGxheSBp dGVtcyB0aGF0IGFyZSBkb25lIGluIG15IGFnZW5kYS4KKHNldHEgb3JnLWFnZW5kYS1za2lwLWRl YWRsaW5lLWlmLWRvbmUgdCkKKHNldHEgb3JnLWFnZW5kYS1za2lwLXNjaGVkdWxlZC1pZi1kb25l IHQpCihzZXRxIG9yZy1hZ2VuZGEtc3BhbiAxNCkKCiMrRU5EX1NSQwoqKiogaHlkcmEgb3JnLWFn ZW5kYSBjb21tYW5kCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMmVlMWZhOTEtZTVi Yi00NjBiLTgyMGYtMWNlNzNmOWE2NzZkCiAgICA6RU5EOgpodHRwOi8vb3JlbWFjcy5jb20vMjAx Ni8wNC8wNC9oeWRyYS1kb2Mtc3ludGF4LwoKaHR0cDovL29yZ21vZGUub3JnL21hbnVhbC9BZ2Vu ZGEtY29tbWFuZHMuaHRtbCNBZ2VuZGEtY29tbWFuZHMKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQogIDs7bmVlZGVkIGZ1bmN0aW9uCiAgKGRlZnVuIG9yZy1hZ2VuZGEtY3Rz ICgpCiAgICAobGV0ICgoYXJncyAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAo bWluICgxLSAocG9pbnQtbWF4KSkgKHBvaW50KSkKICAgICAgICAgICAgICAgICAnb3JnLWxhc3Qt YXJncykpKQogICAgICAobnRoIDIgYXJncykpKQoKCiAgKGRlZmh5ZHJhIGh5ZHJhLW9yZy1hZ2Vu ZGEtdmlldyAoOmhpbnQgbmlsIDpjb2x1bW5zIDQpCiAgIgoKICAiCiAgOzs7dmlld3MKICAgICgi ZCIgb3JnLWFnZW5kYS1kYXktdmlldwogICAgICAgICAoaWYgKGVxICdkYXkgKG9yZy1hZ2VuZGEt Y3RzKSkKICAgICAgICAgICAgICJbeF0iICJbIF0iKSkKICAgICgidyIgb3JnLWFnZW5kYS13ZWVr LXZpZXcKICAgICAgICAgKGlmIChlcSAnd2VlayAob3JnLWFnZW5kYS1jdHMpKQogICAgICAgICAg ICAgIlt4XSIgIlsgXSIpKQogICAgKCJtIiBvcmctYWdlbmRhLW1vbnRoLXZpZXcKICAgICAgICAg KGlmIChlcSAnbW9udGggKG9yZy1hZ2VuZGEtY3RzKSkgIlt4XSIgIlsgXSIpKQogICAgKCJjIiBj Znc6b3Blbi1vcmctY2FsZW5kYXIgICJjZncgbW9udGggY2FsZW5kYXIiICApCjs7O2NvbW1hbmRz CigiWCIgICAgb3JnLWFnZW5kYS1yZXNldC12aWV3ICAgInJlc2V0IHZpZXciICApCigiaiIgICAg b3JnLWFnZW5kYS1nb3RvLWRhdGUgICAiZ290byBkYXRlIiA6ZmFjZSAnaHlkcmEtZmFjZS1ncmVl biApCigiayIgICAgb3JnLWFnZW5kYS1raWxsICAgImRlbGV0ZSIgICkKKCJ0IiAgICBvcmctYWdl bmRhLXRvZG8gICAgICAiY2hhbmdlIHRvZG8iKQooIm0iICAgIG9yZy1hZ2VuZGEtYnVsay10b2dn bGUgICJidWxrIG1hcmsiICA6Y29sb3IgcmVkICkgCigiTSIgICAgb3JnLWFnZW5kYS1idWxrLWFj dGlvbiAgImJ1bGsgZXhlIikKKCJ4IiAgIG9yZy1hZ2VuZGEtYXJjaGl2ZSAgICAgICJhcmNoaXZl ICIpCigidyIgICBvcmctYWdlbmRhLXJlZmlsZSAgICAgICJyZWZpbGUgIikKKCI6IiAgIG9yZy1h Z2VuZGEtc2V0LXRhZ3MgICAgICAic2V0IHRhZ3MgIikKKCIsIiAgIG9yZy1hZ2VuZGEtcHJpb3Jp dHkgICAgICAicHJpb3JpdHkgKFMtVVAvUy1EbiB0byBjaGFuZ2UgYXMgd2VsbCAiKQooInMiICAg b3JnLWFnZW5kYS1zY2hlZHVsZSAgICAgICJzY2hlZHVsZSB0YXNrICIpCigiZCIgICBvcmctYWdl bmRhLWRlYWRsaW5lICAgICAgImRlYWRsaW5lIHRhc2sgIikKKCJwIiAgIG9yZy1hZ2VuZGEtZGF0 ZS1wcm9tcHQgICAgICAicHJvbXB0IGRhdGUgIikKKCJmIiBvcmctYWdlbmRhLWZvbGxvdy1tb2Rl CiAgICAgICAgIChmb3JtYXQgIiUgLTNTIiBvcmctYWdlbmRhLWZvbGxvdy1tb2RlKSkKCigiZSIg b3JnLWFnZW5kYS1lbnRyeS10ZXh0LW1vZGUgKGZvcm1hdCAiJSAtM1MiIG9yZy1hZ2VuZGEtZW50 cnktdGV4dC1tb2RlKSkKKCJnIiBvcmctYWdlbmRhLXRvZ2dsZS10aW1lLWdyaWQgKGZvcm1hdCAi JSAtM1MiIG9yZy1hZ2VuZGEtdXNlLXRpbWUtZ3JpZCkpCigiRCIgb3JnLWFnZW5kYS10b2dnbGUt ZGlhcnkgKGZvcm1hdCAiJSAtM1MiIG9yZy1hZ2VuZGEtaW5jbHVkZS1kaWFyeSkpCigiISIgb3Jn LWFnZW5kYS10b2dnbGUtZGVhZGxpbmVzICJ0b2dnbGUgZGVhZGxpbmVzIikKCigicSIgKG1lc3Nh Z2UgIkFib3J0IikgOmV4aXQgdCkpCgoKICAoZGVmaW5lLWtleSBvcmctYWdlbmRhLW1vZGUtbWFw CiAgICAgICJ2IiAnaHlkcmEtb3JnLWFnZW5kYS12aWV3L2JvZHkpCiMrRU5EX1NSQwoqKiogZGVm aW5lIElzcmFlbGkgd2Vla2VuZHMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBmN2Ji NTY2ZC01NmQ0LTQwNWEtYjE1Zi1hZDdmZDdmNGM4MGIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKHNldHEgb3JnLWFnZW5kYS13ZWVrZW5kLWRheXMgJyg1 IDYpKQojK0VORF9TUkMKCioqKiBsb29rIGFuZCBmZWVsCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgYWRjYzVhYTMtYTUyZi00MTBmLTkyM2QtOWMzN2EyYTA1ZGYzCiAgICA6RU5EOgoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjs7IERvIG5vdCBkaW0gYmxvY2tl ZCB0YXNrcwooc2V0cSBvcmctYWdlbmRhLWRpbS1ibG9ja2VkLXRhc2tzIG5pbCkKOzsgQ29tcGFj dCB0aGUgYmxvY2sgYWdlbmRhIHZpZXcKKHNldHEgb3JnLWFnZW5kYS1jb21wYWN0LWJsb2NrcyB0 KQo7OyBBbHdheXMgaGlsaWdodCB0aGUgY3VycmVudCBhZ2VuZGEgbGluZQooYWRkLWhvb2sgJ29y Zy1hZ2VuZGEtbW9kZS1ob29rCiAgICAgICAgICAnKGxhbWJkYSAoKSAoaGwtbGluZS1tb2RlIDEp KQogICAgICAgICAgJ2FwcGVuZCkKCjs7IFNob3cgYWxsIGFnZW5kYSBkYXRlcyAtIGV2ZW4gaWYg dGhleSBhcmUgZW1wdHkKKHNldHEgb3JnLWFnZW5kYS1zaG93LWFsbC1kYXRlcyB0KQoKOzsgIEVu YWJsZSBkaXNwbGF5IG9mIHRoZSB0aW1lIGdyaWQgc28gd2UgY2FuIHNlZSB0aGUgbWFya2VyIGZv ciB0aGUgY3VycmVudCB0aW1lCihzZXRxIG9yZy1hZ2VuZGEtdGltZS1ncmlkIChxdW90ZSAoKGRh aWx5IHRvZGF5IHJlbW92ZS1tYXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMoIi0tLS0tLS0tLS0tLS0tLS0iIDAgMTYgKG9yZy1oZWFkaW5nIHQpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDA5MDAgMTEwMCAxMzAwIDE1MDAgMTcwMCkpKSkKCjs7IERp c3BsYXkgdGFncyBmYXJ0aGVyIHJpZ2h0CihzZXRxIG9yZy1hZ2VuZGEtdGFncy1jb2x1bW4gLTEw MikKIytFTkRfU1JDCgoqKiogc3BlY2lmaWMgc3BhcnNlIHRyZWVzIAogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIDA5NzIyZjE5LWI1MmEtNDFhYi04Zjk1LTgxNmRiODFkNmY3NgogICAg OkVORDoKKioqKiogYnJlYWtmZWFzdAogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAgICAg ICBkOGMzYzhiYS1kZDdiLTQ1OGUtYmFmYS1lZmU0NjExMTgzNWUKICAgICAgOkVORDoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKGRlZnVuIGNvb2tpbmctc3BhcnNlLXRy ZWUtYnJlYWtmZWFzdCAoKQogICAgKGludGVyYWN0aXZlKQogICAgKG9yZy1tYXRjaC1zcGFyc2Ut dHJlZSB0ICIrVE9ETz1cIkNPT0tcIitUeXBlPVwiYnJlYWtmZXN0XCIiKSkKCiAgKGRlZnVuIGNv b2tpbmctc3BhcnNlLXRyZWUtbWFpbiAoKQogICAgKGludGVyYWN0aXZlKQogICAgKG9yZy1tYXRj aC1zcGFyc2UtdHJlZSB0ICIrVE9ETz1cIkNPT0tcIitUeXBlPVwibWFpblwiIikpCgogIChkZWZ1 biBjb29raW5nLXNwYXJzZS10cmVlLXN3ZWV0ICgpCiAgICAoaW50ZXJhY3RpdmUpCiAgICAob3Jn LW1hdGNoLXNwYXJzZS10cmVlIHQgIitUT0RPPVwiQ09PS1wiK1R5cGU9XCJzd2VldFwiIikpCgog IChkZWZ1biBjb29raW5nLXNwYXJzZS10cmVlLW1lYXQgKCkKICAgIChpbnRlcmFjdGl2ZSkKICAg IChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgdCAiK1RPRE89XCJDT09LXCIrVHlwZT1cIm1lYXRcIiIp KQoKICAoZGVmdW4gY29va2luZy1zcGFyc2UtdHJlZS1mYXYgKCkKICAgIChpbnRlcmFjdGl2ZSkK ICAgIChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgdCAiK0Zhdj1cInlcIiIpKQoKIytlbmRfc3JjCgoq KiogZXhwb3J0IGFnZW5kYQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDA4YjBkYTM4 LTkyMzktNGY0OS1iZDBiLTdlMjM0ZGUyYzQwOQogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCiAgICAgICAgICAoc2V0cSBvcmctYWdlbmRhLWV4cG9ydGVyLXNl dHRpbmdzCiAgICAgICAgICAgICAgICAnKChwcy1udW1iZXItb2YtY29sdW1ucyAyKQogICAgICAg ICAgICAgICAgICAocHMtbGFuZHNjYXBlLW1vZGUgdCkKICAgICAgICAgICAgICAgICAgKG9yZy1h Z2VuZGEtYWRkLWVudHJ5LXRleHQtbWF4bGluZXMgNSkKICAgICAgICAgICAgICAgICAgKGh0bWxp emUtb3V0cHV0LXR5cGUgJ2NzcykpKQojK0VORF9TUkMKKioqIGhhYml0cwogICAgOlBST1BFUlRJ RVM6CiAgICA6SUQ6ICAgICAgIDQzY2M0YjY2LTk3MWEtNDdiNi1hZTg3LTlhNDJmN2FmNGM4NAog ICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIG9yZy1o YWJpdC1ncmFwaC1jb2x1bW4gNzApCihzZXRxIG9yZy1oYWJpdC1zaG93LWhhYml0cy1vbmx5LWZv ci10b2RheSBuaWwpCiMrRU5EX1NSQwoKKioqIGdldCBwb3B1cHMgZm9yIG1lZXRpbmdzCiAgICA6 UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMmE4NjJiZTktYmNiZi00ODAzLWJkMDktYmMzNWFi ZjRlN2FkCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwCiAoYXBwdC1hY3RpdmF0ZSAx KQogKG9yZy1hZ2VuZGEtdG8tYXBwdCkKIytFTkRfU1JDCgojK1JFU1VMVFM6CjogQWRkZWQgMiBl dmVudHMgZm9yIHRvZGF5Cgp0aG9zICB3aWxsIGJlIHJlbWluZGVkIG9mIHRoaW5ncyBpbiB5b3Vy IG9yZyBmaWxlcywgYmVmb3JlIHRoZSBhcHBvaW50bWVudCB0aW1lIChJIHRoaW5rIDEyIG1pbiBp cyB0aGUgZGVmYXVsdCkKWW91IGNvdWxkIGFsc28gYWRkIHRoaXMsIHNvIHRoYXQgdGhlIGFwcG9p bnRtZW50cyByZWZyZXNoIGFuZCBuZXcgZ2V0IGFkZGVkIGV2ZXJ5IHRpbWUgdGhhdCB5b3UgY2Fs bCB0aGUgYWdlbmRhOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcAooYWRkLWhvb2sgJ29yZy1hZ2Vu ZGEtZmluYWxpemUtaG9vayAobGFtYmRhICgpICAob3JnLWFnZW5kYS10by1hcHB0IHQpKSkKIytF TkRfU1JDCgojK1JFU1VMVFM6CnwgKGxhbWJkYSBuaWwgKG9yZy1hZ2VuZGEtdG8tYXBwdCB0KSkg fCBnbm9yYi1vcmctcG9wdXAtYmJkYiB8CgoqKiogU29ydGluZyBieSBkYXRlIGFuZCBwcmlvcml0 eQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDJkNzFkYzczLWY0OTktNGU4MC05YmNm LWJkYmJkNWU1ODNjMgogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQooc2V0cSBvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kKICAgICAgJygoYWdlbmRhIHRp bWUtdXAgcHJpb3JpdHktZG93biB0YWctdXAgZWZmb3J0LXVwIGNhdGVnb3J5LWtlZXApCiAgICAg ICAgKHRvZG8gdXNlci1kZWZpbmVkLXVwIHRvZG8tc3RhdGUtdXAgcHJpb3JpdHktZG93biBlZmZv cnQtdXApCiAgICAgICAgKHRhZ3MgdXNlci1kZWZpbmVkLXVwKQogICAgICAgIChzZWFyY2ggY2F0 ZWdvcnkta2VlcCkpKQooc2V0cSBvcmctYWdlbmRhLWNtcC11c2VyLWRlZmluZWQgJ215L29yZy1z b3J0LWFnZW5kYS1pdGVtcy11c2VyLWRlZmluZWQpCihyZXF1aXJlICdjbCkKKGRlZnVuIG15L29y Zy1nZXQtY29udGV4dCAodHh0KQogICJGaW5kIHRoZSBjb250ZXh0LiIKICAoY2FyIChtZW1iZXIt aWYKICAgICAgICAobGFtYmRhIChpdGVtKSAoc3RyaW5nLW1hdGNoICJAIiBpdGVtKSkKICAgICAg ICAoZ2V0LXRleHQtcHJvcGVydHkgMSAndGFncyB0eHQpKSkpCgooZGVmdW4gbXkvb3JnLWNvbXBh cmUtZGF0ZXMgKGEgYikKICAiUmV0dXJuIDEgaWYgQSBzaG91bGQgZ28gYWZ0ZXIgQiwgLTEgaWYg QiBzaG91bGQgZ28gYWZ0ZXIgQSwgb3IgMCBpZiBhID0gYi4iCiAgKGNvbmQKICAgKChhbmQgKD0g YSAwKSAoPSBiIDApKSBuaWwpCiAgICgoPSBhIDApIDEpCiAgICgoPSBiIDApIC0xKQogICAoKD4g YSBiKSAxKQogICAoKDwgYSBiKSAtMSkKICAgKHQgbmlsKSkpCgooZGVmdW4gbXkvb3JnLWNvbXBs ZXRlLWNtcCAoYSBiKQogIChsZXQqICgoc3RhdGUtYSAob3IgKGdldC10ZXh0LXByb3BlcnR5IDEg J3RvZG8tc3RhdGUgYSkgIiIpKQogICAgICAgICAoc3RhdGUtYiAob3IgKGdldC10ZXh0LXByb3Bl cnR5IDEgJ3RvZG8tc3RhdGUgYikgIiIpKSkKICAgIChvcgogICAgIChpZiAobWVtYmVyIHN0YXRl LWEgb3JnLWRvbmUta2V5d29yZHMtZm9yLWFnZW5kYSkgMSkKICAgICAoaWYgKG1lbWJlciBzdGF0 ZS1iIG9yZy1kb25lLWtleXdvcmRzLWZvci1hZ2VuZGEpIC0xKSkpKQoKKGRlZnVuIG15L29yZy1k YXRlLWNtcCAoYSBiKQogIChsZXQqICgoc2NoZWQtYSAob3IgKGdldC10ZXh0LXByb3BlcnR5IDEg J29yZy1zY2hlZHVsZWQgYSkgMCkpCiAgICAgICAgIChzY2hlZC1iIChvciAoZ2V0LXRleHQtcHJv cGVydHkgMSAnb3JnLXNjaGVkdWxlZCBiKSAwKSkKICAgICAgICAgKGRlYWRsaW5lLWEgKG9yIChn ZXQtdGV4dC1wcm9wZXJ0eSAxICdvcmctZGVhZGxpbmUgYSkgMCkpCiAgICAgICAgIChkZWFkbGlu ZS1iIChvciAoZ2V0LXRleHQtcHJvcGVydHkgMSAnb3JnLWRlYWRsaW5lIGIpIDApKSkKICAgIChv cgogICAgIChteS9vcmctY29tcGFyZS1kYXRlcwogICAgICAobXkvb3JnLW1pbi1kYXRlIHNjaGVk LWEgZGVhZGxpbmUtYSkKICAgICAgKG15L29yZy1taW4tZGF0ZSBzY2hlZC1iIGRlYWRsaW5lLWIp KSkpKQoKKGRlZnVuIG15L29yZy1taW4tZGF0ZSAoYSBiKQogICJSZXR1cm4gdGhlIHNtYWxsZXIg b2YgQSBvciBCLCBleGNlcHQgZm9yIDAuIgogIChmdW5jYWxsIChpZiAoYW5kICg+IGEgMCkgKD4g YiAwKSkgJ21pbiAnbWF4KSBhIGIpKQoKKGRlZnVuIG15L29yZy1zb3J0LWFnZW5kYS1pdGVtcy11 c2VyLWRlZmluZWQgKGEgYikKICA7OyBjb21wYXJlIGJ5IGRlYWRsaW5lLCB0aGVuIHNjaGVkdWxl ZCBkYXRlOyBkb25lIHRhc2tzIGFyZSBsaXN0ZWQgYXQgdGhlIHZlcnkgYm90dG9tCiAgKG9yCiAg IChteS9vcmctY29tcGxldGUtY21wIGEgYikKICAgKG15L29yZy1kYXRlLWNtcCBhIGIpKSkKCihk ZWZ1biBteS9vcmctY29udGV4dC1jbXAgKGEgYikKICAiQ29tcGFyZSBDT05URVhULUEgYW5kIENP TlRFWFQtQi4iCiAgKGxldCAoKGNvbnRleHQtYSAobXkvb3JnLWdldC1jb250ZXh0IGEpKQogICAg ICAgIChjb250ZXh0LWIgKG15L29yZy1nZXQtY29udGV4dCBiKSkpCiAgICAoY29uZAogICAgICgo bnVsbCBjb250ZXh0LWEpICsxKQogICAgICgobnVsbCBjb250ZXh0LWIpIC0xKQogICAgICgoc3Ry aW5nPCBjb250ZXh0LWEgY29udGV4dC1iKSAtMSkKICAgICAoKHN0cmluZzwgY29udGV4dC1iIGNv bnRleHQtYSkgKzEpCiAgICAgKHQgbmlsKSkpKQoKKGRlZnVuIG15L29yZy1zb3J0LWFnZW5kYS1p dGVtcy10b2RvIChhIGIpCiAgKG9yCiAgIChvcmctY21wLXRpbWUgYSBiKQogICAobXkvb3JnLWNv bXBsZXRlLWNtcCBhIGIpCiAgIChteS9vcmctY29udGV4dC1jbXAgYSBiKQogICAobXkvb3JnLWRh dGUtY21wIGEgYikKICAgKG9yZy1jbXAtdG9kby1zdGF0ZSBhIGIpCiAgIChvcmctY21wLXByaW9y aXR5IGEgYikKICAgKG9yZy1jbXAtZWZmb3J0IGEgYikpKQojK0VORF9TUkMKCioqKiBhZ2VuZGEg aWNvbnMgCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYmZmNmQxNTQtYjRkMy00OWI1 LThiY2EtMDgxZWUwZDU2OWU5CiAgICA6RU5EOgp0aGlzIHdpbGwgc2V0IGljb25zIGJhc2VkIG9u IHRoZSBjYXRlZ29yeQojK0JFR0lOX0VYQU1QTEUKIytDQVRFR09SWTogd29yawojK0VORF9FWEFN UExFCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihzZXRxIG9yZy1hZ2Vu ZGEtY2F0ZWdvcnktaWNvbi1hbGlzdCAnKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCJwYyIgICAgICAiL2hvbWUvemVsdGFrL01MVC9wcm9ncmFtcy9LcnVzYWRlci9Ub29sYmFy L3JlZnJlc2gucG5nIiBuaWwgbmlsIG5pbCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoIndvcmsiICAgICAgICIvaG9tZS96ZWx0YWsvTUxUL29yZy9iZ3UucG5nIiBuaWwg bmlsIG5pbCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQojK0VORF9T UkMKCgoqKiBgQ3VzdG9tIEFnZW5kYSBjb21tYW5kc2AKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgNGIzOTZkZmMtMGMxYy00MDdjLTlkMmQtNmNjYTI5Yzg4NzljCiAgIDpFTkQ6CioqKiBp bmZvCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZmEyMGE1MmYtM2EzYi00ZDhhLTk3 NjYtZmEzNjMxNTFjM2QwCiAgICA6RU5EOgpsb29rIGhlcmUgZm9yIG1vcmUgaW5mbwpodHRwOi8v b3JnbW9kZS5vcmcvd29yZy9vcmctdHV0b3JpYWxzL29yZy1jdXN0b20tYWdlbmRhLWNvbW1hbmRz Lmh0bWwKCmFuZCBoZXJlIGlkOmNmMmM2OWI0LTNkNGMtNGY4MS1hMDFkLWJiYmUxZDEyMGU2MgoK JE5vdGUkIHRoYXQgdG8gZ2V0IHRoZSBwcmlvcml0aWVzIHRvIGFwcGVhciBmaXJzdCB5b3UgbmVl ZCB0byB1c2UgcHJpb3JpdGllcy1kb3duLgoKKCJ3IiB0YWdzLXRvZG8gIkNBVEVHT1JZPVwid29y a1wiIikKCihvcmctYWdlbmRhLXZpZXctY29sdW1ucy1pbml0aWFsbHkgdCkKCiB3aWxsIHN0YXJ0 IHRoZSB2aWV3IGluIGEgY29sdW1uIHZpZXcKCmFsc28gdGhlIGhlYWRlcnMgY2FuIGJlIGN1c3Rv bWl6ZWQKCihvcmctY29sdW1ucy1kZWZhdWx0LWZvcm1hdCAiJTUwSVRFTSAlVE9ETyAlM1BSSU9S SVRZICVFZmZvcnR7On0gJVRBR1MiKQoKLXNvcnRpbmc6CihvcmctYWdlbmRhLXNvcnRpbmctc3Ry YXRlZ3kgJyhwcmlvcml0eS1kb3duICB0YWctdXAgKSkKCkBhZGRALSBkZWFkbGluZSBjb2x1bW4g LCB0aW1lIGNvbHVtbiB0byBhZ2VuZGEgY29sdW1uIHZpZXcKCm11dGlwbGUgdG9kb3MgYXJlIHdp dGggdGhlIHBpcGUgc2lnbiDjgJZUT0RPfFRBU0vjgJcKKioqIHN0YXJ0IHdpdGggY2xlYW4gc2xh dGUKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA0YTFhN2ZjYS1lOWI4LTQ3YTYtYjdi OS1lOTA0NDM3ODlmYzQKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRz IG5vbmUKKHNldHEgb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMgbmlsKQojK0VORF9TUkMKKioq IFVuaSBUT0RPUyAoYikKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBmZWYxMGY0Ni1i Y2E3LTQzNmItOTlhNC00MDE1MzJjMzkzNjcKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgIDpyZXN1bHRzIG5vbmUKOzsgZGVmaW5lICJzIiBhcyB0aGUgcHJlZml4IGtleSBmb3IgdW5p CihhZGQtdG8tbGlzdCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICco ImIiIC4gIkJHVSIgKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRz CiAgICAgICAgICAgICAgICcoImJhIiAiYWxsIEJHVSBUT0RPUyIgdG9kbyAiVE9ET3xUQVNLIiAK KChvcmctYWdlbmRhLWZpbGVzIChsaXN0ICJ+L29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3Jn IiAifi9vcmcvZmlsZXMvYWdlbmRhL2JndS5vcmciKSkpCihvcmctYWdlbmRhLXNvcnRpbmctc3Ry YXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duIGRlYWRsaW5lLXVwKSkKKG9yZy1hZ2Vu ZGEtY21wLXVzZXItZGVmaW5lZCAnbXkvb3JnLXNvcnQtYWdlbmRhLWl0ZW1zLXRvZG8pCiAgICAg ICAgICAgICAgICAgKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRz CiAgICAgICAgICAgICAgICcoImJiIiAiQkdVIFRPRE9TIiB0b2RvICJUT0RPIiAKKChvcmctYWdl bmRhLWZpbGVzIChsaXN0ICAifi9vcmcvZmlsZXMvYWdlbmRhL2JndS5vcmciKSkpCiAgICAgICAg ICAgICAgICAgKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAg ICAgICAgICAgICAgICcoImJyIiAiUmVzZWFyY2ggVE9ET1MiIHRvZG8gIlRPRE8iIAooKG9yZy1h Z2VuZGEtZmlsZXMgKGxpc3QgICJ+L29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIikpKQog ICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21t YW5kcwogICAgICAgICAgICAgICAnKCJidSIgInVyZ2VudCBUT0RPUyIKdGFncy10b2RvICJERUFE TElORT49XCI8dG9kYXk+XCImREVBRExJTkU8PVwiPCs3ZD5cIiIKKChvcmctYWdlbmRhLWZpbGVz IChsaXN0ICAifi9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9yZyIgIn4vb3JnL2ZpbGVzL2Fn ZW5kYS9iZ3Uub3JnIikpKQogICAgICAgICAgICAgICAgICkpCgoKIytFTkRfU1JDCioqKiBzdHVk ZW50IHRhc2tzIChzKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDc4YzdkN2VjLTU0 MWItNDNlNi04Y2VlLTEzNDI2Y2UwODgyNgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRz CiAgICAgICAgICAgICAnKCJzIiAuICJzdHVkZW50cyIgKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1h Z2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoInNtIiAibWV5dGFyIiAKICAg ICAgICAgICAgICAgICAgdGFncy10b2RvICJtZXl0YXIiCigob3JnLWFnZW5kYS1zb3J0aW5nLXN0 cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93bikpKQogICAgICAgICAgICAgICAgICkp CgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAg ICAnKCJzYSIgImFkYXIiIAogICAgICAgICAgICAgICAgICB0YWdzLXRvZG8gImFkYXIiCigob3Jn LWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93bikpKQog ICAgICAgICAgICAgICAgICkpCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1h bmRzCiAgICAgICAgICAgICAgICcoInN5IiAibWFheWFuIiAKICAgICAgICAgICAgICAgICAgdGFn cy10b2RvICJtYWF5YW4iCigob3JnLWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5ICcocHJpb3JpdHkt ZG93biBlZmZvcnQtZG93bikpKQogICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdv cmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCJzeCIgImFsZXgiIAog ICAgICAgICAgICAgICAgICB0YWdzLXRvZG8gImFsZXgiCigob3JnLWFnZW5kYS1zb3J0aW5nLXN0 cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93bikpKQogICAgICAgICAgICAgICAgICkp CgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAg ICAnKCJzbyIgIm9tZXIiIAogICAgICAgICAgICAgICAgICB0YWdzLXRvZG8gIm9tZXIiCigob3Jn LWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93bikpKQog ICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21t YW5kcwogICAgICAgICAgICAgICAnKCJzbCIgImxhcmEiIAogICAgICAgICAgICAgICAgICB0YWdz LXRvZG8gImxhcmEiCigob3JnLWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5ICcocHJpb3JpdHktZG93 biBlZmZvcnQtZG93bikpKQogICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmct YWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCJzZCIgImFkaSIgCiAgICAg ICAgICAgICAgICAgIHRhZ3MtdG9kbyAiYWRpIgooKG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVn eSAnKHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKICAgICAgICAgICAgICAgICApKQoKCihh ZGQtdG8tbGlzdCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICAgJygi c2giICJoZWxlbmEiIAogICAgICAgICAgICAgICAgICB0YWdzLXRvZG8gImhlbGVuYSIKKChvcmct YWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCiAg ICAgICAgICAgICAgICAgKSkKCgojK0VORF9TUkMKKioqIGNvbGxhYm9yYXRvciB0YXNrcyAoYykK ICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA2MDU0MjYxMi1jMmM4LTQyOWYtYjYxMi0x YTdmMDJkMzY1ODIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAg JygiYyIgLiAiY29sbGFib3JhdG9yIiApKQoKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3Vz dG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoImNhIiAiYWxsYW4iIAogICAgICAgICAgICAg ICAgICB0YWdzLXRvZG8gImFsbGFuIgooKG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVneSAnKHBy aW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKICAgICAgICAgICAgICAgICApKQoKCihhZGQtdG8t bGlzdCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICAgJygiY2oiICJq b2VsIiAKICAgICAgICAgICAgICAgICAgdGFncy10b2RvICJqb2VsIgooKG9yZy1hZ2VuZGEtc29y dGluZy1zdHJhdGVneSAnKHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKICAgICAgICAgICAg ICAgICApKQoKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAg ICAgICAgICAgICcoImNkIiAiZGF2aWQiIAogICAgICAgICAgICAgICAgICB0YWdzLXRvZG8gImRh dmlkIgooKG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVneSAnKHByaW9yaXR5LWRvd24gZWZmb3J0 LWRvd24pKSkKICAgICAgICAgICAgICAgICApKQoKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEt Y3VzdG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoImNiIiAiYm9yaXMiIAogICAgICAgICAg ICAgICAgICB0YWdzLXRvZG8gImJvcmlzIgooKG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVneSAn KHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKICAgICAgICAgICAgICAgICApKQoKCihhZGQt dG8tbGlzdCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICAgJygiY3Mi ICJtYXNzaW1vIiAKICAgICAgICAgICAgICAgICAgdGFncy10b2RvICJtYXNzaW1vIgooKG9yZy1h Z2VuZGEtc29ydGluZy1zdHJhdGVneSAnKHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKICAg ICAgICAgICAgICAgICApKQoKCihhZGQtdG8tbGlzdCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFu ZHMKICAgICAgICAgICAgICAgJygiY20iICJtaWNoYWVsIiAKICAgICAgICAgICAgICAgICAgdGFn cy10b2RvICJtaWNoYWVsIgooKG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVneSAnKHByaW9yaXR5 LWRvd24gZWZmb3J0LWRvd24pKSkKICAgICAgICAgICAgICAgICApKQoKCgooYWRkLXRvLWxpc3Qg J29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoImNuIiAiam9oYW5u YSIgCiAgICAgICAgICAgICAgICAgIHRhZ3MtdG9kbyAiam9oYW5uYSIKKChvcmctYWdlbmRhLXNv cnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCiAgICAgICAgICAg ICAgICAgKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAg ICAgICAgICAgICcoImN0IiAidGFsIiAKICAgICAgICAgICAgICAgICAgdGFncy10b2RvICJ0YWwi Cigob3JnLWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93 bikpKQogICAgICAgICAgICAgICAgICkpCgoKIytFTkRfU1JDCioqKiBsb2NhdGlvbiBiYXNlZAog ICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDFlNTg3MjZiLWRmNDQtNDE2NS05OTdjLTlm NTFlMDg4MTg2NAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9u ZQooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAn KCIyIiAuICJsb2NhdGlvbiIgKSkKCgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1j b21tYW5kcwogICAgICAgICAgICAgICAnKCIyaCIgIkBob21lIiAKICAgICAgICAgICAgICAgICAg dGFncy10b2RvICJAaG9tZSIKKChvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0 eS1kb3duIGVmZm9ydC1kb3duKSkpCiAgICAgICAgICAgICAgICAgKSkKCgoKKGFkZC10by1saXN0 ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCIydyIgIkB3b3Jr IiAKICAgICAgICAgICAgICAgICAgdGFncy10b2RvICJAd29yayIKKChvcmctYWdlbmRhLXNvcnRp bmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCiAgICAgICAgICAgICAg ICAgKSkKCgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAg ICAgICAgICAnKCIycCIgIkBwYyIgCiAgICAgICAgICAgICAgICAgIHRhZ3MtdG9kbyAiQHBjIgoo KG9yZy1hZ2VuZGEtc29ydGluZy1zdHJhdGVneSAnKHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24p KSkKICAgICAgICAgICAgICAgICApKQoKCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9t LWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoIjJmIiAiQGZhbWlseSIgCiAgICAgICAgICAgICAg ICAgIHRhZ3MtdG9kbyAiQGZhbWlseSIKKChvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kgJyhw cmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCiAgICAgICAgICAgICAgICAgKSkKCgoKKGFkZC10 by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCIycyIg IkBzaG9wIiAKICAgICAgICAgICAgICAgICAgdGFncy10b2RvICJAc2hvcCIKKChvcmctYWdlbmRh LXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCiAgICAgICAg ICAgICAgICAgKSkKCiMrRU5EX1NSQwoKKioqIG1lZGlhIHRhc2tzIChkKQogICAgOlBST1BFUlRJ RVM6CiAgICA6SUQ6ICAgICAgIDNhYTllYTk2LTEyMWYtNDE1Ny1hZGMyLWVjZjEyNmFhMGNkZgog ICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGFkZC10by1s aXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgJygiZCIgLiAibWVk aWEiICkpCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAgICAg ICAgICAgICcoImRkIiAiZG93bmxvYWRzIiB0b2RvICJET1dOIgooKG9yZy1hZ2VuZGEtZmlsZXMg KGxpc3QgIn4vb3JnL2ZpbGVzL2FnZW5kYS9kbC5vcmciICkpKQooKG9yZy1hZ2VuZGEtc29ydGlu Zy1zdHJhdGVneSAnKHByaW9yaXR5LWRvd24gZWZmb3J0LWRvd24pKSkKKSkKCihhZGQtdG8tbGlz dCAnb3JnLWFnZW5kYS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICAgJygiZHMiICJtdXNp YyBwcmUgcmVsZWFzZSIgdGFncy10b2RvICJQcmVfUmVsZWFzZSIKKChvcmctYWdlbmRhLWZpbGVz IChsaXN0ICJ+L29yZy9maWxlcy9hZ2VuZGEvZGwub3JnIiApKSkKKChvcmctYWdlbmRhLXNvcnRp bmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCikpCgojK0VORF9TUkMK CioqKiBIb21lIHRhc2tzIChoKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDU2NGVi MGZlLWYxMDctNDRhNi04NjFlLTUyMDE5NThhMzdkZQogICAgOkVORDoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNv bW1hbmRzCiAgICAgICAgICAgICAnKCJoIiAuICJob21lIiApKQoKKGFkZC10by1saXN0ICdvcmct YWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCJoZSIgInRlY2giIHRvZG8g IlRPRE8iCigob3JnLWFnZW5kYS1maWxlcyAobGlzdCAifi9vcmcvZmlsZXMvYWdlbmRhL1RPRE8u b3JnIiApKSkKKChvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVm Zm9ydC1kb3duKSkpCikpCgoKKGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5k cwogICAgICAgICAgICAgICAnKCJoaCIgImhvbWUiIHRvZG8gIlRPRE8iCigob3JnLWFnZW5kYS1m aWxlcyAobGlzdCAifi9vcmcvZmlsZXMvYWdlbmRhL2hvbWUub3JnIiApKSkKKChvcmctYWdlbmRh LXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCikpCgoKIytF TkRfU1JDCgoKKioqIGNhbGVuZGFyIHRhc2tzIChtKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIDI1MzM5MGFmLTY3MWQtNGFhYi05Y2U4LWI4OWMwM2M4ZGM2MAogICAgOkVORDoKKioq IFRlY2ggdGFza3MgKGUpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNDM3NGYyNGYt MjYyMS00MjhhLWI1OTMtNTRkMWZiYjAzMjAzCiAgICA6RU5EOgoqKiogcGFwZXJzIChwKQogICAg OlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDFmY2JiMjJmLTgzZDYtNDEyYS1iNjRhLTMzYmVk YWE3OTJhNAogICAgOkVORDoKKioqIGZvb2QgKGYpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgYmFlZThhZDQtY2Y2ZS00OTY5LWJmNmQtOGYwNGZkNjcwNThjCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihhZGQtdG8tbGlzdCAnb3JnLWFnZW5k YS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICcoImYiIC4gImZvb2QvdHJhdmVsIiApKQoK KGFkZC10by1saXN0ICdvcmctYWdlbmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAn KCJmZiIgIkNPT0siIHRvZG8gIkNPT0siCigob3JnLWFnZW5kYS1maWxlcyAobGlzdCAifi9vcmcv ZmlsZXMvYWdlbmRhL2Zvb2Qub3JnIiApKSkKKChvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kg Jyhwcmlvcml0eS1kb3duIGVmZm9ydC1kb3duKSkpCikpCgoKKGFkZC10by1saXN0ICdvcmctYWdl bmRhLWN1c3RvbS1jb21tYW5kcwogICAgICAgICAgICAgICAnKCJmZCIgImRlc3NlcnRzIiB0YWdz LXRvZG8gImRlc3NlcnQiCigob3JnLWFnZW5kYS1maWxlcyAobGlzdCAifi9vcmcvZmlsZXMvYWdl bmRhL2Zvb2Qub3JnIiApKSkKKChvcmctYWdlbmRhLXNvcnRpbmctc3RyYXRlZ3kgJyhwcmlvcml0 eS1kb3duIGVmZm9ydC1kb3duKSkpCikpCgo7Oztwcm9wZXJ0eSBleGFtcGxlCgooYWRkLXRvLWxp c3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAgICAgICAgICAgICAgICcoImZhIiAiYW1l cmljYW4iIHRhZ3MgIkN1aXNpbmU9XCJBbWVyaWNhblwiIgooKG9yZy1hZ2VuZGEtZmlsZXMgKGxp c3QgIn4vb3JnL2ZpbGVzL2FnZW5kYS9mb29kLm9yZyIgKSkpCigob3JnLWFnZW5kYS1zb3J0aW5n LXN0cmF0ZWd5ICcocHJpb3JpdHktZG93biBlZmZvcnQtZG93bikpKQopKQoKCiMrRU5EX1NSQwoK KioqIFZhcmlvdXMgb3BlcmF0aW9ucyAodikKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAg ICA5MDE1MjdhOC05MGQxLTRmY2YtOWUyZS1kZGNjNGU1MTliOTYKICAgIDpFTkQ6CioqKiBVbmkg VE9ET1MgKGIpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNmZmMTgwNzYtZTBkZS00 NzJmLWIyMzAtNzc3OWFhNjRkMzQxCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCgooYWRkLXRvLWxpc3QgJ29yZy1hZ2VuZGEtY3VzdG9tLWNvbW1hbmRzCiAg ICAgICAgICAgICAnKCJ2IiAuICJWYXJpb3VzIiApKQoKCihhZGQtdG8tbGlzdCAnb3JnLWFnZW5k YS1jdXN0b20tY29tbWFuZHMKICAgICAgICAgICAgICAgICAgJygidm8iIG9jY3VyLXRyZWUgIlRP RE8iKSAKICAgICAgICAgICAgICAgICApCgojK0VORF9TUkMKCgoKKiogSW1hZ2VzCiAgIDpQUk9Q RVJUSUVTOgogICA6SUQ6ICAgICAgIGFhYzFhYTQ1LTk1NzYtNGNkYS1iNTY0LTcxMGM5YzkwZmQw OQogICA6RU5EOgoqKiogYmFzZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGQzNWI1 NWY3LWYzZmMtNGZiNy1hNmFiLTk1YzdjMjE3ODI5OAogICAgOkVORDoKKioqKiBpbmxpbmUgaW1h Z2VzIGJ5IGRlZmF1bHQgYXQgc3RhcnR1cAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgYmZjZjQzNzItYjMxNC00MjcyLWJlMDgtZWRlYmIwZWJhNTRjCiAgICAgOkVORDoKIytiZWdp bl9zcmMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjs7aWltYWdlIGluIG9yZyAoZGlzcGxheSBp bWFnZXMgaW4gb3JnIGZpbGVzKQooc2V0cSBvcmctc3RhcnR1cC13aXRoLWlubGluZS1pbWFnZXMg dCkKIytlbmRfc3JjCioqKiogc2l6ZSBkZWZhdWx0cyBAV2FybmluZy0gdGhpcyBtYXkgc2NyZXcg dXAgaW1hZ2UgY29uZmlnQCAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDM5NzM3 MWNlLTMxYTYtNDRiMy04Nzc4LWJmMzk2Y2VkYmViNgogICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOztzZXQgdGhlIG9yZyBpbWFnZSBkZWZhdWx0IHNpemUK OyhzZXRxIG9yZy1pbWFnZS1hY3R1YWwtd2lkdGggbmlsKQooc2V0cSBvcmctaW1hZ2UtYWN0dWFs LXdpZHRoICcoNDAwKSkKCiMrRU5EX1NSQwoqKiBUYWdzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIDY2MjJiZjEwLTk0NmMtNDMxNy1hNTIxLWY3MTFkOTA5Mjc5YgogICA6RU5EOgoqKiog dGFnIGluaGVyaXRhbmNlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZDA5OGI3MDUt OTI3NS00YzQzLTgzZmMtYWZlNDNhMTczZGRjCiAgICA6RU5EOgptYWtlIHN1cmUgY2hpbGQgaGVh ZGVycyBkb24ndCBnZXQgdGhlIGhlYWRlciB0YWdzCmh0dHA6Ly9vcmdtb2RlLm9yZy9tYW51YWwv VGFnLWluaGVyaXRhbmNlLmh0bWwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQooc2V0cSBvcmctdXNlLXRhZy1pbmhlcml0YW5jZSBuaWwpCiMrRU5EX1NSQwoKKioqIHRhZyBh bGlzdAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDRkYTY5MDg4LTAzNjEtNGNiZC1h MjU2LWJmMmNiYzAxOTZkZQogICAgOkVORDoKCuOAljpzdGFydGdyb3Vw44CXIGlzIGlzIHVzZWQg d2hlbiB5b3Ugd2FudCBleGNsdXNpdmUgdGFncyAodGhhdCBpcyBvbmx5IDEgYXQgYSB0aW1lIGlz IHBvc3NpYmxlKQrjgJY6c3RhcnRncm91cHRhZ3PjgJcgaXMgaXMgdXNlZCB3aGVuIHlvdSB3YW50 IHRvIHVzZSBzZXZlcmFsIHRhZ3MgYXQgYSB0aW1lKQoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKICAoc2V0cSBvcmctdGFnLXBlcnNpc3RlbnQtYWxpc3QgICcoCgooOnN0 YXJ0Z3JvdXApCiAgICAoIldoZXJlPyIpCiAgICAoOmdyb3VwdGFncykKICAgICAoIkBob21lIiAu ID9oKQogICAgICgiQHdvcmsiIC4gP3cpCiAgICAgKCJAcGMiIC4gP3ApCiAgICAgKCJAZmFtaWx5 IiAuID9mKQogICAgICgiQHNob3AiIC4gP3MpCiAgICAgKDplbmRncm91cCkKCig6c3RhcnRncm91 cHRhZykKICAgICgicGVvcGxlIikKICAgICg6Z3JvdXB0YWdzKQogICAgKCJhbGxhbiIgLiA/YSkK ICAgICgiYm9iIiAuID9vKQogICAgKCJqb2VsIiAuID9qKQogICAgKCJkYXZpZCIgLiA/ZCkKICAg ICgiYm9yaXMiIC4gP2IpCiAgICAoIm1hc3NpbW8iIC4gP3MpCiAgICAoIm1pY2hhZWwiIC4gP20p CiAgICAoInRhbCIgLiA/dCkKICAgICgiam9oYW5uYSIgLiA/bikKICAgICg6ZW5kZ3JvdXB0YWcp CgooOnN0YXJ0Z3JvdXB0YWcpCiAgICgic3R1ZGVudHMiKQogICAoOmdyb3VwdGFncykKICAgKCJh ZGFyIiAuID9hKQogICAoIm1leXRhciIgLiA/bSkKICAgKCJtYWF5YW4iIC4gP3kpCiAgICgiYWxl eCIgLiA/eCkKICAgKCJvbWVyIiAuID9vKQogICAoImhpbGEiIC4gP3opCiAgICgiYWRpIiAuID92 KQogICAoImxhcmEiIC4gP2wpCiAgICgiaGVsZW5hIiAuID9oKQogICAoImFsaXphIiAuID96KQog ICAoOmVuZGdyb3VwdGFnKQoKCig6c3RhcnRncm91cHRhZykKICAgKCJwdWJsaXNoaW5nIikKICAg KDpncm91cHRhZ3MpCiAgICgicHJlcyIgLiA/cCkKICAgKCJub2V4cG9ydCIgLiA/bikKICAgKDpl bmRncm91cHRhZykKCgogICkpCiMrRU5EX1NSQwoKCioqKiBvcmctdGFnLWZhY2VzCiAgICA6UFJP UEVSVElFUzoKICAgIDpJRDogICAgICAgOTFhZjA3NGQtZWJlZS00YmI5LTk3MzctNDNlNTc5OTFm NmVmCiAgICA6RU5EOgoKZG9lcyBub3Qgd29yayBhdCBhbGwKIytiZWdpbl9zcmMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihzZXRxIG9yZy10YWctZmFjZXMKICAgICAgJygKCjs7IHBsYWNlcyAK KCJAaG9tZSIgLiAiIzM0OThkYiIpCigiQHdvcmsiIC4gIiMzNDk4ZGIiKQooIkBwYyIgLiAiIzM0 OThkYiIpCigiQGZhbWlseSIgLiAiIzM0OThkYiIpCigiQHNob3AiIC4gIiMzNDk4ZGIiKQoKOzs7 Y29sbGFib3JhdG9ycyAKKCJhbGxhbiIgLiAoOmZvcmVncm91bmQgImJsdWUiIDp3ZWlnaHQgYm9s ZCkpCigiam9lbCIgLiAoOmZvcmVncm91bmQgImJsdWUiIDp3ZWlnaHQgYm9sZCkpCigiZGF2aWQi IC4gKDpmb3JlZ3JvdW5kICJibHVlIiA6d2VpZ2h0IGJvbGQpKQooImJvcmlzIiAuICg6Zm9yZWdy b3VuZCAiYmx1ZSIgOndlaWdodCBib2xkKSkKKCJtYXNzaW1vIiAoOmZvcmVncm91bmQgImJsdWUi IDp3ZWlnaHQgYm9sZCkpCigiYm9iIiAoOmZvcmVncm91bmQgImJsdWUiIDp3ZWlnaHQgYm9sZCkp CigibWljaGFlbCIgKDpmb3JlZ3JvdW5kICJibHVlIiA6d2VpZ2h0IGJvbGQpKQooInRhbCIgKDpm b3JlZ3JvdW5kICJibHVlIiA6d2VpZ2h0IGJvbGQpKQo7O3N0dWRlbnRzIAooImFkYXIiIC4gKDpm b3JlZ3JvdW5kICJQdXJwbGUiIDp3ZWlnaHQgYm9sZCkpCigibWV5dGFyIiAuICg6Zm9yZWdyb3Vu ZCAiUHVycGxlIiA6d2VpZ2h0IGJvbGQpKQooIm1hYXlhbiIgLiAoOmZvcmVncm91bmQgIlB1cnBs ZSIgOndlaWdodCBib2xkKSkKKCJhbGV4IiAuICg6Zm9yZWdyb3VuZCAiUHVycGxlIiA6d2VpZ2h0 IGJvbGQpKQooIm9tZXIiIC4gKDpmb3JlZ3JvdW5kICJQdXJwbGUiIDp3ZWlnaHQgYm9sZCkpCigi aGlsYSIgLiAoOmZvcmVncm91bmQgIlB1cnBsZSIgOndlaWdodCBib2xkKSkKKCJhZGkiIC4gKDpm b3JlZ3JvdW5kICJQdXJwbGUiIDp3ZWlnaHQgYm9sZCkpCigibGFyYSIgLiAoOmZvcmVncm91bmQg IlB1cnBsZSIgOndlaWdodCBib2xkKSkKKCJoZWxlbmEiIC4gKDpmb3JlZ3JvdW5kICJQdXJwbGUi IDp3ZWlnaHQgYm9sZCkpCigiYWxpemEiIC4gICg6Zm9yZWdyb3VuZCAiUHVycGxlIiA6d2VpZ2h0 IGJvbGQpKQoKKSkKCgojK2VuZF9zcmMKCgoKKioqIEFsbG93IHNldHRpbmcgc2luZ2xlIHRhZ3Mg d2l0aG91dCB0aGUgbWVudQkJCSAgICAgIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAg IGM1NTE5YzA4LTAzNzItNDJkMy05NGE4LTY2NGIzYjQzYWU0MwogICAgOkVORDoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7OyBBbGxvdyBzZXR0aW5nIHNpbmdsZSB0YWdz IHdpdGhvdXQgdGhlIG1lbnUKKHNldHEgb3JnLWZhc3QtdGFnLXNlbGVjdGlvbi1zaW5nbGUta2V5 IChxdW90ZSBleHBlcnQpKQojK0VORF9TUkMKCioqKiB0YWcgc2VhcmNoZXMgZnVuY3Rpb24gIAog ICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGMxZTI1Y2E3LThjYmQtNGJkOC1iNDE3LTNh YzA5YzYxNDc0YgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l CihvcmctYWRkLWxpbmstdHlwZQogInRhZyIKIChkZWZ1biBlbmRsZXNzL2ZvbGxvdy10YWctbGlu ayAodGFnKQogICAiRGlzcGxheSBhIGxpc3Qgb2YgVE9ETyBoZWFkbGluZXMgd2l0aCB0YWcgVEFH LgpXaXRoIHByZWZpeCBhcmd1bWVudCwgYWxzbyBkaXNwbGF5IGhlYWRsaW5lcyB3aXRob3V0IGEg VE9ETyBrZXl3b3JkLiIKICAgKG9yZy10YWdzLXZpZXcgKG51bGwgY3VycmVudC1wcmVmaXgtYXJn KSB0YWcpKSkKIytFTkRfU1JDCioqIFRvZG8KICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAg ZmQ4MjhjYjQtOTAxYS00NDMxLWJhODItN2RlMDRlYjg3ODU5CiAgIDpFTkQ6CioqKiBvcmcgdG9k byBjb25maWcKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3NjE3MzAwZi02ODUxLTQ3 MjAtYWJiYy05ZTI2ZDM4ODE4NzIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQo7YWxsb3cgZmFzdCB0b2RvCihzZXRxIG9yZy11c2UtZmFzdC10b2RvLXNlbGVj dGlvbiB0KQo7YWxsb3cgc2hpZnQtbGVmdCByaWdodCB0byBjaGFuZ2UgdG9kbyBzdGF0ZQooc2V0 cSBvcmctdHJlYXQtUy1jdXJzb3ItdG9kby1zZWxlY3Rpb24tYXMtc3RhdGUtY2hhbmdlIG5pbCkK IytFTkRfU1JDCioqKiB0b2RvIGtleXdvcmRzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAg ICAgNmZiOWUwMmQtNjE4MS00NTllLWE0YjctMmJkNDY5ZjdiOGE5CiAgICA6RU5EOgojK2JlZ2lu X3NyYyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgb3JnLXRvZG8ta2V5d29yZHMKICAg ICAgKHF1b3RlICgoc2VxdWVuY2UgIlRPRE8odCkiICAifCIgIkRPTkUoZCkiKQogICAgICAgICAg ICAgIChzZXF1ZW5jZSAiVEFTSyhmKSIgInwiICJET05FKGQpIikKICAgICAgICAgICAgICAoc2Vx dWVuY2UgIklOUFIocikiICJ8IiAiRE9ORShkKSIpCiAgICAgICAgICAgICAgKHNlcXVlbmNlICJB Q1RJT04oYSkiICJ8IiAiRE9ORShkKSIpCikpKQooc2V0cSBvcmctdG9kby1rZXl3b3JkLWZhY2Vz CiAgICAgIChxdW90ZSAoKCJUT0RPIiA6Zm9yZWdyb3VuZCAicmVkIiA6d2VpZ2h0IGJvbGQpCiAg ICAgICAgICAgICAgKCJUQVNLIiA6Zm9yZWdyb3VuZCAibWFnZW50YSIgOndlaWdodCBib2xkKQog ICAgICAgICAgICAgICgiQUNUSU9OIiA6Zm9yZWdyb3VuZCAiIzdiNjhlZSIgOndlaWdodCBib2xk KQogICAgICAgICAgICAgICgiTkVYVCIgOmZvcmVncm91bmQgImJsdWUiIDp3ZWlnaHQgYm9sZCkK ICAgICAgICAgICAgICAoIklOUFIiIDpiYWNrZ3JvdW5kICIjOUNGRkJCIiA6Zm9yZWdyb3VuZCAi IzAwNEQxOCIgOndlaWdodCBib2xkKQogICAgICAgICAgICAgICgiUEFVUyIgOmZvcmVncm91bmQg ImdyYXkiIDp3ZWlnaHQgYm9sZCkKICAgICAgICAgICAgICAoIlNVQk1JVFRFRCIgOmZvcmVncm91 bmQgIiNGRkM2MTIiIDp3ZWlnaHQgYm9sZCkKICAgICAgICAgICAgICAoIktfVFJBQ0siIDpmb3Jl Z3JvdW5kICIjNDVEMEZGIiA6d2VpZ2h0IGJvbGQpCiAgICAgICAgICAgICAgKCJET05FIiA6Zm9y ZWdyb3VuZCAiZm9yZXN0IGdyZWVuIiA6d2VpZ2h0IGJvbGQpCiAgICAgICAgICAgICAgKCJQVUIi IDpmb3JlZ3JvdW5kICIjMDBGRjM3IiA6d2VpZ2h0IGJvbGQpCiAgICAgICAgICAgICAgKCJQUkVQ IiA6Zm9yZWdyb3VuZCAiI0ZGN0JEMCIgOndlaWdodCBib2xkKQogICAgICAgICAgICAgICgiU1VC IiA6Zm9yZWdyb3VuZCAiI0NFMDA4QiIgOndlaWdodCBib2xkKQogICAgICAgICAgICAgICgiVE9W SVNJVCIgOmJhY2tncm91bmQgIiMwQ0ZCMzIiIDpmb3JlZ3JvdW5kICIjMDAxRjU3IiA6d2VpZ2h0 IGJvbGQpCiAgICAgICAgICAgICAgKCJWSVNJVEVEIiA6YmFja2dyb3VuZCAiI0ZGN0JEMCIgOmZv cmVncm91bmQgIiMwMDFGNTciIDp3ZWlnaHQgYm9sZCkKICAgICAgICAgICAgICAoIkNPT0siIDpi YWNrZ3JvdW5kICIjMENGQjMyIiA6Zm9yZWdyb3VuZCAiIzAwMUY1NyIgOndlaWdodCBib2xkKQog ICAgICAgICAgICAgICgiU0hPUCIgOmJhY2tncm91bmQgIiM5Q0ZGQkIiIDpmb3JlZ3JvdW5kICIj MDA0RDE4IiA6d2VpZ2h0IGJvbGQpCiAgICAgICAgICAgICAgKCJET1dOIiA6YmFja2dyb3VuZCAi IzlDRkZCQiIgOmZvcmVncm91bmQgIiMwMDREMTgiIDp3ZWlnaHQgYm9sZCkKICAgICAgICAgICAg ICApKSkKIytlbmRfc3JjCgoKKioqIGF1dG8gYWRkIHRhZ3MKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICBhMWFjODdlZi00ZmI4LTQyNjUtOTY2YS1jMDM4ZjdhYzViMjYKICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBvcmctdG9kby1zdGF0 ZS10YWdzLXRyaWdnZXJzCiAgICAgIChxdW90ZSAoKCJDQU5DRUxMRUQiICgiQ0FOQ0VMTEVEIiAu IHQpKQogICAgICAgICAgICAgICgiV0FJVElORyIgKCJXQUlUSU5HIiAuIHQpKQogICAgICAgICAg ICAgICgiSE9MRCIgKCJXQUlUSU5HIiAuIHQpICgiSE9MRCIgLiB0KSkKICAgICAgICAgICAgICAo ZG9uZSAoIldBSVRJTkciKSAoIkhPTEQiKSkKICAgICAgICAgICAgICAoIlRPRE8iICgiV0FJVElO RyIpICgiQ0FOQ0VMTEVEIikgKCJIT0xEIikpCiAgICAgICAgICAgICAgKCJORVhUIiAoIldBSVRJ TkciKSAoIkNBTkNFTExFRCIpICgiSE9MRCIpKQogICAgICAgICAgICAgICgiRE9ORSIgKCJXQUlU SU5HIikgKCJDQU5DRUxMRUQiKSAoIkhPTEQiKSkpKSkKIytFTkRfU1JDCioqKiBwcmlvcml0aWVz CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgOTkyYmQ0YjMtNGY5MS00NWQ5LTg1ZTIt N2MwYmM2YmQ0ZTJjCiAgICA6RU5EOgoqKioqIFRoaXMgY2FuIG1lc3MgdXAgdGhlIHNvcnQgb3Jk ZXIgaW4gb3JnLWFnZW5kYS1zb3J0aW5nLXN0cmF0ZWd5IGFuZCB0aHVzIGl0cyBjb21tZW50ZWQg b3V0CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAxMWM2Zjc0Ni02MmI0LTQ3MzYt ODViZi03MDM5YWViYTdhM2YKICAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCiAgIDs7IDs7c2V0IHByaW9yaXR5IHJhbmdlIGZyb20gQSB0byBDIHdpdGggZGVm YXVsdCBBCiAgIDs7IChzZXRxIG9yZy1oaWdoZXN0LXByaW9yaXR5ID9BKQogICA7OyAoc2V0cSBv cmctbG93ZXN0LXByaW9yaXR5ID9DKQogICA7OyAoc2V0cSBvcmctZGVmYXVsdC1wcmlvcml0eSA/ QSkKCiAjK0VORF9TUkMKKioqKiBjb2xvdXJzIGZvciBwcmlvcml0aWVzCiAgICAgOlBST1BFUlRJ RVM6CiAgICAgOklEOiAgICAgICBjNTkwZGE4ZS1hYTg5LTRmNDktOTUxMC0zNjIzNDE1NzdlNGIK ICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwCihzZXRxIG9yZy1wcmlvcml0eS1mYWNl cyAnKCg/QSAuICg6Zm9yZWdyb3VuZCAiI0YwREZBRiIgOndlaWdodCBib2xkKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgKD9CIC4gKDpmb3JlZ3JvdW5kICJMaWdodFN0ZWVsQmx1ZSIpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAoP0MgLiAoOmZvcmVncm91bmQgIk9saXZlRHJhYiIp KSkpCiMrRU5EX1NSQwoKIytSRVNVTFRTOgp8IDY1IHwgOmZvcmVncm91bmQgfCAjRjBERkFGICAg ICAgICB8IDp3ZWlnaHQgfCBib2xkIHwKfCA2NiB8IDpmb3JlZ3JvdW5kIHwgTGlnaHRTdGVlbEJs dWUgfCAgICAgICAgIHwgICAgICB8CnwgNjcgfCA6Zm9yZWdyb3VuZCB8IE9saXZlRHJhYiAgICAg IHwgICAgICAgICB8ICAgICAgfAoKKioqIG1hcmsgYXMgZG9uZSB3aGVuIGFyY2hpdmluZwogICAg OlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDcwNzM4OGY1LTZlMmUtNDY5NC05MjY1LTI5NTY5 OGIwZjI5MgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7 OyBNYXJrIGVudHJpZXMgYXMgZG9uZSB3aGVuIGFyY2hpdmluZwooc2V0cSBvcmctYXJjaGl2ZS1t YXJrLWRvbmUgdCkKIytFTkRfU1JDCioqIFJlZmlsZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAg ICAgICA1YzU1YTExOC05Y2QyLTRiZWEtYTFlOS01MGNiZTE0OTg3MjkKICAgOkVORDoKKioqIHNl dCB3aGljaCByZWZpbGUgbWV0aG9kIHRvIHVzIChjdXJyZW50bHkgaGVsbSkKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICBiZGZkNWQ3OC1mODIwLTRmNTctOTVjYy00MzU2OTA2OTlhYjcK ICAgIDpFTkQ6CnRoaXMgY29tbWFuZCBiZWxvdyB3aWxsIHVzZSBoZWxtIGZvciBjb21wbGV0aW9u IHNpbmNlIGluIHRoZSBhYm92ZSBoZWxtIGNvbmZpZyB3ZSBzZXBjaWZ5IHRoZXNlIHR3byBjb21t YW5kczogKHJlcXVpcmUgJ2hlbG0tY29uZmlnKSBhbmQgKGhlbG0tbW9kZSAxKQojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgb3JnLW91dGxpbmUtcGF0aC1jb21wbGV0 ZS1pbi1zdGVwcyBuaWwpCiMrRU5EX1NSQwoqKiogc2V0dGluZ3MgZm9yIHBhdGhzIGFuZCBoZWFk ZXJzIHNob3duCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYTgzMzViZTItOTQ5ZS00 M2IzLWE2ZGYtMmQyODIxYTA5Y2VkCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKOztsaXN0IGV2ZXJ5dGhpbmcgaW5zdGVhZCBvZiBzdGVwcGluZyB0aHJvdWdo IGVhY2ggbGV2ZWwgZ3JhZHVhbGx5CihzZXRxIG9yZy1vdXRsaW5lLXBhdGgtY29tcGxldGUtaW4t c3RlcHMgbmlsKQo7OyBSZWZpbGUgb24gdG9wIG9mIGZpbGUgbWF4CihzZXRxIG9yZy1yZWZpbGUt dXNlLW91dGxpbmUtcGF0aCAnZmlsZSApCiMrRU5EX1NSQwoqKiogc2V0IGhlYWRpbmcgZGVwdGgK ICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA5ZDVhNjY1MS01ZmI2LTQ4MmItYjY1MC1h ZDg1ODNjNTMxMjcKICAgIDpFTkQ6CnNldCBob3cgbWFueSBsZXZlbHMgb2YgaGVhZGVycyB0byBz aG93IHdoaWxlIHJlZmlsaW5nIAojK2JlZ2luX3NyYyBlbWFjcy1saXNwIHJlc3VsdHMgbm9uZQo7 IFRhcmdldHMgaW5jbHVkZSB0aGlzIGZpbGUgYW5kIGFueSBmaWxlIGNvbnRyaWJ1dGluZyB0byB0 aGUgYWdlbmRhIC0gdXAgdG8gOSBsZXZlbHMgZGVlcAooc2V0cSBvcmctcmVmaWxlLXRhcmdldHMg KHF1b3RlICgobmlsIDptYXhsZXZlbCAuIDkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChvcmctYWdlbmRhLWZpbGVzIDptYXhsZXZlbCAuIDkpKSkpCiMrZW5kX3NyYwoKIytSRVNV TFRTOgo6ICgobmlsIDptYXhsZXZlbCAuIDkpIChvcmctYWdlbmRhLWZpbGVzIDptYXhsZXZlbCAu IDkpKQoKJE5vdGUkIHRoYXQgeW91IGNhbiBhbHNvIHJlZmlsZSBwZXIgZmlsZSB3aXRoIHNwZWNp ZmljIGxldmVscyAKCiMrQkVHSU5fRVhBTVBMRQoKKHNldHEgb3JnLXJlZmlsZS10YXJnZXRzIChx dW90ZSAoKCJ0aWNrbGVyLm9yZyIgOm1heGxldmVsIC4gMSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCJvcmdhbml6ZXIub3JnIiA6bGV2ZWwgLiAxKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoInNvbWVkYXkub3JnIiA6bGV2ZWwgLiAyKSkpKQoKIytFTkRfRVhB TVBMRQoKaGVyZSB5b3UgY2FuICByZWZpbGUgdG8gYW55IGxldmVsIDEgaGVhZGluZ3MgaW4gdGhl IGZpcnN0IHR3byBmaWxlcywgYW5kIGFueSBsZXZlbCAyIGhlYWRpbmdzIChidXQgbm90IGxldmVs IDEgaGVhZGluZ3MpIGluIHRoZSB0aGlyZCBmaWxlLgoKKiogbW9iaWxlIG9yZwogICA6UFJPUEVS VElFUzoKICAgOklEOiAgICAgICAyNmI2ODJjOC05NjdkLTQwZjQtOGM2Mi1hZDIxYTQ3MWNjN2UK ICAgOkVORDoKKioqIHNldHVwCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNjNlOTVi ZGQtNTg4Ni00NGZmLThlZjktZDY1YWFmNjAyZWZjCiAgICA6RU5EOgojK2JlZ2luX3NyYyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKOztGb3IgYWdlbmRhIGZpbGVzIGxvY2F0aW9ucywgZWFjaCBs b2NhdGlvbiB5b3UgYWRkIHdpdGhpbiAiICIKKHJlcXVpcmUgJ29yZy1tb2JpbGUpCihzZXRxIG9y Zy1tb2JpbGUtZGlyZWN0b3J5ICJ+L0Ryb3Bib3gvTW9iaWxlT3JnLyIpCjs7IFNldCB0byB0aGUg bmFtZSBvZiB0aGUgZmlsZSB3aGVyZSBuZXcgY2FwdHVyZXMgd2lsbCBiZSBzdG9yZWQgYWZ0ZXIg cHVsbGluZyBmcm9tIG1vYmlsZQooc2V0cSBvcmctbW9iaWxlLWluYm94LWZvci1wdWxsICJ+L29y Zy9maWxlcy9mcm9tLW1vYmlsZS5vcmciKQoKIytlbmRfc3JjCgoqKiogYXV0byBzeW5jCiAgICA6 UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMWYyYmVhMjgtNjNlMy00ODdlLTg5YjgtZmQ3NWQx ODBmNjFmCiAgICA6RU5EOgoqKioqIChvbGQsIGtlZXAgYXJvdW5kIHNpbmNlIHRoaWQgRE9FUyB3 b3JrKQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgMmYzYWFiNGEtYjkwZi00MGNi LTg0YzUtZGYzM2Y3ODJmNDBlCiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCiAgOzsgKGRlZnZhciBvcmctbW9iaWxlLXB1c2gtdGltZXIgbmlsCiAgOzsgICAi VGltZXIgdGhhdCBgb3JnLW1vYmlsZS1wdXNoLXRpbWVyJyB1c2VkIHRvIHJlc2NoZWR1bGUgaXRz ZWxmLCBvciBuaWwuIikKCiAgOzsgKGRlZnVuIG9yZy1tb2JpbGUtcHVzaC13aXRoLWRlbGF5IChz ZWNzKQogIDs7ICAgKHdoZW4gb3JnLW1vYmlsZS1wdXNoLXRpbWVyCiAgOzsgICAgIChjYW5jZWwt dGltZXIgb3JnLW1vYmlsZS1wdXNoLXRpbWVyKSkKICA7OyAgIChzZXRxIG9yZy1tb2JpbGUtcHVz aC10aW1lcgogIDs7ICAgICAgICAgKHJ1bi13aXRoLWlkbGUtdGltZXIKICA7OyAgICAgICAgICAo KiAxIHNlY3MpIG5pbCAnb3JnLW1vYmlsZS1wdXNoKSkpCgogIDs7IChhZGQtaG9vayAnYWZ0ZXIt c2F2ZS1ob29rIAogIDs7ICAobGFtYmRhICgpIAogIDs7ICAgICh3aGVuIChlcSBtYWpvci1tb2Rl ICdvcmctbW9kZSkKICA7OyAgICAgIChkb2xpc3QgKGZpbGUgKG9yZy1tb2JpbGUtZmlsZXMtYWxp c3QpKQogIDs7ICAgICAgIChpZiAoc3RyaW5nPSAoZmlsZS10cnVlbmFtZSAoZXhwYW5kLWZpbGUt bmFtZSAoY2FyIGZpbGUpKSkKICA7OyAgICAgICAgICAgICAgICAgICAgKGZpbGUtdHJ1ZW5hbWUg KGJ1ZmZlci1maWxlLW5hbWUpKSkKICA7OyAgICAgICAgICAgIChvcmctbW9iaWxlLXB1c2gtd2l0 aC1kZWxheSAzMCkpKQogIDs7ICAgICkpKQoKICA7OyAocnVuLWF0LXRpbWUgIjAwOjA1IiA4NjQw MCAnKGxhbWJkYSAoKSAob3JnLW1vYmlsZS1wdXNoLXdpdGgtZGVsYXkgMSkpKSA7OyByZWZyZXNo ZXMgYWdlbmRhIGZpbGUgZWFjaCBkYXkKCiMrRU5EX1NSQwoKKioqKiBhdXRvIHB1c2gKICAgICA6 UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDljNzM4ZmQ1LTAyMzktNGYyNS1hM2NiLWY3YThm YWYyMTY1NQogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQog IDs7IDs7IEZvcmsgdGhlIHdvcmsgKGFzeW5jKSBvZiBwdXNoaW5nIHRvIG1vYmlsZQogIDs7IDs7 IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzMxMTE4MjMgQVNZTkMgb3JnIG1vYmlsZSBwdXNoLi4u CiAgOzsgKHJlcXVpcmUgJ2dudXMtYXN5bmMpIAogIDs7IDs7IERlZmluZSBhIHRpbWVyIHZhcmlh YmxlCiAgOzsgKGRlZnZhciBvcmctbW9iaWxlLXB1c2gtdGltZXIgbmlsCiAgOzsgICAiVGltZXIg dGhhdCBgb3JnLW1vYmlsZS1wdXNoLXRpbWVyJyB1c2VkIHRvIHJlc2NoZWR1bGUgaXRzZWxmLCBv ciBuaWwuIikKICA7OyA7OyBQdXNoIHRvIG1vYmlsZSB3aGVuIHRoZSBpZGxlIHRpbWVyIHJ1bnMg b3V0CiAgOzsgKGRlZnVuIG9yZy1tb2JpbGUtcHVzaC13aXRoLWRlbGF5IChzZWNzKQogIDs7ICAg ICh3aGVuIG9yZy1tb2JpbGUtcHVzaC10aW1lcgogIDs7ICAgICAoY2FuY2VsLXRpbWVyIG9yZy1t b2JpbGUtcHVzaC10aW1lcikpCiAgOzsgICAoc2V0cSBvcmctbW9iaWxlLXB1c2gtdGltZXIKICA7 OyAgICAgICAgIChydW4td2l0aC1pZGxlLXRpbWVyCiAgOzsgICAgICAgICAgKCogMSBzZWNzKSBu aWwgJ29yZy1tb2JpbGUtcHVzaCkpKQogIDs7IDs7IEFmdGVyIHNhdmluZyBmaWxlcywgc3RhcnQg YW4gaWRsZSB0aW1lciBhZnRlciB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gcHVzaCAKICA7OyAoYWRk LWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAKICA7OyAgKGxhbWJkYSAoKSAKICA7OyAgICAoaWYgKG9y IChlcSBtYWpvci1tb2RlICdvcmctbW9kZSkgKGVxIG1ham9yLW1vZGUgJ29yZy1hZ2VuZGEtbW9k ZSkpCiAgOzsgICAgICAoZG9saXN0IChmaWxlIChvcmctbW9iaWxlLWZpbGVzLWFsaXN0KSkKICA7 OyAgICAgICAgKGlmIChzdHJpbmc9IChleHBhbmQtZmlsZS1uYW1lIChjYXIgZmlsZSkpIChidWZm ZXItZmlsZS1uYW1lKSkKICA7OyAgICAgICAgICAgIChvcmctbW9iaWxlLXB1c2gtd2l0aC1kZWxh eSAxMCkpKQogIDs7ICAgICAgKSkpCiAgOzsgOzsgUnVuIGFmdGVyIG1pZG5pZ2h0IGVhY2ggZGF5 IChvciBlYWNoIG1vcm5pbmcgdXBvbiB3YWtldXA/KS4KICA7OyAocnVuLWF0LXRpbWUgIjAwOjAx IiA4NjQwMCAnKGxhbWJkYSAoKSAob3JnLW1vYmlsZS1wdXNoLXdpdGgtZGVsYXkgMSkpKQogIDs7 IDs7IFJ1biAxIG1pbnV0ZSBhZnRlciBsYXVuY2gsIGFuZCBvbmNlIGEgZGF5IGFmdGVyIHRoYXQu CiAgOzsgKHJ1bi1hdC10aW1lICIxIG1pbiIgODY0MDAgJyhsYW1iZGEgKCkgKG9yZy1tb2JpbGUt cHVzaC13aXRoLWRlbGF5IDEpKSkKIytFTkRfU1JDCioqKiogYXV0byBwdWxsCiAgICAgOlBST1BF UlRJRVM6CiAgICAgOklEOiAgICAgICA1Yzk4N2RjYy1kYTgzLTQ3MjMtOTg1YS1lMjRmMTNkMTJi MjIKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyA7 OyB3YXRjaCBtb2JpbGVvcmcub3JnIGZvciBjaGFuZ2VzLCBhbmQgdGhlbiBjYWxsIG9yZy1tb2Jp bGUtcHVsbAogIDs7IDs7IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ1Njc4 Mi9lbWFjcy1saXNwLWhvdy10by1tb25pdG9yLWNoYW5nZXMtb2YtYS1maWxlLWRpcmVjdG9yeQog IDs7IChkZWZ1biBpbnN0YWxsLW1vbml0b3IgKGZpbGUgc2VjcykKICA7OyAgIChydW4td2l0aC10 aW1lcgogIDs7ICAgIDAgc2VjcwogIDs7ICAgIChsYW1iZGEgKGYgcCkKICA7OyAgICAgICh1bmxl c3MgKDwgcCAoc2Vjb25kICh0aW1lLXNpbmNlIChlbHQgKGZpbGUtYXR0cmlidXRlcyBmKSA1KSkp KQogIDs7ICAgICAgICAob3JnLW1vYmlsZS1wdWxsKSkpCiAgOzsgICAgZmlsZSBzZWNzKSkKICA7 OyAoZGVmdmFyIG1vbml0b3ItdGltZXIgKGluc3RhbGwtbW9uaXRvciAoY29uY2F0IG9yZy1tb2Jp bGUtZGlyZWN0b3J5ICIvbW9iaWxlb3JnLm9yZyIpIDMwKQogIDs7ICAgIkNoZWNrIGlmIGZpbGUg Y2hhbmdlZCBldmVyeSAzMCBzLiIpCiMrRU5EX1NSQwoKKiogQ2FwdHVyZQogICA6UFJPUEVSVElF UzoKICAgOklEOiAgICAgICBjMzJiNTJjMy0yMmMzLTRmNGUtYjY0ZC02NzQzOWUxMTg1MTcKICAg OkVORDoKKioqIGxvYWQgb3JnLXByb3RvY2wgYW5kIG9yZy1jYXB0dXJlCiAgICA6UFJPUEVSVElF UzoKICAgIDpJRDogICAgICAgNDkwMDBlOWYtZTUzYy00ZTE2LTg3ODAtZDY2ZWRhYTBkODdkCiAg ICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHJlcXVpcmUgJ29y Zy1wcm90b2NvbCkKKHJlcXVpcmUgJ29yZy1jYXB0dXJlKQojK0VORF9TUkMKKioqIG1ha2Ugb3Jn IHRha2UgdXAgMSBmcmFtZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDE0ZTYzYmYw LTA5NjYtNDA3NC05OGFmLWJkY2U1MWE1ZjJkNAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCiAgOzsgKGRlZmFkdmljZSBvcmctY2FwdHVyZSAoYXJvdW5kIGJw L29yZy1jYXB0dXJlLS1hcm91bmQpCiAgOzsgICAoZmxldCAoKHN3aXRjaC10by1idWZmZXItb3Ro ZXItd2luZG93IChidWYpIChzd2l0Y2gtdG8tYnVmZmVyIGJ1ZikpKQogIDs7ICAgICBhZC1kby1p dCkpCiAgOzsgKGFkLWFjdGl2YXRlICdvcmctY2FwdHVyZSkKCiMrRU5EX1NSQwoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCgogIDs7IChkZWZhZHZpY2Ugb3JnLWNhcHR1cmUK ICA7OyAgICAgKGFmdGVyIG1ha2UtZnVsbC13aW5kb3ctZnJhbWUgYWN0aXZhdGUpCiAgOzsgICAi QWR2aXNlIGNhcHR1cmUgdG8gYmUgdGhlIG9ubHkgd2luZG93IHdoZW4gdXNlZCBhcyBhIHBvcHVw IgogIDs7ICAgKGlmIChlcXVhbCAiZW1hY3MtY2FwdHVyZSIgKGZyYW1lLXBhcmFtZXRlciBuaWwg J25hbWUpKQogIDs7ICAgICAgIChkZWxldGUtb3RoZXItd2luZG93cykpKQoKICA7OyAoZGVmYWR2 aWNlIG9yZy1jYXB0dXJlLWZpbmFsaXplCiAgOzsgICAgIChhZnRlciBkZWxldGUtY2FwdHVyZS1m cmFtZSBhY3RpdmF0ZSkKICA7OyAgICJBZHZpc2UgY2FwdHVyZS1maW5hbGl6ZSB0byBjbG9zZSB0 aGUgZnJhbWUiCiAgOzsgICAoaWYgKGVxdWFsICJlbWFjcy1jYXB0dXJlIiAoZnJhbWUtcGFyYW1l dGVyIG5pbCAnbmFtZSkpCiAgOzsgICAgICAgKGRlbGV0ZS1mcmFtZSkpKQojK0VORF9TUkMKCioq KiBtYWtlIEMtYyB4IGNsb3NlIGFuZCBzYXZlIGZyYW1lCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgNjBhMmY5ZmUtNWU5OS00N2E3LTg1NDYtMWYzZDQwYzcwMzc2CiAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAoZGVmdW4gbXktY2FwdHVyZS1m aW5hbGl6ZSAoKQogICAgKGludGVyYWN0aXZlKQogICAgKG9yZy1jYXB0dXJlLWZpbmFsaXplKQog ICAgKGRlbGV0ZS1mcmFtZSkpCgogIChhZGQtaG9vayAnb3JnLWNhcHR1cmUtbW9kZS1ob29rCiAg ICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAgICAoZGVmaW5lLWtleSBvcmctY2FwdHVy ZS1tb2RlLW1hcCAiXEMtY1xDLXgiIChmdW5jdGlvbiBteS1jYXB0dXJlLWZpbmFsaXplKSkpKQog ICgobGFtYmRhIG5pbCAoZGVmaW5lLWtleSBvcmctY2FwdHVyZS1tb2RlLW1hcCAiAxgiIChmdW5j dGlvbiBteS1jYXB0dXJlLWZpbmFsaXplKSkpKQojK0VORF9TUkMKKioqIFRPRE8gYWRkIGRhdGUg YWZ0ZXIgY2FwdHVyZSBmaW5pc2hlcyBpbiBwcm9wZXJ0eSBkcmF3ZXIKCm5lZWQgdG8gZmluZCBh IHdheSB0byBhZGQgdG8gY3VycmVudCBjYXB0dXJlIHRlbXBsYXRlIAojK0JFR0lOX1NSQyBlbWFj cy1saXNwICA6cmVzdWx0cyBub25lCiAgKGRlZnVuIGFkZC1wcm9wZXJ0eS13aXRoLWRhdGUtY2Fw dHVyZWQgKCkKICAgICJBZGQgREFURV9DQVBUVVJFRCBwcm9wZXJ0eSB0byB0aGUgY3VycmVudCBp dGVtLiIKICAgIChpbnRlcmFjdGl2ZSkKICAgIChvcmctc2V0LXByb3BlcnR5ICJEQVRFX0NBUFRV UkVEIiAoZm9ybWF0LXRpbWUtc3RyaW5nICIlRiIpKSkKCiAgKGFkZC1ob29rICdvcmctY2FwdHVy ZS1iZWZvcmUtZmluYWxpemUtaG9vayAnYWRkLXByb3BlcnR5LXdpdGgtZGF0ZS1jYXB0dXJlZCkK CiMrRU5EX1NSQwoqKiBgQ3VzdG9tIENhcHR1cmUgdGVtcGxhdGVzYAogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIDJiZjE5ZDI3LWEwYWYtNGU0Yy05MWYxLTk3MjNhMmRlZGYxOAogICAg OkVORDoKJE5vdGUkLXRoZSBkaXNwYXRjaGVyIGxpbmUgaGFzIHRvIGJlIGFsd2F5cyBhdCB0aGUg ZW5kIG9mIGVhY2ggZGlzcGF0Y2hlciBibG9jayAKYWxzbyB0aGUgb3JkZXIgdGhlIGNhcHR1cmVz IGFwcGVhciBpcyByZXZlcnNlIHNpbmNlIGl0IGFkZCB0aGVtIHNlcXVlbnRpYWxseSAKKioqIHN0 YXJ0IHdpdGggY2xlYW4gc2xhdGUKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA1ZDZl OTAzOC0xY2M2LTQ3YmQtOGZmOC01ZWQxZjkxYmE1YjQKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICAoc2V0cSBvcmctY2FwdHVyZS10ZW1wbGF0ZXMgbmls KQogIChzZXRxIG9yZy1jYXB0dXJlLXRlbXBsYXRlcy1jb250ZXh0cyBuaWwpCiMrRU5EX1NSQwoq KiogT0xECiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYzNmNDRmNmItNDYyMi00Mjg5 LWE1ZWYtODMyZDE2MjgyYzI0CiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCgogIDs7ICAgICA7Ozs7IGpvdXJuYWxpbmcKCiAgOzsgICAgICgiaiIgImpvdXJu YWwiIGVudHJ5IChmaWxlK2RhdGV0cmVlK3Byb21wdCAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9h Z2VuZGEvUmVzZWFyY2gub3JnIiAiTGFiLWJvb2siKQogIDs7ICAgICAgICAiKiAlKGZvcm1hdC10 aW1lLXN0cmluZyBcIiVIOiVNXCIpICVee0VudHJ5fSAlXkdcbiVpJT8iKQogCiAgOzsgICAgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICA7OyAgICAgOzsgKCJjIiAiQ29udGFjdHMi IGVudHJ5IChmaWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL1BJTS9jb250YWN0cy5vcmciKQog IDs7ICAgICA7OyAgICAgICAgICAgICAgICAiKiAlKG9yZy1jb250YWN0cy10ZW1wbGF0ZS1uYW1l KQogIDs7ICAgICA7OyA6UFJPUEVSVElFUzoKICA7OyAgICAgOzsgOkVNQUlMOiAlKG9yZy1jb250 YWN0cy10ZW1wbGF0ZS1lbWFpbCkKICA7OyAgICAgOzsgOkVORDoiKQoKICA7OyAgICAgOzs7Oy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogIDs7ICAgICA7Ozs7IGVsZmVlZCAKICA7OyAgIDs7ICAoInMiICJF bGZlZWQiIGVudHJ5IChmaWxlK2hlYWRsaW5lICJUT0RPLm9yZyIgIldlYiIpCiAgOzsgICA7OyAg ICAgIiogICU6ZGVzY3JpcHRpb24KICA7OyAgIDs7ICAgICAgJXQKICA7OyAgIDs7ICAgXG5MaW5r OiAlYVxuXG4iICA6aW1tZWRpYXRlLWZpbmlzaCB0KQoKCgoKICA7OyAgICAgOzs7OzstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiAgOzsgICAgICgiRyIgIkdlbmVyaWMtYXNrIHdoaWNoIGZpbGUiIGVudHJ5 IChmaWxlK2hlYWRsaW5lIChleHBhbmQtZmlsZS1uYW1lIChyZWFkLXN0cmluZyAiTmFtZSBvZiBm aWxlOiAiKSkgIkdlbmVyaWMiKQogIDs7ICAgICAgICAgICAgICAgICAgICAgICJ8JWZ8ICVVfCVB fCIgOnByZXBlbmQgdCkKCiAgOzsgICA7OyAKICA7OyAgICAgICAgICApKSkKICMrRU5EX1NSQwoK KioqIE1pc2MgKHopCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYTM4ZWJmNDItMGI2 Ni00ZTEwLTk1NTItOTcxNjJmMzA1MDQ3CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNw ICA6cmVzdWx0cyBub25lCiAgICAoYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwog ICAgICAgICAgICAgICAgICAgICAgICcoImtrIiAiYm9va21hcmsiCiAgICAgICAgICAgICAgICAg ICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIi9o b21lL3plbHRhay9vcmcvZmlsZXMvd2ViL3dib29rbWFya3Mub3JnIiAiYm9va21hcmtzIikKICAg ICAgICAgICAgICAgICAgIiogJShvcmctY2xpcGxpbmstY2FwdHVyZSkgICU/XG5FbnRlcmVkIG9u ICVVXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKCgoKICA7OzsgZm9yIHRoaXMg aHR0cHM6Ly9naXRodWIuY29tL2lnb3JlcHN0L29yZy1kb2NzLXB1YmxpYy9ibG9iL21hc3Rlci9v cmctY2FwdHVyZS1zZXR0aW5ncy5vcmcKICA7OyAgIChhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUt dGVtcGxhdGVzCiAgOzsgICAgICAgICAgICAgICAgICAgICAgJygia3ciICJXZWJsaW5rIiAKICA7 OyAgICAgICAgICAgICAgICAgIGVudHJ5IAogIDs7ICAgICAgICAgICAgICAgICAoZmlsZSAoZXhw YW5kLWZpbGUtbmFtZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy93ZWIvd2Jvb2ttYXJrcy5vcmci ICJib29rbWFya3MiKSkKICA7OyAgICAgICAgICAgICAgICAgICIqICVjXG4gIDpQUk9QRVJUSUVT OlxuICA6Q1JFQVRFRDogJVVcbiAgOkVORDpcbiAgLSBRdW90ZTpcbiAgICAlaSIgOnVubmFycm93 ZWQKICA7OyApKQoKCgogICAgOzsgZGlzcGF0Y2hlciBmb3IgYmd1CiAgKGFkZC10by1saXN0ICdv cmctY2FwdHVyZS10ZW1wbGF0ZXMgJygieiIgIk1pc2MiKSkKCiMrRU5EX1NSQwoKCioqKiBlbWFp bCB0YXNrcyAobCkKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBjNGY0MTg3Zi01YTky LTQ2YTUtODRhMC1kOThhMTEyMWFiMzYKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMKICAgICAg ICAgICAgICAgICAgICcoImxlIiAiRW1haWwgVG9kbyIKICAgICAgICAgICAgICAgICAgICBlbnRy eQogICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9maWxlcy9hZ2VuZGEv Ymd1Lm9yZyIgIlREIikKICAgICAgICAgICAgICAgICAgICAiKiBUT0RPIFJlYWQgTWVzc2FnZSU/ ICglOmZyb21uYW1lIGFib3V0ICU6c3ViamVjdClcbkFkZGVkOiVVXG4lYVxuREVBRExJTkU6ICVe dCIKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJl LXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygibGwiICJFdG9kbyIgCiAgICAgICAgICAg ICAgICAgICBlbnRyeSAKICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9m aWxlcy9hZ2VuZGEvYmd1Lm9yZyIgIlRERU4iKQogICAgICAgICAgICAgICAgICAgICIqIFRPRE8g WyNBXSAlP1xuU0NIRURVTEVEOiAlKG9yZy1pbnNlcnQtdGltZS1zdGFtcCAob3JnLXJlYWQtZGF0 ZSBuaWwgdCBcIiswZFwiKSlcbiVhXG4iCiAgICAgICAgICAgICAgICAgICAgICkpCgoKOzsgZGlz cGF0Y2hlciBmb3IgYmd1CihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzICcoImwi ICJlbWFpbCIpKQoKIytFTkRfU1JDCioqKiBjYWxlbmRhciB0YXNrcyAodykKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICA5ZDM0MjViOC1iYmJkLTRhOTUtOWUwOS1lNDdiMDVlMGFmMzAK ICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGFkZC10by1s aXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoIm0iICJtZWV0 aW5ncyIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZp bGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9tZWV0aW5ncy5vcmciICIyMDE2IikKICAg ICAgICAgICAgICAgICAgICAgICAiKiAlP1xuJV5UIgogICAgICAgICAgICAgICAgICAgICAgICAg KSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAg ICAnKCJ3biIgIlJlY3VycmluZyBNZWV0aW5ncyIKICAgICAgICAgICAgICAgICAgICAgZW50cnkK ICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9t ZWV0aW5ncy5vcmciICJSZWN1cnJpbmciKQogICAgICAgICAgICAgICAgICAgICAgICIqICU/XG4l XlQiCiAgICAgICAgICAgICAgICAgICAgICAgICApKQoKCgoKOzsgZGlzcGF0Y2hlciBmb3IgYmd1 CihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzICcoInciICJNZWV0aW5ncyIpKQoK IytFTkRfU1JDCgoKCgoqKiogVGVjaCB0YXNrcyAoZSkKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICA3MjdkN2U0Zi1mMWQ3LTQ2NWYtYjdhNC0yMmRmNzgxYTExMTQKICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdvcmctY2Fw dHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImV4IiAidGVjaCIKICAgICAgICAg ICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4v b3JnL2ZpbGVzL2FnZW5kYS9UT0RPLm9yZyIgIlRPRE8iKQogICAgICAgICAgICAgICAgICAgICAg IiogVE9ETyAgJT9cbiVeVCIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgoKCjs7IGRp c3BhdGNoZXIgZm9yIGJndQooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcyAnKCJl IiAiVGVjaCIpKQoKIytFTkRfU1JDCioqKiBwYXBlcnMgKHApCiAgICA6UFJPUEVSVElFUzoKICAg IDpJRDogICAgICAgNDUwYjY5Y2UtYmIxOC00ODhjLWJhNTctYWQ1MjczNWUyY2UxCiAgICA6RU5E OgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCjs7IEluYm94IHdvcmtpbmcg cGFwZXIKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAg ICAgICAnKCJwcCIgIm5ldyB3b3JraW5nIHBhcGVyIgogICAgICAgICAgICAgICAgICAgICBlbnRy eQogICAgICAgICAgICAgICAgICAgICAoZmlsZStoZWFkbGluZSAiL2hvbWUvemVsdGFrL29yZy9m aWxlcy9VbmkvcGFwZXJzL3BhcGVyLm1ldGEub3JnIiAiWmVsdGFrIHdvcmtpbmcgcGFwZXJzIikK ICAgICAgICAgICAgICAgICAgICAgIiogd29ya2luZyAlXnt0aXRsZX0gICAgIAogICAgICAgIDpQ Uk9QRVJUSUVTOgogICAgICAgIDpJRDogJShvcmctaWQtdXVpZCkKICAgICAgICA6bGVhZDogJV57 bGVhZD99CiAgICAgICAgOkVORDoKICAgICIgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgKSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAg ICAgICAnKCJwYSIgIm5ldyBhYnN0cmFjdCIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAg ICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMv VW5pL3BhcGVycy9wYXBlci5tZXRhLm9yZyIgImFic3RyYWN0cyIpCiAgICAgICAgICAgICAgICAg ICAgICIqIHdvcmtpbmcgJV57dGl0bGV9ICAgICAKICAgICAgICA6UFJPUEVSVElFUzoKICAgICAg ICA6SUQ6ICUob3JnLWlkLXV1aWQpCiAgICAgICAgOmxlYWQ6ICVee2xlYWQ/fQogICAgICAgIDpF TkQ6CiAgICAiICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICkpCgo7OyBkaXNwYXRj aGVyIGZvciBiZ3UKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMgJygicCIgInBh cGVycyIpKQoKIytFTkRfU1JDCioqKiBmb29kIChmKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIGQ4OGQzOTZhLTJmODUtNGRkMi1iZmI2LWYyOTA0ZTZmNzYxOAogICAgOkVORDoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3QgJ29yZy1jYXB0 dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygiZmYiICJGb29kIgogICAgICAgICAg ICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAgICAoZmlsZStoZWFkbGluZSAiL2hv bWUvemVsdGFrL29yZy9maWxlcy9hZ2VuZGEvZm9vZC5vcmciICJJbmJveCIpCiAgICAgICIqIENP T0sgJV57UmVjaXBlIE5hbWV9ICVeZyAgICAgCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6 ICUob3JnLWlkLXV1aWQpCiAgICAgIDpUaW1lOiAlXnttaW51dGVzfC18MTB8MTV8MzB8NjB9CiAg ICAgIDpSYXRpbmc6ICVee3JhdGluZz98LXwxfDJ8M3w0fDV9CiAgICAgIDpTb3VyY2U6ICVee1Nv dXJjZT99CiAgICAgIDpDdWlzaW5lOiAlXntDdWlzaW5lP3wtfEluZGlhbnxUaGFpfFZpZXRuYW1l c2V8QXNpYW58Q2hpbmVzZXxJc3JhZWxpfEl0YWxpYW58QW1lcmljYW58RWFzdEV1cm98TWV4aWNh bnxGcmVuY2h8UGVyc2lhbnxBdXN0cmlhbn0KICAgICAgOlR5cGU6ICVee1R5cGU/fC18YWlufHNp ZGV8c3RhcnRlcnxzd2VldHN8ZHJpbmtzfHNhdWNlfGJyZWFrZmFzdH0KICAgICAgOlNlcnZlczog JV57VHlwZT98LXwxfDJ8NHw2fDh9CiAgICAgIDpGYXY6ICVee30KICAgICAgOkVORDoKICAlXntw cm9tcHR8KioqIEluZ3JlZGllbnRzfQogICU/CiAgJV57cHJvbXB0fCoqKiBQcmVwYXJhdGlvbn0K ICAiCiAgIkNhcHR1cmUgVGVtcGxhdGUgZm9yIGZvb2QgcmVjaXBlIgogICAgICAgICAgICAgICAg ICAgICAgICAgKSkKCgoKCiAgKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMKICAg ICAgICAgICAgICAgICAgICAgJygiZmwiICJmb29kIGxpbmsiCiAgICAgICAgICAgICAgICAgICAg ICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIi9ob21lL3plbHRh ay9vcmcvZmlsZXMvYWdlbmRhL2Zvb2Qub3JnIiAiSW5ib3giKQogICAgICAgICAgICAgICAgIiog Q09PSyAgJShvcmctY2xpcGxpbmstY2FwdHVyZSkgICU/XG5FbnRlcmVkIG9uICVVXG4iCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1w bGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImZzIiAic2hvcHBpbmciCiAgICAgICAgICAgICAg ICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICIvaG9tZS96 ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9mb29kLm9yZyIgInNob3BwaW5nIikKICAgICAgICAgICAg ICAgICAgICAgICIqIFNIT1AgJV57RGVzY3JpcHRpb259ICIKICAgICAgICAgICAgICAgICAgICAg ICAgICkpCgoKCjs7IGRpc3BhdGNoZXIgZm9yIGJndQooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJl LXRlbXBsYXRlcyAnKCJmIiAiZm9vZCIpKQojK0VORF9TUkMKKioqIHRyYXZlbCAodSkKICAgIDpQ Uk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3NmU1ZTgyZC0zOTk5LTQ4MjgtOTUxNi0yMGNhYTA2 ZTY2NDAKICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihh ZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCicoInV1IiAiSW5ib3ggcmVzdHVyYW50 IgplbnRyeQooZmlsZStoZWFkbGluZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9hZ2VuZGEvdHJh dmVsLm9yZyIgIkluYm94IikKIiogJV57RGVzY3JpcHRpb259ICAgCjpQUk9QRVJUSUVTOgo6SUQ6 ICUob3JnLWlkLXV1aWQpCjpSYXRpbmc6ICVee3JhdGluZz98LXwxfDJ8M3w0fDV9CjpwcmljZTog JV57cHJpY2UgaW4gbG9jYWwgY3VycmFuY3k/fC18MC0xMHwxMC0yMHwyMC0zMHwzMC01MHw1MCt9 CjpTb3VyY2U6ICVee1NvdXJjZT99CjpUeXBlOiAlXntUeXBlP3xtZWFsfGJyZWFrZmVhc3R8ZGVz c2VydHxzdHJlZXR9CjpDdWlzaW5lOiAlXntDdWlzaW5lP3wtfEluZGlhbnxUaGFpfFZpZXRuYW1l c2V8QXNpYW58Q2hpbmVzZXxJc3JhZWxpfEl0YWxpYW58QW1lcmljYW58RWFzdEV1cm98TWV4aWNh bnxGcmVuY2h8UGVyc2lhbnxBdXN0cmlhbnxKZXdpc2h8SmFwYW59CjpGYXY6ICVee0Zhdnx5ZXN8 bm99CjpFTkQ6CiU/CiIKKSkKCgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwon KCJ1biIgIkFkZCBOWUMgcmVzdHVyYW50IgplbnRyeQooZmlsZStoZWFkbGluZSAiL2hvbWUvemVs dGFrL29yZy9maWxlcy9hZ2VuZGEvdHJhdmVsLm9yZyIgIk5ZQyIpCiIqIFRPVklTSVQgJV57RGVz Y3JpcHRpb259ICAgCiV1CjpQUk9QRVJUSUVTOgo6SUQ6ICUob3JnLWlkLXV1aWQpCjpSYXRpbmc6 ICVee3JhdGluZz98LXwxfDJ8M3w0fDV9CjpwcmljZTogJV57cHJpY2UgaW4gbG9jYWwgY3VycmFu Y3k/fC18MC0xMHwxMC0yMHwyMC0zMHwzMC01MHw1MCt9CjpTb3VyY2U6ICVee1NvdXJjZT99CjpU eXBlOiAlXntUeXBlP3xtZWFsfGJyZWFrZmVhc3R8ZGVzc2VydHxzdHJlZXR9CjpDdWlzaW5lOiAl XntDdWlzaW5lP3wtfEluZGlhbnxUaGFpfFZpZXRuYW1lc2V8QXNpYW58Q2hpbmVzZXxJc3JhZWxp fEl0YWxpYW58QW1lcmljYW58RWFzdEV1cm98TWV4aWNhbnxGcmVuY2h8UGVyc2lhbnxBdXN0cmlh bnxKZXdpc2h8SmFwYW59CjpGYXY6ICVee0ZhdnwtfHllc3xub30KOkVORDoKJT8KIgopKQoKCihh ZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCicoInVOIiAicmV2aWV3IE5ZQyByZXN0 dXJhbnQiCmVudHJ5CihmaWxlK2hlYWRsaW5lICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5k YS90cmF2ZWwub3JnIiAiTllDIikKIiogVklTSVRFRCAlXntEZXNjcmlwdGlvbn0gICAKOlBST1BF UlRJRVM6CjpJRDogJShvcmctaWQtdXVpZCkKOlJhdGluZzogJV57cmF0aW5nP3wtfDF8MnwzfDR8 NX0KOnByaWNlOiAlXntwcmljZSBpbiBsb2NhbCBjdXJyYW5jeT98LXwwLTEwfDEwLTIwfDIwLTMw fDMwLTUwfDUwK30KOlNvdXJjZTogJV57U291cmNlP30KOlR5cGU6ICVee1R5cGU/fG1lYWx8YnJl YWtmZWFzdHxkZXNzZXJ0fHN0cmVldH0KOkN1aXNpbmU6ICVee0N1aXNpbmU/fC18SW5kaWFufFRo YWl8VmlldG5hbWVzZXxBc2lhbnxDaGluZXNlfElzcmFlbGl8SXRhbGlhbnxBbWVyaWNhbnxFYXN0 RXVyb3xNZXhpY2FufEZyZW5jaHxQZXJzaWFufEF1c3RyaWFufEpld2lzaHxKYXBhbn0KOkZhdjog JV57RmF2fC18eWVzfG5vfQo6RU5EOgoKJV57cHJvbXB0fCoqIE15IFJldmlld30KJT8KIgopKQoK CgoKOzsgZGlzcGF0Y2hlciBmb3IgYmd1CihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxh dGVzICcoInUiICJ0cmF2ZWwiKSkKIytFTkRfU1JDCioqKiBib29rbWFya3MgKGspCiAgICA6UFJP UEVSVElFUzoKICAgIDpJRDogICAgICAgZTdmZTc4ZWEtNTg5OS00MmNiLWExNDgtN2FiMTdjZjhk YTRlCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihhZGQt dG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJrayIg ImJvb2ttYXJrIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAg ICAoZmlsZStoZWFkbGluZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy93ZWIvd2Jvb2ttYXJrcy5v cmciICJib29rbWFya3MiKQogICAgICAgICAgICAgICIqICUob3JnLWNsaXBsaW5rLWNhcHR1cmUp ICAlP1xuRW50ZXJlZCBvbiAlVVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCihhZGQt dG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJrbCIg ImJvb2ttYXJrLXVybCIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAg ICAgICAgKGZpbGUraGVhZGxpbmUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvd2ViL3dib29rbWFy a3Mub3JnIiAiYm9va21hcmtzIikKICAgICAgICAgICAgICAiKiAleCAgJT9cbkVudGVyZWQgb24g JVVcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmctY2Fw dHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImt3IiAid2Vic2l0ZSIKICAgICAg ICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUg Ii9ob21lL3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL1RPRE8ub3JnIiAiV2ViIikKICAgICAgICAg ICAgICAgICAgICAgIiogJWMgOndlYnNpdGU6XG4lVSAlPyU6aW5pdGlhbCIKICAgICAgICAgICAg ICAgICAgICAgICAgICkpCjs7IGRpc3BhdGNoZXIgZm9yIGJndQooYWRkLXRvLWxpc3QgJ29yZy1j YXB0dXJlLXRlbXBsYXRlcyAnKCJrIiAiYm9va21hcmtzIikpCgojK0VORF9TUkMKCgo7OyBkaXNw YXRjaGVyIGZvciBiZ3UKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMgJygiZSIg IlRlY2giKSkKCiMrRU5EX1NSQwoKCioqKiBIb21lIHRhc2tzIChoKQogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIGNiOGZiNGMwLTc2YTMtNDc5Ny1hYmE2LWQ5MTQ0MjdmYmUwMwogICAg OkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3Qg J29yZy1jYXB0dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygiaGgiICJob21lIgog ICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAgICAoZmlsZStoZWFk bGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL2hvbWUub3JnIiAiSG9tZVREIikKICAgICAgICAgICAg ICAgICAgICAgICIqIFRPRE8gICAlPyAgOkBob21lOiAgXG4lXlQiICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICApKQoKCgo7OyBkaXNwYXRjaGVyIGZvciBiZ3UKKGFkZC10by1saXN0ICdvcmct Y2FwdHVyZS10ZW1wbGF0ZXMgJygiaCIgIkhvbWUiKSkKCiMrRU5EX1NSQwoqKiogbWVkaWEgdGFz a3MgKGQpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMjU5NWY2ZjYtN2NiYi00ODI5 LTg1OGItNDc4NTY3YzFiMzQ5CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVz dWx0cyBub25lCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAg ICAgICAgICAnKCJkbSIgImRsX21vdmllcyIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAg ICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9kbC5v cmciICJNb3ZpZXMiKQogICAgICAgICAgICAgICAgICAgICAgICIqIERPV04gIDpAcGM6ICAlXntE ZXNjcmlwdGlvbn0gICIgIAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCihhZGQtdG8tbGlz dCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJkcCIgImRsX21v dmllc19wcmVyZWxlYXNlIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAg ICAgICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL2RsLm9yZyIgIk1vdmll cy1QcmUgcmVsZWFzZSIpCiAgICAgICAgICAgICAgICAgICAgICAgIiogRE9XTiAgOkBwYzogJV57 RGVzY3JpcHRpb259IDpQcmVfUmVsZWFzZTogICIgIAogICAgICAgICAgICAgICAgICAgICAgICAg KSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAg ICAnKCJkdCIgImRsX1RWIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAg ICAgICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL2RsLm9yZyIgIlRWIikK ICAgICAgICAgICAgICAgICAgICAgICAiKiBET1dOICA6QHBjOiAgJV57RGVzY3JpcHRpb259ICAi ICAKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJl LXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygiZHMiICJkbF9tdXNpYyIKICAgICAgICAg ICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4v b3JnL2ZpbGVzL2FnZW5kYS9kbC5vcmciICJNdXNpYyIpCiAgICAgICAgICAgICAgICAgICAgICAg IiogRE9XTiAgOkBwYzogJV57RGVzY3JpcHRpb259ICAiICAKICAgICAgICAgICAgICAgICAgICAg ICAgICkpCgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAg ICAgICAgJygiZGEiICJkbF9tdXNpY19wcmVybGVhc2UiCiAgICAgICAgICAgICAgICAgICAgIGVu dHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9maWxlcy9hZ2Vu ZGEvZGwub3JnIiAiTXVzaWMtUHJlIFJlbGVhc2UiKQogICAgICAgICAgICAgICAgICAgICAgICIq IERPV04gIDpAcGM6ICAlXntEZXNjcmlwdGlvbn0gOlByZV9SZWxlYXNlOiAiICAKICAgICAgICAg ICAgICAgICAgICAgICAgICkpCgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwog ICAgICAgICAgICAgICAgICAgJygiZGMiICJkbF9jb21pY3MiCiAgICAgICAgICAgICAgICAgICAg IGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9maWxlcy9h Z2VuZGEvZGwub3JnIiAiQ29taWNzIikKICAgICAgICAgICAgICAgICAgICAgICAiKiBET1dOICA6 QHBjOiAgJShvcmctY2xpcGxpbmstY2FwdHVyZSkgICIgIAogICAgICAgICAgICAgICAgICAgICAg ICAgKSkKCgo7OyBkaXNwYXRjaGVyIGZvciBiZ3UKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10 ZW1wbGF0ZXMgJygiZCIgIk1lZGlhIikpCgojK0VORF9TUkMKKioqIGNvbGxhYm9yYXRvciB0YXNr cyAoYXNzaWduIHRvIG90aGVyIGNvbGxhYm9yYXRvcnMpIChjKQogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIGIyODBlMmU1LWUxNWYtNDA1ZC1iZDUwLTk2M2Q5MmE2NzIzZAogICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxpc3QgJ29y Zy1jYXB0dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygiY2EiICJhbGxhbiIKICAg ICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxp bmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9yZXNlYXJjaC5vcmciICJJTkJPWCIpCiAgICAgICAgICAg ICAgICAgICAgICAiKiBUQVNLICAlPyAgOmFsbGFuOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgKSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAg ICAgICAgICAgICAgICAgICAnKCJjbSIgIm1hc3NtaW8iCiAgICAgICAgICAgICAgICAgICAgIGVu dHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9maWxlcy9hZ2Vu ZGEvcmVzZWFyY2gub3JnIiAiSU5CT1giKQogICAgICAgICAgICAgICAgICAgICAgIiogVEFTSyAg JT8gIDptYXNzaW1vOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgKSkK CgooYWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAg JygiY2oiICJqb2VsIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAg ICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9yZyIgIklO Qk9YIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sgICU/ICA6am9lbDpAd29yazpcbiVe VCIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgoKKGFkZC10by1saXN0ICdvcmctY2Fw dHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImNiIiAiYm9yaXMiCiAgICAgICAg ICAgICAgICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+ L29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAiSU5CT1giKQogICAgICAgICAgICAgICAg ICAgICAgIiogVEFTSyAgJT8gIDpib3JpczpAd29yazpcbiVeVCIgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICkpCgoKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAg IAogICAgICAgICAgICAgJygiY20iICJtaWNoYWVsIgogICAgICAgICAgICAgICAgICAgICBlbnRy eQogICAgICAgICAgICAgICAgICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRh L3Jlc2VhcmNoLm9yZyIgIklOQk9YIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sgICU/ ICA6bWljaGFsOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCgoK KGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICco ImN0IiAidGFsIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAg ICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9yZyIgIklOQk9Y IikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sgICU/ICA6dGFsOkB3b3JrOlxuJV5UIiAg IAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCgoKKGFkZC10by1saXN0ICdvcmctY2FwdHVy ZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImNkIiAiZGF2aWQiCiAgICAgICAgICAg ICAgICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29y Zy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAiSU5CT1giKQogICAgICAgICAgICAgICAgICAg ICAgIiogVEFTSyAgJT8gIDpkYXZpZDpAd29yazpcbiVeVCIgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICkpCgoKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAg ICAgICAgICAgICAnKCJjbyIgImJvYiIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAg ICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9yZXNlYXJj aC5vcmciICJJTkJPWCIpCiAgICAgICAgICAgICAgICAgICAgICAiKiBUQVNLICAlPyAgOmJvYjpA d29yazpcbiVeVCIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgoKCihhZGQtdG8tbGlz dCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJjbiIgImpvaGFu bmEiCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxl K2hlYWRsaW5lICJ+L29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAiSU5CT1giKQogICAg ICAgICAgICAgICAgICAgICAgIiogVEFTSyAgJT8gIDpqb2hhbm5hOkB3b3JrOlxuJV5UIiAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgKSkKCgoKCgo7OyBkaXNwYXRjaGVyIGZvciBiZ3UKKGFk ZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMgJygiYyIgIkNvbGxhYm9yYXRvci10YXNr cyIpKQoKIytFTkRfU1JDCgoqKiogc3R1ZGVudCB0YXNrcyAoYXNzaWduIHRvIG90aGVyIHBlb3Bs ZSkgKHMpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMDQ1MDIxZGEtMTQxMi00ZTBl LTk3NDItZDAwNDEzODM2ZWFlCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVz dWx0cyBub25lCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAg ICAgICAgICAnKCJzYSIgImFkYXIiCiAgICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAg ICAgICAgICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9y ZyIgIklOQk9YIikKICAgICAgICAgICAgICAgICAgICAiKiBUQVNLICAlPyAgOmFkYXI6QHdvcms6 XG4lXlQiICAgCiAgICAgICAgICAgICAgICAgICAgKSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1 cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJzbSIgIm1leXRhciIKICAgICAgICAg ICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4v b3JnL2ZpbGVzL2FnZW5kYS9yZXNlYXJjaC5vcmciICJNaXNjIikKICAgICAgICAgICAgICAgICAg ICAgICIqIFRBU0sgICU/ICA6bWV5dGFyOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgKSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAg ICAgICAgICAgICAnKCJzeSIgIm1hYXlhbiIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAg ICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9yZXNl YXJjaC5vcmciICJNaXNjIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sgICU/ICA6bWFh eWFuOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCihhZGQtdG8t bGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJzeCIgImFs ZXgiCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxl K2hlYWRsaW5lICJ+L29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAiTWlzYyIpCiAgICAg ICAgICAgICAgICAgICAgICAiKiBUQVNLICAlPyAgOmFsZXg6QHdvcms6XG4lXlQiICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICApKQoKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0 ZXMKICAgICAgICAgICAgICAgICAgICcoInNvIiAib21lciIKICAgICAgICAgICAgICAgICAgICAg ZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2Fn ZW5kYS9yZXNlYXJjaC5vcmciICJNaXNjIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sg ICU/ICA6b21lcjpAd29yazpcbiVeVCIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICkpCgoo YWRkLXRvLWxpc3QgJ29yZy1jYXB0dXJlLXRlbXBsYXRlcwogICAgICAgICAgICAgICAgICAgJygi c2wiICJsYXJhIgogICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAg ICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9yZyIgIk1pc2Mi KQogICAgICAgICAgICAgICAgICAgICAgIiogVEFTSyAgJT8gIDpsYXJhOkB3b3JrOlxuJV5UIiAg IAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUt dGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJzZCIgImFkaSIKICAgICAgICAgICAgICAg ICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2Zp bGVzL2FnZW5kYS9yZXNlYXJjaC5vcmciICJNaXNjIikKICAgICAgICAgICAgICAgICAgICAgICIq IFRBU0sgICU/ICA6YWRpOkB3b3JrOlxuJV5UIiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg KSkKCihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAg ICAnKCJzaCIgImhlbGVuYSIKICAgICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAg ICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9yZXNlYXJjaC5vcmci ICJNaXNjIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRBU0sgICU/ICA6aGVsZW5hOkB3b3Jr OlxuJV5UIiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgKSkKCgoKOzsgZGlzcGF0Y2hlciBm b3IgYmd1CihhZGQtdG8tbGlzdCAnb3JnLWNhcHR1cmUtdGVtcGxhdGVzICcoInMiICJzdHVkZW50 cy10YXNrcyIpKQojK0VORF9TUkMKCioqKiBCR1UgKGIpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgNTA4NmUyOTYtNjZkNS00OTY1LTk3ZGMtYzY5OGQ5NWI3NTgwCiAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihhZGQtdG8tbGlzdCAnb3JnLWNh cHR1cmUtdGVtcGxhdGVzCiAgICAgICAgICAgICAgICAgICAnKCJieCIgInJlZmlsZSBiZWxvdyIK ICAgICAgICAgICAgICAgICAgICBlbnRyeQogICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHov b3JnLW1vdmUtcG9pbnQtdG8tY2FwdHVyZSkKICAgICAgICAgICAgICAgICAgICIqIFRPRE8gJT8i CiAgICAgICAgICAgICAgICAgICApKQoKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0 ZXMKICAgICAgICAgICAgICAgICAgICcoImJyIiAiUmVzZWFyY2hfVEQiCiAgICAgICAgICAgICAg ICAgICAgIGVudHJ5CiAgICAgICAgICAgICAgICAgICAgIChmaWxlK2hlYWRsaW5lICJ+L29yZy9m aWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAic2NoZWR1bGVkIG1haWwvY2FsbHMvbWVldGluZ3Mi KQogICAgICAgICAgICAgICAgICAgICAgIiogVE9ETyAgJT86QHdvcms6IFxuJV5UIiAgIAogICAg ICAgICAgICAgICAgICAgICApKQoKKGFkZC10by1saXN0ICdvcmctY2FwdHVyZS10ZW1wbGF0ZXMK ICAgICAgICAgICAgICAgICAgICcoImJiIiAiQkdVX1REIgogICAgICAgICAgICAgICAgICAgICBl bnRyeQogICAgICAgICAgICAgICAgICAgICAoZmlsZStoZWFkbGluZSAifi9vcmcvZmlsZXMvYWdl bmRhL2JndS5vcmciICJUREVOIikKICAgICAgICAgICAgICAgICAgICAgICIqIFRPRE8gICU/IDpA d29yazpcbiVeVCIgICAKICAgICAgICAgICAgICAgICAgICAgKSkKKGFkZC10by1saXN0ICdvcmct Y2FwdHVyZS10ZW1wbGF0ZXMKICAgICAgICAgICAgICAgICAgICcoImJtIiAicmVzcG9uZCIKICAg ICAgICAgICAgICAgICAgICAgZW50cnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUraGVhZGxp bmUgIn4vb3JnL2ZpbGVzL2FnZW5kYS9yZXNlYXJjaC5vcmciICJNYWlscyIpCiAgICAgICAgICAg ICAgICAgICAgICAiKiBUT0RPICAlPyA6QHdvcms6IFxuJV5UIiAgIAogICAgICAgICAgICAgICAg ICAgICApKQoKCgo7OyBkaXNwYXRjaGVyIGZvciBiZ3UKKGFkZC10by1saXN0ICdvcmctY2FwdHVy ZS10ZW1wbGF0ZXMgJygiYiIgIkJHVS13b3JrIikpCgojK0VORF9TUkMKCioqIEJhYmVsCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDE4MGMzNzBiLWVmYjItNDI3ZC1iNWQwLWU3MTBmODg5 YTQzMQogICA6RU5EOgoqKiogbGFuZ3VhZ2VzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAg ICAgYTM5MDk5NzgtNzZmZS00MDA4LTkwZTMtMTQwZTA0ZTIyYTU2CiAgICA6RU5EOgojK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKG9yZy1iYWJlbC1kby1sb2FkLWxhbmd1YWdl cwogJ29yZy1iYWJlbC1sb2FkLWxhbmd1YWdlcwogJygoZW1hY3MtbGlzcCAuIHQpCiAgIChweXRo b24gLiB0KQogICAoc2hlbGwgLiB0KQogICAoY2FsYyAuIHQpCiAgIChtYXRsYWIgLiB0KQogICAo c3FsaXRlIC4gdCkKICAgKHJ1YnkgLiB0KQogICAocGVybCAuIHQpCiAgIChvcmcgLiB0KQogICAo bGVkZ2VyIC4gdCkgICAgICAgIAogICAoZG90IC4gdCkKICAgKGdudXBsb3QgLiB0KQogICAob2N0 YXZlIC50KQogICAocGxhbnR1bWwgLiB0KQogICAoUiAuIHQpCiAgICkpCiMrRU5EX1NSQwogICAg CioqKiBlbmFibGUgcHJvbXB0LWZyZWUgY29kZSBydW5uaW5nCiAgICA6UFJPUEVSVElFUzoKICAg IDpJRDogICAgICAgNzg5NTZhMmUtMjExZS00ZTRiLWEzOTctMzdkODE5NmE5YzZkCiAgICA6RU5E OgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzsgZW5hYmxlIHByb21wdC1m cmVlIGNvZGUgcnVubmluZwooc2V0cSBvcmctY29uZmlybS1iYWJlbC1ldmFsdWF0ZSBuaWwgICAg ICAgIDs7IGZvciBydW5uaW5nIGNvZGUgYmxvY2tzCiAgICAgIG9yZy1jb25maXJtLWVsaXNwLWxp bmstZnVuY3Rpb24gbmlsICAgOzsgZm9yIGVsaXNwIGxpbmtzCiAgICAgIG9yZy1jb25maXJtLXNo ZWxsLWxpbmstZnVuY3Rpb24gbmlsKSAgOzsgZm9yIHNoZWxsIGxpbmtzIAojK0VORF9TUkMKKioq IGRvbmUgZXZhbCB3aGVuIGV4cG9ydGluZyBjb2RlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgNjNlMDU0ODktMmJmOS00OTQ4LTg5N2MtMGIxNmZmMzI0YjJjCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgb3JnLWV4cG9ydC1iYWJlbC1l dmFsdWF0ZSBuaWwpCiMrRU5EX1NSQwoqKiogRm9udHMKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICAxNjU0MDZkNy05YjhlLTQ1NzEtYjZiZC00ZmVhZDU0MDFlYWUKICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7OyBmb250aWZ5IGNvZGUgaW4gY29k ZSBibG9ja3MKKHNldHEgb3JnLXNyYy1mb250aWZ5LW5hdGl2ZWx5IHQpCiMrRU5EX1NSQwoqKiog ZG9uJ3QgaW5kZW50IHNvdXJjZSBjb2RlCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRz IG5vbmUKOzsgZG9uJ3QgaW5kZW50IHNvdXJjZSBjb2RlCm9yZy1lZGl0LXNyYy1jb250ZW50LWlu ZGVudGF0aW9uIDAKOzsgZG9uJ3QgYWRhcHQgaW5kZW50YXRpb24Kb3JnLWFkYXB0LWluZGVudGF0 aW9uIG5pbAo7OyBwcmVzZXJ2ZSB0aGUgaW5kZW50YXRpb24gaW5zaWRlIG9mIHNvdXJjZSBibG9j a3MKb3JnLXNyYy1wcmVzZXJ2ZS1pbmRlbnRhdGlvbiB0CiMrRU5EX1NSQwoqKiogaG93IG9yZy1z cmMgd2luZG93cyBhcmUgc2V0IHVwIHdoZW4gaGl0dGluZyBDLWMgJyAKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7OyBob3cgb3JnLXNyYyB3aW5kb3dzIGFyZSBzZXQgdXAg d2hlbiBoaXR0aW5nIEMtYyAnCm9yZy1zcmMtd2luZG93LXNldHVwICdjdXJyZW50LXdpbmRvdwoj K0VORF9TUkMKKiogZm9udCBsb2NrcwogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBiOTJl MzRlMS0wNGZiLTQ5ZTktYTRhNC02NWVhMTVkZmZmNTAKICAgOkVORDoKIAoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjtAV2FybmluZ0AgQAooZm9udC1sb2NrLWFkZC1rZXl3 b3JkcwogJ29yZy1tb2RlCicoKCJcXChAW15AXG5dK0BcXCkiICgwICcoOmZvcmVncm91bmQgIiNC NDAwMDAiIDpiYWNrZ3JvdW5kICIjRkZEREREIiA6d2VpZ2h0IGJvbGQpIHQpKSkpCgo7dGlwCihm b250LWxvY2stYWRkLWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKCVbXiVcbl0rJVxcKSIgKDAg Jyg6d2VpZ2h0IHVsdHJhLWJvbGQgOmJhY2tncm91bmQgIiNEREZGREQiIDpmb3JlZ3JvdW5kICIj MDAwMDAwIikgdCkpKSkKCjtub3RpY2UKKGZvbnQtbG9jay1hZGQta2V5d29yZHMKICdvcmctbW9k ZQonKCgiXFwoIVteIVxuXSshXFwpIiAoMCAnKDp3ZWlnaHQgdWx0cmEtYm9sZCA6Zm9yZWdyb3Vu ZCAiI0I0MDAwMCIpIHQpKSkpCgo7aGlnaC1ncmVlbgooZm9udC1sb2NrLWFkZC1rZXl3b3Jkcwog J29yZy1tb2RlCicoKCJcXCgnW14nXG5dKydcXCkiICgwICcoOmJhY2tncm91bmQgIiMzNUZGMDAi IDp3ZWlnaHQgdWx0cmEtYm9sZCkgdCkpKSkKCjtoaWdoLXllbGxvdwooZm9udC1sb2NrLWFkZC1r ZXl3b3JkcwogJ29yZy1tb2RlCicoKCJcXChgW15gXG5dK2BcXCkiICgwICcoOmZvcmVncm91bmQg IiMwMDAwMDAiIDp3ZWlnaHQgdWx0cmEtYm9sZCA6YmFja2dyb3VuZCAiI0ZCRkYwMCIpIHQpKSkp Cgo7Cihmb250LWxvY2stYWRkLWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKOKChlte4oKGXG5d K+KChlxcKSIgKDAgJyg6Zm9yZWdyb3VuZCAiIzAwMDAwMCIgOnVuZGVybGluZSB0IDpiYWNrZ3Jv dW5kICIjRkY5QUVBIiA6d2VpZ2h0IHVsdHJhLWJvbGQpIHQpKSkpCgo7Cihmb250LWxvY2stYWRk LWtleXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKOKChVte4oKFXG5dK+KChVxcKSIgKDAgJyg6d2Vp Z2h0IHVsdHJhLWJvbGQgOmZvcmVncm91bmQgIiMxRTAwREUiKSB0KSkpKQoKCjsKKGZvbnQtbG9j ay1hZGQta2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwo4oKEW17igoRcbl0r4oKEXFwpIiAoMCAn KDp3ZWlnaHQgdWx0cmEtYm9sZCA6Zm9yZWdyb3VuZCAiI0ZGOTgwMCIpIHQpKSkpCgo7Ymx1c2lz aAooZm9udC1sb2NrLWFkZC1rZXl3b3JkcwogJ29yZy1tb2RlCicoKCJcXCjigKJbXuKAolxuXeKA oitcXCkiICgwICcoOndlaWdodCB1bHRyYS1ib2xkIDpmb3JlZ3JvdW5kICIjMzkzRDkwMCIpIHQp KSkpCgoKIAo7Ozs7U1BFQ0lGSUMgV09SRFMgCgo7c2VydmVyCihmb250LWxvY2stYWRkLWtleXdv cmRzCidvcmctbW9kZQonKCgiXFxiW1NzXWVydmVyXFxiIiAoMCAnKDp3ZWlnaHQgdWx0cmEtYm9s ZCA6Zm9yZWdyb3VuZCAiI0ZGOTgwMCIpIHQpKSkpCgo7Y2xpZW50Cihmb250LWxvY2stYWRkLWtl eXdvcmRzCidvcmctbW9kZQonKCgiXFxiW0NjXWxpZW50XFxiIiAoMCAnKDp3ZWlnaHQgdWx0cmEt Ym9sZCA6Zm9yZWdyb3VuZCAiIzAwNDRGRiIpIHQpKSkpCgo7cHJpdmF0ZQooZm9udC1sb2NrLWFk ZC1rZXl3b3Jkcwonb3JnLW1vZGUKJygoIlxcYltQcF1yaXZhdGVcXGIiICgwICcoOndlaWdodCB1 bHRyYS1ib2xkIDpmb3JlZ3JvdW5kICIjRkY2NzY3IikgdCkpKSkKCjtwdWJsaWMKKGZvbnQtbG9j ay1hZGQta2V5d29yZHMKJ29yZy1tb2RlCicoKCJcXGJbUHBddWJsaWNcXGIiICgwICcoOndlaWdo dCB1bHRyYS1ib2xkIDpmb3JlZ3JvdW5kICIjNTlCRDdFIikgdCkpKSkKCgo7SW4gRXhhbXBsZQoo Zm9udC1sb2NrLWFkZC1rZXl3b3Jkcwonb3JnLW1vZGUKJygoIlxcYltJaV1uIGV4YW1wbGVcXGIi ICgwICcoOmZvcmVncm91bmQgIiMwMDAwMDAiIDp1bmRlcmxpbmUgdCA6YmFja2dyb3VuZCAiI0ZG OUFFQSIgOndlaWdodCB1bHRyYS1ib2xkKSB0KSkpKQoKCjtoZWFkZXIKKGZvbnQtbG9jay1hZGQt a2V5d29yZHMKICdvcmctbW9kZQonKCgiXFwo4oChW17igKFcbl0r4oChXFwpIiAoMCAnKDpmb3Jl Z3JvdW5kICIjZmZmZmZmIiA6d2VpZ2h0IHVsdHJhLWJvbGQgOnNsYW50IGl0YWxpYyA6YmFja2dy b3VuZCAiIzU5QkQ3RiIgOmhlaWdodCAxLjMpIHQpKSkpCgo7OztGT1IgU1BFQ0lBTCBDSEFSQUNU RVJTCgo7Zm9yIGtleSBzaG9ydHVjdHMKKGZvbnQtbG9jay1hZGQta2V5d29yZHMKICdvcmctbW9k ZQonKCgiXFwoXFw/W14/XG5dK1xcP1xcKSIgKDAgJyg6Zm9yZWdyb3VuZCAiIzAwMDAwMCIgOndl aWdodCB1bHRyYS1ib2xkIDpiYWNrZ3JvdW5kICIjRkY5QzJDIikgdCkpKSkKCjtmb3IgJE5vdGUk IAooZm9udC1sb2NrLWFkZC1rZXl3b3JkcwogJ29yZy1tb2RlCicoKCJcXChcXCRbXiRcbl0rXFwk XFwpIiAoMCAnKDpiYWNrZ3JvdW5kICIjREREREZGIiA6Zm9yZWdyb3VuZCAiIzAwMDAwMCIgOndl aWdodCB1bHRyYS1ib2xkKSB0KSkpKQoKO2ZvciBeCihmb250LWxvY2stYWRkLWtleXdvcmRzCiAn b3JnLW1vZGUKJygoIlxcKFxcXlteXlxuXStcXF5cXCkiICgwICcoOndlaWdodCBib2xkICA6Ym94 ICg6bGluZS13aWR0aCAxIDpjb2xvciAiI0E1QTBGRiIpICA6Zm9yZWdyb3VuZCAiIzAwMDA2RiIg OmJhY2tncm91bmQgIiNGRkZGRkYiKSB0KSkpKQoKO2ZvciDigKAgCihmb250LWxvY2stYWRkLWtl eXdvcmRzCiAnb3JnLW1vZGUKJygoIlxcKFxc4oCgW17igKBcbl0rXFzigKBcXCkiICgwICcoOndl aWdodCBib2xkICA6Ym94ICg6bGluZS13aWR0aCAxIDpjb2xvciAiI0E1QTBGRiIpICA6Zm9yZWdy b3VuZCAiIzAwMDA2RiIgOmJhY2tncm91bmQgIiNGRkZGRkYiKSB0KSkpKQoKIytFTkRfU1JDCgpU aGUgZm9sbG93aW5nIGNoYXJhY3RlcnMgYXJlIHNwZWNpYWwgOiAuICogKyA/IF4gJCBcIFsKCm1v cmUgY2hhcmFjdGVycyA6Cmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9Vbmlj b2RlX2NoYXJhY3RlcnMKIytCRUdJTl9FWEFNUExFCuKAoOKAouKAluKAo+KApOKApSAJ4oCmIOKB heKBhgnigZHigZLigZPigZTigZXigZbigZfigZjigZnigZrigZvigZzigZ3igoAgCeKCgeKCguKC g+KChAnigoXigobigofigojigokg4oKKIOKCiyDigowKIytFTkRfRVhBTVBMRQoKKiogbG9vayBh bmQgZmVlbAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA3YmRlN2MwNC05MWIxLTRjNjgt OGRlMy0wNTE2YzkxNGYwMmYKICAgOkVORDoKKioqIGFsbG93IGZvbnQgbG9jawogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIGI3ZGVlYzE5LTBjNmItNDI1My1hZmVjLTU0MzY5OWE4NmYy YQogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooc2V0cSBv cmctc3JjLWZvbnRpZnktbmF0aXZlbHkgdCk7OyBzeW50YXggaGlnaGxpZ2h0aW5nIHRoZSBzb3Vy Y2UgY29kZQojK0VORF9TUkMKeW91IGNhbiBubyBsb25nZXIgY29sb3IgdGhlIGJhY2tncm91bmRz IGFuZCBnZXQgZm9udGlmaWNhdGlvbi4gWW91IGNhbiBjaG9vc2Ugb25lIG9yIHRoZSBvdGhlci4g SSBkZWNpZGVkIEknZCByYXRoZXIgaGF2ZSB0aGUgYmFja2dyb3VuZHM6CihzZXRxIG9yZy1zcmMt Zm9udGlmeS1uYXRpdmVseSBuaWwpCmFuZCB0aGVuIHlvdSBjYW4gc2V0IHRoZSBvcmctYmxvY2ss IG9yZy1ibG9jay1iZWdpbi1saW5lLCBvcmctYmxvY2stZW5kLWxpbmUgZmFjZXMuIEkgdXNlIGEg Y29sb3Igc2NoZW1lIHNpbWlsYXIgdG8gdGhlIG9uZSB5b3UgbGlua2VkIHRvLCBidXQgSSBtYWRl IG1pbmUgYSBsaXR0bGUgbGVzcyBib2xkOgpvcmctYmxvY2s6IGZvcmVncm91bmQgIzAwMDA3ZiBi YWNrZ3JvdW5kICNmOGY4ZWIgaGVpZ2h0IDAuOQpvcmctYmxvY2stYmVnaW4tbGluZSwgb3JnLWJs b2NrLWVuZC1saW5lOiBmb3JlZ3JvdW5kICM1NDU0NTQgYmFja2dyb3VuZCAjZTBkZmQxCgoqKiog Q2hhbmdpbmcgdGhlIG9yZy1tb2RlIGVsbGlwc2lzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgZjc0YTQwMmMtNzQ5My00NTg2LWEwYmQtODhkNmNhYWUyOWJhCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOyhzZXRxIG9yZy1lbGxpcHNpcyAi4qS1 IikKKHNldHEgb3JnLWVsbGlwc2lzICLimqEiKQojK0VORF9TUkMKT3RoZXIgaW50ZXJlc3Rpbmcg Y2hhcmFjdGVycyBhcmUg4oa0LCDirI4sIOKktywgYW5kIOKLsS4KCioqIEV4cG9ydC9wdWJsaXNo aW5nCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDU5YTFmNDc1LTYzZWEtNGY3Mi04NTJh LTc5ODZlZmI0MTlkNgogICA6RU5EOgoqKiogZXhwb3J0IGluIGJhY2tncm91bmQKICAgIDpQUk9Q RVJUSUVTOgogICAgOklEOiAgICAgICA3ZDJmYjhmZi00M2ExLTRiY2UtOThhOS02ODZjOTVlYmI0 NjAKICAgIDpFTkQ6CkB0aGlzIGNhc3VlcyBvcmctcmV2ZWFsIHRvIHNwaXQgYW4gZXJyb3JACiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7KHNldHEgb3JnLWV4cG9ydC1pbi1i YWNrZ3JvdW5kIHQpCiMrRU5EX1NSQwoqKiogZXh0cmEgZXhwb3J0ZXJzOyBPRFQsIGJlYW1lciBl dGMgIGV4cG9ydGVycwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGY3ZmI1ZGQ0LThj YTAtNDg0MC04NWMxLTc0OWNmYzcxYzFjZAogICAgOkVORDoKKioqKiBhZGQgKHJlcXVpcmUpIHNw ZWNpZmljIG1vZGVscy4gCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA4NTEyNzUx ZS05NmZjLTQ0MWEtYTEwZC0zNjllNWQ1NTZmZmIKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKHJlcXVpcmUgJ294LW9kdCkKKHJlcXVpcmUgJ294LWJlYW1l cikKKHJlcXVpcmUgJ294LWxhdGV4KQoKIytFTkRfU1JDCioqKiogb2R0IGRlZmF1bGUgZXhwb3J0 IGZvcm1hdCAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDRiMWFhM2I5LWIxNGUt NGFmMy1hNDQ0LTE2OWYyZmQzYmFlNQogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKOzsgb3JnIHY4IGJ1bmRsZWQgd2l0aCBFbWFjcyAyNC40CihzZXRxIG9y Zy1vZHQtcHJlZmVycmVkLW91dHB1dC1mb3JtYXQgImRvY3giKQo7OyBCVFcsIHlvdSBjYW4gYXNz aWduICJwZGYiIGluIGFib3ZlIHZhcmlhYmxlcyBpZiB5b3UgcHJlZmVyIFBERiBmb3JtYXQKCiMr RU5EX1NSQwoqKioqIGtvbWEKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGVkMTIx NDQ3LTA3YzktNDU5Yi1iZjNiLTRmZDYwYjYwNjM5MgogICAgIDpFTkQ6Cmh0dHA6Ly9vcmdtb2Rl Lm9yZy93b3JnL2V4cG9ydGVycy9rb21hLWxldHRlci1leHBvcnQuaHRtbAoqKioqKiBsb2FkIGtv bWEKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgMmFlNzEwNjYtMmRiOC00Mzgw LWJmNGYtNDU3YjljY2YzZjdhCiAgICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKKGV2YWwtYWZ0ZXItbG9hZCAnb3ggJyhyZXF1aXJlICdveC1rb21hLWxldHRl cikpCgooZXZhbC1hZnRlci1sb2FkICdveC1sYXRleAogICcoYWRkLXRvLWxpc3QgJ29yZy1sYXRl eC1wYWNrYWdlcy1hbGlzdCAnKCJBVVRPIiAiYmFiZWwiIHQpIHQpKQoKIytFTkRfU1JDCioqKioq IGRlZmluZSBsZXR0ZXItY2xhc3MtZGVmaW5pdGlvbgogICAgICA6UFJPUEVSVElFUzoKICAgICAg OklEOiAgICAgICBiODg0NGJmNS1lZTYwLTQzYmQtYTc0Mi01MDk0NDQ3NjlkYzAKICAgICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihhZGQtdG8tbGlzdCAnb3Jn LWxhdGV4LWNsYXNzZXMKICAgICAgICAgICAgICcoIm15LWxldHRlciIKICAgICAgICAgICAgICAg IlxcZG9jdW1lbnRjbGFzc1x7c2NybHR0cjJcfQpcXHVzZXBhY2thZ2VbZW5nbGlzaF17YmFiZWx9 ClxbTk8tREVGQVVMVC1QQUNLQUdFU10KXFtOTy1QQUNLQUdFU10KXFtFWFRSQV0iKSkKIytFTkRf U1JDCioqKiB2aXN1YWwgb3B0aW9uIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDdk N2I4MmNmLTIxY2MtNDhjOC05YzRmLWM3ZjAzZmJiN2UyNAogICAgOkVORDoKKioqKiByZW1vdmUg dGhlIOKAnFZhbGlkYXRlIFhIVE1MIDEuMOKAnSBtZXNzYWdlIGZyb20gSFRNTCBleHBvcnQKICAg ICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGE3M2EyOGJkLTRjZmItNDNkMC1iMDQyLTY5 MWQ1NTBiZjViYwogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQooc2V0cSBvcmctZXhwb3J0LWh0bWwtdmFsaWRhdGlvbi1saW5rIG5pbCkKIytFTkRfU1JDCioq KiogZGlzcmVnYXJkIF8gYXMgc3Vic2NyaXB0CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAg ICAgICA3MzY3ZTg1OC01NjI3LTQ5ZWUtYWU4Yi04MTRmOTgwNzAzMTkKICAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKb3JnLXVzZS1zdWItc3VwZXJzY3JpcHRz IG5pbCAgICAgICAgOzsgZG9uJ3QgdXNlIGBfJyBmb3Igc3Vic2NyaXB0CiMrRU5EX1NSQwogICAg CioqIGBDdXN0b20gUHVibGlzaGluZ2AgCioqKiBzdGFydCB3aXRoIGNsZWFuIHNsYXRlCiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKHNldHEgb3JnLXB1Ymxpc2gtcHJvamVj dC1hbGlzdCBuaWwpCiMrRU5EX1NSQwoqKiogQkdVQzAwNC5HSVMuUGxhbm5lcnMgCiAgICA6UFJP UEVSVElFUzoKICAgIDpJRDogICAgICAgY2QwMjJlZDUtNTdjMS00NDVkLWJmODYtMWM0NzQ0NGM5 MmEyCiAgICA6RU5EOgoqKioqIGRlZmluZSBCR1VDMDA0LkdJUy5QbGFubmVycyBncm91cHMgCiAj K0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoYWRkLXRvLWxpc3QgJ29yZy1w dWJsaXNoLXByb2plY3QtYWxpc3QKICAgICAgICAgICAgICAgICAgICAnKCJCR1VDMDA0LkdJUy5Q bGFubmVycyIKICAgICAgICAgICAgICAgICAgICAgOmNvbXBvbmVudHMgKCJCR1VDMDA0LkdJUy5Q bGFubmVycy5odG1sIiAiQkdVQzAwNC5HSVMuUGxhbm5lcnMuc2luZ2xlIiAiQkdVQzAwNC5HSVMu UGxhbm5lcnMuaHciKSkKICkKICMrRU5EX1NSQwoqKioqIEJHVUMwMDQuR0lTLlBsYW5uZXJzLmh0 bWwKCQkJICAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooYWRkLXRvLWxp c3QgJ29yZy1wdWJsaXNoLXByb2plY3QtYWxpc3QKICAgICAgICAgICAgICAgICAgICcoIkJHVUMw MDQuR0lTLlBsYW5uZXJzLmh0bWwiCiAgICAgICAgICAgICAgOmJhc2UtZGlyZWN0b3J5ICIvaG9t ZS96ZWx0YWsvb3JnL2ZpbGVzL1VuaS9Db3Vyc2VzL0JHVUMwMDQuR0lTLlBsYW5uZXJzLyIKICAg ICAgICAgICAgICA6YmFzZS1leHRlbnNpb24gIm9yZyIKICAgICAgICAgICAgICA6cHVibGlzaGlu Zy1kaXJlY3RvcnkgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL0NvdXJzZXMvQkdVQzAwNC5H SVMuUGxhbm5lcnMvc3JjLmh0bWwiCiAgICAgICAgICAgICAgOnB1Ymxpc2hpbmctZnVuY3Rpb24g ei9vcmctcmV2ZWFsLXB1Ymxpc2gtdG8taHRtbAogICAgICAgICAgICAgIDpyZWN1cnNpdmUgdAoJ ICAgICAgOmV4Y2x1ZGUtdGFncyAnKCJub3RlIiAibm9leHBvcnQiKQogICAgICAgICAgICAgICkK KQojK0VORF9TUkMKCioqKiogQkdVQzAwNC5HSVMuUGxhbm5lcnMuc2luZ2xlCiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdvcmctcHVibGlzaC1wcm9q ZWN0LWFsaXN0CiAgICAgICAgICAgICAgICAgJygiQkdVQzAwNC5HSVMuUGxhbm5lcnMuc2luZ2xl IgogICAgICAgICAgICAgICAgOmJhc2UtZGlyZWN0b3J5ICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVz L1VuaS9Db3Vyc2VzL0JHVUMwMDQuR0lTLlBsYW5uZXJzLyIKICAgICAgICAgICAgICAgIDpiYXNl LWV4dGVuc2lvbiAib3JnIgogICAgICAgICAgICAgICAgOnB1Ymxpc2hpbmctZGlyZWN0b3J5ICIv aG9tZS96ZWx0YWsvb3JnL2F0dGFjaC9iZ3UvY291cnNlcy9CR1VDMDA0LkdJUy5QbGFubmVycy9z aW5nbGUvIgogICAgICAgICAgICAgICAgOnB1Ymxpc2hpbmctZnVuY3Rpb24gei9vcmctcmV2ZWFs LXB1Ymxpc2gtdG8taHRtbAogICAgICAgICAgICAgICAgOnJlY3Vyc2l2ZSB0CgkJOmV4Y2x1ZGUt dGFncyAnKCJub3RlIiAibm9leHBvcnQiKSAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDpy ZXZlYWwtc2luZ2xlLWZpbGUgdCkKKQojK0VORF9TUkMKCioqKiogQkdVQzAwNC5HSVMuUGxhbm5l cnMuc3JjLmh3IAojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihhZGQtdG8t bGlzdCAnb3JnLXB1Ymxpc2gtcHJvamVjdC1hbGlzdAogICAgICAgICAgICAgICAgICcgICAgKCJC R1VDMDA0LkdJUy5QbGFubmVycy5zcmMuaHciCiAgICAgICAgICAgICAgICA6YmFzZS1kaXJlY3Rv cnkgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL0NvdXJzZXMvQkdVQzAwNC5HSVMuUGxhbm5l cnMvIgogICAgICAgICAgICAgICAgOmJhc2UtZXh0ZW5zaW9uICJvcmciCiAgICAgICAgICAgICAg ICA6cHVibGlzaGluZy1kaXJlY3RvcnkgIi9ob21lL3plbHRhay9vcmcvYXR0YWNoL2JndS9jb3Vy c2VzL0JHVUMwMDQuR0lTLlBsYW5uZXJzL2h3LyIKICAgICAgICAgICAgICAgIDpwdWJsaXNoaW5n LWZ1bmN0aW9uIHovb3JnLXJldmVhbC1wdWJsaXNoLXRvLWh0bWwKICAgICAgICAgICAgICAgIDpy ZWN1cnNpdmUgdAoJCTpleGNsdWRlLXRhZ3MgJygibm90ZSIgIm5vZXhwb3J0IikKICAgICAgICAg ICAgICAgIDpyZXZlYWwtc2luZ2xlLWZpbGUgdCkKKQojK0VORF9TUkMKCioqKiBCR1VDMDAxLlIu QmFzZSAKKioqKiBkZWZpbmUgQkdVQzAwMS5SLkJhc2UgZ3JvdXBzIAogICMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICAoYWRkLXRvLWxpc3QgJ29yZy1wdWJsaXNoLXByb2pl Y3QtYWxpc3QKICAgICAgICAgICAgICAgICAgICAgJygiQkdVQzAwMS5SLkJhc2UiCiAgICAgICAg ICAgICAgICAgICAgICA6Y29tcG9uZW50cyAoIkJHVUMwMDEuUi5CYXNlLmh0bWwiICJCR1VDMDAx LlIuQmFzZS5zaW5nbGUiICJCR1VDMDAxLlIuQmFzZS5odyIpKQogICkKICAjK0VORF9TUkMKKioq KiBCR1VDMDAxLlIuQmFzZS5odG1sIAoJCQkgIAogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpy ZXN1bHRzIG5vbmUKICAoYWRkLXRvLWxpc3QgJ29yZy1wdWJsaXNoLXByb2plY3QtYWxpc3QKICAg ICAgICAgICAgICAgICAgICAgJygiQkdVQzAwMS5SLkJhc2UuaHRtbCIKCQk6YmFzZS1kaXJlY3Rv cnkgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL0NvdXJzZXMvQkdVQzAwMS5SLkJhc2UvIgoJ CTpiYXNlLWV4dGVuc2lvbiAib3JnIgoJCTpwdWJsaXNoaW5nLWRpcmVjdG9yeSAiL2hvbWUvemVs dGFrL29yZy9maWxlcy9VbmkvQ291cnNlcy9CR1VDMDAxLlIuQmFzZS9zcmMuaHRtbCIKCQk6cHVi bGlzaGluZy1mdW5jdGlvbiB6L29yZy1yZXZlYWwtcHVibGlzaC10by1odG1sCgkJOnJlY3Vyc2l2 ZSB0CgkJOmV4Y2x1ZGUtdGFncyAnKCJub3RlIiAibm9leHBvcnQiKQoJCSkKICApCiAgIytFTkRf U1JDCgoqKioqIEJHVUMwMDEuUi5CYXNlLnNpbmdsZQogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKICAoYWRkLXRvLWxpc3QgJ29yZy1wdWJsaXNoLXByb2plY3QtYWxpc3QK ICAgICAgICAgICAgICAgICAgICcoIkJHVUMwMDEuUi5CYXNlLnNpbmdsZSIKICAgICAgICAgICAg ICAgICAgOmJhc2UtZGlyZWN0b3J5ICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL1VuaS9Db3Vyc2Vz L0JHVUMwMDEuUi5CYXNlLyIKICAgICAgICAgICAgICAgICAgOmJhc2UtZXh0ZW5zaW9uICJvcmci CiAgICAgICAgICAgICAgICAgIDpwdWJsaXNoaW5nLWRpcmVjdG9yeSAiL2hvbWUvemVsdGFrL29y Zy9hdHRhY2gvYmd1L2NvdXJzZXMvQkdVQzAwMS5SLkJhc2Uvc2luZ2xlLyIKICAgICAgICAgICAg ICAgICAgOnB1Ymxpc2hpbmctZnVuY3Rpb24gei9vcmctcmV2ZWFsLXB1Ymxpc2gtdG8taHRtbAog ICAgICAgICAgICAgICAgICA6cmVjdXJzaXZlIHQKCQkgIDpleGNsdWRlLXRhZ3MgJygibm90ZSIg Im5vZXhwb3J0IikgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDpyZXZlYWwtc2luZ2xl LWZpbGUgdCkKICApCiAgIytFTkRfU1JDCgoqKioqIEJHVUMwMDEuUi5CYXNlLmh3IAogICMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICAoYWRkLXRvLWxpc3QgJ29yZy1wdWJs aXNoLXByb2plY3QtYWxpc3QKICAgICAgICAgICAgICAgICAgICcgICAgKCJCR1VDMDAxLlIuQmFz ZS5odyIKICAgICAgICAgICAgICAgICAgOmJhc2UtZGlyZWN0b3J5ICIvaG9tZS96ZWx0YWsvb3Jn L2ZpbGVzL1VuaS9Db3Vyc2VzL0JHVUMwMDEuUi5CYXNlLyIKICAgICAgICAgICAgICAgICAgOmJh c2UtZXh0ZW5zaW9uICJvcmciCiAgICAgICAgICAgICAgICAgIDpwdWJsaXNoaW5nLWRpcmVjdG9y eSAiL2hvbWUvemVsdGFrL29yZy9hdHRhY2gvYmd1L2NvdXJzZXMvQkdVQzAwMS5SLkJhc2UvaHcv IgogICAgICAgICAgICAgICAgICA6cHVibGlzaGluZy1mdW5jdGlvbiB6L29yZy1yZXZlYWwtcHVi bGlzaC10by1odG1sCiAgICAgICAgICAgICAgICAgIDpyZWN1cnNpdmUgdAoJCSAgOmV4Y2x1ZGUt dGFncyAnKCJub3RlIiAibm9leHBvcnQiICJwcmVzIikKICAgICAgICAgICAgICAgICAgOnJldmVh bC1zaW5nbGUtZmlsZSB0KQogICkKICAjK0VORF9TUkMKCgoqKiogbWlzYyAKICAgICAgICAgICAg ICAgKCJIZWxwX2ZpbGVzIgogICAgICAgICAgICAgICA6YmFzZS1kaXJlY3RvcnkgIn4vb3JnL2Zp bGVzL2hlbHAvIgogICAgICAgICAgICAgICA6cHVibGlzaGluZy1kaXJlY3RvcnkgIn4vb3JnL2Zp bGVzL2V4cG9ydC8iCiAgICAgICAgICAgICAgIDpzZWN0aW9uLW51bWJlcnMgbmlsCiAgICAgICAg ICAgICAgIDp0YWJsZS1vZi1jb250ZW50cyBuaWwKICAgICAgICAgICAgICAgOnB1Ymxpc2hpbmct ZnVuY3Rpb24gb3JnLWFzY2lpLXB1Ymxpc2gtdG8tYXNjaWkpCgogICAgICAgICAgICAgICAoImVj b25mIgogICAgICAgICAgICAgICA6YmFzZS1kaXJlY3RvcnkgIn4vb3JnL2ZpbGVzL2FnZW5kYS8i CiAgICAgICAgICAgICAgIDpwdWJsaXNoaW5nLWRpcmVjdG9yeSAifi9vcmcvZmlsZXMvZXhwb3J0 LyIKICAgICAgICAgICAgICAgOnNlY3Rpb24tbnVtYmVycyBuaWwKICAgICAgICAgICAgICAgOnRh YmxlLW9mLWNvbnRlbnRzIG5pbAogICAgICAgICAgICAgICA6cHVibGlzaGluZy1mdW5jdGlvbiBv cmctaHRtbC1wdWJsaXNoLXRvLWh0bWwpCgoKKiogb3JnIGF0dGFjaAogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICBkN2RkNTNkYS1iYzdkLTQyYzEtYjNlNi1kNjQ5NzI4ZDA5YWMKICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIG9yZy1hdHRhY2gt ZGlyZWN0b3J5ICIvaG9tZS96ZWx0YWsvb3JnL2F0dGFjaC9maWxlc18yMDE1LyIpCiMrRU5EX1NS QwoqKiBvcmcgZnVuY3Rpb25zIAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA3N2JlNWRi YS0zM2VmLTRmM2QtOTcwNi0xOGI2ODAwMjJjZDMKICAgOkVORDoKKioqIG9yZyBlZGl0aW5nCioq KiogYnVsbGV0cy10by1zcGFjZXMKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9u ZQooZGVmdW4gei9idWxsZXRzLXRvLXNwYWNlcyAoKQogICJSZXBsYWNlICogd2l0aCBhIHNwYWNl IGV4Y2VwdCBpbiBvcmcgaGVhZGVycy4iCiAgKGludGVyYWN0aXZlKQogIChzYXZlLXJlc3RyaWN0 aW9uCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHdpZGVuKQogICAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQogICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCoiIG5pbCB0KQog ICAgICAgICh1bmxlc3MgKG9yZy1hdC1oZWFkaW5nLXApCiAgICAgICAgICAocmVwbGFjZS1tYXRj aCAiICIpKSkpKSkKIytFTkRfU1JDCioqKiogcGFzdGUgYXMgaW1hZ2UgbGluayAKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gIHovb3JnLXBhc3RlLWltYWdlLWxp bmsgKCkKICAgInBhc3RlIGEgaW1hZ2UgbGluayIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAi W1siKQogICh5YW5rKQogIChpbnNlcnQgIl1dIikKKG9yZy10b2dnbGUtaW5saW5lLWltYWdlcykK KG9yZy10b2dnbGUtaW5saW5lLWltYWdlcykKKQojK0VORF9TUkMKCioqKiBvcmcgaW5zZXJ0IGRy YXdlcgogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGQ2ZjI5MmQ3LWFiNTAtNDMwNS1h YjVlLTM4NGVkODU0OGRmOAogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQooZGVmdW4gei9vcmctaW5zZXJ0LWRyYXdlciAgKCkKICAgICAgICAgICAgICAgICAg ICAgKGludGVyYWN0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChjdXJyZW50LXByZWZpeC1hcmcgJyg0KSkpICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgIydvcmctaW5zZXJ0 LWRyYXdlcikpKQojK0VORF9TUkMKKioqIGNvbnZlcnQgdG8gc2FtZSBsZXZlbCBoZWFkZXIKICAg IDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBiYzFmMmE3ZC0xZDM5LTRiMWEtYWMyOC02NzZl OWYzNzE3NjYKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoo ZGVmdW4gei9vcmctY29udmVydC1oZWFkZXItc2FtZWxldmVsICAoKQogICAgICAgICAgICAgICAg ICAgICAoaW50ZXJhY3RpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgKGxldCAoKGN1cnJlbnQtcHJlZml4LWFyZyAnKDQpKSkgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ29yZy10b2dn bGUtaGVhZGluZykpKQoKIytFTkRfU1JDCgoqKiogVE9ETyB0YW5nbGUgb25seSBjb2RlIGJsb2Nr IGF0IHBvaW50CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZDFkODFhYjMtY2UwOS00 YTc5LWFiZGUtMDJhOWUyNjAxOTY5CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKKGRlZnVuIHovb3JnLXRhbmdsZS1hdHBvaW50ICAoKQogICAgICAgICAgICAg ICAgICAgICAoaW50ZXJhY3RpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKGN1cnJlbnQtcHJlZml4LWFyZyAnKDQpKSkgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ29yZy1i YWJlbC10YW5nbGUpKSkKIytFTkRfU1JDCgoqKiogVE9ETyB0YW5nbGUgb25seSBjb2RlIGF0ICBi bG9jayAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy10 YW5nbGUtYXQtYmxvY2sgICgpCiAgICAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAobGV0ICgo Y3VycmVudC1wcmVmaXgtYXJnICcoMTYpKSkgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ29yZy1iYWJlbC10YW5nbGUpKSkKIytFTkRfU1JD CgoKKioqIGFnZW5kYSB2aWV3cwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDE5NTY5 OTNmLTNlMjAtNDU1OC1hMmZhLWQ1NDMwZWZhODlhOAogICAgOkVORDoKKioqKiBvcmcgYWdlbmRh IHdvcmsgCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA1MmI4ZDFiYi02OTAzLTQ5 MzgtYWM5MS0wOGI1ZDQ4NjMwMDgKICAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy1hZ2VuZGEtd29yayAoKQoib3BlbiB3b3JrIGFnZW5k YSIKKGludGVyYWN0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCihvcmctYWdl bmRhIG5pbCAidyIpCikKIytFTkRfU1JDCgoqKioqIG9yZyBhZ2VuZGEgSm9lbAogICAgIDpQUk9Q RVJUSUVTOgogICAgIDpJRDogICAgICAgMzczN2QxNWItNzkyYi00MzI0LWExNjEtYzIxZWE2Nzcw MmFmCiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1 biB6L29yZy1hZ2VuZGEtam9lbCAoKQoib3BlbiB3b3JrIGFnZW5kYSIKKGludGVyYWN0aXZlKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCihvcmctYWdlbmRhIG5pbCAiaiIpCikKIytF TkRfU1JDCioqKiogb3JnIFRPRE8gc3BhcmVzIHRyZWUKICAgICA6UFJPUEVSVElFUzoKICAgICA6 SUQ6ICAgICAgIDRhNmJlNjM3LTg0OGMtNGZlZi05YTE3LTZmZGRiMjc3NTIxYgogICAgIDpFTkQ6 CmFkZCBhbGwgdG9kbyBzdGF0ZXMgdG8gc3BhcnNlIHRyZWUKIytiZWdpbl9zcmMgZW1hY3MtbGlz cAogIChkZWZ1biB6L29yZy1zcGFyc2UtdG9kbyAoKQogICAgImFsbCB0b2RvIHNwYXJzZSIKICAg IChpbnRlcmFjdGl2ZSkKICAgIChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgdCApCikKIytlbmRfc3Jj CioqKiBMaW5rcwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGU3ZDdiYWM0LWY5YzYt NGJjMi05OWY4LTM0ODAwZDdkZGYzYwogICAgOkVORDoKKioqKiBsaW5rIHRvIGZpbGUKICAgICA6 UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGVhYzAxNTA4LWIwNWUtNDQxZi05ZDRjLWMzMWQ1 NTJmMjY0YwogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK IChkZWZ1biB6L29yZy1saW5rLWZpbGUgICgpCiAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJh Y3RpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgIChsZXQgKChjdXJyZW50LXByZWZpeC1hcmcgJyg0KSkpICAgICAgICAgICAgIAoJCQkoY2Fs bC1pbnRlcmFjdGl2ZWx5ICMnb3JnLWluc2VydC1saW5rKSkpCgogIytFTkRfU1JDCioqKiogbGlu ay9yZWZpbGUgdG8gYW55IGhlYWRlcgogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAg YzViNGFlNWMtZThjYS00OTg4LWE4MjMtZjM5MTJhMWViYmUzCiAgICAgOkVORDoKCkdpdmVzIGhl bG0gYnVmZmVyIHRvIHNlbGVjdCBoZWFkbGluZXMgZnJvbSBvcmctZmlsZXMgaW4gdGhlIGRpcmVj dG9yeSBJIHNlbGVjdCBhbmQgd2hlbiBJIHByZXNzIGYzIChmb3IgdGhlIHRoaXJkIGFjdGlvbiks IGl0IGluc2VydHMgYSBsaW5rIHRvIHRoZSBzZWxlY3RlZCBoZWFkbGluZS4gSXQgZG9lcyB0aGUg ZmlsZSBmaW5kaW5nIHJlY3Vyc2l2ZWx5LCBzbyBiaWcgZm9sZGVycyBjYW4gYmUgc2xvdy4gIHRv IGFkZCB0aGUgb3JnIGlkIGNvbXBvbmVudCB0byB0aGUgYWJvdmUgc2NyaXB0IGV2YWwgdGhpcyBh cyB3ZWxsCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcAogKGRlZnVuIGhlbG0tb3JnLWluc2VydC1p ZC1saW5rLXRvLWhlYWRpbmctYXQtbWFya2VyIChtYXJrZXIpCiAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIChtYXJrZXItYnVmZmVyIG1hcmtlcikKICAgICAobGV0ICgoZmlsZS1uYW1lIChidWZmZXIt ZmlsZS1uYW1lKSkKICAgICAgICAgICAoaWQgKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgKG1h cmtlci1wb3NpdGlvbiBtYXJrZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9y Zy1pZC1nZXQtY3JlYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1pZC1z dG9yZS1saW5rKSkpKQoKICAgICAgICh3aXRoLWhlbG0tY3VycmVudC1idWZmZXIKICAgICAgICAg KG9yZy1pbnNlcnQtbGluawogICAgICAgICAgZmlsZS1uYW1lIGlkKSkpKSkKCgogKGNsLWRlZnVu IGhlbG0tc291cmNlLW9yZy1oZWFkaW5ncy1mb3ItZmlsZXMgKGZpbGVuYW1lcwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCAobWluLWRlcHRo IDEpIChtYXgtZGVwdGggOCkpCiAgIChoZWxtLWJ1aWxkLXN5bmMtc291cmNlICJPcmcgSGVhZGlu Z3MiCiAgICAgOmNhbmRpZGF0ZXMgKGhlbG0tb3JnLWdldC1jYW5kaWRhdGVzIGZpbGVuYW1lcyBt aW4tZGVwdGggbWF4LWRlcHRoKQogICAgIDphY3Rpb24gJygoIkdvIHRvIGxpbmUiIC4gaGVsbS1v cmctZ290by1tYXJrZXIpCiAgICAgICAgICAgICAgICgiUmVmaWxlIHRvIHRoaXMgaGVhZGluZyIg LiBoZWxtLW9yZy1oZWFkaW5nLXJlZmlsZSkKICAgICAgICAgICAgICAgKCJJbnNlcnQgbGluayB0 byB0aGlzIGhlYWRpbmciCgkJLiBoZWxtLW9yZy1pbnNlcnQtbGluay10by1oZWFkaW5nLWF0LW1h cmtlcikKICAgICAgICAgICAgICAgKCJJbnNlcnQgaWQgbGluayB0byB0aGlzIGhlYWRpbmciIC4K CQloZWxtLW9yZy1pbnNlcnQtaWQtbGluay10by1oZWFkaW5nLWF0LW1hcmtlcikpKSkKCiAjK0VO RF9TUkMKCioqKiogcGFzdGUgZmlsZTovIGxpbmsKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6 ICAgICAgIDRkN2IxM2ViLThkMTktNGYyNi1iYzJjLTE3MTQ2NjQ1NWFiYgogICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1saW5rLXBh c3RlLWZpbGUtcGF0aCAoKQogICAicGFzdGUgZmlsZSBwYXRoIGluIGtpbGxyaW5nIgogIChpbnRl cmFjdGl2ZSkKICAoaW5zZXJ0ICJmaWxlOiIpCiAgKHlhbmspCiAgKQojK0VORF9TUkMKCioqKiB0 ZXJtaW5hbAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDc3YTZiYzZhLTcwOWItNDM5 NS1iNzNhLTQxMDJiZDA1NTM2ZAogICAgOkVORDoKKioqKiBvcmcgZXZhbHVhdGUgdG8gdGVybQog ICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgMTMwNmI3ODMtNzZkNy00YzY5LWI5MzYt NDRmNzNmMTA0NmJiCiAgICAgOkVORDoKCiAjK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAoZGVmYWR2 aWNlIG9yZy1iYWJlbC1leGVjdXRlOnNoIChhcm91bmQgc2FjaGEgYWN0aXZhdGUpCiAgIChpZiAo YXNzb2MtZGVmYXVsdCA6dGVybSAoYWQtZ2V0LWFyZyAxKSBuaWwpCiAgICAgKGxldCAoKGJ1ZmZl ciAobWFrZS10ZXJtICJiYWJlbCIgIi9iaW4venNoIikpKQogICAgICAgKHdpdGgtY3VycmVudC1i dWZmZXIgYnVmZmVyCgkgKGluc2VydCAob3JnLWJhYmVsLWV4cGFuZC1ib2R5OmdlbmVyaWMKCSAg ICAgIGJvZHkgcGFyYW1zIChvcmctYmFiZWwtdmFyaWFibGUtYXNzaWdubWVudHM6c2ggcGFyYW1z KSkpCgkgKHRlcm0tc2VuZC1pbnB1dCkpCiAocG9wLXRvLWJ1ZmZlciBidWZmZXIpKQogICAgIGFk LWRvLWl0KSkKICMrZW5kX3NyYwoKICMrUkVTVUxUUzoKIDogb3JnLWJhYmVsLWV4ZWN1dGU6c2gK CioqKiBlZGl0aW5nCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZmIyZWVhMzMtNjMy Yi00MGY1LTg4YzEtNDY3YTE3Y2U0MjI0CiAgICA6RU5EOgoqKioqIEluc2VydCBjdXJyZW50IHRp bWUgc3RhbXAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDdkYmNjOTBmLTY3OTYt NDEzMC05M2VlLTI1NWVlYjdmYTdiMgogICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKKGRlZnVuIG9yZy10aW1lc3RhbXAtbm93ICgpCiAgIkluc2VydHMgb3Jn IHRpbWVzdGFtcCBhdCBlbmQgb2YgaGVhZGluZyIKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhj dXJzaW9uCiAgICAob3JnLWJhY2stdG8taGVhZGluZykKICAgIChvcmctZW5kLW9mLWxpbmUgbmls KQogICAgKGluc2VydCAiICIpCiAgICAob3JnLWluc2VydC10aW1lLXN0YW1wIG5pbCBuaWwgdCBu aWwgbmlsIG5pbCkpKQojK0VORF9TUkMKCioqKiogSW5zZXJ0IHRpbWUgc3RhbXAgc2VsZWN0b3Ig CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAxNmM1ZTI4ZS1kYzJmLTQzN2ItOTBl ZS0wYTI1ZDJmYzQ5YjgKICAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCihkZWZ1biBvcmctdGltZXN0YW1wLXNlbGVjdCAoKQogICJJbnNlcnRzIG9yZyB0aW1l c3RhbXAgYXQgZW5kIG9mIGhlYWRpbmciCiAgKGludGVyYWN0aXZlKQogIChzYXZlLWV4Y3Vyc2lv bgogICAgKG9yZy1iYWNrLXRvLWhlYWRpbmcpCiAgICAob3JnLWVuZC1vZi1saW5lIG5pbCkKICAg IChvcmctdGltZS1zdGFtcC1pbmFjdGl2ZSBuaWwpKSkKCiMrRU5EX1NSQwoqKioqIGltcG9ydCBv ZHMgZmlsZSBpbnRvIG9yZyB0YWJsZQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAg MDM5ZGE0MzEtNTVmMC00NDlmLTlhYWMtNTM1NjEzMzIyOWRhCiAgICAgOkVORDoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biBvcmctdGFibGUtaW1wb3J0LW9kcyAo Jm9wdGlvbmFsIGZpbGUtbmFtZSkKKGludGVyYWN0aXZlICJmRmlsZTogIikKKGxldCAoKGNzdi1m aWxlIChvcmctb2R0LWNvbnZlcnQgZmlsZS1uYW1lICJjc3YiKSkKKHBvcyAocG9pbnQpKSkKKHNh dmUtZXhjdXJzaW9uCihpbnNlcnQgKHdpdGgtdGVtcC1idWZmZXIKKGluc2VydC1maWxlLWNvbnRl bnRzIGNzdi1maWxlKQoob3JnLXRhYmxlLWNvbnZlcnQtcmVnaW9uIChwb2ludC1taW4pIChwb2lu dC1tYXgpICcoNCkpCihidWZmZXItc3RyaW5nKSkpKSkpCiMrRU5EX1NSQwoqKioqIGNvbnZlcnQg bGluZXMgdG8gY2hlY2tib3hlcwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgM2Qy MjMzZTctNjAwOS00YzJiLWIxNGQtYmM5YmE5ZjkzNGFlCiAgICAgOkVORDoKIAojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIG9yZy1zZXQtbGluZS1jaGVja2JveCAo YXJnKQogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGxldCAoKG4gKG9yIGFyZyAxKSkpCiAgICAod2hl biAocmVnaW9uLWFjdGl2ZS1wKQogICAgICAoc2V0cSBuIChjb3VudC1saW5lcyAocmVnaW9uLWJl Z2lubmluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2lvbi1lbmQpKSkKICAgICAg KGdvdG8tY2hhciAocmVnaW9uLWJlZ2lubmluZykpKQogICAgKGRvdGltZXMgKGkgbikKICAgICAg KGJlZ2lubmluZy1vZi1saW5lKQogICAgICAoaW5zZXJ0ICItIFsgXSAiKQogICAgICAoZm9yd2Fy ZC1saW5lKSkKICAgIChiZWdpbm5pbmctb2YtbGluZSkpKQojK0VORF9TUkMKICAgIAoqKioqIGNv bnZlcnQgbGluZXMgdG8gaGVhZGxpbmUKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAg IDU4ZDY1YmJmLTZhODctNDBlYy1hODE2LTVhYTQ2ZGNmODZmZQogICAgIDpFTkQ6CiAKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biBvcmctc2V0LWxpbmUtaGVhZGxp bmUgKGFyZykKICAoaW50ZXJhY3RpdmUgIlAiKQogIChsZXQgKChuIChvciBhcmcgMSkpKQogICAg KHdoZW4gKHJlZ2lvbi1hY3RpdmUtcCkKICAgICAgKHNldHEgbiAoY291bnQtbGluZXMgKHJlZ2lv bi1iZWdpbm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKSkpCiAg ICAgIChnb3RvLWNoYXIgKHJlZ2lvbi1iZWdpbm5pbmcpKSkKICAgIChkb3RpbWVzIChpIG4pCiAg ICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgKGluc2VydCAiKiogVE9ETyAiKQogICAgICAo Zm9yd2FyZC1saW5lKSkKICAgIChiZWdpbm5pbmctb2YtbGluZSkpKQojK0VORF9TUkMKICAgIAoq KioqIHJlYWQgb25seSBmdW5jdGlvbgogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAg NWNjZTE4NmEtZjYxYi00ZTcyLWJlNzEtZWQ5N2VlYWQ2ZThmCiAgICAgOkVORDoKTWFrZSBzb21l IG9yZy1zZWN0aW9ucyByZWFkLW9ubHkKCiROb3RlLSB5b3UgIU1VU1QhIHRhZyB0aGUgaGVhZGVy IDpyZWFkX29ubHk6IG90aGVyIHdpc2UgaXQgd29udCB3b3JrJCAKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gb3JnLW1hcmstcmVhZG9ubHkgKCkKKGludGVyYWN0 aXZlKQoob3JnLW1hcC1lbnRyaWVzCihsYW1iZGEgKCkKKGxldCogKChlbGVtZW50IChvcmctZWxl bWVudC1hdC1wb2ludCkpCihiZWdpbiAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmJlZ2luIGVsZW1l bnQpKQooZW5kIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6ZW5kIGVsZW1lbnQpKSkKKGFkZC10ZXh0 LXByb3BlcnRpZXMgYmVnaW4gKC0gZW5kIDEpICcocmVhZC1vbmx5IHQKZm9udC1sb2NrLWZhY2Ug Jyg6YmFja2dyb3VuZCAiI0ZGRTNFMyIpKSkpKQoicmVhZF9vbmx5IikKKG1lc3NhZ2UgIk1hZGUg cmVhZG9ubHkhIikpCihkZWZ1biBvcmctcmVtb3ZlLXJlYWRvbmx5ICgpCihpbnRlcmFjdGl2ZSkK KG9yZy1tYXAtZW50cmllcwoobGFtYmRhICgpCihsZXQqICgoZWxlbWVudCAob3JnLWVsZW1lbnQt YXQtcG9pbnQpKQooYmVnaW4gKG9yZy1lbGVtZW50LXByb3BlcnR5IDpiZWdpbiBlbGVtZW50KSkK KGVuZCAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmVuZCBlbGVtZW50KSkKKGluaGliaXQtcmVhZC1v bmx5IHQpKQoocmVtb3ZlLXRleHQtcHJvcGVydGllcyBiZWdpbiAoLSBlbmQgMSkgJyhyZWFkLW9u bHkgdCBmb250LWxvY2stZmFjZSAnKDpiYWNrZ3JvdW5kICJ5ZWxsb3ciKSkpKSkKInJlYWRfb25s eSIpKQooYWRkLWhvb2sgJ29yZy1tb2RlLWhvb2sgJ29yZy1tYXJrLXJlYWRvbmx5KQojK0VORF9T UkMKCioqKiBjb2RlIGJsb2NrcwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDNjMzkz M2NjLTQ5YWEtNGVjYi04ODA3LWQ1NzE2NDYxZmYzZQogICAgOkVORDoKKioqKiBjb21tZW50IGlu c2lkZSBvcmcgY29kZSBibG9jayAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGY3 YzdlYTJkLTJlYzctNGU5Ni04MzJlLWRiMmZlYzU0NTVjYwogICAgIDpFTkQ6CiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9vcmctY2Jsb2NrLWNvbW1lbnQgKCkg ICAgCihpbnRlcmFjdGl2ZSkKKG9yZy1lZGl0LXNwZWNpYWwpCihtYXJrLXdob2xlLWJ1ZmZlcikK KGNvbW1lbnQtZHdpbSBuaWwpCihvcmctZWRpdC1zcmMtZXhpdCkpCgojK0VORF9TUkMKKioqKiBw YXN0ZSBjb2RlIGJsb2NrCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAwNDU3ZmNh My1jMTAyLTQxMGUtOTFmMy1kZjkxMThkMDljNzQKICAgICA6RU5EOgoqKioqKiB6L29yZy1jYmxv Y2stcGFzdGUtbGlzcAogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAgICAgICBjMGU2MDI1 OC1jYzUyLTRmNGMtOWY2Yy05MGM5ODQzMjJmZTgKICAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gIHovb3JnLWNibG9jay1wYXN0ZS1saXNwICgp CiAgICJwYXN0ZSBpbiBhbHJlYWR5IHF1b3RlIGJsb2NrIgogIChpbnRlcmFjdGl2ZSkKICAoaW5z ZXJ0ICIjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lXG4iKQogICh5YW5rKQog IChpbnNlcnQgIlxuIytFTkRfU1JDIikpCiMrRU5EX1NSQwoqKioqKiB6L29yZy1jYmxvY2stcGFz dGUtc2gKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgNTQ1OGQ3ZmQtZmZmYS00 ZWM0LTkxZGYtM2I3NWRiMzA4YWU3CiAgICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1jYmxvY2stcGFzdGUtc2ggKCkKICAgInBhc3Rl IGluIGFscmVhZHkgcXVvdGUgYmxvY2siCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgIiMrQkVH SU5fU1JDIHNoICA6cmVzdWx0cyBub25lXG4iKQogICh5YW5rKQogIChpbnNlcnQgIlxuIytFTkRf U1JDIikpCiMrRU5EX1NSQwoqKioqKiB6L29yZy1jYmxvY2stcGFzdGUtY29uZgojK0JFR0lOX1NS QyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biAgei9vcmctY2Jsb2NrLXBhc3RlLWNv bmYgKCkKICAgInBhc3RlIGluIGFscmVhZHkgcXVvdGUgYmxvY2siCiAgKGludGVyYWN0aXZlKQog IChpbnNlcnQgIiMrQkVHSU5fU1JDIGNvbmYgOnJlc3VsdHMgbm9uZVxuIikKICAoeWFuaykKICAo aW5zZXJ0ICJcbiMrRU5EX1NSQyIpKQojK0VORF9TUkMKCioqKioqIHovb3JnLWNibG9jay1wYXN0 ZS1FWEFNUExFCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIDg3NjdmNDE2LTk2 ZjAtNDI1ZC1hNzUyLTZhZDRhNGIwNDYzZQogICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCihkZWZ1biAgei9vcmctY2Jsb2NrLXBhc3RlLWV4YW1wbGUgKCkK ICAgInBhc3RlIGluIGFscmVhZHkgcXVvdGUgYmxvY2siCiAgKGludGVyYWN0aXZlKQogIChpbnNl cnQgIiMrQkVHSU5fRVhBTVBMRVxuIikKICAoeWFuaykKICAoaW5zZXJ0ICJcbiMrRU5EX0VYQU1Q TEUiKSkKIytFTkRfU1JDCioqKioqIHovb3JnLWNibG9jay1wYXN0ZS1SCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1jYmxvY2stcGFzdGUtUiAoKQog ICAicGFzdGUgaW4gYWxyZWFkeSBxdW90ZSBibG9jayIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2Vy dCAiIytCRUdJTl9TUkMgUiA6c2Vzc2lvbiBSb3JnICA6cmVzdWx0cyBub25lXG4iKQogICh5YW5r KQogIChpbnNlcnQgIlxuIytFTkRfU1JDIikpCiMrRU5EX1NSQwoqKioqKiB6L29yZy1jYmxvY2st cGFzdGUtdGFuZ2xlLWJhc2UKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQoo ZGVmdW4gIHovb3JnLWNibG9jay1wYXN0ZS10YW5nbGUtYmFzZSAoKQogICAicGFzdGUgaW4gYWxy ZWFkeSBxdW90ZSBibG9jayIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiIytCRUdJTl9TUkMg Y29uZiA6bWtkaXJwIHllcyA6dGFuZ2xlLW1vZGUgKGlkZW50aXR5ICNvNzU1KSA6dGFuZ2xlIH4v ICBcbiAiKQogICh5YW5rKQogIChpbnNlcnQgIlxuIytFTkRfU1JDIikpCiMrRU5EX1NSQwoKKioq Kiogei9vcmctY2Jsb2NrLXBhc3RlLVItZnVsbAojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVz dWx0cyBub25lCihkZWZ1biAgei9vcmctY2Jsb2NrLXBhc3RlLVItZnVsbCAoKQogICAicGFzdGUg aW4gYWxyZWFkeSBxdW90ZSBibG9jayIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiIytOQU1F OiBteWdyYXBoLWNvZGVcbiAjK0JFR0lOX1NSQyBSIDpzZXNzaW9uIFJvcmcgOnJlc3VsdHMgb3V0 cHV0IGdyYXBoaWNzIDpmaWxlIFxuIikKICAoeWFuaykKICAoaW5zZXJ0ICJcbiMrRU5EX1NSQyIp KQojK0VORF9TUkMKCgoqKioqKiB6L29yZy1jYmxvY2stcGFzdGUtU0FTCiAgICAgIDpQUk9QRVJU SUVTOgogICAgICA6SUQ6ICAgICAgIGQyNWUwNDNjLWRmZWMtNDU5My05ZjhiLWE0N2U0YWZkYWQ2 MgogICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1 biAgei9vcmctY2Jsb2NrLXBhc3RlLVNBUyAoKQogICAicGFzdGUgaW4gYWxyZWFkeSBxdW90ZSBi bG9jayIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiIytCRUdJTl9TUkMgU0FTXG4iKQogICh5 YW5rKQogIChpbnNlcnQgIlxuIytFTkRfU1JDIikpCiMrRU5EX1NSQwoqKioqKiB6L29yZy1jYmxv Y2stcGFzdGUtUVVPVEUKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgOTc0YjE5 OTktMmU1MC00MDZiLWFlZjAtYzhiZDRlNmQzMzI1CiAgICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1jYmxvY2stcGFzdGUtUVVPVEUg KCkKICAgInBhc3RlIGluIGFscmVhZHkgcXVvdGUgYmxvY2siCiAgKGludGVyYWN0aXZlKQogIChp bnNlcnQgIiMrQkVHSU5fUVVPVEVcbiIpCiAgKHlhbmspCiAgKGluc2VydCAiXG4jK0VORF9RVU9U RSIpKQojK0VORF9TUkMKKioqKiBpbnRlcmFjdGl2ZSB3cmFwCiAgICAgOlBST1BFUlRJRVM6CiAg ICAgOklEOiAgICAgICA1ODlhMGIzYy02ZGM0LTQ1YTQtYmM2ZS0wODdjNDQxN2UzYmUKICAgICA6 RU5EOgoqKioqKiB6L29yZy1jYmxvY2staXdyYXAtZW1hY3MtbGlzcAogICAgICA6UFJPUEVSVElF UzoKICAgICAgOklEOiAgICAgICBjN2E5N2YyNC02NjYyLTQzZTgtYjRhNy02OGNiMjgwNDQ5ZjEK ICAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6 L29yZy1jYmxvY2staXdyYXAtZW1hY3MtbGlzcCAoJm9wdGlvbmFsIGxhbmcgbGluZXMpCiAgIldy YXAgc2V4cC1hdC1wb2ludCBvciByZWdpb24gaW4gc3JjLWJsb2NrLgpVc2UgT3JnLUJhYmVsIExB Tkd1YWdlIGZvciB0aGUgc3JjLWJsb2NrIGlmIGdpdmVuLCBFbWFjcy1MaXNwCm90aGVyd2lzZS4g QSByZWdpb24gaW5zdGVhZCBvZiB0aGUgc2V4cC1hdC1wb2ludCBpcyB3cmFwcGVkIGlmCmVpdGhl cgogICAtIG9wdGlvbmFsIGFyZ3VtZW50IExJTkVTIGlzIGFuIChwb3NpdGl2ZSBvciBuZWdhdGl2 ZSkgaW50ZWdlcgogICAtIG9yIHRoZSByZWdpb24gaXMgYWN0aXZlCkluIHRoZSBmaXJzdCBjYXNl IHRoZSByZWdpb24gaXMgZGV0ZXJtaW5lZCBieSBtb3ZpbmcgKy8tIExJTkVTCmZvcndhcmQvYmFj a3dhcmQgZnJvbSBwb2ludCB1c2luZyBgZm9yd2FyZC1saW5lJywgaW4gdGhlIHNlY29uZApjYXNl IHRoZSBhY3RpdmUgcmVnaW9uIGlzIHVzZWQuCldoZW4gY2FsbGVkIHdpdGggcHJlZml4IGFyZ3Vt ZW50ICdDLXUnLCBwcm9tcHQgdGhlIHVzZXIgZm9yIHRoZQpPcmctQmFiZWwgbGFuZ3VhZ2UgdG8g dXNlLiBXaGVuIGNhbGxlZCB3aXRoIHR3byBwcmVmaXggYXJndW1lbnRzCidDLXUgQy11JywgcHJv bXB0IHRoZSB1c2VyIGZvciBib3RoIHRoZSBPcmctQmFiZWwgbGFuZ3VhZ2UgdG8gdXNlCmFuZCB0 aGUgbnVtYmVyIG9mIGxpbmVzIHRvIGJlIHdyYXBwZWQuIgogIChpbnRlcmFjdGl2ZQogICAoY29u ZAogICAgKChlcXVhbCBjdXJyZW50LXByZWZpeC1hcmcgbmlsKSBuaWwpCiAgICAoKGVxdWFsIGN1 cnJlbnQtcHJlZml4LWFyZyAnKDQpKQogICAgIChsaXN0CiAgICAgIChpZG8tY29tcGxldGluZy1y ZWFkICJPcmctQmFiZWwgbGFuZ3VhZ2U6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h cGNhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoLS1sYW5nKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9sLW5hbWUgKGNhciAtLWxhbmcpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9yZy1iYWJlbC1sb2FkLWxhbmd1YWdlcykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmlsIG5pbCBuaWwgbmlsICJlbWFjcy1saXNwIikpKQogICAgKChl cXVhbCBjdXJyZW50LXByZWZpeC1hcmcgJygxNikpCiAgICAgKGxpc3QKICAgICAgKGlkby1jb21w bGV0aW5nLXJlYWQgIk9yZy1CYWJlbCBsYW5ndWFnZTogIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAobWFwY2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgtLWxhbmcp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2wtbmFtZSAoY2FyIC0tbGFuZykp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLWJhYmVsLWxvYWQtbGFuZ3VhZ2VzKQog ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwgbmlsIG5pbCBuaWwgImVtYWNzLWxpc3AiKQog ICAgICAocmVhZC1udW1iZXIgIk51bWJlciBvZiBsaW5lcyB0byB3cmFwOiAiIDEpKSkpKQogIChs ZXQqICgobGFuZ3VhZ2UgKG9yIGxhbmcgImVtYWNzLWxpc3AiKSkKICAgICAgICAgKGJlZyAob3Ig KGFuZCAobm90IGxpbmVzKQoJCSAgICAgICAocmVnaW9uLWFjdGl2ZS1wKQoJCSAgICAgICAocmVn aW9uLWJlZ2lubmluZykpCiAgICAgICAgICAgICAgICAgIChwb2ludCkpKQogICAgICAgICAobWFy a2VyIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIGJlZykgKHBvaW50LW1hcmtlcikpKQogICAg ICAgICAoYm9sIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIGJlZykgKGJvbHApKSkKICAgICAg ICAgKGVuZCAoY29uZAoJICAgICAgIChsaW5lcyAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg ICAgICAgICAgICAgKGZvcndhcmQtbGluZSBsaW5lcykgKHBvaW50KSkpCgkgICAgICAgKChyZWdp b24tYWN0aXZlLXApKHJlZ2lvbi1lbmQpKQoJICAgICAgICh0IChzYXZlLWV4Y3Vyc2lvbgogICAg ICAgICAgICAgICAgICAgIChmb3J3YXJkLXNleHApIChwb2ludCkpKSkpCiAgICAgICAgIChjdXQt c3RyZyAoYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkpCiAgICAoZGVsZXRlLXJlZ2lvbiBiZWcg ZW5kKQogICAgKGdvdG8tY2hhciAobWFya2VyLXBvc2l0aW9uIG1hcmtlcikpCiAgICAoaW5zZXJ0 CiAgICAgKGZvcm1hdAogICAgICAiJXMjK2JlZ2luX3NyYyAlc1xuJXMlcyMrZW5kX3NyY1xuIgog ICAgICAoaWYgKG9yIChhbmQgbGluZXMgKDwgbGluZXMgMCkpIGJvbCkgIiIgIlxuIikKICAgICAg bGFuZ3VhZ2UKICAgICAgY3V0LXN0cmcKICAgICAgKGlmIGxpbmVzICIiICJcbiIpKSkKICAgIChz ZXQtbWFya2VyIG1hcmtlciBuaWwpKSkKIytlbmRfc3JjCioqKioqIHovb3JnLWNibG9jay1pd3Jh cC1BU0sgCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIDQ0NjU5NWE4LWFkNTct NDRlZi1iODNkLTRhOThiYzY2Nzg0MgogICAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy1jYmxvY2staXdyYXAtQVNLICgpCihpbnRlcmFj dGl2ZSkKKGxldCAoKGN1cnJlbnQtcHJlZml4LWFyZyAnKDQpKSkKKGNhbGwtaW50ZXJhY3RpdmVs eQonei9vcmctY2Jsb2NrLWl3cmFwLWVtYWNzLWxpc3ApKSkKICMrRU5EX1NSQwoqKioqKiB6L29y Zy1jYmxvY2staXdyYXAtQVNLLUxJTkUgCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAg ICAgIGVjNzBhNjI5LWY4NjItNDlhYS1iNDY3LTZlODcyZGQwYzdkMQogICAgICA6RU5EOgogIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy1jYmxvY2staXdy YXAtQVNLLUxJTkUgKCkKKGludGVyYWN0aXZlKQoobGV0ICgoY3VycmVudC1wcmVmaXgtYXJnICco NCkpKQooY2FsbC1pbnRlcmFjdGl2ZWx5Cid6L29yZy1jYmxvY2staXdyYXAtZW1hY3MtbGlzcCkp KQogIytFTkRfU1JDCioqKioqIHovb3JnLWNibG9jay1pd3JhcC1SCiAgICAgIDpQUk9QRVJUSUVT OgogICAgICA6SUQ6ICAgICAgIDFjNTU4NDJkLTRmZDgtNDUyNC1hNjFmLWU4NTU2MTZlNjMzOAog ICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHov b3JnLWNibG9jay1pd3JhcC1SICgpCihpbnRlcmFjdGl2ZSkKKHovb3JnLWNibG9jay1pd3JhcC1l bWFjcy1saXNwICAiUiIgKSkKIytlbmRfc3JjCioqKioqIHovb3JnLWNibG9jay1pd3JhcC1zaAog ICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAgICAgICBjODk3NDFhMy0wMmI5LTQ3N2QtYjg5 NC0wY2ViMjAwNTdiZDYKICAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCihkZWZ1biB6L29yZy1jYmxvY2staXdyYXAtc2ggKCkKKGludGVyYWN0aXZlKQooei9v cmctY2Jsb2NrLWl3cmFwLWVtYWNzLWxpc3AgICJzaCIgKSkKIytlbmRfc3JjCgoqKioqKiB6L29y Zy1jYmxvY2stbm93cmFwLUVYQU1QTEUKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAg ICAgNThhYzEzYmMtNjNlYS00ZGE5LTgxMTgtMGI3ZGU1YTA1Yzc0CiAgICAgIDpFTkQ6CiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1jYmxvY2stbm93 cmFwLWV4YW1wbGUgKCkKICAgInBhc3RlIGluIGFscmVhZHkgcXVvdGUgYmxvY2siCiAgKGludGVy YWN0aXZlKQogIChpbnNlcnQgIiMrQkVHSU5fRVhBTVBMRVxuIikKICAoaW5zZXJ0ICJcbiMrRU5E X0VYQU1QTEUiKSkKIytFTkRfU1JDCioqKiogbWVudSBmb3Igd3JhcHBpbmcgCiAgICAgOlBST1BF UlRJRVM6CiAgICAgOklEOiAgICAgICBlNjMzYTNkYS0zZTRmLTQ5YzUtYTFiMi0yNDI0MzU2ODdh NjMKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Owo7OyBmdW5jdGlvbiB0byB3cmFwIGJsb2NrcyBvZiB0ZXh0IGluIG9yZyB0 ZW1wbGF0ZXMgICAgICAgICAgICAgICAgICAgICAgIDs7Cjs7IGUuZy4gbGF0ZXggb3Igc3JjIGV0 YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7OwooZGVmdW4gei9vcmctY2Jsb2NrLWl3cmFwLW1lbnUgKCkKICAiTWFr ZSBhIHRlbXBsYXRlIGF0IHBvaW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChvcmctYXQtdGFi bGUtcCkKICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnb3JnLXRhYmxlLXJvdGF0ZS1yZWNhbGMt bWFya3MpCiAgICAobGV0KiAoKGNob2ljZXMgJygoInMiIC4gIlNSQyIpCiAgICAgICAgICAgICAg ICAgICAgICAoImUiIC4gIkVYQU1QTEUiKQogICAgICAgICAgICAgICAgICAgICAgKCJxIiAuICJR VU9URSIpCiAgICAgICAgICAgICAgICAgICAgICAoInYiIC4gIlZFUlNFIikKICAgICAgICAgICAg ICAgICAgICAgICgiYyIgLiAiQ0VOVEVSIikKICAgICAgICAgICAgICAgICAgICAgICgibCIgLiAi TGFUZVgiKQogICAgICAgICAgICAgICAgICAgICAgKCJoIiAuICJIVE1MIikKICAgICAgICAgICAg ICAgICAgICAgICgiciIgLiAiUiIpCiAgICAgICAgICAgICAgICAgICAgICAoImEiIC4gIkFTQ0lJ IikpKQogICAgICAgICAgIChrZXkKICAgICAgICAgICAgKGtleS1kZXNjcmlwdGlvbgogICAgICAg ICAgICAgKHZlY3RvcgogICAgICAgICAgICAgIChyZWFkLWtleQogICAgICAgICAgICAgICAoY29u Y2F0IChwcm9wZXJ0aXplICJUZW1wbGF0ZSB0eXBlOiAiICdmYWNlICdtaW5pYnVmZmVyLXByb21w dCkKICAgICAgICAgICAgICAgICAgICAgICAobWFwY29uY2F0IChsYW1iZGEgKGNob2ljZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAocHJvcGVydGl6ZSAoY2Fy IGNob2ljZSkgJ2ZhY2UgJ2ZvbnQtbG9jay10eXBlLWZhY2UpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjZHIgY2hvaWNlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaG9pY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiKSkp KSkpKQogICAgICAobGV0ICgocmVzdWx0IChhc3NvYyBrZXkgY2hvaWNlcykpKQogICAgICAgICh3 aGVuIHJlc3VsdAogICAgICAgICAgKGxldCAoKGNob2ljZSAoY2RyIHJlc3VsdCkpKQogICAgICAg ICAgICAoY29uZAogICAgICAgICAgICAgKChyZWdpb24tYWN0aXZlLXApCiAgICAgICAgICAgICAg KGxldCAoKHN0YXJ0IChyZWdpb24tYmVnaW5uaW5nKSkKICAgICAgICAgICAgICAgICAgICAoZW5k IChyZWdpb24tZW5kKSkpCiAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVuZCkKICAgICAgICAg ICAgICAgIChpbnNlcnQgIiMrRU5EXyIgY2hvaWNlICJcbiIpCiAgICAgICAgICAgICAgICAoZ290 by1jaGFyIHN0YXJ0KQogICAgICAgICAgICAgICAgKGluc2VydCAiIytCRUdJTl8iIGNob2ljZSAi XG4iKSkpCiAgICAgICAgICAgICAodAogICAgICAgICAgICAgIChpbnNlcnQgIiMrQkVHSU5fIiBj aG9pY2UgIlxuIikKICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24gKGluc2VydCAiIytFTkRf IiBjaG9pY2UpKSkpKSkpKSkpCgojK0VORF9TUkMKKioqKiBtb3ZlIHRvIG5leHQvcHJldiBjb2Rl IGJsb2NrIAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYWU0Y2UzNDEtMzFmNC00 MGQwLThiYTgtMDdmNWE4OGFmNDczCiAgICAgOkVORDoKaHR0cHM6Ly9tYWlsLmdvb2dsZS5jb20v bWFpbC91LzAvI3N0YXJyZWQvMTUxNDkzZTE1NDI3ZDYzNApJZiBh44CQQy1144CRIHByZWZpeCBp cyBzdXBwbGllZCwgdGhlIGVkaXQgaXMgYWJvcnRlZCByYXRoZXIgdGhhbiBleGl0ZWQgcmV0YWlu aW5nIGVkaXRzLgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4g bXktYmFiZWwtc3JjLWp1bXAgKGFyZyBqdW1wLWZuKQogIChsZXQqICgobWlub3ItbW9kZXMgKGNs LXJlbW92ZS1pZi1ub3QgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAoYm91bmRwIHgpIChzeW1ib2wtdmFsdWUgeCkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3ItbW9kZS1saXN0KSkpCiAgICAod2hl biAobWVtYmVyICdvcmctc3JjLW1vZGUgbWlub3ItbW9kZXMpCiAgICAgIChpZiAoZXF1YWwgYXJn ICcoNCkpCiAgICAgICAgICAob3JnLWVkaXQtc3JjLWFib3J0KQogICAgICAgIChvcmctZWRpdC1z cmMtZXhpdCkpKQogICAgKHdoZW4gKGVxIG1ham9yLW1vZGUgJ29yZy1tb2RlKQogICAgICAoZnVu Y2FsbCBqdW1wLWZuKQogICAgICAob3JnLWVkaXQtc3JjLWNvZGUpKSkpCgooZGVmdW4gei9vcmct YmFiZWwtZWRpdC1uZXh0IChhcmcpCiAgKGludGVyYWN0aXZlICJQIikKICAobXktYmFiZWwtc3Jj LWp1bXAgYXJnICMnb3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrKSkKCihkZWZ1biB6L29yZy1iYWJl bC1lZGl0LXByZXZpb3VzIChhcmcpCiAgKGludGVyYWN0aXZlICJQIikKICAobXktYmFiZWwtc3Jj LWp1bXAgYXJnICMnb3JnLWJhYmVsLXByZXZpb3VzLXNyYy1ibG9jaykpCgojK0VORF9TUkMKKioq KiBSZWZyZXNoIGltYWdlcyB3aGVuIGV4ZWN1dGluZyBjb2RlIGJsb2NrCiAgICAgOlBST1BFUlRJ RVM6CiAgICAgOklEOiAgICAgICA3Zjc3ZTNhYS02NzQzLTRlZTctOGQ5Ny0wZGYzYTI4ZmZiNjUK ICAgICA6RU5EOgpodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsL3UvMC8jc3RhcnJlZC8xNTEx YmJkYjBhMzA1NzZkCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCjs7IHJl ZnJlc2ggaW1hZ2VzIGFmdGVyIHJ1bm5pbmcgYSBibG9jawooZGVmdW4gb3JnLXJlZnJlc2gtaW1h Z2VzICgpCiAgIlJlZnJlc2hlcyBpbWFnZXMgZGlzcGxheWVkIGlubGluZS4iCiAgKGludGVyYWN0 aXZlKQogIChvcmctcmVtb3ZlLWlubGluZS1pbWFnZXMpCiAgKG9yZy1kaXNwbGF5LWlubGluZS1p bWFnZXMpKQoKKGFkZC1ob29rICdvcmctYmFiZWwtYWZ0ZXItZXhlY3V0ZS1ob29rCiAgICAgICAg ICAobGFtYmRhICgpIChvcmctcmVmcmVzaC1pbWFnZXMpKSkKIytFTkRfU1JDCioqKiogc2VhcmNo IGFuZCByZXBsYWNlIGZ1bmN0aW9ucwoqKioqKiB6L3JlcGxhY2UtcXVvdGUtMi1SCiAgIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogIChkZWZ1biB6L3JlcGxhY2UtcXVvdGUt Mi1SICgpCiAgICAoaW50ZXJhY3RpdmUpCiAgICAocmVwbGFjZS1zdHJpbmcgIiMrQkVHSU5fUVVP VEUiICIjK0JFR0lOX1NSQyBSIDpzZXNzaW9uIFJvcmcgIDpyZXN1bHRzIG5vbmUiIG5pbCAocG9p bnQtbWluKSAocG9pbnQtbWF4KSkKICAgIChyZXBsYWNlLXN0cmluZyAiIytFTkRfUVVPVEUiICIj K0VORF9TUkMiIG5pbCAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICApCiAgIytFTkRfU1JDCioq KioqIHovcmVwbGFjZS1FWEFNUExFLTItUgogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAg ICAgICA0OWExOTZkNi00MTYwLTRmZDEtOGViOC1kMmVhMDhlY2JjOGUKICAgICAgOkVORDoKICAj K0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAgKGRlZnVuIHovcmVwbGFjZS1F WEFNUExFLTItUiAoKQogICAgKGludGVyYWN0aXZlKQogICAgKHJlcGxhY2Utc3RyaW5nICIjK0JF R0lOX0VYQU1QTEUiICIjK0JFR0lOX1NSQyBSIDpzZXNzaW9uIFJvcmcgIDpyZXN1bHRzIG5vbmUi IG5pbCAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgIChyZXBsYWNlLXN0cmluZyAiIytFTkRf RVhBTVBMRSIgIiMrRU5EX1NSQyIgbmlsIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICkKICAj K0VORF9TUkMKKioqKiogei9jbGVhbi1odG1sLTItb3JnLXBhbmRvYwogICMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICAoZGVmdW4gei9jbGVhbi1odG1sLTItb3JnLXBhbmRv YyAoKQogICAgKGludGVyYWN0aXZlKQogICAgKHJlcGxhY2Utc3RyaW5nICIjK0JFR0lOX1FVT1RF IiAiIytCRUdJTl9TUkMgUiA6c2Vzc2lvbiBSb3JnICA6cmVzdWx0cyBub25lIiBuaWwgKHBvaW50 LW1pbikgKHBvaW50LW1heCkpCiAgICAocmVwbGFjZS1zdHJpbmcgIiMrRU5EX1FVT1RFIiAiIytF TkRfU1JDIiBuaWwgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAgO2NsZWFuIGV4dHJhIFxcCiAg ICAocmVwbGFjZS1zdHJpbmcgIlxcXFwiICIiIG5pbCAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkK ICA7O2NsZWFuIFxfCiAgICAocmVwbGFjZS1zdHJpbmcgIlxcXF8iICJfIiBuaWwgKHBvaW50LW1p bikgKHBvaW50LW1heCkpCiAgICggei9idWxsZXRzLXRvLXNwYWNlcykKICApCiAgIytFTkRfU1JD CgoqKiogZm9vZCAJCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYTc2MTQ3NTktYjQ3 NC00YjVlLTkyODYtNDY1YTNmYzNiZTZjCiAgICA6RU5EOgoqKioqIGluYm94IFJlY2lwZSBUZW1w bGF0ZQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgMjMxMzdkYzYtYzI3MC00MWI5 LWIyZjAtMmY5NzRhY2UzNzJlCiAgICAgOkVORDoKYmFzZWQgb24gdGhlIGZvbGxvd2luZyBibG9n IHBvc3Q6Cmh0dHA6Ly9sZWJlbnN2ZXJydWVja3QuaGFrdGFyLm9yZy9hcnRpY2xlcy9vcmctbW9k ZS1Gb29kLyNjb21tZW50LTEzNDg2MDk4MTEKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQooZGVmdW4gcmVjaXBlLXRlbXBsYXRlICgpCiAgICAgICAgKGludGVyYWN0aXZlKQog ICAgICAgIChnb3RvLWxpbmUgMCkKICAgICAgICAoc2VhcmNoLWZvcndhcmQgIiogSW5ib3giKQog ICAgICAgICAob3JnLW1ldGEtcmV0dXJuKQogICAgICAgICAob3JnLW1ldGFyaWdodCkKICAgICAg ICAgKHNldHEgcmVjaXBlLW5hbWUgKHJlYWQtc3RyaW5nICJUaXRsZTogIikpCiAgICAgICAgIChp bnNlcnQgcmVjaXBlLW5hbWUpCiAgICAgICAgIChvcmctdG9kbyAiQ09PSyIpIAogICAgICAgICAo b3JnLXNldC10YWdzKQogICAgICAgICAob3JnLW1ldGEtcmV0dXJuKQogICAgICAgICAob3JnLW1l dGFyaWdodCkKICAgICAgICAgKGluc2VydCAiSW5ncmlkaWVudHMiKQogICAgICAgICAob3JnLW1l dGEtcmV0dXJuKQogICAgICAgICAoaW5zZXJ0ICJQcmVwZXJhdGlvbiIpCiAgICAgICAgIChzZWFy Y2gtYmFja3dhcmQgcmVjaXBlLW5hbWUpCiAgICAgICAgIChzZXRxIHNyYzEgKHJlYWQtc3RyaW5n ICJUaW1lOiAiKSkKICAgICAgICAgKG9yZy1zZXQtcHJvcGVydHkgIlRpbWUiIHNyYzEpCiAgICAg ICAgIChzZXRxIHNyYzIgKHJlYWQtc3RyaW5nICJSYXRpbmc6ICIpKQogICAgICAgICAob3JnLXNl dC1wcm9wZXJ0eSAiUmF0aW5nIiBzcmMyKQogICAgICAgICAoc2V0cSBzcmMzIChyZWFkLXN0cmlu ZyAiU291cmNlczogIikpCiAgICAgICAgIChvcmctc2V0LXByb3BlcnR5ICJTb3VyY2UiIHNyYzMp CiAgICAgICAgIChzZXRxIHNyYzQgKHJlYWQtc3RyaW5nICJBbW1vdW50OiAiKSkKICAgICAgICAg KG9yZy1zZXQtcHJvcGVydHkgIkFtbW91bnQiIHNyYzQpCiAgICAgICAgIChzZXRxIHNyYzUgKHJl YWQtc3RyaW5nICJGYXY6ICIpKQogICAgICAgICAob3JnLXNldC1wcm9wZXJ0eSAiRmF2IiBzcmM1 KQogICAgICAgICAoc2VhcmNoLWZvcndhcmQgIkluZ3JpZGllbnRzIikKICAgICAgICAgKGV2aWwt b3Blbi1iZWxvdyAxKQogICAgICAgICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lKQopCiMrRU5E X1NSQwoqKioqIEFERCBSZWNpcGUgVGVtcGxhdGUKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6 ICAgICAgIDViYTFjYzU5LWVlOTYtNDFjNi1hMjYwLTAyOWEwYTJjZmQ2MwogICAgIDpFTkQ6Cgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIGJsYW5rLXJlY2lwZS10 ZW1wbGF0ZSAoKQogICAgICAgIChpbnRlcmFjdGl2ZSkKICAgICAgICAgKG9yZy1tZXRhLXJldHVy bikKICAgICAgICAgKG9yZy1tZXRhcmlnaHQpCiAgICAgICAgIChzZXRxIHJlY2lwZS1uYW1lIChy ZWFkLXN0cmluZyAiVGl0bGU6ICIpKQogICAgICAgICAoaW5zZXJ0IHJlY2lwZS1uYW1lKQogICAg ICAgICAob3JnLXNldC10YWdzKQogICAgICAgICAob3JnLW1ldGEtcmV0dXJuKQogICAgICAgICAo b3JnLW1ldGFyaWdodCkKICAgICAgICAgKGluc2VydCAiSW5ncmlkaWVudHMiKQogICAgICAgICAo b3JnLW1ldGEtcmV0dXJuKQogICAgICAgICAoaW5zZXJ0ICJQcmVwZXJhdGlvbiIpCiAgICAgICAg IChzZWFyY2gtYmFja3dhcmQgcmVjaXBlLW5hbWUpCiAgICAgICAgIChzZXRxIHNyYzEgKHJlYWQt c3RyaW5nICJUaW1lOiAiKSkKICAgICAgICAgKG9yZy1zZXQtcHJvcGVydHkgIlRpbWUiIHNyYzEp CiAgICAgICAgIChzZXRxIHNyYzIgKHJlYWQtc3RyaW5nICJSYXRpbmc6ICIpKQogICAgICAgICAo b3JnLXNldC1wcm9wZXJ0eSAiUmF0aW5nIiBzcmMyKQogICAgICAgICAoc2V0cSBzcmMzIChyZWFk LXN0cmluZyAiU291cmNlczogIikpCiAgICAgICAgIChvcmctc2V0LXByb3BlcnR5ICJTb3VyY2Ui IHNyYzMpCiAgICAgICAgIChzZXRxIHNyYzQgKHJlYWQtc3RyaW5nICJBbW1vdW50OiAiKSkKICAg ICAgICAgKG9yZy1zZXQtcHJvcGVydHkgIkFtbW91bnQiIHNyYzQpCiAgICAgICAgIChzZXRxIHNy YzUgKHJlYWQtc3RyaW5nICJGYXY6ICIpKQogICAgICAgICAob3JnLXNldC1wcm9wZXJ0eSAiRmF2 IiBzcmM1KQogICAgICAgICAoc2VhcmNoLWZvcndhcmQgIkluZ3JpZGllbnRzIikKICAgICAgICAg KGV2aWwtb3Blbi1iZWxvdyAxKQogICAgICAgICAoYmVnaW5uaW5nLW9mLXZpc3VhbC1saW5lKQop CiMrRU5EX1NSQwoqKioqIGFkZCBUcmF2ZWwgVGVtcGxhdGUKICAgICA6UFJPUEVSVElFUzoKICAg ICA6SUQ6ICAgICAgIDdmYTE2MThlLThlZDYtNDFiYy05MDJmLWJlYjg3ZDFjMGZkMAogICAgIDpF TkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHRyYXZlbC10 ZW1wbGF0ZSAoKQogICAgICAgIChpbnRlcmFjdGl2ZSkKICAgICAgICAoZ290by1saW5lIDApCiAg ICAgICAgKHNlYXJjaC1mb3J3YXJkICIqIEluYm94IikKICAgICAgICAgKG9yZy1tZXRhLXJldHVy bikKICAgICAgICAgKG9yZy1tZXRhcmlnaHQpCiAgICAgICAgIChzZXRxIHRyYXZlbC1uYW1lIChy ZWFkLXN0cmluZyAiVGl0bGU6ICIpKQogICAgICAgICAoaW5zZXJ0IHRyYXZlbC1uYW1lKQogICAg ICAgICAob3JnLXNldC10YWdzKQogICAgICAgICAob3JnLW1ldGEtcmV0dXJuKQogICAgICAgICAo b3JnLW1ldGFyaWdodCkKICAgICAgICAgKGluc2VydCAiRGV0YWlscyIpCiAgICAgICAgIChvcmct bWV0YS1yZXR1cm4pCiAgICAgICAgIChzZWFyY2gtYmFja3dhcmQgdHJhdmVsLW5hbWUpCiAgICAg ICAgIChzZXRxIHNyYzEgKHJlYWQtc3RyaW5nICJSYXRpbmc6ICIpKQogICAgICAgICAob3JnLXNl dC1wcm9wZXJ0eSAiUmF0aW5nIiBzcmMxKQogICAgICAgICAoc2V0cSBzcmMyIChyZWFkLXN0cmlu ZyAiU291cmNlczogIikpCiAgICAgICAgIChvcmctc2V0LXByb3BlcnR5ICJTb3VyY2UiIHNyYzIp CiAgICAgICAgIChzZXRxIHNyYzMgKHJlYWQtc3RyaW5nICJGYXY6ICIpKQogICAgICAgICAob3Jn LXNldC1wcm9wZXJ0eSAiRmF2IiBzcmMzKQogICAgICAgICAoc2VhcmNoLWZvcndhcmQgIkRldGFp bHMiKQogICAgICAgICAoZXZpbC1vcGVuLWJlbG93IDEpCikKIytFTkRfU1JDCgoqKiogZW1haWwg b3JnIGhlYWRlcnMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICAwMGVlOTQ3Yi05YzNh LTQwNTUtYjc1NS0xYjc0MTFjMGYzODUKICAgIDpFTkQ6CioqKiogc2VuZCBoZWFkZXIgdmlhIEVt YWlsIAkJIAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNGEyNTc5ZWYtZjQyMy00 NzQ4LWFhODctMGU5MzA5NTY3MGVjCiAgICAgOkVORDoKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKICAgKGRlZnVuIHovb3JnLWVtYWlsLWhlYWRpbmcgKCkKICAgICAiU2Vu ZCB0aGUgY3VycmVudCBvcmctbW9kZSBoZWFkaW5nIGFzIHRoZSBib2R5IG9mIGFuIGVtYWlsLCB3 aXRoIGhlYWRsaW5lIGFzIHRoZSBzdWJqZWN0LgogICB1c2UgdGhlc2UgcHJvcGVydGllcwogICBU TwogICBDQwogICBCQ0MKICAgT1RIRVItSEVBREVSUyBpcyBhbiBhbGlzdCBzcGVjaWZ5aW5nIGFk ZGl0aW9uYWwKICAgaGVhZGVyIGZpZWxkcy4gIEVsZW1lbnRzIGxvb2sgbGlrZSAoSEVBREVSIC4g VkFMVUUpIHdoZXJlIGJvdGgKICAgSEVBREVSIGFuZCBWQUxVRSBhcmUgc3RyaW5ncy4KICAgU2F2 ZSB3aGVuIGl0IHdhcyBzZW50IGFzIGEgU0VOVCBwcm9wZXJ0eS4gdGhpcyBpcyBvdmVyd3JpdHRl biBvbgogICBzdWJzZXF1ZW50IHNlbmRzLiIKICAgICAoaW50ZXJhY3RpdmUpCiAgICAgOyBzdG9y ZSBsb2NhdGlvbi4KICAgICAoc2V0cSAqZW1haWwtaGVhZGluZy1wb2ludCogKHNldC1tYXJrZXIg KG1ha2UtbWFya2VyKSAocG9pbnQpKSkKICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgIChvcmct bWFyay1zdWJ0cmVlKQogICAgICAgKGxldCAoKGNvbnRlbnQgKGJ1ZmZlci1zdWJzdHJpbmcgKHBv aW50KSAobWFyaykpKQogICAgICAgICAgICAgKFRPIChvcmctZW50cnktZ2V0IChwb2ludCkgIlRP IiB0KSkKICAgICAgICAgICAgIChTVUJKRUNUIChudGggNCAob3JnLWhlYWRpbmctY29tcG9uZW50 cykpKQogICAgICAgICAgICAgKE9USEVSLUhFQURFUlMgKGV2YWwgKG9yZy1lbnRyeS1nZXQgKHBv aW50KSAiT1RIRVItSEVBREVSUyIpKSkKICAgICAgICAgICAgIChjb250aW51ZSBuaWwpCiAgICAg ICAgICAgICAoc3dpdGNoLWZ1bmN0aW9uIG5pbCkKICAgICAgICAgICAgICh5YW5rLWFjdGlvbiBu aWwpCiAgICAgICAgICAgICAoc2VuZC1hY3Rpb25zICcoKGVtYWlsLXNlbmQtYWN0aW9uIC4gbmls KSkpCiAgICAgICAgICAgICAocmV0dXJuLWFjdGlvbiAnKGVtYWlsLWhlYWRpbmctcmV0dXJuKSkp CiAgICAgICAgCiAgICAgICAgIChjb21wb3NlLW1haWwgVE8gU1VCSkVDVCBPVEhFUi1IRUFERVJT IGNvbnRpbnVlIHN3aXRjaC1mdW5jdGlvbiB5YW5rLWFjdGlvbiBzZW5kLWFjdGlvbnMgcmV0dXJu LWFjdGlvbikKICAgICAgICAgKG1lc3NhZ2UtZ290by1ib2R5KQogICAgICAgICAoaW5zZXJ0IGNv bnRlbnQpCiAgICAgICAgICh3aGVuIENDCiAgICAgICAgICAgKG1lc3NhZ2UtZ290by1jYykKICAg ICAgICAgICAoaW5zZXJ0IENDKSkKICAgICAgICAgKHdoZW4gQkNDCiAgICAgICAgICAgKG1lc3Nh Z2UtZ290by1iY2MpCiAgICAgICAgICAgKGluc2VydCBCQ0MpKQogICAgICAgICAoaWYgVE8KICAg ICAgICAgICAgIChtZXNzYWdlLWdvdG8tYm9keSkKICAgICAgICAgICAobWVzc2FnZS1nb3RvLXRv KSkpKSkKCiAjK0VORF9TUkMKKioqKiBTZW5kIGVtYWlsIHRvIG15c2VsZgogICAgIDpQUk9QRVJU SUVTOgogICAgIDpJRDogICAgICAgYjlhMmNkMTctNzc3Mi00NjI5LTgzMDQtODU3MzM3M2NkNjMz CiAgICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKIChkZWZ1biB6L29yZy1lbWFpbC1o ZWFkaW5nLW1lICgpCiAgICJTZW5kIHRoZSBjdXJyZW50IG9yZy1tb2RlIGhlYWRpbmcgYXMgdGhl IGJvZHkgb2YgYW4gZW1haWwsIHdpdGggaGVhZGxpbmUgYXMgdGhlIHN1YmplY3QuIgogICAoaW50 ZXJhY3RpdmUpCiAgIChzYXZlLWV4Y3Vyc2lvbgogICAgIChvcmctbWFyay1zdWJ0cmVlKQogICAg IChsZXQgKChjb250ZW50IChidWZmZXItc3Vic3RyaW5nIChwb2ludCkgKG1hcmspKSkKICAgICAg ICAgICAoU1VCSkVDVCAobnRoIDQgKG9yZy1oZWFkaW5nLWNvbXBvbmVudHMpKSkpCgogICAgICAg KGNvbXBvc2UtbWFpbCAiaXplbHRha0BnbWFpbC5jb20iIFNVQkpFQ1QpCiAgICAgICAobWVzc2Fn ZS1nb3RvLWJvZHkpCiAgICAgICAoaW5zZXJ0IGNvbnRlbnQpCiAgICAgICAobWVzc2FnZS1zZW5k KQogICAgICAgKG1lc3NhZ2Uta2lsbC1idWZmZXIpKSkpCiAjK0VORF9TUkMKCiAjK1JFU1VMVFM6 CiA6IHovb3JnLWVtYWlsLWhlYWRpbmctbWUKKioqIGV4cG9ydCBtZWV0aW5nIGZpbGUgdG8gaWNz CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovZXhwb3J0LW1l ZXRpbmdzLXRvLWljcyAoKQooaW50ZXJhY3RpdmUpCih3aXRoLWN1cnJlbnQtYnVmZmVyIChmaW5k LWZpbGUtbm9zZWxlY3QgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL21lZXRpbmdzLm9y ZyIpCihyZW5hbWUtZmlsZSAob3JnLWljYWxlbmRhci1leHBvcnQtdG8taWNzKSAiL3NzaDprYXJp ZjovaG9tZS96ZWx0YWsvcHVibGljX2h0bWwiIHQpCihtZXNzYWdlICJleHBvcnRlZCB0byBpY3Mi KSkpCiMrRU5EX1NSQwoKcmVuYW1lLWZpbGUgaXMgYW4gaW50ZXJhY3RpdmUgYnVpbHQtaW4gZnVu Y3Rpb24gaW4gYEMgc291cmNlIGNvZGUnLgoKKHJlbmFtZS1maWxlIEZJTEUgTkVXTkFNRSAmb3B0 aW9uYWwgT0stSUYtQUxSRUFEWS1FWElTVFMpCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBjaGVjayB0 aGUgbWFudWFscy4KClJlbmFtZSBGSUxFIGFzIE5FV05BTUUuICBCb3RoIGFyZ3MgbXVzdCBiZSBz dHJpbmdzLgpJZiBmaWxlIGhhcyBuYW1lcyBvdGhlciB0aGFuIEZJTEUsIGl0IGNvbnRpbnVlcyB0 byBoYXZlIHRob3NlIG5hbWVzLgpTaWduYWxzIGEgYGZpbGUtYWxyZWFkeS1leGlzdHMnIGVycm9y IGlmIGEgZmlsZSBORVdOQU1FIGFscmVhZHkgZXhpc3RzCnVubGVzcyBvcHRpb25hbCB0aGlyZCBh cmd1bWVudCBPSy1JRi1BTFJFQURZLUVYSVNUUyBpcyBub24tbmlsLgpBIG51bWJlciBhcyB0aGly ZCBhcmcgbWVhbnMgcmVxdWVzdCBjb25maXJtYXRpb24gaWYgTkVXTkFNRSBhbHJlYWR5IGV4aXN0 cy4KVGhpcyBpcyB3aGF0IGhhcHBlbnMgaW4gaW50ZXJhY3RpdmUgdXNlIHdpdGggTS14LgoKCioq KiBjeWNsZSB0aHJvdWdoIHByZWRlZmluZCBvcmdtb2RlIGZpbGVzCiAgICA6UFJPUEVSVElFUzoK ICAgIDpJRDogICAgICAgOTAyZWQxZWItYjU4Zi00Yjg4LTgyOTgtOGM3MWZkZjNkMWJhCiAgICA6 RU5EOgoKaHR0cHM6Ly9tYWlsLmdvb2dsZS5jb20vbWFpbC91LzAvI3N0YXJyZWQvMTUwN2U5ODJk YTAxYTllYgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooc2V0cSB6L2Zv b2QtZmlsZXMgJygiL2hvbWUvemVsdGFrL29yZy9maWxlcy9hZ2VuZGEvZm9vZC5vcmciICIvaG9t ZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS90cmF2ZWwub3JnIiApKQoKKGRlZnVuIHovb3JnLW5l eHQtZm9vZC1maWxlICgpCiAoaW50ZXJhY3RpdmUpCiAobGV0ICgoZiAocG9wIHovZm9vZC1maWxl cykpKQogICAoYWRkLXRvLWxpc3QgJ3ovZm9vZC1maWxlcyBmIHQpCiAgIChmaW5kLWZpbGUgZikp KQoKKGRlZnVuIHovb3JnLXByZXZpb3VzLWZvb2QtZmlsZSAoKQogIChpbnRlcmFjdGl2ZSkKICAo bGV0KiAoKHItei9mb29kLWZpbGVzIChyZXZlcnNlIHovZm9vZC1maWxlcykpCiAgICAgICAgIChm IChwb3Agci16L2Zvb2QtZmlsZXMpKSkKICAgIChhZGQtdG8tbGlzdCAnci16L2Zvb2QtZmlsZXMg ZiB0KQogICAgKHNldHEgei9mb29kLWZpbGVzIChyZXZlcnNlIHItei9mb29kLWZpbGVzKSkKICAg IChmaW5kLWZpbGUgZikpKQoKOyhnbG9iYWwtc2V0LWtleSAoa2JkICJzLTxyaWdodD4iKSAnbXkt bmV4dC1maWxlKQo7KGdsb2JhbC1zZXQta2V5IChrYmQgInMtPGxlZnQ+IikgJ215LXByZXZpb3Vz LWZpbGUpCgojK0VORF9TUkMKKioqIGV4cG9ydGluZwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIDdjYzJkZDI1LTgzZWQtNDQ1ZC05ZjkyLTU3NTdiNGU1ZGIxOQogICAgOkVORDoKKioq KiBQdWJsaXNoIHRvIHJldmVhbCAKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKIChkZWZ1biB6L29yZy1yZXZlYWwtcHVibGlzaC10by1odG1sIChwbGlzdCBmaWxlbmFtZSBw dWItZGlyKQogICAiUHVibGlzaCBhbiBvcmcgZmlsZSB0byByZXZlYWwuanMgSFRNTCBQcmVzZW50 YXRpb24uCiBGSUxFTkFNRSBpcyB0aGUgZmlsZW5hbWUgb2YgdGhlIE9yZyBmaWxlIHRvIGJlIHB1 Ymxpc2hlZC4gIFBMSVNUCiBpcyB0aGUgcHJvcGVydHkgbGlzdCBmb3IgdGhlIGdpdmVuIHByb2pl Y3QuICBQVUItRElSIGlzIHRoZQogcHVibGlzaGluZyBkaXJlY3RvcnkuIFJldHVybnMgb3V0cHV0 IGZpbGUgbmFtZS4iCiAob3JnLXB1Ymxpc2gtb3JnLXRvICdyZXZlYWwgZmlsZW5hbWUgIi5odG1s IiBwbGlzdCBwdWItZGlyKQogICApCiAjK0VORF9TUkMKICAgIAoqKioqIGV4cG9ydCB0byByZXZl YWwgYW5kIGJyb3dzZQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgZjBhZDBmZjAt MzRhYS00ZGY2LTlkNDAtYTUzOThhOWZjNWY2CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy1leHBvcnQtcmV2ZWwtYnJvd3NlICgpCiJl eHBvcnQgdG8gb3JnIHJldmVhbCIKKGludGVyYWN0aXZlKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCihvcmctcmV2ZWFsLWV4cG9ydC10by1odG1sLWFuZC1icm93c2UpCikKIytFTkRf U1JDCioqKiogZXhwb3J0IHRvIHJldmVhbCBodG1sICBmaWxlCiAgICAgOlBST1BFUlRJRVM6CiAg ICAgOklEOiAgICAgICBmNjQ3Y2JiNy0xZTE1LTRkNmItODQ1NC1iNGRhZjQ2OGZmYWUKICAgICA6 RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAoZGVmdW4gei9vcmct ZXhwb3J0LXJldmVsLWh0bWwgKCkKICJleHBvcnQgdG8gb3JnIHJldmVhbCIKIChpbnRlcmFjdGl2 ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogKG9yZy1yZXZlYWwtZXhwb3J0LXRv LWh0bWwpCiApCiAjK0VORF9TUkMKKioqKiBleHBvcnQgc3VidHJlZSB0byBmaWxlCiAgICAgOlBS T1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAwM2RlNWE5My00M2EwLTQ2NmUtOGNmNi1kNWZlMjE2 NzlmODQKICAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAo ZGVmdW4gei9vcmctZXhwb3J0LXJldmVsLXN1YnRyZWUgKCkKICJleHBvcnQgdG8gb3JnIHJldmVh bCIKIChpbnRlcmFjdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogKG9yZy1y ZXZlYWwtZXhwb3J0LWN1cnJlbnQtc3VidHJlZSkKICkKICMrRU5EX1NSQwoqKioqIGV4cG9ydCBj dXJyZW50IG9yZyBidWZmZXIgdG8gaHRtbCBib29rbWFyayBmaWxlCiAgICAgOlBST1BFUlRJRVM6 CiAgICAgOklEOiAgICAgICAwMmM2OWYzMS03YTJjLTQ0YWYtYmZjMC04YjMwYzgzZDVhMjEKICAg ICA6RU5EOgogaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLW9yZ21vZGUv MjAwOS0wOS9tc2cwMDgzNC5odG1sCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwCiAoZGVmdW4gei9v cmctZXhwb3J0LWh0bWwtYm9va21hcmtzICgpCiAgICJFeHRyYWN0IGJvb2ttYXJrcyBmcm9tIHRo ZSBjdXJyZW50IG9yZyBmaWxlIGFuZCBjcmVhdGUgYW4gaHRtbCBmaWxlIHRoYXQKIGNhbiBiZSBp bXBvcnRlZCBpbnRvIGEgd2ViIGJyb3dzZXIuIgogICAoaW50ZXJhY3RpdmUpCiAgICh1bmxlc3Mg KGVxIG1ham9yLW1vZGUgJ29yZy1tb2RlKSAKICAgICAoZXJyb3IgIk5vdCBpbiBhbiBvcmcgYnVm ZmVyIikpCiAgIChsZXQgKChmaWxlIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IChidWZmZXItZmls ZS1uYW1lKSkpCiAgICAgICAgIGJvb2ttYXJrcykKICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIG9yZy1i cmFja2V0LWxpbmstYW5hbHl0aWMtcmVnZXhwIG5pbCB0KQogICAgICAgKHdoZW4gKGVxdWFsICht YXRjaC1zdHJpbmcgMikgImh0dHAiKQogICAgICAgICAobGV0ICgodXJsIChjb25jYXQgKG1hdGNo LXN0cmluZyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLXN0cmluZyAzKSkp CiAgICAgICAgICAgICAgIChkZXNjIChtYXRjaC1zdHJpbmcgNSkpKQogICAgICAgICAgIChwdXNo IChjb25jYXQgIjxEVD48QSBIUkVGPVwiIiB1cmwgIlwiPiIgZGVzYyAiPC9BPlxuIikgYm9va21h cmtzKSkpKQogICAgICh3aXRoLXRlbXAtYnVmZmVyIAogICAgICAgKGluc2VydAoJIjwhRE9DVFlQ RSBORVRTQ0FQRS1Cb29rbWFyay1maWxlLTE+XG4iCgkiPEhUTUw+XG4iCgkiPE1FVEEgSFRUUC1F UVVJVj1cIkNvbnRlbnQtVHlwZVwiIENPTlRFTlQ9XCJ0ZXh0L2h0bWw7IAogY2hhcnNldD1VVEYt OFwiPlxuIgoJIjxUaXRsZT5Cb29rbWFya3M8L1RpdGxlPlxuIgoJIjxIMT5Cb29rbWFya3M8L0gx PlxuIgoJIjxEVD48SDMgRk9MREVEPiIgZmlsZSAiICgiIChmb3JtYXQtdGltZS1zdHJpbmcgIiVZ LSVtLSVkIikgIik8L0gzPlxuIgoJIjxETD48cD5cbiIpCiAgICAgICAoYXBwbHkgJ2luc2VydCAo bnJldmVyc2UgYm9va21hcmtzKSkKICAgICAgIChpbnNlcnQKCSI8L0RMPjxwPlxuIgoJIjwvSFRN TD4iKQogICAgICAgKHdyaXRlLWZpbGUgKGNvbmNhdCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9u IGZpbGUpIAogIi1ib29rbWFya3MuaHRtbCIpKSkpKSkKICMrRU5EX1NSQwoKICMrUkVTVUxUUzoK IDogei9vcmctZXhwb3J0LWh0bWwtYm9va21hcmtzCgoqKioqIG9yZyBleHBvcnQgdG8gcGRmIG1h bnVhbCBtYWNybwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYmMxOWQwMjUtMDc2 ZS00MTg5LTg2YWEtNzVmMTliMDNmMWQ1CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihmc2V0ICdleHBkZgogICAgICBbP1xDLWMgP1xDLWUgP1xsID9cbyBd KQojK0VORF9TUkMKCgoqKiogb3JnLXRlbGVwb3J0CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgNmNkODhkZGEtYWFmOC00ZDhmLTk4YzktZDBjZWRjOTM1ODI4CiAgICA6RU5EOgpodHRw Oi8va2l0Y2hpbmdyb3VwLmNoZW1lLmNtdS5lZHUvYmxvZy8yMDE2LzAzLzE4L09yZy10ZWxlcG9y dC1oZWFkbGluZXMvCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1 biBvcmctdGVsZXBvcnQgKCZvcHRpb25hbCBhcmcpCiAgIlRlbGVwb3J0IHRoZSBjdXJyZW50IGhl YWRpbmcgdG8gYWZ0ZXIgYSBoZWFkbGluZSBzZWxlY3RlZCB3aXRoIGF2eS4KV2l0aCBhIHByZWZp eCBBUkcgbW92ZSB0aGUgaGVhZGxpbmUgdG8gYmVmb3JlIHRoZSBzZWxlY3RlZApoZWFkbGluZS4g V2l0aCBhIG51bWVyaWMgcHJlZml4LCBzZXQgdGhlIGhlYWRsaW5lIGxldmVsLiBJZiBBUkcKaXMg cG9zaXRpdmUsIG1vdmUgYWZ0ZXIsIGFuZCBpZiBuZWdhdGl2ZSwgbW92ZSBiZWZvcmUuIgogIChp bnRlcmFjdGl2ZSAiUCIpCiAgOzsgS2lsbCBjdXJyZW50IGhlYWRsaW5lCiAgKG9yZy1tYXJrLXN1 YnRyZWUpCiAgKGtpbGwtcmVnaW9uIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpCiAg OzsgSnVtcCB0byBhIHZpc2libGUgaGVhZGxpbmUKICAoYXZ5LXdpdGggYXZ5LWdvdG8tbGluZSAo YXZ5LS1nZW5lcmljLWp1bXAgIl5cXCorIiBuaWwgYXZ5LXN0eWxlKSkKICAoY29uZAogICA7OyBN b3ZlIGJlZm9yZSAgYW5kIGNoYW5nZSBoZWFkbGluZSBsZXZlbAogICAoKGFuZCAobnVtYmVycCBh cmcpICg+IDAgYXJnKSkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoeWFuaykpCiAgICA7OyBh cmcgaXMgd2hhdCB3ZSB3YW50LCBzZWNvbmQgaXMgd2hhdCB3ZSBoYXZlCiAgICA7OyBpZiBuIGlz IHBvc2l0aXZlLCB3ZSBuZWVkIHRvIGRlbW90ZSAoaW5jcmVhc2UgbGV2ZWwpCiAgICAobGV0ICgo biAoLSAoYWJzIGFyZykgKGNhciAob3JnLWhlYWRpbmctY29tcG9uZW50cykpKSkpCiAgICAgIChj bC1sb29wIGZvciBpIGZyb20gMSB0byAoYWJzIG4pCiAgICAgICAgICAgICAgIGRvCiAgICAgICAg ICAgICAgIChpZiAoPiAwIG4pCiAgICAgICAgICAgICAgICAgICAob3JnLXByb21vdGUtc3VidHJl ZSkKICAgICAgICAgICAgICAgICAob3JnLWRlbW90ZS1zdWJ0cmVlKSkpKSkKICAgOzsgTW92ZSBh ZnRlciBhbmQgY2hhbmdlIGxldmVsCiAgICgoYW5kIChudW1iZXJwIGFyZykgKDwgMCBhcmcpKQog ICAgKG9yZy1tYXJrLXN1YnRyZWUpCiAgICAoZ290by1jaGFyIChyZWdpb24tZW5kKSkKICAgICh3 aGVuIChlb2JwKSAoaW5zZXJ0ICJcbiIpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh5YW5r KSkKICAgIDs7IG4gaXMgd2hhdCB3ZSB3YW50IGFuZCBzZWNvbmQgaXMgd2hhdCB3ZSBoYXZlCiAg ICA7OyBpZiBuIGlzIHBvc2l0aXZlLCB3ZSBuZWVkIHRvIGRlbW90ZQogICAgKGxldCAoKG4gKC0g KGFicyBhcmcpIChjYXIgKG9yZy1oZWFkaW5nLWNvbXBvbmVudHMpKSkpKQogICAgICAoY2wtbG9v cCBmb3IgaSBmcm9tIDEgdG8gKGFicyBuKQogICAgICAgICAgICAgICBkbwogICAgICAgICAgICAg ICAoaWYgKD4gMCBuKSAob3JnLXByb21vdGUtc3VidHJlZSkKICAgICAgICAgICAgICAgICAob3Jn LWRlbW90ZS1zdWJ0cmVlKSkpKSkKCiAgIDs7IG1vdmUgdG8gYmVmb3JlIHNlbGVjdGlvbgogICAo KGVxdWFsIGFyZyAnKDQpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICh5YW5rKSkpCiAgIDs7 IG1vdmUgdG8gYWZ0ZXIgc2VsZWN0aW9uCiAgICh0CiAgICAob3JnLW1hcmstc3VidHJlZSkKICAg IChnb3RvLWNoYXIgKHJlZ2lvbi1lbmQpKQogICAgKHdoZW4gKGVvYnApIChpbnNlcnQgIlxuIikp CiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHlhbmspKSkpCiAgKG91dGxpbmUtaGlkZS1sZWF2 ZXMpKQoKIytFTkRfU1JDCioqKiBjbG9uZSBzdWJ0cmVlIHdpdGggbmV3IG9yZy1pZCAKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9vcmctY2xvbmUtc3VidHJl ZSAoKQogICJDbG9uZSB0aGUgY3VycmVudCBzdWJ0cmVlIGFuZCBjaGFuZ2UgdGhlIGlkLiIKICAo aW50ZXJhY3RpdmUpCgogICh3aGVuIChub3QgKGxvb2tpbmctYXQgIl5cXCoiKSkKICAgIChyZS1z ZWFyY2gtYmFja3dhcmQgIl5cXCoiKSkKCiAgKG9yZy1jb3B5LXN1YnRyZWUpCiAgKGdvdG8tY2hh ciAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmVuZCAob3JnLWVsZW1lbnQtY29udGV4dCkpKQoKICAo b3JnLXBhc3RlLXN1YnRyZWUpCiAgKG9yZy1pZC1nZXQtY3JlYXRlIHQpKQojK0VORF9TUkMKCgoq KiogbW92ZW1lbnRzIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDg2MzFjMDNiLTA5 N2ItNDFhZC04NzliLWQ5YmEyODY2OTI1OAogICAgOkVORDoKKioqKiBtb3ZlIHRvIHRvcCBhbmQg Y29sbGFwc2UKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDE0ZDBhYTYwLTk3NWIt NGZiMS05MDY1LTQ1NjUwYjY0YWZjMQogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQooZGVmdW4gei9vcmctbW92ZS10b3AtY29sbGFwc2UgICgpCiAgICAgKGlu dGVyYWN0aXZlKSAgICAgICAgICAgIAogICAgIChiZWdpbm5pbmctb2YtYnVmZmVyKSAgICAgICAg ICAgICAgICAgICAgCiAgICAgKGhpZGUtc3VibGV2ZWxzIDEpCikKIytFTkRfU1JDCioqKiogZ28g dG8gdG9wIGhlYWRlcgogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYzE5MjViOTIt YjRlNC00ZGU5LTg1ZTAtZjFkOWRmOTE0MmJmCiAgICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQo7IFNwZWVkIGNvbW1hbmRzIGFyZSByZWFsbHkgdXNlZnVsLCBi dXQgSSBvZnRlbiB3YW50IHRvIG1ha2UgdXNlIG9mCjsgdGhlbSB3aGVuIEknbSBub3QgYXQgdGhl IGJlZ2lubmluZyBvZiBhIGhlYWRlci4gVGhzIGNvbW1hbmQgYnJpbmdzCjsgeW91IGJhY2sgdG8g dGhlIGJlZ2lubmluZyBvZiBhbiBpdGVtJ3MgaGVhZGVyLCBzbyB0aGF0IHlvdSBjYW4gZG8KOyBz cGVlZCBjb21tYW5kcy4KIAooZGVmdW4gb3JnLWdvLXNwZWVkICgpCiJHb2VzIHRvIHRoZSBiZWdp bm5pbmcgb2YgYW4gZWxlbWVudCdzIGhlYWRlciwgc28gdGhhdCB5b3UgY2FuCmV4ZWN1dGUgc3Bl ZWQgY29tbWFuZHMuIgooaW50ZXJhY3RpdmUpCih3aGVuIChlcXVhbCBtYWpvci1tb2RlICdvcmct bW9kZSkKKGlmIChvcmctYXQtaGVhZGluZy1wKQoob3JnLWJlZ2lubmluZy1vZi1saW5lKQoob3Jn LXVwLWVsZW1lbnQpKSkpCiAKIytFTkRfU1JDCioqKiBtb3ZlIGNhcHR1cmUgdG8gY3VycmVudCBh dCBwb2ludAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGI1NjYxODc5LTU3NzAtNDAy Ni1iMTAxLTViYTZmZDVlZDRkMAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJl c3VsdHMgbm9uZQooZGVmdW4gei9vcmctbW92ZS1wb2ludC10by1jYXB0dXJlICgpCiAgKGNvbmQg KChvcmctYXQtaGVhZGluZy1wKSAob3JnLWJlZ2lubmluZy1vZi1saW5lKSkKICAgICAgICAodCAo b3JnLXByZXZpb3VzLXZpc2libGUtaGVhZGluZyAxKSkpKQojK0VORF9TUkMKKioqIGhlbG0gdGFn Z2luZwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGMxMDcyN2NjLWQ5ZDUtNDRjMS04 ZjI1LWUzZWNmZDc0ZTcwMAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3Vs dHMgbm9uZQooZGVmdW4gei9vcmctaGVsbS10YWdnZXIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGhl bG0KICAgOnNvdXJjZXMKICAgYCgobmFtZSAuICJIRUxNIHRhZyBzZXR0ZXIiKQogICAgIChjYW5k aWRhdGVzIC4gLChtYXBjYXIgJ2NhciBvcmctdGFnLXBlcnNpc3RlbnQtYWxpc3QgKSkKICAgICAo YWN0aW9uIC4gKGxhbWJkYSAoY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgIChvcmctc2V0LXRh Z3MtdG8gKGhlbG0tbWFya2VkLWNhbmRpZGF0ZXMpKSkpKSkpCiMrRU5EX1NSQwoqKiogY3VzdG9t IG9yZyBoZWFkZXIKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICAxNDI2ZDBlNS1mYzNm LTQ5OWYtYTQ3MC1lZjY0NjhmZTZjMWIKICAgIDpFTkQ6CnRoaXMgaXMgYW4gZXhhbXBsZSBvZiBj cmVhdGluZyBhIGN1c3RvbSBmdW5jdGlvbiB0aGF0IGluc2VydHMgYW4gb3JnIG1vZGUgaGVhZGVy cyB3aXRoIGFkZGVkIHN0dWZmIGxpa2UgYSBwcm9wZXJ0eSBkcmF3ZXIgYW5kIHBsYWNlcyBwb2lu dCBhZnRlciB0aGUgb3JnIGFzdGVyaXguIGJhc2VkIG9uIHRoaXMgZW1haWw6IGh0dHBzOi8vbWFp bC5nb29nbGUuY29tL21haWwvdS8wLyNzdGFycmVkLzE1MjRhOTJhYzRjZmZhZWQKCiMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIG15LWhlYWRpbmcgKCkKICAoaW50 ZXJhY3RpdmUpCiAgKG9yZy1pbnNlcnQtaGVhZGluZykKICAob3JnLWlkLWdldC1jcmVhdGUpCiAg KHNhdmUtZXhjdXJzaW9uCQkJOy0+IGFkZCB0aW1lIHN0YW1wCiAgICAob3JnLWVuZC1vZi1tZXRh LWRhdGEtYW5kLWRyYXdlcnMpCiAgICAobmV3bGluZSkKICAgIChvcmctdGltZS1zdGFtcC1pbmFj dGl2ZSAnKDE2KSkpKQojK0VORF9TUkMKKioqIG9yZy1pZHMgdG8gYWxsIGhlYWRlcnMgaW4gZmls ZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDYxZmVhYzkwLTZjNGMtNDk4MS04Mjc5 LTBkMzUwNjAzMzUxMAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCihkZWZ1biB6L29yZy1hZGQtaWRzLXRvLWhlYWRsaW5lcy1pbi1maWxlICgpCiAgKGludGVy YWN0aXZlKQogIChvcmctbWFwLWVudHJpZXMgJ29yZy1pZC1nZXQtY3JlYXRlKSkKIytFTkRfU1JD CioqKiBsaW5rIHRvIGEgaGVhZGVyIHVzaW5nIHJlZmlsZSBhbmQgY29tcGxldGlvbiAKICAgIDpQ Uk9QRVJUSUVTOgogICAgOklEOiAgICAgICAzYmUyYWZlZi0zZGUwLTQzZDItOGYyNi0zM2UyNTE3 OTE0YjkKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsg UHJvbXB0IGZvciBwYXRoIGNvbXBsZXRpb24gd2hlbiBhbiBpZCB0eXBlIGxpbmsgd2hlbiBvcmct aW5zZXJ0LWxpbmsgaXMgY2FsbGVkCjs7IFVzZSB3aXRoIEMtYyBDLWwgaWQ6IFJFVAooZGVmdW4g b3JnLWlkLWNvbXBsZXRlLWxpbmsgKCZvcHRpb25hbCBhcmcpCiAgIkNyZWF0ZSBhbiBpZDogbGlu ayB1c2luZyBjb21wbGV0aW9uIgogIChjb25jYXQgImlkOiIKICAgICAgICAgIChvcmctaWQtZ2V0 LXdpdGgtb3V0bGluZS1wYXRoLWNvbXBsZXRpb24gb3JnLXJlZmlsZS10YXJnZXRzKSkpCiMrRU5E X1NSQwoqKiogaW5zZXJ0IGtleSBjb21ibwpodHRwOi8vZW5kbGVzc3BhcmVudGhlc2VzLmNvbS9p bnNlcnRpbmctdGhlLWtiZC10YWctaW4tb3JnLW1vZGUuaHRtbAojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCihldmFsLWFmdGVyLWxvYWQgJ294LWh0bWwKICA7OyBJZiB5b3Ug cHJlZmVyIHRvIHVzZSB+IGZvciA8Y29kZT4gdGFncy4gUmVwbGFjZSAiY29kZSIgd2l0aAogIDs7 ICJ2ZXJiYXRpbSIgaGVyZSwgYW5kIHJlcGxhY2UgIn4iIHdpdGggIj0iIGJlbG93LgogICcocHVz aCAnKGNvZGUgLiAiPGtiZD4lczwva2JkPiIpIG9yZy1odG1sLXRleHQtbWFya3VwLWFsaXN0KSkK CihkZWZpbmUta2V5IG9yZy1tb2RlLW1hcCAiXEMtY2siICMnZW5kbGVzcy9pbnNlcnQta2V5KQoo ZGVmdW4gZW5kbGVzcy9pbnNlcnQta2V5IChrZXkpCiAgIkFzayBmb3IgYSBrZXkgdGhlbiBpbnNl cnQgaXRzIGRlc2NyaXB0aW9uLgpXaWxsIHdvcmsgb24gYm90aCBvcmctbW9kZSBhbmQgYW55IG1v ZGUgdGhhdCBhY2NlcHRzIHBsYWluIGh0bWwuIgogIChpbnRlcmFjdGl2ZSAia1R5cGUga2V5IHNl cXVlbmNlOiAiKQogIChsZXQqICgob3JncCAoZGVyaXZlZC1tb2RlLXAgJ29yZy1tb2RlKSkKICAg ICAgICAgKHRhZyAoaWYgb3JncCAi44CQJXPjgJEiICI8a2JkPiVzPC9rYmQ+IikpKQogICAgKGlm IChudWxsIChlcXVhbCBrZXkgIlxDLW0iKSkKICAgICAgICAoaW5zZXJ0IAogICAgICAgICAoZm9y bWF0IHRhZyAoaGVscC1rZXktZGVzY3JpcHRpb24ga2V5IG5pbCkpKQogICAgICA7OyBJZiB5b3Ug anVzdCBoaXQgUkVULgogICAgICAoaW5zZXJ0IChmb3JtYXQgdGFnICIiKSkKICAgICAgKGZvcndh cmQtY2hhciAoaWYgb3JncCAtMSAtNikpKSkpCiMrRU5EX1NSQwoqKiogcmVmaWxlIHRvIHByZWRl ZmluZWQgb3JnIGZpbGVzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZGM4YTFhNGIt M2FkMi00YWQwLWIyNTMtNTcyNGFjOGYzOTc2CiAgICA6RU5EOgpodHRwOi8vZW1hY3Muc3RhY2tl eGNoYW5nZS5jb20vcXVlc3Rpb25zLzgwNDUvb3JnLXJlZmlsZS10by1hLWtub3duLWZpeGVkLWxv Y2F0aW9uCgpyZWZpbmUgZnVuY3Rpb24gdG8gaW5jbHVkZSBoZWxtLml2eSBmb3Igc3ViIHRhcmdl dHMgaW4gYSBmaWxlPwoqKioqIGJhc2UgZnVuY3Rpb24gCiAgICAgOlBST1BFUlRJRVM6CiAgICAg OklEOiAgICAgICBiMGZkZDljMy05MTQ3LTQ1ZjUtOWYzZi1mMjYzMDE5MWYxYzQKICAgICA6RU5E Ogp0aGlzIGlzIHRoZSBmdW5jdGlvbiB1c2VkIGluIGJvdHRvbSBmb25jdGlvbiB0aGF0IGhlbHBz IHJlZmlsZSB0byBhIHNwZWNpZmljIGxvY2F0aW9uIGhlYWRlciAKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovb3JnLXJlZmlsZS10byAoZmlsZSBoZWFkbGlu ZSkKICAgICJNb3ZlIGN1cnJlbnQgaGVhZGxpbmUgdG8gc3BlY2lmaWVkIGxvY2F0aW9uIgogICAg KGxldCAoKHBvcyAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAoZmluZC1maWxlIGZp bGUpCiAgICAgICAgICAgICAgICAgKG9yZy1maW5kLWV4YWN0LWhlYWRsaW5lLWluLWJ1ZmZlciBo ZWFkbGluZSkpKSkKICAgICAgKG9yZy1yZWZpbGUgbmlsIG5pbCAobGlzdCBoZWFkbGluZSBmaWxl IG5pbCBwb3MpKSkpCgojK0VORF9TUkMKCioqKiogcmVmaWxlIHRvIFRPRE8gCiAgICAgOlBST1BF UlRJRVM6CiAgICAgOklEOiAgICAgICBiZmUxZDEwNC1jNWNhLTQ5Y2UtYWE4NC00OWYxN2FhMjVk YmIKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1 biAgei9vcmctcmVmaWxlLXRvLXRvZG8gKCkKICAgICJNb3ZlIGN1cnJlbnQgaGVhZGxpbmUgdG8g Ym9va21hcmtzIgogICAgKGludGVyYWN0aXZlKQogICAgKG9yZy1tYXJrLXJpbmctcHVzaCkKICAg ICh6L29yZy1yZWZpbGUtdG8gIi9ob21lL3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL1RPRE8ub3Jn IiAiYFRPRE9gIikKICAgIChvcmctbWFyay1yaW5nLWdvdG8pKQoKCiMrRU5EX1NSQwoqKioqIHJl ZmlsZSB0byByZXNlYXJjaCAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDZjZjYy OTllLWM2YTMtNGUyZC1iOWI1LTRjMDgzZjg2ZGIwOAogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L29yZy1yZWZpbGUtdG8tcmVzZWFyY2gg KCkKICAgICJNb3ZlIGN1cnJlbnQgaGVhZGxpbmUgdG8gcmVzZWFyY2giCiAgICAoaW50ZXJhY3Rp dmUpCiAgICAob3JnLW1hcmstcmluZy1wdXNoKQogICAgKHovb3JnLXJlZmlsZS10byAiL2hvbWUv emVsdGFrL29yZy9maWxlcy9hZ2VuZGEvcmVzZWFyY2gub3JnIiAiSU5CT1giKQogICAgKG9yZy1t YXJrLXJpbmctZ290bykpCgoKIytFTkRfU1JDCioqKiogcmVmaWxlIHRvIGJndSAKICAgICA6UFJP UEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDNhNTdmNjVkLWRjMjYtNDU2NS1hOGFhLWRjNmVjMGI3 M2I2YwogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRl ZnVuICB6L29yZy1yZWZpbGUtdG8tYmd1ICgpCiAgICAiTW92ZSBjdXJyZW50IGhlYWRsaW5lIHRv IGJndSIKICAgIChpbnRlcmFjdGl2ZSkKICAgIChvcmctbWFyay1yaW5nLXB1c2gpCiAgICAoei9v cmctcmVmaWxlLXRvICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9iZ3Uub3JnIiAiVERF TiIpCiAgICAob3JnLW1hcmstcmluZy1nb3RvKSkKCgojK0VORF9TUkMKKioqKiByZWZpbGUgdG8g Ym9va21hcmtzCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBlYThmMGZlOC01OTU5 LTRjYjktYjY3NS0zMDM1NWIwMDJjN2IKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNw ICA6cmVzdWx0cyBub25lCihkZWZ1biAgei9vcmctcmVmaWxlLXRvLWJvb2ttYXJrcyAgKCkKICAg ICJNb3ZlIGN1cnJlbnQgaGVhZGxpbmUgdG8gYm9va21hcmtzICIKICAgIChpbnRlcmFjdGl2ZSkK ICAgIChvcmctbWFyay1yaW5nLXB1c2gpCiAgICAoei9vcmctcmVmaWxlLXRvICIvaG9tZS96ZWx0 YWsvb3JnL2ZpbGVzL3dlYi93Ym9va21hcmtzLm9yZyIgImJvb2ttYXJrcyIpCiAgICAob3JnLW1h cmstcmluZy1nb3RvKSkKIytFTkRfU1JDCioqKiBUT0RPIG9yZyBzYXZlIGZpbGUgc3RydWN0dXJl IGFzIGZvbGRlcnMKCmh0dHBzOi8vZ2lzdC5naXRodWIuY29tL21hcmNvd2FobC9jMTJlZDRiMmRm OTc0OGFkNzE4NTMzODM5NGI5MjQ0NQoKc2F2ZXMgY3VycmVudCBvcmcgbW9kZSBoZWFkZXJzIGFz IGZvbGRlcnMgYW5kIHN1YiBmb2xkZXIgCgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0 cyBub25lCihkZWZ1biBvcmctaW50ZXJwcmV0LW9yZy1hcy1kaXItZmlsZS1za2VsZXRvbiAoKQog ICJSZXR1cm4gdGhlIG91dGxpbmUgcGF0aHMgYXMgbGlzdHMuClNlcGFyYXRlZCBpbiB0aG9zZSBo ZWFkbGluZXMgbm90IHRhZ2dlZCAnZmlsZScgYW5kIHRob3NlIHRhZ2dlZCB3aXRoICdmaWxlJy4i CiAgKGxldCAob3V0cHV0LWZpbGVzIG91dHB1dC1kaXJzKQogICAgKG9yZy1tYXAtZW50cmllcwog ICAgIChsYW1iZGEgKCkKICAgICAgIChsZXQqICgoaGVhZGxpbmUgKGNhciAoY2RkZGRyIChvcmct aGVhZGluZy1jb21wb25lbnRzKSkpKQogICAgICAgICAgICAgIChoZWFkbGluZS1wYXRoCiAgICAg ICAgICAgICAgIChyZXZlcnNlCiAgICAgICAgICAgICAgICAoY29ucwogICAgICAgICAgICAgICAg IGhlYWRsaW5lIChyZXZlcnNlIChvcmctZ2V0LW91dGxpbmUtcGF0aCkpKSkpKQogICAgICAgICAo Y29uZAogICAgICAgICAgKChtZW1iZXIgImZpbGUiIChvcmctZ2V0LWxvY2FsLXRhZ3MpKQogICAg ICAgICAgIChzZXRmIG91dHB1dC1maWxlcyAoY29ucyBoZWFkbGluZS1wYXRoIG91dHB1dC1maWxl cykpKQogICAgICAgICAgKHQKICAgICAgICAgICAoc2V0ZiBvdXRwdXQtZGlycyAoY29ucyBoZWFk bGluZS1wYXRoIG91dHB1dC1kaXJzKSkpKSkpKQogICAgKGxpc3Qgb3V0cHV0LWRpcnMgb3V0cHV0 LWZpbGVzKSkpCgoKKGRlZnVuIHovb3JnLXNhdmUtb3JnLXN0cnVjdHVyZS1hcy1kaXItZmlsZS1z a2VsZXRvbiAoKQogICJXcml0ZSBhIGRpcmVjdG9yeS9maWxlIHN0cnVjdHVyZSB0byBkaXNrIGFj Y29yZGluZyB0byB0aGUgT3JnIHN0cnVjdHVyZS4KRXZlcnkgaGVhZGxpbmUgZ2V0cyBpbnRlcnBy ZXRlZCBhcyBkaXJlY3RvcnkgZXhjZXB0IHdoZW4gaXQncwp0YWdnZWQgd2l0aCAnZmlsZScuCgpU aGlzIGZ1bmN0aW9uIGV4cGVjdHMgYW4gb3JnIHN0cnVjdHVyZSB3aGljaCBjYW4gbG9naWNhbGx5 IGJlCm1hcHBlZCB0byBhIGZpbGVzeXN0ZW0uICBFLmcuIG5vIGRpcnMgd2l0aGluIGZpbGVzIG1h eSBvY2N1ci4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChkaXJzLWFuZC1maWxlcyAob3JnLWlu dGVycHJldC1vcmctYXMtZGlyLWZpbGUtc2tlbGV0b24pKSkKICAgIChtYXBjCiAgICAgIydtYWtl LWRpcmVjdG9yeQogICAgIChtYXBjYXIKICAgICAgKGxhbWJkYSAoeCkgKHJlZHVjZSAobGFtYmRh ICh4IHkpIChjb25jYXQgeCAiLyIgeSkpIHgpKQogICAgICAoc29ydCAoY2FyIGRpcnMtYW5kLWZp bGVzKSAobGFtYmRhICh4IHkpICg8IChsZW5ndGggeCkgKGxlbmd0aCB5KSkpKSkpCiAgICAobWFw YwogICAgIChsYW1iZGEgKHgpIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChzYXZlLWJ1 ZmZlciAoc2V0LWJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IHggdCkpKSkpCiAgICAgKG1hcGNh cgogICAgICAobGFtYmRhICh4KSAocmVkdWNlIChsYW1iZGEgKHggeSkgKGNvbmNhdCB4ICIvIiB5 KSkgeCkpCiAgICAgIChjYWRyIGRpcnMtYW5kLWZpbGVzKSkpKSkKIytFTkRfU1JDCgoqKiBvcmcg bWFjcm9zCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGY0ODk0OGQ4LWNmMjMtNDEwMS05 ZmRhLTkzMmRhODg2YTc1MQogICA6RU5EOgoqIEZ1bmN0aW9ucwogIDpQUk9QRVJUSUVTOgogIDpJ RDogICAgICAgOWU2Njg3M2EtOWRlYi00YWRhLTkwZjgtMzBiNjViZGVkOWZjCiAgOkVORDoKCgok Tm90ZS1hbGwgbXkgKHplbHRhaykgZnVuY3Rpb25zIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2lu ZyBiYXNlIHN5bnRheCQKIytCRUdJTl9FWEFNUExFClovTU9ERU5BTUUtSEVBREVSLVNVQkhFQURF Ui1OQU1FCiMrRU5EX0VYQU1QTEUKKiogRW5jb2RpbmcKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgNTYzMjlkOTAtOGFjOS00YmQyLTllZTgtNjU5OWJhNTQ1MTBlCiAgIDpFTkQ6CioqKiBm aXggdW5pY29kZSBjaGFyYWN0ZXJzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNDUx MTc2YmEtZDFlYS00OWJhLTg3MzktZTAwMWViNWQyYmZiCiAgICA6RU5EOgojK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHotZml4LWNoYXJhY3RlcnMgCihzdGFydCBl bmQpIAooaW50ZXJhY3RpdmUgInIiKSAKKGxldCAoKGJ1ZmZlci1pbnZpc2liaWxpdHktc3BlYykp IChxdWVyeS1yZXBsYWNlLXJlZ2V4cCAiW15cdFxuXHJcZiAtfl0iICIiKSkKKQoKKGRlZnVuIHot Zml4Mi1jaGFyYWN0ZXJzICgpCiAgKGludGVyYWN0aXZlKQogIChsZXQgKCkKICAgIChxdWVyeS1y ZXBsYWNlLXJlZ2V4cCAiW15cdFxuXHJcZiAtfl0iICIiKQogICAgKSkKIytFTkRfU1JDCioqIEVk aXRpbmcKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYWJhNDIwZDUtNDM1MS00OTZmLWJl YjYtYzhlZmIwNjc3NzEwCiAgIDpFTkQ6CioqKiBJbmNyZW1lbnQgeWVhcnMKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICAzMDNjNTY5ZS03OGY5LTQxN2UtOGJlZi00Njk0YWJhYzE1YzQK ICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwCihkZWZ1biB6LXllYXItaW5jcmVtZW50 ICAoYnVmZmVyIG1heC15ZWFyKQogIChpbnRlcmFjdGl2ZSAiYlxuc01heCB5ZWFyICh5eSk6ICIp CiAgKHNldHEgbWF4LXllYXIgKHN0cmluZy10by1udW1iZXIgbWF4LXllYXIpKQogIChsZXQgKCh5 ZWFyIDIwMDMpCiAgICAgICAgKG5ld2J1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgImluY3JlbWVudC15 ZWFyIikpKQogICAgKGxldCAoKHMgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAgICAg ICAgICAgIChidWZmZXItc3Vic3RyaW5nIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKQogICAg ICAoZG90aW1lcyAobiAoMSsgbWF4LXllYXIpKQogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IG5ld2J1ZgogICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAgIChpbnNl cnQgIlxuIikKICAgICAgICAgIChpbnNlcnQgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAoaW50 LXRvLXN0cmluZyB5ZWFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpbnQtdG8tc3RyaW5nICgrIHllYXIgbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcykpKSkpCiAgICAoc3dpdGNoLXRvLWJ1ZmZlciBuZXdidWYpKSkK IytFTkRfU1JDCgojK1JFU1VMVFM6Cjogei15ZWFyLWluY3JlbWVudAoKKioqIEdldCByaWQgb2Yg YmxhbmsgbGluZXMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA5N2Y1N2RjNi1lMjdj LTQ2YmMtYWY5OC1mOWI1N2I4YTQwMzEKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQooZGVmdW4gZmx1c2gtYmxhbmstbGluZXMgKCkKICAgICJSZW1vdmVzIGFs bCBibGFuayBsaW5lcyBmcm9tIGJ1ZmZlciBvciByZWdpb24iCiAgICAgKGludGVyYWN0aXZlKQog ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgKGxldCAobWluIG1heCkKICAgICAgICAgKGlmIChl cXVhbCAocmVnaW9uLWFjdGl2ZS1wKSBuaWwpCiAgICAgICAgICAgICAobWFyay13aG9sZS1idWZm ZXIpKQogICAgICAgICAoc2V0cSBtaW4gKHJlZ2lvbi1iZWdpbm5pbmcpIG1heCAocmVnaW9uLWVu ZCkpCiAgICAgICAgIChmbHVzaC1saW5lcyAiXiAqJCIgbWluIG1heCB0KSkpKQojK0VORF9TUkMg CioqKiBKb2luIGxpbmVzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYjg4NTI2YjEt YjI3Ny00ZGZlLWFiZGYtZTIwMjVjN2NjMmJhCiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCihnbG9iYWwtc2V0LWtleSAoa2JkICJNLWoiKQogICAgICAgICAg ICAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSkKICAgICAgICAgICAg ICAgICAgKGpvaW4tbGluZSAtMSkpKQojK0VORF9TUkMKKioqIGZpbGwvdW5maWxsIG9uZSBjb21t YW5kCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgOGM0OWU2M2QtZGIxMS00ZTE2LTlk ODItZjkyMjQwYTA3NzQyCiAgICA6RU5EOgpodHRwOi8vZW5kbGVzc3BhcmVudGhlc2VzLmNvbS9m aWxsLWFuZC11bmZpbGwtcGFyYWdyYXBocy13aXRoLWEtc2luZ2xlLWtleS5odG1sCiMrQkVHSU5f U1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIGVuZGxlc3MvZmlsbC1vci11bmZp bGwgKCkKICAiTGlrZSBgZmlsbC1wYXJhZ3JhcGgnLCBidXQgdW5maWxsIGlmIHVzZWQgdHdpY2Uu IgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoZmlsbC1jb2x1bW4KICAgICAgICAgKGlmIChlcSBs YXN0LWNvbW1hbmQgJ2VuZGxlc3MvZmlsbC1vci11bmZpbGwpCiAgICAgICAgICAgICAocHJvZ24g KHNldHEgdGhpcy1jb21tYW5kIG5pbCkKICAgICAgICAgICAgICAgICAgICAocG9pbnQtbWF4KSkK ICAgICAgICAgICBmaWxsLWNvbHVtbikpKQogICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ZpbGwt cGFyYWdyYXBoKSkpCgooZ2xvYmFsLXNldC1rZXkgW3JlbWFwIGZpbGwtcGFyYWdyYXBoXQogICAg ICAgICAgICAgICAgIydlbmRsZXNzL2ZpbGwtb3ItdW5maWxsKQojK0VORF9TUkMKKioqIEZpbGwv dW5maWxsIHBhcmFncmFwaAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGUyNDdhOTZl LTJiNTgtNDZjOS1iM2YwLWIwMDRjNDRhMDg2ZgogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gdW5maWxsLXBhcmFncmFwaCAoKQogICJSZXBsYWNl IG5ld2xpbmUgY2hhcnMgaW4gY3VycmVudCBwYXJhZ3JhcGggYnkgc2luZ2xlIHNwYWNlcy4KVGhp cyBjb21tYW5kIGRvZXMgdGhlIGludmVyc2Ugb2YgYGZpbGwtcGFyYWdyYXBoJy4iCiAgKGludGVy YWN0aXZlKQogIChsZXQgKChmaWxsLWNvbHVtbiA5MDAwMjAwMCkpIDsgOTAwMDIwMDAgaXMganVz dCByYW5kb20uIHlvdSBjYW4gdXNlIGBtb3N0LXBvc2l0aXZlLWZpeG51bScKICAgIChmaWxsLXBh cmFncmFwaCBuaWwpKSkKCihkZWZ1biB1bmZpbGwtcmVnaW9uIChzdGFydCBlbmQpCiAgIlJlcGxh Y2UgbmV3bGluZSBjaGFycyBpbiByZWdpb24gYnkgc2luZ2xlIHNwYWNlcy4KVGhpcyBjb21tYW5k IGRvZXMgdGhlIGludmVyc2Ugb2YgYGZpbGwtcmVnaW9uJy4iCiAgKGludGVyYWN0aXZlICJyIikK ICAobGV0ICgoZmlsbC1jb2x1bW4gOTAwMDIwMDApKQogICAgKGZpbGwtcmVnaW9uIHN0YXJ0IGVu ZCkpKQoKIytFTkRfU1JDCioqKiBjb3VudCBzZW50ZW5jZXMKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICA0N2M2ZWQ0ZC00Y2IwLTQyN2ItYThjZi1mOWQ4NzI5YmIxMjIKICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKKGRlZnVuIGNvdW50LXNlbnRlbmNlcyAoYmVnaW4gZW5k ICZvcHRpb25hbCBwcmludC1tZXNzYWdlKQogICJDb3VudCB0aGUgbnVtYmVyIG9mIHNlbnRlbmNl cyBmcm9tIEJFR0lOIHRvIEVORC4iCiAgKGludGVyYWN0aXZlIChpZiAodXNlLXJlZ2lvbi1wKQoJ CSAgIChsaXN0IChyZWdpb24tYmVnaW5uaW5nKQoJCQkgKHJlZ2lvbi1lbmQpCgkJCSB0KQoJCSAo bGlzdCBuaWwgbmlsIHQpKSkKICAoc2F2ZS1leGN1cnNpb24KICAgIChzYXZlLXJlc3RyaWN0aW9u CiAgICAgIChuYXJyb3ctdG8tcmVnaW9uIChvciBiZWdpbiAocG9pbnQtbWluKSkKCQkJKHByb2du CgkJCSAgKGdvdG8tY2hhciAob3IgZW5kIChwb2ludC1tYXgpKSkKCQkJICAoc2tpcC1jaGFycy1i YWNrd2FyZCAiIFx0XG4iKQoJCQkgIChwb2ludCkpKQogICAgICAoZ290by1jaGFyIChwb2ludC1t aW4pKQogICAgICAobGV0ICgoc2VudGVuY2VzIDApKQoJKHdoaWxlIChub3QgKGxvb2tpbmctYXQt cCAiWyBcdFxuXSpcXCciKSkKCSAgKGZvcndhcmQtc2VudGVuY2UgMSkKCSAgKHNldHEgc2VudGVu Y2VzICgxKyBzZW50ZW5jZXMpKSkKCShpZiBwcmludC1tZXNzYWdlCgkgICAgKG1lc3NhZ2UKCSAg ICAgIiVzIHNlbnRlbmNlcyBpbiAlcy4iCgkgICAgIHNlbnRlbmNlcwoJICAgICAoaWYgKHVzZS1y ZWdpb24tcCkKCQkgInJlZ2lvbiIKCSAgICAgICAiYnVmZmVyIikpCgkgIHNlbnRlbmNlcykpKSkp CiMrRU5EX1NSQwoKKioqIENvdW50IHdvcmRzIGluIHJlZ2lvbgogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIDAyNDFmZjJmLTYyZjMtNDk1Ni1iNDA3LWUwMWQyYTRmZmMzNgogICAgOkVO RDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCgooZGVmdW4gei1jb3VudC13 b3Jkcy1yZWdpb24gKHBvc0JlZ2luIHBvc0VuZCkKICAiUHJpbnQgbnVtYmVyIG9mIHdvcmRzIGFu ZCBjaGFycyBpbiByZWdpb24uIgogIChpbnRlcmFjdGl2ZSAiciIpCiAgKG1lc3NhZ2UgIkNvdW50 aW5nIOKApiIpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0ICh3b3JkQ291bnQgY2hhckNvdW50 KQogICAgICAoc2V0cSB3b3JkQ291bnQgMCkKICAgICAgKHNldHEgY2hhckNvdW50ICgtIHBvc0Vu ZCBwb3NCZWdpbikpCiAgICAgIChnb3RvLWNoYXIgcG9zQmVnaW4pCiAgICAgICh3aGlsZSAoYW5k ICg8IChwb2ludCkgcG9zRW5kKQogICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQg IlxcdytcXFcqIiBwb3NFbmQgdCkpCiAgICAgICAgKHNldHEgd29yZENvdW50ICgxKyB3b3JkQ291 bnQpKSkKCiAgICAgIChtZXNzYWdlICJXb3JkczogJWQuIENoYXJzOiAlZC4iIHdvcmRDb3VudCBj aGFyQ291bnQpCiAgICAgICkpKQoKIytFTkRfU1JDCioqKiBDb3B5IGFuZCBjb21tZW50CiAgICA6 UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYmEzZjBlNzYtYjU1NC00OTJlLWE0ZTgtMDVlZjI5 Mjc3MWZmCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRl ZnVuIHovY29weS1jb21tZW50LXBhc3RlICgpCiAgImNvcHkgYWN0aXZlIHJlZ2lvbi9jdXJyZW50 IGxpbmUsIGNvbW1lbnQsIGFuZCB0aGVuIHBhc3RlIgogIChpbnRlcmFjdGl2ZSkKICAodW5sZXNz ICh1c2UtcmVnaW9uLXApCiAgICAocHJvZ24KICAgICAgKGJlZ2lubmluZy1vZi1saW5lIDIpCiAg ICAgIChwdXNoLW1hcmsgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uIDApKSkpCiAgKGtpbGwtcmlu Zy1zYXZlIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpCiAgKGNvbW1lbnQtcmVnaW9u IChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkpCiAgKHlhbmspCiAgKGV4Y2hhbmdlLXBv aW50LWFuZC1tYXJrKQogIChpbmRlbnQtYWNjb3JkaW5nLXRvLW1vZGUpKQojK0VORF9TUkMKKioq IG1vdmUgbGluZSB1cC9kb3duCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZjY1NTdj MWYtNGFkOC00ZWNjLWJjYjAtY2Y4OGMyY2IyZWYzCiAgICA6RU5EOgogICAgIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biBtb3ZlLWxpbmUtdXAgKCkKICAiTW92ZSB1 cCB0aGUgY3VycmVudCBsaW5lLiIKICAoaW50ZXJhY3RpdmUpCiAgKHRyYW5zcG9zZS1saW5lcyAx KQogIChmb3J3YXJkLWxpbmUgLTIpCiAgKGluZGVudC1hY2NvcmRpbmctdG8tbW9kZSkpCgooZGVm dW4gbW92ZS1saW5lLWRvd24gKCkKICAiTW92ZSBkb3duIHRoZSBjdXJyZW50IGxpbmUuIgogIChp bnRlcmFjdGl2ZSkKICAoZm9yd2FyZC1saW5lIDEpCiAgKHRyYW5zcG9zZS1saW5lcyAxKQogIChm b3J3YXJkLWxpbmUgLTEpCiAgKGluZGVudC1hY2NvcmRpbmctdG8tbW9kZSkpCgojK0VORF9TUkMK KioqIGluc2VydCBkYXRlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZGZmZGVmYWUt ZTFlMS00YmVkLWE5NzAtZjFmNmRjOTQ1ODEyCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHotaW5zZXJ0LWRhdGUgKCZvcHRpb25hbCBhZGRUaW1l U3RhbXAtcCkKICAiSW5zZXJ0IGN1cnJlbnQgZGF0ZSBhbmQgb3IgdGltZS4gSW4gdGhpcyBmb3Jt YXQgeXl5eS1tbS1kZC4KIFdoZW4gY2FsbGVkIHdpdGggYHVuaXZlcnNhbC1hcmd1bWVudCcsIGlu c2VydCBkYXRlIGFuZCB0aW1lLCBlLmcuIDIwMTItMDUtMjhUMDc6MDY6MjMtMDc6MDAKIFJlcGxh Y2VzIHRleHQgc2VsZWN0aW9uLlNlZSBhbHNvIGBjdXJyZW50LWRhdGUtdGltZS1zdHJpbmcnLiIK ICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIChyZWdpb24tYWN0aXZlLXApIChkZWxldGUtcmVn aW9uIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkgKSApCiAgKGNvbmQKICAgKChlcXVh bCBhZGRUaW1lU3RhbXAtcCBuaWwgKSAoaW5zZXJ0IChmb3JtYXQtdGltZS1zdHJpbmcgIiVZLSVt LSVkIikpKQogICAodCAoaW5zZXJ0IChjdXJyZW50LWRhdGUtdGltZS1zdHJpbmcpKSkgKSApCiMr RU5EX1NSQwoqKiogaW5zZXJ0IGRhdGUgYW5kIHRpbWUKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICA1MjE0ODkzNi1hOWQ1LTQ1NTYtYjY4OC1lNTgwNjc2YjA1YTcKICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei1pbnNlcnQtZGF0ZS10 aW1lICgmb3B0aW9uYWwgYWRkVGltZVN0YW1wLXApCiAgIkluc2VydCBjdXJyZW50IGRhdGUgYW5k IG9yIHRpbWUuIEluIHRoaXMgZm9ybWF0IHl5eXktbW0tZGQuCiBXaGVuIGNhbGxlZCB3aXRoIGB1 bml2ZXJzYWwtYXJndW1lbnQnLCBpbnNlcnQgZGF0ZSBhbmQgdGltZSwgZS5nLiAyMDEyLTA1LTI4 VDA3OjA2OjIzLTA3OjAwCiBSZXBsYWNlcyB0ZXh0IHNlbGVjdGlvbi5TZWUgYWxzbyBgY3VycmVu dC1kYXRlLXRpbWUtc3RyaW5nJy4iCiAgKGludGVyYWN0aXZlICJQIikKICAod2hlbiAocmVnaW9u LWFjdGl2ZS1wKSAoZGVsZXRlLXJlZ2lvbiAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1lbmQp ICkgKQogIChjb25kCiAgICgoZXF1YWwgYWRkVGltZVN0YW1wLXAgbmlsICkgKGluc2VydCAoZm9y bWF0LXRpbWUtc3RyaW5nICIlWS0lbS0lZC0lSDolTTolUyIpKSkKICAgKHQgKGluc2VydCAoY3Vy cmVudC1kYXRlLXRpbWUtc3RyaW5nKSkpICkgKQojK0VORF9TUkMKCioqKiBjb3B5L3Bhc3RlIHRv L2Zyb20geCBjbGlwCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZGQ2OWI3MjItZmNj Zi00ZThiLTg1YjYtYmEyZWU2MGRhN2VjCiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihkZWZ1biBjb3B5LXRvLXgtY2xpcGJvYXJkICgpCiAgKGludGVyYWN0 aXZlKQogIChpZiAocmVnaW9uLWFjdGl2ZS1wKQogICAgICAocHJvZ24KICAgICAgICAoY29uZAog ICAgICAgICAoKGFuZCAoZGlzcGxheS1ncmFwaGljLXApIHgtc2VsZWN0LWVuYWJsZS1jbGlwYm9h cmQpCiAgICAgICAgICAoeC1zZXQtc2VsZWN0aW9uICdDTElQQk9BUkQgKGJ1ZmZlci1zdWJzdHJp bmcgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkpKQogICAgICAgICAodCAoc2hlbGwt Y29tbWFuZC1vbi1yZWdpb24gKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKmN5Z3dpbiogInB1dGNsaXAiKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgqaXMtYS1tYWMqICJwYmNvcHkiKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgqbGludXgqICJ4c2VsIC1pYiIpKSkKICAgICAgICAgICAg KSkKICAgICAgICAobWVzc2FnZSAiWWFua2VkIHJlZ2lvbiB0byBjbGlwYm9hcmQhIikKICAgICAg ICAoZGVhY3RpdmF0ZS1tYXJrKSkKICAgICAgICAobWVzc2FnZSAiTm8gcmVnaW9uIGFjdGl2ZTsg Y2FuJ3QgeWFuayB0byBjbGlwYm9hcmQhIikpKQoKKGRlZnVuIHBhc3RlLWZyb20teC1jbGlwYm9h cmQoKQogIChpbnRlcmFjdGl2ZSkKICAoY29uZAogICAoKGFuZCAoZGlzcGxheS1ncmFwaGljLXAp IHgtc2VsZWN0LWVuYWJsZS1jbGlwYm9hcmQpCiAgICAoaW5zZXJ0ICh4LXNlbGVjdGlvbiAnQ0xJ UEJPQVJEKSkpCiAgICh0IChzaGVsbC1jb21tYW5kCiAgICAgICAoY29uZAogICAgICAgICgqY3ln d2luKiAiZ2V0Y2xpcCIpCiAgICAgICAgKCppcy1hLW1hYyogInBicGFzdGUiKQogICAgICAgICh0 ICJ4c2VsIC1vYiIpKQogICAgICAgMSkpCiAgICkpCiMrRU5EX1NSQwoKKioqIGNvcHkgYW5kIGlu ZGVudCBsaW5lcwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDIyZGQ3ZGE2LWQ2YWUt NGVkZS1hY2VmLWY2MmI0YWZjNzg4NwogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQooZGVmdW4gcHJlbHVkZS1pbmRlbnQtcmlnaWRseS1hbmQtY29weS10by1j bGlwYm9hcmQgKGJlZ2luIGVuZCBpbmRlbnQpCiAgIkNvcHkgdGhlIHNlbGVjdGVkIGNvZGUgcmVn aW9uIHRvIHRoZSBjbGlwYm9hcmQsIGluZGVudGVkIGFjY29yZGluZwp0byBNYXJrZG93biBibG9j a3F1b3RlIHJ1bGVzLiIKICAobGV0ICgoYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQogICAgKHdp dGgtdGVtcC1idWZmZXIKICAgICAgKGluc2VydC1idWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRp ZXMgYnVmZmVyIGJlZ2luIGVuZCkKICAgICAgKGluZGVudC1yaWdpZGx5IChwb2ludC1taW4pIChw b2ludC1tYXgpIGluZGVudCkKICAgICAgKGNsaXBib2FyZC1raWxsLXJpbmctc2F2ZSAocG9pbnQt bWluKSAocG9pbnQtbWF4KSkpKSkKCihkZWZ1biBwcmVsdWRlLWluZGVudC1ibG9ja3F1b3RlLWFu ZC1jb3B5LXRvLWNsaXBib2FyZCAoYmVnaW4gZW5kKQogICJDb3B5IHRoZSBzZWxlY3RlZCBjb2Rl IHJlZ2lvbiB0byB0aGUgY2xpcGJvYXJkLCBpbmRlbnRlZCBhY2NvcmRpbmcKdG8gbWFya2Rvd24g YmxvY2txdW90ZSBydWxlcyAodXNlZnVsIHRvIGNvcHkgc25pcHBldHMgdG8gU3RhY2tPdmVyZmxv dywgQXNzZW1ibGEsIEdpdGh1Yi4iCiAgKGludGVyYWN0aXZlICJyIikKICAocHJlbHVkZS1pbmRl bnQtcmlnaWRseS1hbmQtY29weS10by1jbGlwYm9hcmQgYmVnaW4gZW5kIDQpKQoKKGRlZnVuIHBy ZWx1ZGUtaW5kZW50LW5lc3RlZC1ibG9ja3F1b3RlLWFuZC1jb3B5LXRvLWNsaXBib2FyZCAoYmVn aW4gZW5kKQogICJDb3B5IHRoZSBzZWxlY3RlZCBjb2RlIHJlZ2lvbiB0byB0aGUgY2xpcGJvYXJk LCBpbmRlbnRlZCBhY2NvcmRpbmcKdG8gbWFya2Rvd24gYmxvY2txdW90ZSBydWxlcy4gVXNlZnVs IHRvIGFkZCBzbmlwcGV0cyB1bmRlciBidWxsZXQgcG9pbnRzLiIKICAoaW50ZXJhY3RpdmUgInIi KQogIChwcmVsdWRlLWluZGVudC1yaWdpZGx5LWFuZC1jb3B5LXRvLWNsaXBib2FyZCBiZWdpbiBl bmQgNikpCgojK0VORF9TUkMKKioqIHNlYXJjaCByZXBsYWNlIGFsbCBkb2N1bWVudAogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDlmMjExNDhlLWYzOWYtNDI3Yy05NGNlLWE3NjhlMmRi NjVkZgogICAgOkVORDoKQGN1cnJlbnRseSBiZWxvdyBjb2RlIGJyb2tlbkAKCiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7KGRlZnVuICB6L3NlYXJjaC1yZXBsYWNlLWZpbGUg KCkKOyhpbnRlcmFjdGl2ZSkKOyhnb3RvLWNoYXIgKHBvaW50LW1pbikpCjsocXVlcnktcmVwbGFj ZS1yZWdleHAgKSkKCiMrRU5EX1NSQwoqKiogZHVwbGljYXRlIGxpbmUvcmVnaW9uIAogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDNmYWIxYTg2LTc1NTEtNDE5ZC1hNDJlLWNlY2JkMWRi MDZiNAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1 biBkdXBsaWNhdGUtY3VycmVudC1saW5lLW9yLXJlZ2lvbiAoYXJnKQogICJEdXBsaWNhdGVzIHRo ZSBjdXJyZW50IGxpbmUgb3IgcmVnaW9uIEFSRyB0aW1lcy4KSWYgdGhlcmUncyBubyByZWdpb24s IHRoZSBjdXJyZW50IGxpbmUgd2lsbCBiZSBkdXBsaWNhdGVkLiBIb3dldmVyLCBpZgp0aGVyZSdz IGEgcmVnaW9uLCBhbGwgbGluZXMgdGhhdCByZWdpb24gY292ZXJzIHdpbGwgYmUgZHVwbGljYXRl ZC4iCiAgKGludGVyYWN0aXZlICJwIikKICAobGV0IChiZWcgZW5kIChvcmlnaW4gKHBvaW50KSkp CiAgICAoaWYgKGFuZCBtYXJrLWFjdGl2ZSAoPiAocG9pbnQpIChtYXJrKSkpCiAgICAgICAgKGV4 Y2hhbmdlLXBvaW50LWFuZC1tYXJrKSkKICAgIChzZXRxIGJlZyAobGluZS1iZWdpbm5pbmctcG9z aXRpb24pKQogICAgKGlmIG1hcmstYWN0aXZlCiAgICAgICAgKGV4Y2hhbmdlLXBvaW50LWFuZC1t YXJrKSkKICAgIChzZXRxIGVuZCAobGluZS1lbmQtcG9zaXRpb24pKQogICAgKGxldCAoKHJlZ2lv biAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGJlZyBlbmQpKSkKICAgICAgKGRvdGlt ZXMgKGkgYXJnKQogICAgICAgIChnb3RvLWNoYXIgZW5kKQogICAgICAgIChuZXdsaW5lKQogICAg ICAgIChpbnNlcnQgcmVnaW9uKQogICAgICAgIChzZXRxIGVuZCAocG9pbnQpKSkKICAgICAgKGdv dG8tY2hhciAoKyBvcmlnaW4gKCogKGxlbmd0aCByZWdpb24pIGFyZykgYXJnKSkpKSkKIytFTkRf U1JDCgoqKioqIG9sZCBtZXRob2QgZm9yIGxpbmUgb25seSAKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihkZWZ1biBkdXBsaWNhdGUtbGluZSgpCiAgKGludGVyYWN0aXZlKQog IChtb3ZlLWJlZ2lubmluZy1vZi1saW5lIDEpCiAgKGtpbGwtbGluZSkKICAoeWFuaykKICAob3Bl bi1saW5lIDEpCiAgKG5leHQtbGluZSAxKQogICh5YW5rKQopCiMrRU5EX1NSQwoKKioqIGR1cGxp Y2F0ZSBsaW5lL3JlZ2lvbiByZWQgaHlkcmEgCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAg ICAgZDlhZTYxODgtZTdhMy00ZThhLTg4OWYtZmQ2NGQ3Yzg3YTkxCiAgICA6RU5EOgojK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIGR1cGxpY2F0ZS1jdXJyZW50LWxp bmUtb3ItcmVnaW9uLXJlZCAoYXJnKQogICJEdXBsaWNhdGVzIHRoZSBjdXJyZW50IGxpbmUgb3Ig cmVnaW9uIEFSRyB0aW1lcy4KSWYgdGhlcmUncyBubyByZWdpb24sIHRoZSBjdXJyZW50IGxpbmUg d2lsbCBiZSBkdXBsaWNhdGVkLiBIb3dldmVyLCBpZgp0aGVyZSdzIGEgcmVnaW9uLCBhbGwgbGlu ZXMgdGhhdCByZWdpb24gY292ZXJzIHdpbGwgYmUgZHVwbGljYXRlZC4iCiAgKGludGVyYWN0aXZl ICJwIikKICAobGV0IChiZWcgZW5kIChvcmlnaW4gKHBvaW50KSkpCiAgICAoaWYgKGFuZCBtYXJr LWFjdGl2ZSAoPiAocG9pbnQpIChtYXJrKSkpCiAgICAgICAgKGV4Y2hhbmdlLXBvaW50LWFuZC1t YXJrKSkKICAgIChzZXRxIGJlZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQogICAgKGlmIG1h cmstYWN0aXZlCiAgICAgICAgKGV4Y2hhbmdlLXBvaW50LWFuZC1tYXJrKSkKICAgIChzZXRxIGVu ZCAobGluZS1lbmQtcG9zaXRpb24pKQogICAgKGxldCAoKHJlZ2lvbiAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIGJlZyBlbmQpKSkKICAgICAgKGRvdGltZXMgKGkgYXJnKQogICAgICAg IChnb3RvLWNoYXIgZW5kKQogICAgICAgIChuZXdsaW5lKQogICAgICAgIChpbnNlcnQgcmVnaW9u KQogICAgICAgIChzZXRxIGVuZCAocG9pbnQpKSkKICAgICAgKGdvdG8tY2hhciAoKyBvcmlnaW4g KCogKGxlbmd0aCByZWdpb24pIGFyZykgYXJnKSkpKSkKIytFTkRfU1JDCgoqKioqIG9sZCBtZXRo b2QgZm9yIGxpbmUgb25seSAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDQxMmQ3 YjY2LTY2ZjUtNDI1NS1hYTYzLWZjMDgwNzBkYWZmZAogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gZHVwbGljYXRlLWxpbmUoKQogIChpbnRlcmFj dGl2ZSkKICAobW92ZS1iZWdpbm5pbmctb2YtbGluZSAxKQogIChraWxsLWxpbmUpCiAgKHlhbmsp CiAgKG9wZW4tbGluZSAxKQogIChuZXh0LWxpbmUgMSkKICAoeWFuaykKKQojK0VORF9TUkMKCioq KiBjb3B5IGN1cnJlbnQgbGluZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDk1MDc3 OTQ0LTE1MWEtNGYyZS04MDBhLWU1OTA0YTQ0MmEyYgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1h Y3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L2NvcHktbGluZSAoYXJnKQogICAgIkNvcHkg bGluZXMgKGFzIG1hbnkgYXMgcHJlZml4IGFyZ3VtZW50KSBpbiB0aGUga2lsbCByaW5nLgogICAg ICBFYXNlIG9mIHVzZSBmZWF0dXJlczoKICAgICAgLSBNb3ZlIHRvIHN0YXJ0IG9mIG5leHQgbGlu ZS4KICAgICAgLSBBcHBlbmRzIHRoZSBjb3B5IG9uIHNlcXVlbnRpYWwgY2FsbHMuCiAgICAgIC0g VXNlIG5ld2xpbmUgYXMgbGFzdCBjaGFyIGV2ZW4gb24gdGhlIGxhc3QgbGluZSBvZiB0aGUgYnVm ZmVyLgogICAgICAtIElmIHJlZ2lvbiBpcyBhY3RpdmUsIGNvcHkgaXRzIGxpbmVzLiIKICAgIChp bnRlcmFjdGl2ZSAicCIpCiAgICAobGV0ICgoYmVnIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikp CiAgICAgICAgICAoZW5kIChsaW5lLWVuZC1wb3NpdGlvbiBhcmcpKSkKICAgICAgKHdoZW4gbWFy ay1hY3RpdmUKICAgICAgICAoaWYgKD4gKHBvaW50KSAobWFyaykpCiAgICAgICAgICAgIChzZXRx IGJlZyAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAobWFyaykpIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikpKQogICAgICAgICAgKHNldHEgZW5kIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFy IChtYXJrKSkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKICAgICAgKGlmIChlcSBsYXN0LWNvbW1h bmQgJ2NvcHktbGluZSkKICAgICAgICAgIChraWxsLWFwcGVuZCAoYnVmZmVyLXN1YnN0cmluZyBi ZWcgZW5kKSAoPCBlbmQgYmVnKSkKICAgICAgICAoa2lsbC1yaW5nLXNhdmUgYmVnIGVuZCkpKQog ICAgKGtpbGwtYXBwZW5kICJcbiIgbmlsKQogICAgKGJlZ2lubmluZy1vZi1saW5lIChvciAoYW5k IGFyZyAoMSsgYXJnKSkgMikpCiAgICAoaWYgKGFuZCBhcmcgKG5vdCAoPSAxIGFyZykpKSAobWVz c2FnZSAiJWQgbGluZXMgY29waWVkIiBhcmcpKSkKIytFTkRfU1JDCioqKiBhdXRvIHNwZWxsIGNv cnJlY3Rpb24gZnVuY3Rpb24KICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBlYjNmMjU1 OS1kMDc3LTQ2NmItOTM2OC0xNTM5NGFkNmZmYmUKICAgIDpFTkQ6Cmh0dHA6Ly9lbmRsZXNzcGFy ZW50aGVzZXMuY29tL2lzcGVsbC1hbmQtYWJicmV2LXRoZS1wZXJmZWN0LWF1dG8tY29ycmVjdC5o dG1sCgp0aGlzIHdpbGwgc3RvcmUgdGhlIGFiYnJldnMgaGVyZTogCmZpbGU6L2hvbWUvemVsdGFr Ly5lbWFjcy5kL2FiYnJ2L3BlcnNvbmFsX2FiYnJ2LnR4dAoKCiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgIDpyZXN1bHRzIG5vbmUKKGRlZmluZS1rZXkgY3RsLXgtbWFwICJcQy1pIgogICMnZW5kbGVz cy9pc3BlbGwtd29yZC10aGVuLWFiYnJldikKCihkZWZ1biBlbmRsZXNzL3NpbXBsZS1nZXQtd29y ZCAoKQogIChjYXItc2FmZSAoc2F2ZS1leGN1cnNpb24gKGlzcGVsbC1nZXQtd29yZCBuaWwpKSkp CgooZGVmdW4gZW5kbGVzcy9pc3BlbGwtd29yZC10aGVuLWFiYnJldiAocCkKICAiQ2FsbCBgaXNw ZWxsLXdvcmQnLCB0aGVuIGNyZWF0ZSBhbiBhYmJyZXYgZm9yIGl0LgpXaXRoIHByZWZpeCBQLCBj cmVhdGUgbG9jYWwgYWJicmV2LiBPdGhlcndpc2UgaXQgd2lsbApiZSBnbG9iYWwuCklmIHRoZXJl J3Mgbm90aGluZyB3cm9uZyB3aXRoIHRoZSB3b3JkIGF0IHBvaW50LCBrZWVwCmxvb2tpbmcgZm9y IGEgdHlwbyB1bnRpbCB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlci4gWW91IGNhbgpza2lwIHR5cG9z IHlvdSBkb24ndCB3YW50IHRvIGZpeCB3aXRoIGBTUEMnLCBhbmQgeW91IGNhbgphYm9ydCBjb21w bGV0ZWx5IHdpdGggYEMtZycuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGxldCAoYmVmIGFmdCkK ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAod2hpbGUgKGlmIChzZXRxIGJlZiAoZW5kbGVzcy9z aW1wbGUtZ2V0LXdvcmQpKQogICAgICAgICAgICAgICAgIDs7IFdvcmQgd2FzIGNvcnJlY3RlZCBv ciB1c2VkIHF1aXQuCiAgICAgICAgICAgICAgICAgKGlmIChpc3BlbGwtd29yZCBuaWwgJ3F1aWV0 KQogICAgICAgICAgICAgICAgICAgICBuaWwgOyBFbmQgdGhlIGxvb3AuCiAgICAgICAgICAgICAg ICAgICA7OyBBbHNvIGVuZCBpZiB3ZSByZWFjaCBgYm9iJy4KICAgICAgICAgICAgICAgICAgIChu b3QgKGJvYnApKSkKICAgICAgICAgICAgICAgOzsgSWYgdGhlcmUncyBubyB3b3JkIGF0IHBvaW50 LCBrZWVwIGxvb2tpbmcKICAgICAgICAgICAgICAgOzsgdW50aWwgYGJvYicuCiAgICAgICAgICAg ICAgIChub3QgKGJvYnApKSkKICAgICAgICAoYmFja3dhcmQtd29yZCkKICAgICAgICAoYmFja3dh cmQtY2hhcikpCiAgICAgIChzZXRxIGFmdCAoZW5kbGVzcy9zaW1wbGUtZ2V0LXdvcmQpKSkKICAg IChpZiAoYW5kIGFmdCBiZWYgKG5vdCAoZXF1YWwgYWZ0IGJlZikpKQogICAgICAgIChsZXQgKChh ZnQgKGRvd25jYXNlIGFmdCkpCiAgICAgICAgICAgICAgKGJlZiAoZG93bmNhc2UgYmVmKSkpCiAg ICAgICAgICAoZGVmaW5lLWFiYnJldgogICAgICAgICAgICAoaWYgcCBsb2NhbC1hYmJyZXYtdGFi bGUgZ2xvYmFsLWFiYnJldi10YWJsZSkKICAgICAgICAgICAgYmVmIGFmdCkKICAgICAgICAgICht ZXNzYWdlICJcIiVzXCIgbm93IGV4cGFuZHMgdG8gXCIlc1wiICVzYWxseSIKICAgICAgICAgICAg ICAgICAgIGJlZiBhZnQgKGlmIHAgImxvYyIgImdsb2IiKSkpCiAgICAgICh1c2VyLWVycm9yICJO byB0eXBvIGF0IG9yIGJlZm9yZSBwb2ludCIpKSkpCgojK0VORF9TUkMKCgoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogIDs7IChkZWZ1biBlbmRsZXNzL2lzcGVsbC13b3Jk LXRoZW4tYWJicmV2IChwKQogIDs7ICAgIkNhbGwgYGlzcGVsbC13b3JkJywgdGhlbiBjcmVhdGUg YW4gYWJicmV2IGZvciBpdC4KICA7OyBXaXRoIHByZWZpeCBQLCBjcmVhdGUgbG9jYWwgYWJicmV2 LiBPdGhlcndpc2UgaXQgd2lsbAogIDs7IGJlIGdsb2JhbC4iCiAgOzsgICAoaW50ZXJhY3RpdmUg IlAiKQogIDs7ICAgKGxldCAoYmVmIGFmdCkKICA7OyAgICAgKHNhdmUtZXhjdXJzaW9uCiAgOzsg ICAgICAgKHdoaWxlIChwcm9nbgogIDs7ICAgICAgICAgICAgICAgIChiYWNrd2FyZC13b3JkKQog IDs7ICAgICAgICAgICAgICAgIChhbmQgKHNldHEgYmVmICh0aGluZy1hdC1wb2ludCAnd29yZCkp CiAgOzsgICAgICAgICAgICAgICAgICAgICAobm90IChpc3BlbGwtd29yZCBuaWwgJ3F1aWV0KSkp KSkKICA7OyAgICAgICAoc2V0cSBhZnQgKHRoaW5nLWF0LXBvaW50ICd3b3JkKSkpCiAgOzsgICAg ICh3aGVuIChhbmQgYWZ0IGJlZiAobm90IChlcXVhbCBhZnQgYmVmKSkpCiAgOzsgICAgICAgKHNl dHEgYWZ0IChkb3duY2FzZSBhZnQpKQogIDs7ICAgICAgIChzZXRxIGJlZiAoZG93bmNhc2UgYmVm KSkKICA7OyAgICAgICAoZGVmaW5lLWFiYnJldgogIDs7ICAgICAgICAgKGlmIHAgbG9jYWwtYWJi cmV2LXRhYmxlIGdsb2JhbC1hYmJyZXYtdGFibGUpCiAgOzsgICAgICAgICBiZWYgYWZ0KQogIDs7 ICAgICAgIChtZXNzYWdlICJcIiVzXCIgbm93IGV4cGFuZHMgdG8gXCIlc1wiICVzYWxseSIKICA7 OyAgICAgICAgICAgICAgICBiZWYgYWZ0IChpZiBwICJsb2MiICJnbG9iIikpKSkpCgojK0VORF9T UkMKCioqKiBjb21tb24gdXNlZCByZWdleAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAg IDk0MWYyNGUzLWI2OTUtNGM0YS05ZTkwLTI5ZjM5NDY1MjFkMgogICAgOkVORDoKKioqKiBkZWxl dGUgYWxsIG51bWVyaWMgY2hhcmFjdGVycwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgYTg3YTM4OTQtMmMzNS00MmNkLThjMWYtOWZmOWI3YTg1YTIwCiAgICAgOkVORDoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L3JlZ2V4LWRlbGV0ZS1udW1l cmljICAoKQogICJkZWxldGUgYWxsIG51bWVyaWMgY2hhcmFjdGVycyIKICAoaW50ZXJhY3RpdmUp CiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAocmVwbGFjZS1yZWdleHAgIlswLTldIiAiIikK KQojK0VORF9TUkMKCioqKiBDb2RlIGJveAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAg IDY1MWI4MWQ1LWE2MjMtNDI3Yy1hZDA4LTA5MDI2ZGY2Y2MwZgogICAgOkVORDoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L2NvbW1lbnQtYm94IChiIGUpCiAg IkRyYXcgYSBib3ggY29tbWVudCBhcm91bmQgdGhlIHJlZ2lvbiBidXQgYXJyYW5nZSBmb3IgdGhl IHJlZ2lvbgp0byBleHRlbmQgdG8gYXQgbGVhc3QgdGhlIGZpbGwgY29sdW1uLiBQbGFjZSB0aGUg cG9pbnQgYWZ0ZXIgdGhlCmNvbW1lbnQgYm94LiIKICAoaW50ZXJhY3RpdmUgInIiKQogIChsZXQg KChlIChjb3B5LW1hcmtlciBlIHQpKSkKICAgIChnb3RvLWNoYXIgYikKICAgIChlbmQtb2YtbGlu ZSkKICAgIChpbnNlcnQtY2hhciA/ICAoLSBmaWxsLWNvbHVtbiAoY3VycmVudC1jb2x1bW4pKSkK ICAgIChjb21tZW50LWJveCBiIGUgMSkKICAgIChnb3RvLWNoYXIgZSkKICAgIChzZXQtbWFya2Vy IGUgbmlsKSkpCgojK0VORF9TUkMKKioqIGluc2VydCBxdWljayBzbmlwcGV0cy9Vbmljb2RlIHRl eHRzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZTUzNGYxZDctOWVhYi00MzA2LThj NTktYTk5Zjg5YTUyZTgzCiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCihkZWZ1biB6L2luc2VydC1rZXlsZWZ0ICgpCiAgIiBpbnNlcnQg44CQICAgIgogIChp bnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICLjgJAiKQogICkKCihkZWZ1biB6L2luc2VydC1rZXlyaWdo dCAoKQogICIgaW5zZXJ0IOOAkSAgICIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAi44CRIikK ICApCgoKKGRlZnVuIHovaW5zZXJ0LUVPTCAoKQogICIgaW5zZXJ0IEVPTCIKICAoaW50ZXJhY3Rp dmUpCiAgKGluc2VydCAiXFxcXCIpCihiYWNrd2FyZC1jaGFyIDIpICAKKQoKKGRlZnVuIHovaW5z ZXJ0LWJhc2hzY3JpcHQgKCkKICAiIGluc2VydCAjIS9iaW4vc2ggICIKICAoaW50ZXJhY3RpdmUp CiAgKGluc2VydCAiIyEvYmluL3NoIikKCihkZWZ1biB6L2luc2VydC1wbGF5ICgpCiAgIiBpbnNl cnQgICDigKMgICIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAi4oCjIikKKQoKCihkZWZ1biB6 L2luc2VydC13aGl0ZS1hcnJvdyAoKQogICIgaW5zZXJ0ICAg4pa7ICAiCiAgKGludGVyYWN0aXZl KQogIChpbnNlcnQgIuKWuyIpCikKCgoKKGRlZnVuIHovaW5zZXJ0LXJldmVhbC1zcGxpdCAoKQog ICJpbnNlcnQgUkVWRUFMIHNwbGl0ICAiCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgIiMrUkVW RUFMOiBzcGxpdCIpCikKCikKCgojK0VORF9TUkMKCioqKiBraWxsIGxpbmUgYmFja3dhcnMgCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNWVlMzRjZDYtYWFlMS00N2M4LTgxYTAtYWFk MjJiY2NhMmNjCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KGRlZnVuIGJhY2t3YXJkLWtpbGwtbGluZSAoYXJnKQogICJLaWxsIEFSRyBsaW5lcyBiYWNrd2Fy ZC4iCiAgKGludGVyYWN0aXZlICJwIikKICAoa2lsbC1saW5lICgtIDEgYXJnKSkpCiMrRU5EX1NS QwoqKiogY29weSB3aG9sZSBidWZmZXIKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3 OWRhYWVkMC02Y2U5LTQyYTUtOTliNi1hOThkNTA0YWQ4NzcKICAgIDpFTkQ6Cmh0dHA6Ly9lcmdv ZW1hY3Mub3JnL2VtYWNzL2VtYWNzX2NvcHlfY3V0X2FsbF9vcl9yZWdpb24uaHRtbAoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L2VkaXQtY29weS1hbGwtb3It cmVnaW9uICgpCiAgIlB1dCB0aGUgd2hvbGUgYnVmZmVyIGNvbnRlbnQgdG8gYGtpbGwtcmluZycs IG9yIHRleHQgc2VsZWN0aW9uIGlmIHRoZXJlJ3Mgb25lLgpSZXNwZWN0cyBgbmFycm93LXRvLXJl Z2lvbicuClVSTCBgaHR0cDovL2VyZ29lbWFjcy5vcmcvZW1hY3MvZW1hY3NfY29weV9jdXRfYWxs X29yX3JlZ2lvbi5odG1sJwpWZXJzaW9uIDIwMTUtMDgtMjIiCiAgKGludGVyYWN0aXZlKQogIChp ZiAodXNlLXJlZ2lvbi1wKQogICAgICAocHJvZ24KICAgICAgICAoa2lsbC1uZXcgKGJ1ZmZlci1z dWJzdHJpbmcgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkpCiAgICAgICAgKG1lc3Nh Z2UgIlRleHQgc2VsZWN0aW9uIGNvcGllZC4iKSkKICAgIChwcm9nbgogICAgICAoa2lsbC1uZXcg KGJ1ZmZlci1zdHJpbmcpKQogICAgICAobWVzc2FnZSAiQnVmZmVyIGNvbnRlbnQgY29waWVkLiIp KSkpCiMrRU5EX1NSQwoqKiogcmVwbGFjZSB1bmRlcnNjb3JlCiAgICA6UFJPUEVSVElFUzoKICAg IDpJRDogICAgICAgZDFhMWU2YzMtYjdkYi00NzM3LWI0MjktMzY3NTM0ZWRmODBmCiAgICA6RU5E OgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHhhaC1jeWNsZS1o eXBoZW4tdW5kZXJzY29yZS1zcGFjZSAoKQogICJDeWNsZSB7dW5kZXJzY29yZSwgc3BhY2UsIGh5 cGVufSBjaGFycyBvZiBjdXJyZW50IHdvcmQgb3IgdGV4dCBzZWxlY3Rpb24uCldoZW4gY2FsbGVk IHJlcGVhdGVkbHksIHRoaXMgY29tbWFuZCBjeWNsZXMgdGhlIHvigJxf4oCdLCDigJwt4oCdLCDi gJwg4oCdfSBjaGFyYWN0ZXJzLCBpbiB0aGF0IG9yZGVyLgoKVVJMIGBodHRwOi8vZXJnb2VtYWNz Lm9yZy9lbWFjcy9lbGlzcF9jaGFuZ2Vfc3BhY2UtaHlwaGVuX3VuZGVyc2NvcmUuaHRtbCcKVmVy c2lvbiAyMDE1LTA4LTE3IgogIChpbnRlcmFjdGl2ZSkKICA7OyB0aGlzIGZ1bmN0aW9uIHNldHMg YSBwcm9wZXJ0eSDjgIwnc3RhdGXjgI0uIFBvc3NpYmxlIHZhbHVlcyBhcmUgMCB0byBsZW5ndGgg b2Ygzr5jaGFyQXJyYXkuCiAgKGxldCAozr5wMSDOvnAyKQogICAgKGlmICh1c2UtcmVnaW9uLXAp CiAgICAgICAgKHByb2duCiAgICAgICAgICAoc2V0cSDOvnAxIChyZWdpb24tYmVnaW5uaW5nKSkK ICAgICAgICAgIChzZXRxIM6+cDIgKHJlZ2lvbi1lbmQpKSkKICAgICAgKGxldCAoKM6+Ym91bmRz IChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKQogICAgICAgIChwcm9nbgogICAg ICAgICAgKHNldHEgzr5wMSAoY2FyIM6+Ym91bmRzKSkKICAgICAgICAgIChzZXRxIM6+cDIgKGNk ciDOvmJvdW5kcykpKSkpCgogICAgKGxldCogKCjOvmlucHV0VGV4dCAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIM6+cDEgzr5wMikpCiAgICAgICAgICAgKM6+Y2hhckFycmF5IFsiXyIg Ii0iICIgIl0pCiAgICAgICAgICAgKM6+bGVuZ3RoIChsZW5ndGggzr5jaGFyQXJyYXkpKQogICAg ICAgICAgICjOvnJlZ2lvbldhc0FjdGl2ZS1wIChyZWdpb24tYWN0aXZlLXApKQogICAgICAgICAg ICjOvm5vd1N0YXRlCiAgICAgICAgICAgIChpZiAoZXF1YWwgbGFzdC1jb21tYW5kIHRoaXMtY29t bWFuZCApCiAgICAgICAgICAgICAgICAoZ2V0ICd4YWgtY3ljbGUtaHlwaGVuLXVuZGVyc2NvcmUt c3BhY2UgJ3N0YXRlKQogICAgICAgICAgICAgIDAgKSkKICAgICAgICAgICAozr5jaGFuZ2VUbyAo ZWx0IM6+Y2hhckFycmF5IM6+bm93U3RhdGUpKSkKICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAg ICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIM6+cDEgzr5w MikKICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgICAod2hpbGUKICAg ICAgICAgICAgICAoc2VhcmNoLWZvcndhcmQtcmVnZXhwCiAgICAgICAgICAgICAgIChjb25jYXQK ICAgICAgICAgICAgICAgIChlbHQgzr5jaGFyQXJyYXkgKCUgKCsgzr5ub3dTdGF0ZSAxKSDOvmxl bmd0aCkpCiAgICAgICAgICAgICAgICAiXFx8IgogICAgICAgICAgICAgICAgKGVsdCDOvmNoYXJB cnJheSAoJSAoKyDOvm5vd1N0YXRlIDIpIM6+bGVuZ3RoKSkpCiAgICAgICAgICAgICAgIChwb2lu dC1tYXgpCiAgICAgICAgICAgICAgICdOT0VSUk9SKQogICAgICAgICAgICAocmVwbGFjZS1tYXRj aCDOvmNoYW5nZVRvICdGSVhFRENBU0UgJ0xJVEVSQUwpKSkpCiAgICAgICh3aGVuIChvciAoc3Ry aW5nPSDOvmNoYW5nZVRvICIgIikgzr5yZWdpb25XYXNBY3RpdmUtcCkKICAgICAgICAoZ290by1j aGFyIM6+cDIpCiAgICAgICAgKHNldC1tYXJrIM6+cDEpCiAgICAgICAgKHNldHEgZGVhY3RpdmF0 ZS1tYXJrIG5pbCkpCiAgICAgIChwdXQgJ3hhaC1jeWNsZS1oeXBoZW4tdW5kZXJzY29yZS1zcGFj ZSAnc3RhdGUgKCUgKCsgzr5ub3dTdGF0ZSAxKSDOvmxlbmd0aCkpKSkpCiMrRU5EX1NSQwoqKiog QnJhY2tldCBQYWlyIEluc2VydGlvbiBDb21tYW5kcwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIGI0MmVhZGQ5LTg3MTAtNDM3YS04MWRiLWUyNWY4N2RkZDBmNQogICAgOkVORDoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB4YWgtaW5zZXJ0LWJyYWNr ZXQtcGFpciAoz4ZsZWZ0LWJyYWNrZXQgz4ZyaWdodC1icmFja2V0KQogICJXcmFwIG9yIEluc2Vy dCBhIG1hdGNoaW5nIGJyYWNrZXQgYW5kIHBsYWNlIGN1cnNvciBpbiBiZXR3ZWVuLgoKSWYgdGhl cmUncyBhIHRleHQgc2VsZWN0aW9uLCB3cmFwIGJyYWNrZXRzIGFyb3VuZCBpdC4gRWxzZSwgc21h cnRseSBkZWNpZGUgd3JhcCBvciBpbnNlcnQuIChiYXNpY2FsbHksIGlmIHRoZXJlJ3Mgbm8gY2hh ciBhZnRlciBjdXJzb3IsIGp1c3QgaW5zZXJ0IGJyYWNrZXQgcGFpci4pCgrPhmxlZnQtYnJhY2tl dCDvvIYgz4ZyaWdodC1icmFja2V0IGFyZSBzdHJpbmdzLgoKVVJMIGBodHRwOi8vZXJnb2VtYWNz Lm9yZy9lbWFjcy9lbGlzcF9pbnNlcnRfYnJhY2tldHNfYnlfcGFpci5odG1sJwpWZXJzaW9uIDIw MTUtMDQtMTkiCiAgKGlmICh1c2UtcmVnaW9uLXApCiAgICAgIChwcm9nbgogICAgICAgIChsZXQg KAogICAgICAgICAgICAgICjOvnAxIChyZWdpb24tYmVnaW5uaW5nKSkKICAgICAgICAgICAgICAo zr5wMiAocmVnaW9uLWVuZCkpKQogICAgICAgICAgKGdvdG8tY2hhciDOvnAyKQogICAgICAgICAg KGluc2VydCDPhnJpZ2h0LWJyYWNrZXQpCiAgICAgICAgICAoZ290by1jaGFyIM6+cDEpCiAgICAg ICAgICAoaW5zZXJ0IM+GbGVmdC1icmFja2V0KQogICAgICAgICAgKGdvdG8tY2hhciAoKyDOvnAy IDIpKSkpCiAgICAocHJvZ24gOyBubyB0ZXh0IHNlbGVjdGlvbgogICAgICAoaWYKICAgICAgICAg IChvcgogICAgICAgICAgIChsb29raW5nLWF0ICJbXi1fWzphbG51bTpdXSIpCiAgICAgICAgICAg KGVxIChwb2ludCkgKHBvaW50LW1heCkpKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChp bnNlcnQgz4ZsZWZ0LWJyYWNrZXQgz4ZyaWdodC1icmFja2V0KQogICAgICAgICAgICAoc2VhcmNo LWJhY2t3YXJkIM+GcmlnaHQtYnJhY2tldCApKQogICAgICAgIChwcm9nbgogICAgICAgICAgKGxl dCAozr5wMSDOvnAyKQogICAgICAgICAgICA7OyBiYXNpY2FsbHksIHdhbnQgYWxsIGFscGhhbnVt ZXJpYywgcGx1cyBoeXBoZW4gYW5kIHVuZGVyc2NvcmUsIGJ1dCBkb24ndCB3YW50IHNwYWNlIG9y IHB1bmN0dWF0aW9ucy4gQWxzbyB3YW50IGNoaW5lc2UuCiAgICAgICAgICAgIDs7IOaIkeacieS4 gOW4mOW5veaipu+8jOS4jeefpeS4juiwgeiDveWFseOAguWkmuWwkeenmOWvhuWcqOWFtuS4re+8 jOassuivieaXoOS6uuiDveaHguOAggogICAgICAgICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAi LV9bOmFsbnVtOl0iKQogICAgICAgICAgICAoc2V0cSDOvnAxIChwb2ludCkpCiAgICAgICAgICAg IChza2lwLWNoYXJzLWZvcndhcmQgIi1fWzphbG51bTpdIikKICAgICAgICAgICAgKHNldHEgzr5w MiAocG9pbnQpKQogICAgICAgICAgICAoZ290by1jaGFyIM6+cDIpCiAgICAgICAgICAgIChpbnNl cnQgz4ZyaWdodC1icmFja2V0KQogICAgICAgICAgICAoZ290by1jaGFyIM6+cDEpCiAgICAgICAg ICAgIChpbnNlcnQgz4ZsZWZ0LWJyYWNrZXQpCiAgICAgICAgICAgIChnb3RvLWNoYXIgKCsgzr5w MiAobGVuZ3RoIM+GbGVmdC1icmFja2V0KSkpKSkpKSkpCgojK0VORF9TUkMKKioqIHNwZWNpZmlj IHBhcmVuIHR5cGVzIGVudGVyCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNmEwNzAx ZDUtZGIxMy00NTkzLWJkZTAtNGIzOTE0N2RkZjNlCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovaW5zZXJ0LWJsYWNrLWxlbnRpY3VsYXItYnJh Y2tldCAoKSAoaW50ZXJhY3RpdmUpICh4YWgtaW5zZXJ0LWJyYWNrZXQtcGFpciAi44CQIiAi44CR IikgKQooZGVmdW4gei9pbnNlcnQtYmxhY2stbGVudGljdWxhci1icmFja2V0LXdoaXRlICgpIChp bnRlcmFjdGl2ZSkgKHhhaC1pbnNlcnQtYnJhY2tldC1wYWlyICLjgJYiICLjgJciKSApCihkZWZ1 biB6L2luc2VydC1ibGFjay1sZW50aWN1bGFyLWFuZ2xlICAgKCkgKGludGVyYWN0aXZlKSAoeGFo LWluc2VydC1icmFja2V0LXBhaXIgIsKrIiAiwrsiKSApCihkZWZ1biB6L2luc2VydC1ibGFjay1s ZW50aWN1bGFyLWFuZ2xlLWJvbGQgICAoKSAoaW50ZXJhY3RpdmUpICh4YWgtaW5zZXJ0LWJyYWNr ZXQtcGFpciAi4p2wIiAi4p2xIikgKQooZGVmdW4gei9pbnNlcnQtYmxhY2stYXJyb3dzICAgKCkg KGludGVyYWN0aXZlKSAoeGFoLWluc2VydC1icmFja2V0LXBhaXIgIuKXgCIgIuKWtiIpICkKKGRl ZnVuIHovaW5zZXJ0LWJsYWNrLWhhbmRzICAgKCkgKGludGVyYWN0aXZlKSAoeGFoLWluc2VydC1i cmFja2V0LXBhaXIgIuKYmiIgIuKYmyIpICkKIytFTkRfU1JDCihkZWZ1biB4YWgtaW5zZXJ0LWNv cm5lci1icmFja2V044CM44CNICgpIChpbnRlcmFjdGl2ZSkgKHhhaC1pbnNlcnQtYnJhY2tldC1w YWlyICLjgIwiICLjgI0iKSApCihkZWZ1biB4YWgtaW5zZXJ0LXdoaXRlLWNvcm5lci1icmFja2V0 44CO44CPICgpIChpbnRlcmFjdGl2ZSkgKHhhaC1pbnNlcnQtYnJhY2tldC1wYWlyICLjgI4iICLj gI8iKSApCihkZWZ1biB4YWgtaW5zZXJ0LWFuZ2xlLWJyYWNrZXTjgIjjgIkgKCkgKGludGVyYWN0 aXZlKSAoeGFoLWluc2VydC1icmFja2V0LXBhaXIgIuOAiiIgIuOAiyIpICkKKGRlZnVuIHhhaC1p bnNlcnQtZG91YmxlLWFuZ2xlLWJyYWNrZXTjgIrjgIsgKCkgKGludGVyYWN0aXZlKSAoeGFoLWlu c2VydC1icmFja2V0LXBhaXIgIuOAiiIgIuOAiyIpICkKCgoqKiogb3BlbiBsaW5lIGFib3ZlIGFu ZCBiZWxvdwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDZiMDMzZGEyLWNhZDMtNDZh MC05ZjEwLTRiOTA1ZDdkYzhkMAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCihkZWZ1biB6L2luc2VydC1saW5lLWJlbG93ICgpCiAgIkluc2VydCBhbmQgYXV0 by1pbmRlbnQgbGluZSBiZWxvdyBjdXJzb3IsIGxpa2UgaW4gdmltLiIKICAoaW50ZXJhY3RpdmUp CiAgKG1vdmUtZW5kLW9mLWxpbmUgMSkKICAob3Blbi1saW5lIDEpCiAgKG5leHQtbGluZSkKICAo aW5kZW50LWZvci10YWItY29tbWFuZCkpCgooZGVmdW4gei9pbnNlcnQtbGluZS1hYm92ZSAoKQog ICJJbnNlcnQgYW5kIGF1dG8taW5kZW50IGxpbmUgYWJvdmUgY3Vyc29yLCBsaWtlIGluIHZpbS4i CiAgKGludGVyYWN0aXZlKQogIChwcmV2aW91cy1saW5lKQogIChtb3ZlLWVuZC1vZi1saW5lIDEp CiAgKHN0YWctaW5zZXJ0LWxpbmUtYmVsb3cpKQoKKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtbyIp ICAgICAgICcgei9pbnNlcnQtbGluZS1iZWxvdykKKGdsb2JhbC1zZXQta2V5IChrYmQgIkMtUy1v IikgICAgICcgei9pbnNlcnQtbGluZS1hYm92ZSkKIytFTkRfU1JDCgoKKioqIGZseXNwZWxsIGp1 bXAgdG8gbGFzdCBjb3JyZWN0aW9uCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNzdi YzllYWEtNmI5ZS00OTZkLTk2NjQtMjIyMWY5Nzk5ZWNmCiAgICA6RU5EOgojK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzsgbW92ZSBwb2ludCB0byBwcmV2aW91cyBlcnJvcgo7 OyBiYXNlZCBvbiBjb2RlIGJ5IGhhdHNjaGlwdWggYXQKOzsgaHR0cDovL2VtYWNzLnN0YWNrZXhj aGFuZ2UuY29tL2EvMTQ5MTIvMjAxNwooZGVmdW4gei9mbHlzcGVsbC1nb3RvLXByZXZpb3VzLWVy cm9yIChhcmcpCiAgIkdvIHRvIGFyZyBwcmV2aW91cyBzcGVsbGluZyBlcnJvci4iCiAgKGludGVy YWN0aXZlICJwIikKICAod2hpbGUgKG5vdCAoPSAwIGFyZykpCiAgICAobGV0ICgocG9zIChwb2lu dCkpCiAgICAgICAgICAobWluIChwb2ludC1taW4pKSkKICAgICAgKGlmIChhbmQgKGVxIChjdXJy ZW50LWJ1ZmZlcikgZmx5c3BlbGwtb2xkLWJ1ZmZlci1lcnJvcikKICAgICAgICAgICAgICAgKGVx IHBvcyBmbHlzcGVsbC1vbGQtcG9zLWVycm9yKSkKICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAoaWYgKD0gZmx5c3BlbGwtb2xkLXBvcy1lcnJvciBtaW4pCiAgICAgICAgICAgICAgICA7OyBn b3RvIGJlZ2lubmluZyBvZiBidWZmZXIKICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAg ICAgICAgICAobWVzc2FnZSAiUmVzdGFydGluZyBmcm9tIGVuZCBvZiBidWZmZXIiKQogICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKSkKICAgICAgICAgICAgICAoYmFja3dh cmQtd29yZCAxKSkKICAgICAgICAgICAgKHNldHEgcG9zIChwb2ludCkpKSkKICAgICAgOzsgc2Vl ayB0aGUgbmV4dCBlcnJvcgogICAgICAod2hpbGUgKGFuZCAoPiBwb3MgbWluKQogICAgICAgICAg ICAgICAgICAobGV0ICgob3ZzIChvdmVybGF5cy1hdCBwb3MpKQogICAgICAgICAgICAgICAgICAg ICAgICAociAnKCkpKQogICAgICAgICAgICAgICAgICAgICh3aGlsZSAoYW5kIChub3QgcikgKGNv bnNwIG92cykpCiAgICAgICAgICAgICAgICAgICAgICAoaWYgKGZseXNwZWxsLW92ZXJsYXktcCAo Y2FyIG92cykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgciB0KQogICAgICAgICAg ICAgICAgICAgICAgICAoc2V0cSBvdnMgKGNkciBvdnMpKSkpCiAgICAgICAgICAgICAgICAgICAg KG5vdCByKSkpCiAgICAgICAgKGJhY2t3YXJkLXdvcmQgMSkKICAgICAgICAoc2V0cSBwb3MgKHBv aW50KSkpCiAgICAgIDs7IHNhdmUgdGhlIGN1cnJlbnQgbG9jYXRpb24gZm9yIG5leHQgaW52b2Nh dGlvbgogICAgICAoc2V0cSBhcmcgKDEtIGFyZykpCiAgICAgIChzZXRxIGZseXNwZWxsLW9sZC1w b3MtZXJyb3IgcG9zKQogICAgICAoc2V0cSBmbHlzcGVsbC1vbGQtYnVmZmVyLWVycm9yIChjdXJy ZW50LWJ1ZmZlcikpCiAgICAgIChnb3RvLWNoYXIgcG9zKQogICAgICAoaWYgKD0gcG9zIG1pbikK ICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAobWVzc2FnZSAiTm8gbW9yZSBtaXNzLXNwZWxs ZWQgd29yZCEiKQogICAgICAgICAgICAoc2V0cSBhcmcgMCkpCiAgICAgICAgKGZvcndhcmQtd29y ZCkpKSkpCiMrRU5EX1NSQwoKKioqIGluc2VydCBmaWxlIG5hbWUKICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICA4Y2RmZDZlMS1lODk3LTQ2M2QtOTRjYS1iYjVlZjUyZDQxYjAKICAgIDpF TkQ6Cmh0dHA6Ly9wcmFnbWF0aWNlbWFjcy5jb20vZW1hY3MvaW5zZXJ0LWZpbGUtbmFtZS8KIytC RUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7OyBodHRwczovL3d3dy5lbWFjc3dp a2kub3JnL2VtYWNzL0luc2VydEZpbGVOYW1lCihkZWZ1biB6L2luc2VydC1maWxlLW5hbWUgKGZp bGVuYW1lICZvcHRpb25hbCBhcmdzKQogICJJbnNlcnQgbmFtZSBvZiBmaWxlIEZJTEVOQU1FIGlu dG8gYnVmZmVyIGFmdGVyIHBvaW50LgoKICBQcmVmaXhlZCB3aXRoIFxcW3VuaXZlcnNhbC1hcmd1 bWVudF0sIGV4cGFuZCB0aGUgZmlsZSBuYW1lIHRvCiAgaXRzIGZ1bGx5IGNhbm9jYWxpemVkIHBh dGguICBTZWUgYGV4cGFuZC1maWxlLW5hbWUnLgoKICBQcmVmaXhlZCB3aXRoIFxcW25lZ2F0aXZl LWFyZ3VtZW50XSwgdXNlIHJlbGF0aXZlIHBhdGggdG8gZmlsZQogIG5hbWUgZnJvbSBjdXJyZW50 IGRpcmVjdG9yeSwgYGRlZmF1bHQtZGlyZWN0b3J5Jy4gIFNlZQogIGBmaWxlLXJlbGF0aXZlLW5h bWUnLgoKICBUaGUgZGVmYXVsdCB3aXRoIG5vIHByZWZpeCBpcyB0byBpbnNlcnQgdGhlIGZpbGUg bmFtZSBleGFjdGx5IGFzCiAgaXQgYXBwZWFycyBpbiB0aGUgbWluaWJ1ZmZlciBwcm9tcHQuIgog IDs7IEJhc2VkIG9uIGluc2VydC1maWxlIGluIEVtYWNzIC0tIGFzaGF3bGV5IDIwMDgwOTI2CiAg KGludGVyYWN0aXZlICIqZkluc2VydCBmaWxlIG5hbWU6IFxuUCIpCiAgKGNvbmQgKChlcSAnLSBh cmdzKQogICAgICAgICAoaW5zZXJ0IChleHBhbmQtZmlsZS1uYW1lIGZpbGVuYW1lKSkpCiAgICAg ICAgKChub3QgKG51bGwgYXJncykpCiAgICAgICAgIChpbnNlcnQgKGZpbGVuYW1lKSkpCiAgICAg ICAgKHQKICAgICAgICAgKGluc2VydCAoZmlsZS1yZWxhdGl2ZS1uYW1lIGZpbGVuYW1lKSkpKSkK CgojK0VORF9TUkMKKioqIHBhc3RlIGZvcm1hdHRlZCBodG1sIGZyb20gd2ViIGFuZCBjbGlwIApo dHRwczovL2VtYWNzLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMjEyMS9vcmctbW9kZS1w YXJzaW5nLXJpY2gtaHRtbC1kaXJlY3RseS13aGVuLXBhc3RpbmcKCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovaHRtbDJvcmctY2xpcGJvYXJkICgpCiAgIkNv bnZlcnQgY2xpcGJvYXJkIGNvbnRlbnRzIGZyb20gSFRNTCB0byBPcmcgYW5kIHRoZW4gcGFzdGUg KHlhbmspLiIKICAoaW50ZXJhY3RpdmUpCiAgKGtpbGwtbmV3IChzaGVsbC1jb21tYW5kLXRvLXN0 cmluZyAieGNsaXAgLW8gLXQgVEFSR0VUUyB8IGdyZXAgLXEgdGV4dC9odG1sICYmICh4Y2xpcCAt byAtdCB0ZXh0L2h0bWwgfCBwYW5kb2MgLWYgaHRtbCAtdCBqc29uIHwgcGFuZG9jIC1mIGpzb24g LXQgb3JnKSB8fCB4Y2xpcCAtbyIpKQogICh5YW5rKSkKCiMrRU5EX1NSQwoqKiogZmluZCBhbmQg cmVwbGFjZSBvbiBzcGVjaWZpYyBsaW5lcyAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3Vs dHMgbm9uZQooZGVmdW4gei9yZXBsYWNlLW9uLW1hdGNoaW5nLWxpbmVzICgmb3B0aW9uYWwgYXJn KQogICJSZXBsYWNlIHRleHQgb24gbGluZXMgdGhhdCBtYXRjaCBhIHJlZ2V4cC4KV2l0aCBwcmVm aXggYXJnLCByZXBsYWNlIG9uIG5vbi1tYXRjaGluZyBsaW5lcy4iCiAgKGludGVyYWN0aXZlICJQ IikKICAobGV0KiAoKHJlZ2V4cCAoY29uY2F0ICIuKiIKICAgICAgICAgICAgICAgICAgICAgICAg IChyZWFkLWZyb20tbWluaWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQg IlJlcGxhY2Ugb24gbGluZXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlm IGFyZyAibm90ICIgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF0Y2hp bmcgcmVnZXhwOiAiKSkpKQogICAgICAgICAocmVwbGFjZSAocmVhZC1mcm9tLW1pbmlidWZmZXIg IlJlcGxhY2U6ICIpKQogICAgICAgICAod2l0aCAocmVhZC1mcm9tLW1pbmlidWZmZXIgKGNvbmNh dCAiUmVwbGFjZSAiIHJlcGxhY2UgIiB3aXRoOiAiKSkpCiAgICAgICAgIG1hdGNoKQogICAgKHNh dmUtZXhjdXJzaW9uCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICh3aGlsZSAo bm90IChlb2JwKSkKICAgICAgICAoc2V0cSBtYXRjaCAobG9va2luZy1hdCByZWdleHApKQogICAg ICAgICh3aGVuIChpZiBhcmcgKG5vdCBtYXRjaCkgbWF0Y2gpCiAgICAgICAgICAod2hpbGUgKHNl YXJjaC1mb3J3YXJkIHJlcGxhY2UgKHBvaW50LWF0LWVvbCkgdCkKICAgICAgICAgICAgKHJlcGxh Y2UtbWF0Y2ggd2l0aCBuaWwgdCkpKQogICAgICAgIChmb3J3YXJkLWxpbmUpKSkpKQojK0VORF9T UkMKKiogaHlkcmEgcmVsYXRlZAogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBmYzZlYzc1 YS0zZTgwLTQwZWEtODEwZi04MmIzMGE0ZTRmMDcKICAgOkVORDoKKioqIGluc2VydCBoeWRyYSBj b2xvcnMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA0YzJiNDdhNS1kMmEzLTQyNDIt ODY4MC00NjUxNmQwMjg4ZjEKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIHovaW5zZXJ0LWh5ZHJhLWNvbG9yLXJlZCAoKQogICIgIgogIChpbnRl cmFjdGl2ZSkKICAoaW5zZXJ0ICI6ZmFjZSAnaHlkcmEtZmFjZS1yZWQiKQogICkKCgooZGVmdW4g ei9pbnNlcnQtaHlkcmEtY29sb3Itb3JhbmdlICgpCiAgIiAiCiAgKGludGVyYWN0aXZlKQogIChp bnNlcnQgIjpmYWNlICdoeWRyYS1mYWNlLW9yYW5nZSIpCiAgKQoKCihkZWZ1biB6L2luc2VydC1o eWRyYS1jb2xvci1icm93biAoKQogICIgIgogIChpbnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICI6ZmFj ZSAnaHlkcmEtZmFjZS1icm93biIpCiAgKQoKCihkZWZ1biB6L2luc2VydC1oeWRyYS1jb2xvci1j eWFuICgpCiAgIiAiCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgIjpmYWNlICdoeWRyYS1mYWNl LWN5YW4iKQogICkKCgooZGVmdW4gei9pbnNlcnQtaHlkcmEtY29sb3ItZ3JlZW4gKCkKICAiICIK ICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JlZW4iKQogICkK CgooZGVmdW4gei9pbnNlcnQtaHlkcmEtY29sb3ItcHVycGxlICgpCiAgIiAiCiAgKGludGVyYWN0 aXZlKQogIChpbnNlcnQgIjpmYWNlICdoeWRyYS1mYWNlLXB1cnBsZSIpCiAgKQoKCgooZGVmdW4g ei9pbnNlcnQtaHlkcmEtY29sb3ItZ3JleSAoKQogICIgIgogIChpbnRlcmFjdGl2ZSkKICAoaW5z ZXJ0ICI6ZmFjZSAnaHlkcmEtZmFjZS1ncmV5IikKICApCgoKKGRlZnVuIHovaW5zZXJ0LWh5ZHJh LWNvbG9yLXNreSAoKQogICIgIgogIChpbnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICI6ZmFjZSAnaHlk cmEtZmFjZS1za3kiKQogICkKCgooZGVmdW4gei9pbnNlcnQtaHlkcmEtY29sb3Itc2FsbW9uICgp CiAgIiAiCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgIjpmYWNlICdoeWRyYS1mYWNlLXNhbG1v biIpCiAgKQoKCihkZWZ1biB6L2luc2VydC1oeWRyYS1jb2xvci10b3JxICgpCiAgIiAiCiAgKGlu dGVyYWN0aXZlKQogIChpbnNlcnQgIjpmYWNlICdoeWRyYS1mYWNlLXRvcnEiKQogICkKCgooZGVm dW4gei9pbnNlcnQtaHlkcmEtY29sb3ItZGFya3JlZCAoKQogICIgIgogIChpbnRlcmFjdGl2ZSkK ICAoaW5zZXJ0ICI6ZmFjZSAnaHlkcmEtZmFjZS1kYXJrcmVkIikKICApCgoKKGRlZnVuIHovaW5z ZXJ0LWh5ZHJhLWNvbG9yLXllbGxvdyAoKQogICIgIgogIChpbnRlcmFjdGl2ZSkKICAoaW5zZXJ0 ICI6ZmFjZSAnaHlkcmEtZmFjZS15ZWxsb3ciKQogICkKCgooZGVmdW4gei9pbnNlcnQtaHlkcmEt Y29sb3ItZm9yZXN0Z3JlZW4gKCkKICAiICIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiOmZh Y2UgJ2h5ZHJhLWZhY2UtZm9yZXN0Z3JlZW4iKQogICkKCgoKCiMrRU5EX1NSQwoqKiogY291bnNl bCBzZWFyY2ggaHlkcmEKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3OGZjNzhmOS1j ZTMwLTRiM2YtYThmYi0yMzc1M2IwMDUzNmUKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovY291bnNlbC1oeWRyYS1oZWFkcyAoKQogIChpbnRl cmFjdGl2ZSkKICAobGV0KiAoKGJhc2UgKHN1YnN0cmluZwogICAgICAgICAgICAgICAgKHByaW4x LXRvLXN0cmluZyBoeWRyYS1jdXJyLWJvZHktZm4pCiAgICAgICAgICAgICAgICAwIC00KSkKICAg ICAgICAgKGhlYWRzIChldmFsIChpbnRlcm4gKGNvbmNhdCBiYXNlICJoZWFkcyIpKSkpCiAgICAg ICAgIChrZXltYXAgKGV2YWwgKGludGVybiAoY29uY2F0IGJhc2UgImtleW1hcCIpKSkpCiAgICAg ICAgIChoZWFkLW5hbWVzCiAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHgpCiAgICAgICAgICAg ICAgICAgICAgKGNvbnMKICAgICAgICAgICAgICAgICAgICAgKGlmIChudGggMiB4KQogICAgICAg ICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiWyVzXSAlUyAoJXMpIiAobnRoIDAgeCkgKG50aCAx IHgpIChudGggMiB4KSkKICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJbJXNdICVTIiAo bnRoIDAgeCkgKG50aCAxIHgpKSkKICAgICAgICAgICAgICAgICAgICAgKGxvb2t1cC1rZXkga2V5 bWFwIChrYmQgKG50aCAwIHgpKSkpKQogICAgICAgICAgICAgICAgICBoZWFkcykpKQogICAgKGl2 eS1yZWFkICJoZWFkOiAiIGhlYWQtbmFtZXMKICAgICAgICAgICAgICA6YWN0aW9uICMnY2FsbC1p bnRlcmFjdGl2ZWx5KQogICAgKGh5ZHJhLWtleWJvYXJkLXF1aXQpKSkKIytFTkRfU1JDCioqKiBz bGFzaCBcCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNzViZTAxZmQtZjRiZS00OTk0 LWFmYTgtMjBjNTMwY2UxNzNhCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIHovaW5zZXJ0LXNsc2ggKCkKICAiIGluc2VydCAgICAgIgogIChpbnRl cmFjdGl2ZSkKICAoaW5zZXJ0ICJcXCIpCikKIytFTkRfU1JDCioqKiBqdW1wIHRvIG9yZy1ib29r bWFya3MgdmlhIGh5ZHJhIGZ1bmN0aW9ucyAKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAg ICBlZGFlM2VlNi0wZWI3LTRkNzktYmVlZi1jZmZkZGM1MjIzYWIKICAgIDpFTkQ6CgojK0JFR0lO X1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L29yZy1ib29rbWFyay1qdW1w LWJ5LXN0cmluZyAocykKICAiSnVtcCB0byBib29rbWFyayBuYW1lZCBTLiIKICAoaW50ZXJhY3Rp dmUpCiAgKG9yZy1ib29rbWFyay1qdW1wIChhc3NvYyBzIGJvb2ttYXJrLWFsaXN0KSkpCiMrRU5E X1NSQwoKKiogUm9vdCBhY3Rpb25zCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDNiOTYz Yjc0LWVhNmUtNDA4MS04YjE0LThhZmJjODQxYzlmNgogICA6RU5EOgoqKiogZWRpdCBmaWxlIGFz IHJvb3QKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBjNjgwY2VjYi1mNTBiLTQyZmIt OGYxZC05ODZhNjQzM2I0MGYKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQooZGVmdW4gei1lZGl0LWZpbGUtYXMtcm9vdCAoKQogICJFZGl0IHRoZSBmaWxlIHRo YXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGJ1ZmZlciBhcyByb290IgogIChpbnRl cmFjdGl2ZSkKICAoaWYgKGJ1ZmZlci1maWxlLW5hbWUpCiAgICAgIChwcm9nbgogICAgICAgIChz ZXRxIGZpbGUgKGNvbmNhdCAiL3N1ZG86cm9vdEBsb2NhbGhvc3Q6IiAoYnVmZmVyLWZpbGUtbmFt ZSkpKQogICAgICAgIChmaW5kLWZpbGUgZmlsZSkpCiAgICAobWVzc2FnZSAiQ3VycmVudCBidWZm ZXIgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGZpbGUuIikpKQoKCiMrRU5EX1NSQwoqKiBi b29rbWFya3MgCioqKiBibSsgZnVuY3Rpb24gYm9va21hcmtzCioqKiogZmIudHJhdmVsLm55Ywoj K0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biBmYi50cmF2ZWwubnlj ICgpCiAgImZ1bmN0aW9uIGJvb2ttYXJrIgogIChpbnRlcmFjdGl2ZSkKICAoYm1rcC1kaXJlZC1q dW1wICJmYi4wMDAxIiApCiAgKG9yZy1uYXJyb3ctdG8tc3VidHJlZSkKICApCiMrRU5EX1NSQwoq KiBCdWZmZXJzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDkxMzRhZGU1LTM4ZWMtNGRi NS05ODE5LWRlOGZlZTkxMWI4MgogICA6RU5EOgoqKioga2lsbCBvdGhlciBidWZmZXJzCiAgICA6 UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZjhlZjk2MWUtN2RjZC00YTQ2LWJhZTMtM2I1MzJj YzE4YjIwCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRl ZnVuIHota2lsbC1vdGhlci1idWZmZXJzICgpCiAgICAgICJLaWxsIGFsbCBvdGhlciBidWZmZXJz LiIKICAgICAgKGludGVyYWN0aXZlKQogICAgICAobWFwYyAna2lsbC1idWZmZXIgKGRlbHEgKGN1 cnJlbnQtYnVmZmVyKSAoYnVmZmVyLWxpc3QpKSkpCgojK0VORF9TUkMKCioqKiBtb3ZtZW50IGlu IGJ1ZmZlcgogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGU2ZWI2N2Y2LWNkY2ItNGEz Ny05NDgyLTExODNlMjZlZDdkOAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVz dWx0cyBub25lCihkZWZ1biBuZXh0LXVzZXItYnVmZmVyICgpCiAgIlN3aXRjaCB0byB0aGUgbmV4 dCB1c2VyIGJ1ZmZlci4KVXNlciBidWZmZXJzIGFyZSB0aG9zZSB3aG9zZSBuYW1lIGRvZXMgbm90 IHN0YXJ0IHdpdGggKi4iCiAgKGludGVyYWN0aXZlKQogIChuZXh0LWJ1ZmZlcikKICAobGV0ICgo aSAwKSkKICAgICh3aGlsZSAoYW5kIChzdHJpbmctbWF0Y2ggIl4qIiAoYnVmZmVyLW5hbWUpKSAo PCBpIDUwKSkKICAgICAgKHNldHEgaSAoMSsgaSkpIChuZXh0LWJ1ZmZlcikgKSkpCgooZGVmdW4g cHJldmlvdXMtdXNlci1idWZmZXIgKCkKICAiU3dpdGNoIHRvIHRoZSBwcmV2aW91cyB1c2VyIGJ1 ZmZlci4KVXNlciBidWZmZXJzIGFyZSB0aG9zZSB3aG9zZSBuYW1lIGRvZXMgbm90IHN0YXJ0IHdp dGggKi4iCiAgKGludGVyYWN0aXZlKQogIChwcmV2aW91cy1idWZmZXIpCiAgKGxldCAoKGkgMCkp CiAgICAod2hpbGUgKGFuZCAoc3RyaW5nLW1hdGNoICJeKiIgKGJ1ZmZlci1uYW1lKSkgKDwgaSA1 MCkpCiAgICAgIChzZXRxIGkgKDErIGkpKSAocHJldmlvdXMtYnVmZmVyKSApKSkKCihkZWZ1biBu ZXh0LWVtYWNzLWJ1ZmZlciAoKQogICJTd2l0Y2ggdG8gdGhlIG5leHQgZW1hY3MgYnVmZmVyLgpF bWFjcyBidWZmZXJzIGFyZSB0aG9zZSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoICouIgogIChpbnRl cmFjdGl2ZSkKICAobmV4dC1idWZmZXIpCiAgKGxldCAoKGkgMCkpCiAgICAod2hpbGUgKGFuZCAo bm90IChzdHJpbmctbWF0Y2ggIl4qIiAoYnVmZmVyLW5hbWUpKSkgKDwgaSA1MCkpCiAgICAgIChz ZXRxIGkgKDErIGkpKSAobmV4dC1idWZmZXIpICkpKQoKKGRlZnVuIHByZXZpb3VzLWVtYWNzLWJ1 ZmZlciAoKQogICJTd2l0Y2ggdG8gdGhlIHByZXZpb3VzIGVtYWNzIGJ1ZmZlci4KRW1hY3MgYnVm ZmVycyBhcmUgdGhvc2Ugd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAqLiIKICAoaW50ZXJhY3RpdmUp CiAgKHByZXZpb3VzLWJ1ZmZlcikKICAobGV0ICgoaSAwKSkKICAgICh3aGlsZSAoYW5kIChub3Qg KHN0cmluZy1tYXRjaCAiXioiIChidWZmZXItbmFtZSkpKSAoPCBpIDUwKSkKICAgICAgKHNldHEg aSAoMSsgaSkpIChwcmV2aW91cy1idWZmZXIpICkpKQoKCihkZWZ1biBzd2l0Y2gtdG8tcHJldmlv dXMtYnVmZmVyICgpCiAgIlN3aXRjaCB0byBwcmV2aW91c2x5IG9wZW4gYnVmZmVyLgpSZXBlYXRl ZCBpbnZvY2F0aW9ucyB0b2dnbGUgYmV0d2VlbiB0aGUgdHdvIG1vc3QgcmVjZW50bHkgb3BlbiBi dWZmZXJzLiIKICAoaW50ZXJhY3RpdmUpCiAgKHN3aXRjaC10by1idWZmZXIgKG90aGVyLWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpIDEpKSkKCgojK0VORF9TUkMKKioqIHNhdmUgY3VycmVudCBmaWxl IGFuZCBjbG9zZSB3aW5kb3cKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4OGZiMTI0 MC0wY2ZkLTRiNzAtYThkMy1kZWQ2YzUzOGNhZGUKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei1zYXZlLWJ1ZmZlci1jbG9zZS13aW5kb3cgKCkK ICAiRE9DU1RSSU5HIgogIChpbnRlcmFjdGl2ZSkKICAgIChzYXZlLWJ1ZmZlcikKICAgIChraWxs LXRoaXMtYnVmZmVyKQogICkKIytFTkRfU1JDCioqKiBtb3ZlIHRvIG90aGVyIHdpbmRvdyBhbmQg Y2xvc2UgY3VycmVudAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDY0NTc5NzgzLTg1 NGEtNGU5MS1iMjllLWYxMTdiNWI4ZTA3YQogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihkZWZ1biB6L2J1ZmZlci1jbG9zZS1hbmRtb3ZlLW90aGVyICAgKCkK ICAgICAoaW50ZXJhY3RpdmUpICAgIAogICAgIChzYXZlLWJ1ZmZlcikgICAgICAgIAogICAgICAo ZGVsZXRlLXdpbmRvdykKKQojK0VORF9TUkMKKioqIHByZSBkZWZpbmVkIGJ1ZmZlcnMgKHdvcmtz cGFjZXMpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZTkyN2NmMDgtMWQ2NS00NTIx LTgxNjYtZWNmZmFiNzdiNzcwCiAgICA6RU5EOgoqKioqIHJlZmVyZW5jZXMKICAgICA6UFJPUEVS VElFUzoKICAgICA6SUQ6ICAgICAgIGY5MmU4M2RlLWVlNjAtNDAyZi1hMWRiLTlkZWRkMjkzMDNk MAogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVu IHovYnVmZmVycy1yZXN0b3JlLXJlZndvcmsgICAoKQogICAgIChpbnRlcmFjdGl2ZSkgICAgCiAg ICAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9VbmkvcGFwZXJzL3BhcGVyLm1l dGEub3JnIikKICAgICAoc3BsaXQtd2luZG93LXJpZ2h0KQogICAgIChmaW5kLWZpbGUgIi9ob21l L3plbHRhay9vcmcvZmlsZXMvVW5pL3BhcGVycy96ZWx0YWsucGFwZXJzLmJpYiIpCiAgICAgKHNw bGl0LXdpbmRvdy1iZWxvdykKICAgICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVz L2hlbHAvd29ya2Zsb3dzLm9yZyIpCiAgICAgKQojK0VORF9TUkMKKioqKiBUT0RPIEFnZW5kYSBz cGxpdAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYjg5NjliM2UtMTdkNS00OTEz LTk1ZDEtMWU2OGVjODU1MGE4CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJl c3VsdHMgbm9uZQooZGVmdW4gei9idWZmZXJzLXJlc3RvcmUtYWdlbmRhLXNwbGl0ICAgKCkKICAo aW50ZXJhY3RpdmUpCiAgKGxldCAoKG9yZy1hZ2VuZGEtc3RpY2t5IHQpKQogICAgKG9yZy1hZ2Vu ZGEgbmlsICJiYSIpCiAgICAoc3BsaXQtd2luZG93LXJpZ2h0KQogICAgKG9yZy1hZ2VuZGEgbmls ICJhIikKICAgICkpCiMrRU5EX1NSQwoKKioqIHRvZ2dsZSB3aW5kb3cgc3BsaXRzCiAgICA6UFJP UEVSVElFUzoKICAgIDpJRDogICAgICAgYzUwYjk4ZmEtNTRlYS00YzkyLWFlMjItOGY4ZmZmNDc0 MDdlCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1 biB6L3RvZ2dsZS13aW5kb3ctc3BsaXQgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGlmICg9IChjb3Vu dC13aW5kb3dzKSAyKQogICAgICAobGV0KiAoKHRoaXMtd2luLWJ1ZmZlciAod2luZG93LWJ1ZmZl cikpCiAgICAgICAgICAgICAobmV4dC13aW4tYnVmZmVyICh3aW5kb3ctYnVmZmVyIChuZXh0LXdp bmRvdykpKQogICAgICAgICAgICAgKHRoaXMtd2luLWVkZ2VzICh3aW5kb3ctZWRnZXMgKHNlbGVj dGVkLXdpbmRvdykpKQogICAgICAgICAgICAgKG5leHQtd2luLWVkZ2VzICh3aW5kb3ctZWRnZXMg KG5leHQtd2luZG93KSkpCiAgICAgICAgICAgICAodGhpcy13aW4tMm5kIChub3QgKGFuZCAoPD0g KGNhciB0aGlzLXdpbi1lZGdlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIG5leHQtd2luLWVkZ2VzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg8PSAoY2FkciB0aGlzLXdpbi1lZGdlcykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2FkciBuZXh0LXdpbi1lZGdlcykpKSkpCiAgICAgICAgICAgICAo c3BsaXR0ZXIKICAgICAgICAgICAgICAoaWYgKD0gKGNhciB0aGlzLXdpbi1lZGdlcykKICAgICAg ICAgICAgICAgICAgICAgKGNhciAod2luZG93LWVkZ2VzIChuZXh0LXdpbmRvdykpKSkKICAgICAg ICAgICAgICAgICAgJ3NwbGl0LXdpbmRvdy1ob3Jpem9udGFsbHkKICAgICAgICAgICAgICAgICdz cGxpdC13aW5kb3ctdmVydGljYWxseSkpKQogICAgICAgIChkZWxldGUtb3RoZXItd2luZG93cykK ICAgICAgICAobGV0ICgoZmlyc3Qtd2luIChzZWxlY3RlZC13aW5kb3cpKSkKICAgICAgICAgIChm dW5jYWxsIHNwbGl0dGVyKQogICAgICAgICAgKGlmIHRoaXMtd2luLTJuZCAob3RoZXItd2luZG93 IDEpKQogICAgICAgICAgKHNldC13aW5kb3ctYnVmZmVyIChzZWxlY3RlZC13aW5kb3cpIHRoaXMt d2luLWJ1ZmZlcikKICAgICAgICAgIChzZXQtd2luZG93LWJ1ZmZlciAobmV4dC13aW5kb3cpIG5l eHQtd2luLWJ1ZmZlcikKICAgICAgICAgIChzZWxlY3Qtd2luZG93IGZpcnN0LXdpbikKICAgICAg ICAgIChpZiB0aGlzLXdpbi0ybmQgKG90aGVyLXdpbmRvdyAxKSkpKSkpCiMrRU5EX1NSQwoqKiog RGVsZXRlIGN1cnJlbnQgZmlsZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDUyMDQ2 NGM0LTQxYTUtNDdkMC1iOWYzLTgzODA4MjQ2YWFhMAogICAgOkVORDoKbWFpbmx5IHVzZWQgd2hl biB2aWV3aW5nIGltYWdlcyBpbiBkaXJlZCBpbWFnZQojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCihkZWZ1biB6L2RlbGV0ZS1jdXJyZW50LWZpbGUgKCkKICAiRGVsZXRlIHRo ZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBidWZmZXIgYW5kIGNsb3NlIHRoZSBi dWZmZXIuCkFsc28gcHVzaCBmaWxlIGNvbnRlbnQgdG8gYGtpbGwtcmluZycuCklmIGJ1ZmZlciBp cyBub3QgZmlsZSwganVzdCBjbG9zZSBpdCwgYW5kIHB1c2ggZmlsZSBjb250ZW50IHRvIGBraWxs LXJpbmcnLgoKVVJMIGBodHRwOi8vZXJnb2VtYWNzLm9yZy9lbWFjcy9lbGlzcF9kZWxldGUtY3Vy cmVudC1maWxlLmh0bWwnClZlcnNpb24gMjAxNS0wOC0xMiIKICAoaW50ZXJhY3RpdmUpCiAgKHBy b2duCiAgICAoa2lsbC1uZXcgKGJ1ZmZlci1zdHJpbmcpKQogICAgKHdoZW4gKGJ1ZmZlci1maWxl LW5hbWUpCiAgICAgICh3aGVuIChmaWxlLWV4aXN0cy1wIChidWZmZXItZmlsZS1uYW1lKSkKICAg ICAgICAocHJvZ24KICAgICAgICAgIChkZWxldGUtZmlsZSAoYnVmZmVyLWZpbGUtbmFtZSkpCiAg ICAgICAgICAobWVzc2FnZSAiRGVsZXRlZDog44CMJXPjgI0uIiAoYnVmZmVyLWZpbGUtbmFtZSkp KSkpCiAgICAobGV0ICgoYnVmZmVyLW9mZmVyLXNhdmUgbmlsKSkKICAgICAgKHNldC1idWZmZXIt bW9kaWZpZWQtcCBuaWwpCiAgICAgIChraWxsLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkpKQoj K0VORF9TUkMKKioqIHRyYW5zcG9zZS1idWZmZXJzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgYzhkOGVjYWUtYTQ5YS00ZjhmLWIwY2MtZTFkMGYxOGRlOGMyCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L3RyYW5zcG9zZS1idWZm ZXJzIChhcmcpCiAgIlRyYW5zcG9zZSB0aGUgYnVmZmVycyBzaG93biBpbiB0d28gd2luZG93cy4i CiAgKGludGVyYWN0aXZlICJwIikKICAobGV0ICgoc2VsZWN0b3IgKGlmICg+PSBhcmcgMCkgJ25l eHQtd2luZG93ICdwcmV2aW91cy13aW5kb3cpKSkKICAgICh3aGlsZSAoLz0gYXJnIDApCiAgICAg IChsZXQgKCh0aGlzLXdpbiAod2luZG93LWJ1ZmZlcikpCiAgICAgICAgICAgIChuZXh0LXdpbiAo d2luZG93LWJ1ZmZlciAoZnVuY2FsbCBzZWxlY3RvcikpKSkKICAgICAgICAoc2V0LXdpbmRvdy1i dWZmZXIgKHNlbGVjdGVkLXdpbmRvdykgbmV4dC13aW4pCiAgICAgICAgKHNldC13aW5kb3ctYnVm ZmVyIChmdW5jYWxsIHNlbGVjdG9yKSB0aGlzLXdpbikKICAgICAgICAoc2VsZWN0LXdpbmRvdyAo ZnVuY2FsbCBzZWxlY3RvcikpKQogICAgICAoc2V0cSBhcmcgKGlmIChwbHVzcCBhcmcpICgxLSBh cmcpICgxKyBhcmcpKSkpKSkKIytFTkRfU1JDCioqIG9wZW4gYSBzcGVjaWZpYyBkaXIKICAgOlBS T1BFUlRJRVM6CiAgIDpJRDogICAgICAgYWVmMmJhZWEtYmE2ZS00NjBhLWE0ZTYtMWM0ZjBhNDU3 NTUxCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4g b29kICgpIChpbnRlcmFjdGl2ZSkgKGRpcmVkICIvaG9tZS96ZWx0YWsvb3JnIikpCiMrRU5EX1NS QwoqKiBHZW5lcmFsIGVtYWNzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDRkZDlhYzMy LWU1ZTktNDhhNi05ZjkwLWY4MzQwOWIxNjMxNgogICA6RU5EOgoqKiogY3JlYXRlIHNjcmF0Y2gg YnVmZmVyCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNmI4ZTg4OGQtZjQxNi00NTNj LWE4YzMtOWVhMTAwOGViZWJkCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIGNyZWF0ZS1zY3JhdGNoLWJ1ZmZlciBuaWwKICAgImNyZWF0ZSBhIHNj cmF0Y2ggYnVmZmVyIgogICAoaW50ZXJhY3RpdmUpCiAgIChzd2l0Y2gtdG8tYnVmZmVyIChnZXQt YnVmZmVyLWNyZWF0ZSAiKnNjcmF0Y2gqIikpCiAgIChsaXNwLWludGVyYWN0aW9uLW1vZGUpKSAg CiMrRU5EX1NSQwoqKiogZGVzY3JpYmUgbGFzdCBjb21tYW4KICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICA3MzUxZmMxYi05ZWRjLTQ2ODUtOWM4ZC02MzNjYWM5NDc3N2IKICAgIDpFTkQ6 Cmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjc1ODQyL2lzLXRoZXJlLWEtcmVw ZWF0LWxhc3QtY29tbWFuZC1pbi1lbWFjc2QKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCihkZWZ1biBkZXNjcmliZS1sYXN0LWZ1bmN0aW9uKCkgCiAgKGludGVyYWN0aXZlKSAK ICAoZGVzY3JpYmUtZnVuY3Rpb24gbGFzdC1jb21tYW5kKSkKIytFTkRfU1JDCioqKiBMYXVuY2gg YW5zaS10ZXJtCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMzgzZjlhYTktYjdlNS00 ZDJiLWIyOWQtOTJkNzlhMmI0YmJmCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKOzsgdGFrZW4gZnJvbSBoZXJlOiBodHRwOi8vd3d3LmVuaWdtYWN1cnJ5LmNv bS8yMDA4LzEyLzI2L2VtYWNzLWFuc2ktdGVybS10cmlja3MvCihkZWZ1biB6L2xhdW5jaC0tYW5z aS10ZXJtICgpCiAgIklmIHRoZSBjdXJyZW50IGJ1ZmZlciBpczoKICAgICAxKSBhIHJ1bm5pbmcg YW5zaS10ZXJtIG5hbWVkICphbnNpLXRlcm0qLCByZW5hbWUgaXQuCiAgICAgMikgYSBzdG9wcGVk IGFuc2ktdGVybSwga2lsbCBpdCBhbmQgY3JlYXRlIGEgbmV3IG9uZS4KICAgICAzKSBhIG5vbiBh bnNpLXRlcm0sIGdvIHRvIGFuIGFscmVhZHkgcnVubmluZyBhbnNpLXRlcm0KICAgICAgICBvciBz dGFydCBhIG5ldyBvbmUgd2hpbGUga2lsbGluZyBhIGRlZnVudCBvbmUiCiAgKGludGVyYWN0aXZl KQogIChsZXQgKChpcy10ZXJtIChzdHJpbmc9ICJ0ZXJtLW1vZGUiIG1ham9yLW1vZGUpKQogICAg ICAgIChpcy1ydW5uaW5nICh0ZXJtLWNoZWNrLXByb2MgKGJ1ZmZlci1uYW1lKSkpCiAgICAgICAg KHRlcm0tY21kICIvYmluL3pzaCIpCiAgICAgICAgKGFub24tdGVybSAoZ2V0LWJ1ZmZlciAiKmFu c2ktdGVybSoiKSkpCiAgICAoaWYgaXMtdGVybQogICAgICAgIChpZiBpcy1ydW5uaW5nCiAgICAg ICAgICAgIChpZiAoc3RyaW5nPSAiKmFuc2ktdGVybSoiIChidWZmZXItbmFtZSkpCiAgICAgICAg ICAgICAgICA7OyAoY2FsbC1pbnRlcmFjdGl2ZWx5ICdyZW5hbWUtYnVmZmVyKQogICAgICAgICAg ICAgICAgKGFuc2ktdGVybSB0ZXJtLWNtZCkKICAgICAgICAgICAgICAoaWYgYW5vbi10ZXJtCiAg ICAgICAgICAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyICIqYW5zaS10ZXJtKiIpCiAgICAgICAg ICAgICAgICAoYW5zaS10ZXJtIHRlcm0tY21kKSkpCiAgICAgICAgICAoa2lsbC1idWZmZXIgKGJ1 ZmZlci1uYW1lKSkKICAgICAgICAgIChhbnNpLXRlcm0gdGVybS1jbWQpKQogICAgICAoaWYgYW5v bi10ZXJtCiAgICAgICAgICAoaWYgKHRlcm0tY2hlY2stcHJvYyAiKmFuc2ktdGVybSoiKQogICAg ICAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyICIqYW5zaS10ZXJtKiIpCiAgICAgICAgICAgIChr aWxsLWJ1ZmZlciAiKmFuc2ktdGVybSoiKQogICAgICAgICAgICAoYW5zaS10ZXJtIHRlcm0tY21k KSkKICAgICAgICAoYW5zaS10ZXJtIHRlcm0tY21kKSkpKSkKIytFTkRfU1JDCioqIHNhdmluZyAK KioqIGluY3JlbWVudCBmaWxlIG51bSB3aGVuIHNhdmluZwpodHRwOi8vZW1hY3Muc3RhY2tleGNo YW5nZS5jb20vcXVlc3Rpb25zLzI3ODUzL2luY3JlbWVudC1maWxlLW5hbWUtYW5kLWNyZWF0ZS1h LW5ldy12ZXJzaW9uLW9mLXRoZS1maWxlLzI3ODU1P25vcmVkaXJlY3Q9MSNjb21tZW50NDI2NDJf Mjc4NTUKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9pbmNy ZW1lbnQtbnVtYmVyLWluLWZpbGUtbmFtZSAobmFtZSkKICAod2l0aC10ZW1wLWJ1ZmZlcgogICAg KGluc2VydCBuYW1lKQogICAgKHNlYXJjaC1iYWNrd2FyZCAiLiIgbmlsIHQpCiAgICAocmUtc2Vh cmNoLWJhY2t3YXJkICJbMC05XSsiIG5pbCB0KQogICAgOyhza2lwLWNoYXJzLWZvcndhcmQgIjAi KSA7OyBXb3VsZCBwcmVzZXJ2ZSAwcwogICAgKGlmIChsb29raW5nLWF0ICJbMDEyMzQ1Njc4OV0r IikKICAgICAgICAocmVwbGFjZS1tYXRjaCAobnVtYmVyLXRvLXN0cmluZyAoMSsgKHN0cmluZy10 by1udW1iZXIgKG1hdGNoLXN0cmluZyAwKSkpKSkKICAgICAgKGluc2VydCAiLTEiKSkKICAgIChi dWZmZXItc3RyaW5nKSkpCgooZGVmdW4gei93cml0ZS1maWxlLWluY3JlbWVudCAoKQogIChpbnRl cmFjdGl2ZSkKICAod3JpdGUtZmlsZSAoei9pbmNyZW1lbnQtbnVtYmVyLWluLWZpbGUtbmFtZSAo YnVmZmVyLWZpbGUtbmFtZSkpKSkKIytFTkRfU1JDCioqIHRvZ2dsZXMgCiAgIDpQUk9QRVJUSUVT OgogICA6SUQ6ICAgICAgIGYzNTc2YTdkLWFiNjUtNDZmMS04NWU4LWE2YmM0YzQzZGExNwogICA6 RU5EOgoqKiogYXV0byBuYXJyb3cvd2lkZW4KICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAg ICA3N2NiYWFiMi1kZDdmLTQ0NWQtYmU5Zi00ZTRkMzk3NWYxNDEKICAgIDpFTkQ6CgojK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovbmFycm93LW9yLXdpZGVuLWR3 aW0gKCkKIklmIHRoZSBidWZmZXIgaXMgbmFycm93ZWQsIGl0IHdpZGVucy4gT3RoZXJ3aXNlLCBp dCBuYXJyb3dzIHRvIHJlZ2lvbiwgb3IgT3JnIHN1YnRyZWUuIgooaW50ZXJhY3RpdmUpCihjb25k ICgoYnVmZmVyLW5hcnJvd2VkLXApICh3aWRlbikpCigocmVnaW9uLWFjdGl2ZS1wKSAobmFycm93 LXRvLXJlZ2lvbiAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1lbmQpKSkKKChlcXVhbCBtYWpv ci1tb2RlICdvcmctbW9kZSkgKG9yZy1uYXJyb3ctdG8tc3VidHJlZSkpCih0IChlcnJvciAiUGxl YXNlIHNlbGVjdCBhIHJlZ2lvbiB0byBuYXJyb3cgdG8iKSkpKQojK0VORF9TUkMKCioqIG91dHNp ZGUgRW1hY3MKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZWY5NTZmMWMtNjAyZS00YmI4 LTkyODYtOTVkMWZkNzJlM2I2CiAgIDpFTkQ6CioqKiBzZWFyY2ggZ29vZ2xlCiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgMzBlZmY3NzUtNmU1Ny00ODA4LWIwOTItNmU5MTQ0ZmYxZjE2 CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHJlcXVpcmUg J3RoaW5nYXRwdCkKCihkZWZ1biBnb29nbGUtc2VhcmNoICgpCiAiSWYgc2VsZWN0ZWQgcmVnaW9u LCBvciB0aGluZyBhdCBwb2ludCwgaXMgYSB1cmwsIGdvIHRoZXJlLiBPdGhlcndpc2UsCnVzZSBy ZWdpb24vdGhpbmcgYXMgYSBrZXl3b3JkIGZvciBhIGdvb2dsZSBzZWFyY2guIgogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgodGFyZ2V0CiAgICAgICAgIChpZiAodXNlLXJlZ2lvbi1wKQogICAgICAg ICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkK ICAgICAgICAgICAodGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkpKSkKICAgIChpZiAoZmZhcC11cmwt cCB0YXJnZXQpCiAgICAgICAgKGJyb3dzZS11cmwgdGFyZ2V0KQogICAgICAoYnJvd3NlLXVybCAo Y29uY2F0ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9IgogICAgICAgICAgICAgICAg ICAgICAgICAgICh1cmwtaGV4aWZ5LXN0cmluZyB0YXJnZXQpKSkpKSkKIytFTkRfU1JDCioqIGhv b2tzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDdjZjc0MTlkLWM3YjEtNDdhMC1iYjgw LTViMGYyZDdiY2YyMAogICA6RU5EOgoqKiogaG9va3MgcGVyIGZpbGUKICAgIDpQUk9QRVJUSUVT OgogICAgOklEOiAgICAgICA5YmFkOWRjMi1iOTAzLTQyM2UtOWQ0ZC05YTY0OTQ3ZTJjYWQKICAg IDpFTkQ6CioqKiogdGFuZ2xlIGEgc3BlY2lmaWMgZmlsZSB3aGVuIHNhdmVkIChkb3RmaWxlcy5v cmcpCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBjZmNiODM4Mi00MmI0LTQyZjYt OWQxNC0wYzg0MmI0Mzk0NmIKICAgICA6RU5EOgpodHRwOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5j b20vcXVlc3Rpb25zLzIwNzA3L2F1dG9tYXRpY2FsbHktdGFuZ2xlLW9yZy1maWxlcy1pbi1hLXNw ZWNpZmljLWRpcmVjdG9yeQojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCjso ZGVmdW4gbXkvdGFuZ2xlLWRvdGZpbGVzICgpCjsgICJJZiB0aGUgY3VycmVudCBmaWxlIGlzIGlu ICd+Ly5kb3RmaWxlcycsIHRoZSBjb2RlIGJsb2NrcyBhcmUgdGFuZ2xlZCIKOyAgKHdoZW4gKGVx dWFsIChidWZmZXItZmlsZS1uYW1lKQo7ICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUg Ii9ob21lL3plbHRhay9vcmcvZmlsZXMvZG90ZmlsZXMvZG90ZmlsZXMub3JnIikpCjsgICAgKG9y Zy1iYWJlbC10YW5nbGUpCjsgICAgKG1lc3NhZ2UgIkRvdGZpbGUgdGFuZ2xlZCIpKSkKCjsoYWRk LWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ215L3RhbmdsZS1kb3RmaWxlcykKIytFTkRfU1JDCioq KioqIHRhbmdsZSBhIHdob2xlIGZvbGRlciB3aGVuIHNhdmVkIGV4YW1wbGUKICAgICAgOlBST1BF UlRJRVM6CiAgICAgIDpJRDogICAgICAgOTU2YzMzY2YtZTM0Zi00NWJiLTkzMzEtZTI1NDhhMjQ1 OTY3CiAgICAgIDpFTkQ6CiAjK0JFR0lOX0VYQU1QTEUKIChkZWZ1biBteS90YW5nbGUtZG90Zmls ZXMgKCkKICAgIklmIHRoZSBjdXJyZW50IGZpbGUgaXMgaW4gJ34vLmRvdGZpbGVzJywgdGhlIGNv ZGUgYmxvY2tzIGFyZSB0YW5nbGVkIgogICAod2hlbiAoZXF1YWwgKGZpbGUtbmFtZS1kaXJlY3Rv cnkgKGRpcmVjdG9yeS1maWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkpCgkJKGNvbmNhdCAoZ2V0 ZW52ICJIT01FIikgIi8uZG90ZmlsZXMvIikpCiAgICAgKG9yZy1iYWJlbC10YW5nbGUpCiAgICAg KG1lc3NhZ2UgIiVzIHRhbmdsZWQiIGJ1ZmZlci1maWxlLW5hbWUpKSkKCiAoYWRkLWhvb2sgJ2Fm dGVyLXNhdmUtaG9vayAjJ215L3RhbmdsZS1kb3RmaWxlcykKICMrRU5EX0VYQU1QTEUKKioqKiBh dXRvIGV4cG9ydCB0byBpY3Mgd2hlbiB0aGUgbWVldGluZyBmaWUgaXMgc2F2ZWQgKG1lZXRpbmdz Lm9yZykKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGE1Mjc3OWI4LWRkZDItNDM2 Yi1hYWE4LTUzOTgzMWNmZDM2ZgogICAgIDpFTkQ6Cmh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21h aWwvdS8wLyNpbmJveAoKY3VycmVudGx5IGJyb2tlbiAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQogIDs7IChkZWZ1biB6L3NhdmUtbWVldGluZy10by1pY3MgKCkKICA7OyAg ICJzYXZlIHRvIElDUyIKICA7OyAgICh3aGVuIChlcXVhbCAoYnVmZmVyLWZpbGUtbmFtZSkKICA7 OyAgICAgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL21lZXRpbmdzLm9yZyIpCiAgOzsg ICAgICh6L2V4cG9ydC10by1pY3MpCiAgOzsgKQoKOyhkZWZ1biB6L2V4cG9ydC10by1pY3MgKCkK OyhpbnRlcmFjdGl2ZSkKOyhyZW5hbWUtZmlsZSAob3JnLWljYWxlbmRhci1leHBvcnQtdG8taWNz KQo7Ii9ob21lL3plbHRhay9vcmcvZmlsZXMvZXhwb3J0L2tjYWwuaWNzIikKOyhtZXNzYWdlICJl eHBvcnRlZCB0byBpY3MiKSkKCiAgOzsgKQoKICA7OyAocnVuLXdpdGgtdGltZXIgMCAoKiAzMCA2 MCkgJ3ovZXhwb3J0LXRvLWljcykKCiAgOzsgKGFkZC1ob29rICdhZnRlci1zYXZlLWhvb2sgIyd6 L3NhdmUtbWVldGluZy10by1pY3MpCgojK0VORF9TUkMKKioqKiB0YW5nbGUgYSB3aG9sZSBmb2xk ZXIgd2hlbiBzYXZlZCBleGFtcGxlCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBm YmYwMWM0ZC02ZjZlLTQxNTMtODc4YS1hNjhhZWE5ZjlkOTcKICAgICA6RU5EOgojK0JFR0lOX0VY QU1QTEUKKGRlZnVuIG15L3RhbmdsZS1kb3RmaWxlcyAoKQogICJJZiB0aGUgY3VycmVudCBmaWxl IGlzIGluICd+Ly5kb3RmaWxlcycsIHRoZSBjb2RlIGJsb2NrcyBhcmUgdGFuZ2xlZCIKICAod2hl biAoZXF1YWwgKGZpbGUtbmFtZS1kaXJlY3RvcnkgKGRpcmVjdG9yeS1maWxlLW5hbWUgYnVmZmVy LWZpbGUtbmFtZSkpCgkgICAgICAgKGNvbmNhdCAoZ2V0ZW52ICJIT01FIikgIi8uZG90ZmlsZXMv IikpCiAgICAob3JnLWJhYmVsLXRhbmdsZSkKICAgIChtZXNzYWdlICIlcyB0YW5nbGVkIiBidWZm ZXItZmlsZS1uYW1lKSkpCgooYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ215L3RhbmdsZS1k b3RmaWxlcykKIytFTkRfRVhBTVBMRQoqKiBoZWxtIGZ1bmN0aW9ucyAKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgMGZhZjZmZDAtZDJkMy00ZjgwLTgzNzAtN2EyMzMwZTZlN2Q1CiAgIDpF TkQ6CioqKiBzd2lzaC1lCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgYWJiNWU4MmIt ZTI0Mi00ZjhhLTllMzUtMzFkYzVkODU4MTk3CiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biBoZWxtLXN3aXNoLWUtY2FuZGlkYXRlcyAocXVlcnkp CiAgIkdlbmVyYXRlIGEgbGlzdCBvZiBjb25zIGNlbGxzIChzd2lzaC1lIHJlc3VsdCAuIHBhdGgp LiIKICAobGV0KiAoKHJlc3VsdCAoc2hlbGwtY29tbWFuZC10by1zdHJpbmcKCQkgIChmb3JtYXQg InN3aXNoLWUgLWYgfi8uc3dpc2gtZS9pbmRleC5zd2lzaC1lIC14IFwiJSVyXHQlJXBcblwiIC13 ICVzIgoJCQkgIChzaGVsbC1xdW90ZS1hcmd1bWVudCBxdWVyeSkpKSkKCSAobGluZXMgKHMtc3Bs aXQgIlxuIiByZXN1bHQgdCkpCgkgKGNhbmRpZGF0ZXMgJygpKSkKICAgIChsb29wIGZvciBsaW5l IGluIGxpbmVzCgkgIHVubGVzcyAob3IgIChzLXN0YXJ0cy13aXRoPyAiIyIgbGluZSkKCQkgICAg ICAocy1zdGFydHMtd2l0aD8gIi4iIGxpbmUpKQoJICBjb2xsZWN0IChjb25zIGxpbmUgKGNkciAo cy1zcGxpdCAiXHQiIGxpbmUpKSkpKSkKCgooZGVmdW4gaGVsbS1zd2lzaC1lIChxdWVyeSkKICAi UnVuIGEgc3dpc2gtZSBxdWVyeSBhbmQgcHJvdmlkZSBoZWxtIHNlbGVjdGlvbiBidWZmZXIgb2Yg dGhlIHJlc3VsdHMuIgogIChpbnRlcmFjdGl2ZSAic1F1ZXJ5OiAiKQogIChoZWxtIDpzb3VyY2Vz IGAoKChuYW1lIC4gLChmb3JtYXQgInN3aXNoLWU6ICVzIiBxdWVyeSkpCgkJICAgIChjYW5kaWRh dGVzIC4gLChoZWxtLXN3aXNoLWUtY2FuZGlkYXRlcyBxdWVyeSkpCgkJICAgIChhY3Rpb24gLiAo KCJvcGVuIiAuIChsYW1iZGEgKGYpCgkJCQkJICAgKGZpbmQtZmlsZSAoY2FyIGYpKSkpKSkpCgkJ ICAgKChuYW1lIC4gIk5ldyBzZWFyY2giKQoJCSAgICAoZHVtbXkpCgkJICAgIChhY3Rpb24gLiAo KCJzZWFyY2giIC4gKGxhbWJkYSAoZikKCQkJCQkgICAgIChoZWxtLXN3aXNoLWUgaGVsbS1wYXR0 ZXJuKSkpKSkpKSkpCiMrRU5EX1NSQwoKKioqIGhlbG0gaG90c3BvdCBtZW51CiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgNTQ4M2UzNTItMTE4NC00ZTI1LWExYjMtY2VhMTA2NjA4MmQ3 CiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biBo b3RzcG90cyAoKQogICJoZWxtIGludGVyZmFjZSB0byBteSBob3RzcG90cywgd2hpY2ggaW5jbHVk ZXMgbXkgbG9jYXRpb25zLApvcmctZmlsZXMgYW5kIGJvb2ttYXJrcyIKICAoaW50ZXJhY3RpdmUp CiAgKGhlbG0gOnNvdXJjZXMgYCgoKG5hbWUgLiAiTWFpbCBhbmQgTmV3cyIpCiAgICAgICAgICAg ICAgICAgICAgKGNhbmRpZGF0ZXMgLiAoKCJNYWlsIiAuIChsYW1iZGEgKCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGdldC1idWZmZXIgIiptdTRl LWhlYWRlcnMqIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN3aXRjaC10by1idWZmZXIgIiptdTRlLWhlYWRlcnMqIikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLW90aGVyLXdp bmRvd3MpKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtdTRlKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiQ2FsZW5kYXIi IC4gKGxhbWJkYSAoKSAgKGJyb3dzZS11cmwgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vY2FsZW5k YXIvcmVuZGVyIikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiUlNTIiAu IGVsZmVlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkFnZW5kYSIgLiAo bGFtYmRhICgpIChvcmctYWdlbmRhICIiICJ3IikpKSkpCiAgICAgICAgICAgICAgICAgICAgKGFj dGlvbiAuICgoIk9wZW4iIC4gKGxhbWJkYSAoeCkgKGZ1bmNhbGwgeCkpKSkpKQogICAgICAgICAg ICAgICAgICAgKChuYW1lIC4gIk15IExvY2F0aW9ucyIpCiAgICAgICAgICAgICAgICAgICAgKGNh bmRpZGF0ZXMgLiAoKCJtYXN0ZXIiIC4gIn4vb3JnL2ZpbGVzLyIpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCIuZW1hY3MuZCIgLiAifi8uZW1hY3MuZC8iICkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoInRvZG8iIC4gIn4vb3JnL2ZpbGVzL2FnZW5kYS90 b2RvLm9yZyIpKSkKICAgICAgICAgICAgICAgICAgICAoYWN0aW9uIC4gKCgiT3BlbiIgLiAobGFt YmRhICh4KSAoZmluZC1maWxlIHgpKSkpKSkKCiAgICAgICAgICAgICAgICAgICAoKG5hbWUgLiAi TXkgb3JnIGZpbGVzIikKICAgICAgICAgICAgICAgICAgICAoY2FuZGlkYXRlcyAuICwoZi1lbnRy aWVzICJ+L29yZy9maWxlcy8iKSkKICAgICAgICAgICAgICAgICAgICAoYWN0aW9uIC4gKCgiT3Bl biIgLiAobGFtYmRhICh4KSAoZmluZC1maWxlIHgpKSkpKSkKICAgICAgICAgICAgICAgICAgIGhl bG0tc291cmNlLXJlY2VudGYKICAgICAgICAgICAgICAgICAgIGhlbG0tc291cmNlLWJvb2ttYXJr cwogICAgICAgICAgICAgICAgICAgaGVsbS1zb3VyY2UtYm9va21hcmstc2V0KSkpCiMrRU5EX1NS QwoqKiogaGVsbS1hZy1wcmVmaXgKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICAzYWRl Mzg0Zi1jMWU3LTQxYjYtYmRlYy0xM2NhNTczNGI0YTAKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9oZWxtLW1nLXByZWZpeCAgKCkKICAgICAg ICAgICAgICAgICAgICAgKGludGVyYWN0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgIChsZXQgKChjdXJyZW50LXByZWZpeC1hcmcgJyg0KSkp ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkg IydoZWxtLWFnKSkpCiMrRU5EX1NSQwoqKiBpdnkKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAg ICAgZGJhNjI1NzctZmRmNi00ZTZkLWIxNGMtOTcyMTE5ZTA5OWRjCiAgIDpFTkQ6CioqKiBpdnkt c3Vkby1lZGl0LWFjdGlvbgogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGNkZDgzYWE5 LWMyY2YtNDljOC1iMjZlLTc0YTU1ZDRiYjcwYgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gaXZ5LXN1ZG8tZWRpdC1hY3Rpb24gKGZpbGUtbmFt ZSkKICAgICAgKHdpdGgtaXZ5LXdpbmRvdwogICAgICAgIChmaW5kLWZpbGUgKGV4cGFuZC1maWxl LW5hbWUKICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICIvc3Vkbzpyb290QGxvY2FsaG9zdDoi IGZpbGUtbmFtZSkKICAgICAgICAgICAgICAgICAgICBpdnktLWRpcmVjdG9yeSkpKSkKIytFTkRf U1JDCgoKKioqIGNvdW5zZWwtYWcgcHJvbXB0IGZvciBkaXIKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICAzYzQ5YWVkOC02NTE2LTRkYTQtOTU3Yy0wMmM2ZjllN2FjMTkKICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsgY3VzdG9tIGFnIGNvbW1h bmQgdG8gYWx3YXlzIHByb21wdCBmb3IgYSBkaXIKKGRlZnVuIHovY291bnNlbC1hZy1wcm9tcHQt ZGlyICgmb3B0aW9uYWwgaW5pdGlhbC1pbnB1dCBpbml0aWFsLWRpcmVjdG9yeSkKICAiR3JlcCBm b3IgYSBzdHJpbmcgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHVzaW5nIGFnLgpJTklUSUFMLUlO UFVUIGNhbiBiZSBnaXZlbiBhcyB0aGUgaW5pdGlhbCBtaW5pYnVmZmVyIGlucHV0LiIKICAoaW50 ZXJhY3RpdmUKICAgKGxpc3QgbmlsCiAgICAgICAgICh3aGVuIHQKICAgICAgICAgICAocmVhZC1k aXJlY3RvcnktbmFtZSAoY29uY2F0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXIgKHNwbGl0LXN0cmluZyBjb3Vuc2VsLWFnLWJhc2UtY29tbWFuZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgaW4gZGlyZWN0b3J5OiAiKSkpKSkKICAoc2V0cSBjb3Vuc2Vs LS1naXQtZ3JlcC1kaXIgKG9yIGluaXRpYWwtZGlyZWN0b3J5IGRlZmF1bHQtZGlyZWN0b3J5KSkK ICAoaXZ5LXJlYWQgKGZ1bmNhbGwgY291bnNlbC1wcm9tcHQtZnVuY3Rpb24KICAgICAgICAgICAg ICAgICAgICAgKGNhciAoc3BsaXQtc3RyaW5nIGNvdW5zZWwtYWctYmFzZS1jb21tYW5kKSkpCiAg ICAgICAgICAgICdjb3Vuc2VsLWFnLWZ1bmN0aW9uCiAgICAgICAgICAgIDppbml0aWFsLWlucHV0 IGluaXRpYWwtaW5wdXQKICAgICAgICAgICAgOmR5bmFtaWMtY29sbGVjdGlvbiB0CiAgICAgICAg ICAgIDpoaXN0b3J5ICdjb3Vuc2VsLWdpdC1ncmVwLWhpc3RvcnkKICAgICAgICAgICAgOmFjdGlv biAjJ2NvdW5zZWwtZ2l0LWdyZXAtYWN0aW9uCiAgICAgICAgICAgIDp1bndpbmQgKGxhbWJkYSAo KQogICAgICAgICAgICAgICAgICAgICAgKGNvdW5zZWwtZGVsZXRlLXByb2Nlc3MpCiAgICAgICAg ICAgICAgICAgICAgICAoc3dpcGVyLS1jbGVhbnVwKSkKICAgICAgICAgICAgOmNhbGxlciAnY291 bnNlbC1hZykpCiMrRU5EX1NSQwoqKiBpc2VhcmNoCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAg ICAgIDU1Njk2MTUzLTJhN2QtNGZkMS05ZGZhLTAzODVkMWVjZWJkNAogICA6RU5EOgoqKiogZGVs ZXRlIG5vbiBtYXRjaGluZyAKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA0OWNhMmFl Ni1hZGE1LTQwYmUtODAzNy1hOWJmYjY0YTczNGIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gaXNlYXJjaC1kZWxldGUtc29tZXRoaW5nICgpCiAg IkRlbGV0ZSBub24tbWF0Y2hpbmcgdGV4dCBvciB0aGUgbGFzdCBjaGFyYWN0ZXIuIgogIDs7IE1v c3RseSBjb3BpZWQgZnJvbSBgaXNlYXJjaC1kZWwtY2hhcicgYW5kIERyZXcncyBhbnN3ZXIgb24g dGhlIHBhZ2UgYWJvdmUKICAoaW50ZXJhY3RpdmUpCiAgKGlmICg9IDAgKGxlbmd0aCBpc2VhcmNo LXN0cmluZykpCiAgICAgIChkaW5nKQogICAgKHNldHEgaXNlYXJjaC1zdHJpbmcKICAgICAgICAg IChzdWJzdHJpbmcgaXNlYXJjaC1zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgMAogICAgICAg ICAgICAgICAgICAgICAob3IgKGlzZWFyY2gtZmFpbC1wb3MpICgxLSAobGVuZ3RoIGlzZWFyY2gt c3RyaW5nKSkpKSkKICAgIChzZXRxIGlzZWFyY2gtbWVzc2FnZQogICAgICAgICAgKG1hcGNvbmNh dCAjJ2lzZWFyY2gtdGV4dC1jaGFyLWRlc2NyaXB0aW9uIGlzZWFyY2gtc3RyaW5nICIiKSkpCiAg KGlmIGlzZWFyY2gtb3RoZXItZW5kIChnb3RvLWNoYXIgaXNlYXJjaC1vdGhlci1lbmQpKQogIChp c2VhcmNoLXNlYXJjaCkKICAoaXNlYXJjaC1wdXNoLXN0YXRlKQogIChpc2VhcmNoLXVwZGF0ZSkp CgooZGVmaW5lLWtleSBpc2VhcmNoLW1vZGUtbWFwIChrYmQgIjxiYWNrc3BhY2U+IikgCiAgIydp c2VhcmNoLWRlbGV0ZS1zb21ldGhpbmcpCiMrRU5EX1NSQwoqKiogaXNlYXJjaCBvY2N1cnJlbmNl IGF0IHBvaW50IAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDBhYTBhMGNiLTcxODUt NDRlZC05OWM0LWE3MDNhZTk4MDQxNAogICAgOkVORDoKCmh0dHA6Ly9lbmRsZXNzcGFyZW50aGVz ZXMuY29tL3F1aWNrbHktc2VhcmNoLWZvci1vY2N1cnJlbmNlcy1vZi10aGUtc3ltYm9sLWF0LXBv aW50Lmh0bWwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIGVu ZGxlc3MvaXNlYXJjaC1zeW1ib2wtd2l0aC1wcmVmaXggKHApCiAgIkxpa2UgaXNlYXJjaCwgdW5s ZXNzIHByZWZpeCBhcmd1bWVudCBpcyBwcm92aWRlZC4KV2l0aCBhIHByZWZpeCBhcmd1bWVudCBQ LCBpc2VhcmNoIGZvciB0aGUgc3ltYm9sIGF0IHBvaW50LiIKICAoaW50ZXJhY3RpdmUgIlAiKQog IChsZXQgKChjdXJyZW50LXByZWZpeC1hcmcgbmlsKSkKICAgIChjYWxsLWludGVyYWN0aXZlbHkK ICAgICAoaWYgcCAjJ2lzZWFyY2gtZm9yd2FyZC1zeW1ib2wtYXQtcG9pbnQKICAgICAgICMnaXNl YXJjaC1mb3J3YXJkKSkpKQoKKGdsb2JhbC1zZXQta2V5IFtyZW1hcCBpc2VhcmNoLWZvcndhcmRd CiAgICAgICAgICAgICAgICAjJ2VuZGxlc3MvaXNlYXJjaC1zeW1ib2wtd2l0aC1wcmVmaXgpCiMr RU5EX1NSQwoqKiBtYWlsCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDM5ZmEzOTVhLTVk NjktNDYzNi1hM2FiLTIwMzk2NmMwZjM3ZgogICA6RU5EOgoqKiogeWFzIG1haWwgZnVuY3Rpb25z CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZmE3ODNjOGUtMTk0NS00MmRjLTkzYjYt NDc5NGNmZDU3NjQ4CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKKGRlZnVuIG15LXlhcy1nZXQtZmlyc3QtbmFtZS1mcm9tLXRvLWZpZWxkICgpCiAgKGxldCAo KHJsdCAiQUdFTlRfTkFNRSIpIHN0cikKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQogICAgICA7OyBmaXJzdCBsaW5lIGluIGVtYWlsIGNvdWxkIGJlIHNv bWUgaGlkZGVuIGxpbmUgY29udGFpbmluZyBOTyB0byBmaWVsZAogICAgICAoc2V0cSBzdHIgKGJ1 ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKQog ICAgKGlmIChzdHJpbmctbWF0Y2ggIl5UbzogXCJcXChbXiAsXStcXCkiIHN0cikKICAgICAgICAo c2V0cSBybHQgKG1hdGNoLXN0cmluZyAxIHN0cikpKQogICAgKG1lc3NhZ2UgInJsdD0lcyIgcmx0 KQogICAgcmx0KSkKIytFTkRfU1JDCioqIFRSQU1QIGZ1bmN0aW9ucwogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICBjODk0Y2I1Yy00ZGI4LTQyYTAtODI4NS1iY2JjYTMyOWM4ODIKICAgOkVO RDoKKioqIGRpcmVkIGNvbm5lY3QgdW5pCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAg MjA1ZWQ3NmUtNjNiMC00YmEwLTliMzUtOWVhODM5ZTg0MDc0CiAgICA6RU5EOgojK0JFR0lOX1NS QyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L3RyYW1wLWNvbm5lY3QtdW5pLWRp cmVkICgpCiAgKGludGVyYWN0aXZlKQogIChkaXJlZCAiL3plbHRha0AxMzIuNzIuMTU1LjIwNDov IikpCiMrRU5EX1NSQwoqKiBwcm9qZWN0aWxlCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAg IGE4ZDMxOTg1LTRjMDEtNGNlMi04OTg2LTk0NWFmMTk4ZWU0YQogICA6RU5EOgojK0JFR0lOX1NS QyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAgOzsgKGRlZnVuIHByb2plY3RpbGUtZmluZC1m aWxlLWluLXByb2plY3Qtb3JnICgpCiAgOzsgKGludGVyYWN0aXZlKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgOzsgKGxldCAoKGRlZmF1bHQtZGlyZWN0b3J5ICIvaG9tZS96ZWx0 YWsvb3JnL2ZpbGVzLyIpKQogIDs7IChwcm9qZWN0aWxlLWZpbmQtZmlsZSkpKQoKICA7OyA7Oyhn bG9iYWwtc2V0LWtleSAoa2JkICJNLUMtdyIpICdwcm9qZWN0aWxlLWZpbmQtZmlsZS1pbi1wcm9q ZWN0LW9yZykKCiMrRU5EX1NSQwoKCgoqIGtleXMgCioqIDEtdW5iaW5kIGtleXMKICAgOlBST1BF UlRJRVM6CiAgIDpJRDogICAgICAgMzI0YTUyMTEtM2RjNi00NGE1LWE2MjUtMjAyNDJjYjE1OGNk CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZ2xvYmFsLXVu c2V0LWtleSAoa2JkICI8ZjE+IikpCihnbG9iYWwtdW5zZXQta2V5IChrYmQgIjxmMj4iKSkKKGds b2JhbC11bnNldC1rZXkgKGtiZCAiPGYzPiIpKQooZ2xvYmFsLXVuc2V0LWtleSAoa2JkICI8ZjQ+ IikpCihnbG9iYWwtdW5zZXQta2V5IChrYmQgIjxmNT4iKSkKKGdsb2JhbC11bnNldC1rZXkgKGti ZCAiPGY2PiIpKQooZ2xvYmFsLXVuc2V0LWtleSAoa2JkICI8Zjc+IikpCihnbG9iYWwtdW5zZXQt a2V5IChrYmQgIjxmOD4iKSkKKGdsb2JhbC11bnNldC1rZXkgKGtiZCAiPGY5PiIpKQooZ2xvYmFs LXVuc2V0LWtleSAoa2JkICI8ZjEwPiIpKQooZ2xvYmFsLXVuc2V0LWtleSAoa2JkICI8ZjExPiIp KQooZ2xvYmFsLXVuc2V0LWtleSAoa2JkICI8ZjEyPiIpKQooZ2xvYmFsLXVuc2V0LWtleSAoa2Jk ICJDLXYiKSkKKGdsb2JhbC11bnNldC1rZXkgKGtiZCAiQy16IikpCihnbG9iYWwtdW5zZXQta2V5 IChrYmQgIkMtTS1wIikpCihnbG9iYWwtdW5zZXQta2V5IChrYmQgIkMtTS1lIikpCihnbG9iYWwt dW5zZXQta2V5IChrYmQgIkMtTS1iIikpCihnbG9iYWwtdW5zZXQta2V5IChrYmQgIkMtTS1iIikp CihnbG9iYWwtdW5zZXQta2V5IChrYmQgIkMtTS10IikpCihnbG9iYWwtdW5zZXQta2V5IChrYmQg Ik0tMiIpKQooZ2xvYmFsLXVuc2V0LWtleSAoa2JkICJNLTEiKSkKKGdsb2JhbC11bnNldC1rZXkg KGtiZCAiXFwiKSkKIytFTkRfU1JDCgoqKiBnZW5lcmFsLmVsCgogIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCih1c2UtcGFja2FnZSBnZW5lcmFsCiA6ZW5zdXJlIHQKIDpjb25m aWcKCjs7OzsgaW4gaW5zZXJ0IHN0YXRlIHVzZSBlbWFjcyBiaW5kaW5ncyAKKHNldHEgZXZpbC1k aXNhYmxlLWluc2VydC1zdGF0ZS1iaW5kaW5ncyB0KSAKKGdlbmVyYWwtZXZpbC1zZXR1cCB0KQoK KQogICMrRU5EX1NSQyAKKioqIE1vc3QgdXNlZCBrZXlzIAojK0JFR0lOX1NSQyBlbWFjcy1saXNw ICA6cmVzdWx0cyBub25lCjs7OyBub3JtYWwga2V5cyAKKGdlbmVyYWwtZGVmaW5lLWtleQoKIk0t eCIgJ2NvdW5zZWwtTS14CiJDLXggQy1mIiAnY291bnNlbC1maW5kLWZpbGUKIkMtYyB5IiAneWFu a3BhZC1tYXAKKQojK0VORF9TUkMKKioqIG9yZyBtb2RlIAojK0JFR0lOX1NSQyBlbWFjcy1saXNw ICA6cmVzdWx0cyBub25lCiAgKGdlbmVyYWwtZGVmaW5lLWtleQogIDs7O29yZyBtb2RlIAogICJc Qy1jYSIgJ29yZy1hZ2VuZGEKICAiQy1jIGMiICdvcmctY2FwdHVyZQogICJcQy1jcyIgJ29yZy1i YWJlbC1leGVjdXRlLXN1YnRyZWUKICAiXEMtY2wiICdvcmctc3RvcmUtbGluawogICJcQy1jYiIg J29yZy1pc3dpdGNoYgogICJDLWMgeCIgJ29yZy1iYWJlbC1leGVjdXRlLXN1YnRyZWUKICApCiMr RU5EX1NSQwoqKiogbW92bWVudCAKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9u ZQooZ2VuZXJhbC1kZWZpbmUta2V5CiJDLTx1cD4iICd3aW5kbW92ZS11cCAgICAgCiJDLTxkb3du PiIgJ3dpbmRtb3ZlLWRvd24KIkMtPHJpZ2h0PiIgJ3dpbmRtb3ZlLXJpZ2h0CiJDLTxsZWZ0PiIg J3dpbmRtb3ZlLWxlZnQKIkMtVEFCIiAnc3dpdGNoLXRvLXByZXZpb3VzLWJ1ZmZlcgoiTS0xIiAn YWNlLXdpbmRvdwopCiMrRU5EX1NSQwoqKiogcHJlZml4IGtleXMgCiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsgc2V0IGxlYWQga2V5cyAKKHNldHEgbGVhZENjICJDLWMi KQooc2V0cSBsZWFkQ3ggIkMteCIpCgo7O3dpdGggQy14IHByZWZpeCAKKGdlbmVyYWwtZGVmaW5l LWtleSA6cHJlZml4IGxlYWRDeAoicyIgJ3NhdmUtYnVmZmVyCiJjIiAnei1zYXZlLWJ1ZmZlci1j bG9zZS13aW5kb3cKImEiICd3cml0ZS1maWxlCikKCiMrRU5EX1NSQwoKKioqIHNwYWNlIGtleSAK SSBjYW4gYWNjZXNzIHRob3NlIGZ1bmN0aW9ucyB3aXRoIFNQQyBpbiBub3JtYWwgYW5kIHZpc3Vh bCBzdGF0ZSwgYW5kIE0tU1BDIGluIGVtYWNzIGFuZCBpbnNlcnQgc3RhdGUuIFRoZSA6d2hpY2gt a2V5IGtleXdvcmQgYWxsb3cgbWUgdG8gZGVzY3JpYmUgdGhlIHJvbGUgb2YgcHJlZml4ZXMgbGlr ZSBTUEMgZiwgYXR0YWNoZWQgdG8gZmlsZSByZWxhdGVkIGZ1bmN0aW9ucy4KCiAjK0JFR0lOX1NS QyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoZ2VuZXJhbC1kZWZpbmUta2V5CiAgOnN0YXRl cyAnKG5vcm1hbCB2aXN1YWwgaW5zZXJ0IGVtYWNzKQogIDpwcmVmaXggIlNQQyIKICA6bm9uLW5v cm1hbC1wcmVmaXggIk0tU1BDIgogICIvIiAnKGNvdW5zZWwtYWcgOndpY2gta2V5ICJhZyIpCiAg ICJUQUIiICcoc3dpdGNoLXRvLXByZXZpb3VzLWJ1ZmZlciA6d2hpY2gta2V5ICJwcmV2IGJ1ZmZl ciIpCiAgICIuIiAnKGF2eS1nb3RvLXdvcmQtb3Itc3Vid29yZC0xICA6d2hpY2gta2V5ICJnbyB0 byB3b3JkIikKICAgIlNQQyIgJyhjb3Vuc2VsLU0teCA6d2hpY2gta2V5ICJNLXgiKQogICAiYyIg Jyg6aWdub3JlIHQgOndoaWNoLWtleSAiQ29tbWVudCBtZW51IikKICAgImNsIiAnKGNvbW1lbnQt b3ItdW5jb21tZW50LXJlZ2lvbi1vci1saW5lIDp3aGljaC1rZXkgImNvbW1lbnQgbGluZSIpCiAg ICkKICMrRU5EX1NSQwoqKiogb21hcCAKSSBwcmVzcyBkIGluIG5vcm1hbCBtb2RlIChldmlsLWRl bGV0ZSksIHRoZW4gU1BDIGFuZCBsIHRvIGRlbGV0ZSBmcm9tIGhlcmUgdG8gdGhlIGxpbmUgc2Vs ZWN0ZWQgd2l0aCBhdnksIHRoZW4gdCB0byBzZWxlY3QgdGhlIHRhcmdldCBsaW5lLiBUaGlzIGlz IGF3ZXNvbWUuIEl04oCZcyBhIGdyZWF0IHdyYXBwZXIgYXJvdW5kIGV2aWwtZGVmaW5lLW1vdGlv bi1saWtlIGRlZmluaXRpb25zLiBQbHVzIEkgZG9u4oCZdCBoYXZlIHRvIHVzZSBhIHByZWZpeCwg SSBjYW4ganVzdCBiaW5kIGwgdG8gZXZpbC1hdnktZ290by1saW5lIGluIG9wZXJhdG9yIHN0YXRl LgoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKIChnZW5lcmFsLW9tYXAK ICA6cHJlZml4ICJTUEMiCiAgICIuIiAnYXZ5LWdvdG8td29yZC1vci1zdWJ3b3JkLTEKICAgImwi ICdldmlsLWF2eS1nb3RvLWxpbmUKICAgImUiICdldmlsLWF2eS1nb3RvLXN1YndvcmQtMCApCgog IytFTkRfU1JDCgoqKiogZ2VuZXJhbC1udm1hcAoKSSByZW1hcCB0aGUgTS0gbWFwIGZ1bmN0aW9u cyBpbiBub3JtYWwgc3RhdGUsIHNpbmNlIEkgdXN1YWxseSBuZWVkIHRoZW0gb25seSBpbiBpbnNl cnQgbW9kZS4gVGhleSBkb2VzIG5vdCBjb25mbGljdCB3aXRoIEV2aWwga2V5YmluZGluZ3MsIHNp bmNlIFZpbSBoYXMgbm8gTWV0YSBrZXkuIFRoZSBnZW5lcmFsLW52bWFwIGRlZmluZXMga2V5Ymlu ZGluZ3MgZm9yIHRoZSBub3JtYWwgYW5kIHZpc3VhbCBzdGF0ZSBvbmx5LiBUaGUgZ2VuZXJhbC1z aW11bGF0ZS1rZXlzIGFsbG93cyBtZSB0byBwcmVzcyAnIGluc3RlYWQgb2YgQy1jLiBTbyBjb21t b25seSBkZWZpbmVkIHByZWZpeGVzIGFyZSBhY2Nlc3NpYmxlIHVzaW5nIHR3byBrZXkgc3Ryb2tl cy4KCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAgIDs7IChnZW5lcmFs LW52bWFwCiAgIDs7ICAiJyIgKGdlbmVyYWwtc2ltdWxhdGUta2V5cyAiQy1jIikKICAgOzsgICJN LSciICdldmlsLWdvdG8tbWFyawogICA7OyAgIk0tYiIgJ2l2eS1zd2l0Y2gtYnVmZmVyCiAgIDs7 ICA7OyAuLi4KICAgOzsgICkKICMrRU5EX1NSQwoqKiBrZXktc2VxCiAgIDpQUk9QRVJUSUVTOgog ICA6SUQ6ICAgICAgIDRiYTkyMmFmLTU5YjQtNGIxNi05MzQxLTBjN2NmN2M0MjY1YgogICA6RU5E OgoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKHVzZS1wYWNrYWdlIGtl eS1zZXEKIDplbnN1cmUgdAogOmNvbmZpZwo7OzsgRVZJTCBpbnNlcnQgbW9kZQoKKGtleS1zZXEt ZGVmaW5lIGV2aWwtaW5zZXJ0LXN0YXRlLW1hcCAiamoiICMnYXZ5LWdvdG8tY2hhci10aW1lcikK OyhrZXktc2VxLWRlZmluZSBldmlsLWluc2VydC1zdGF0ZS1tYXAgImpqIiAjJ2F2eS1nb3RvLXdv cmQtb3Itc3Vid29yZC0xKQooa2V5LXNlcS1kZWZpbmUgZXZpbC1pbnNlcnQtc3RhdGUtbWFwICJq bCIgIydhdnktZ290by1saW5lKQooa2V5LXNlcS1kZWZpbmUgZXZpbC1pbnNlcnQtc3RhdGUtbWFw ICJxcSIgIydzd2l0Y2gtdG8tcHJldmlvdXMtYnVmZmVyKQooa2V5LXNlcS1kZWZpbmUgZXZpbC1p bnNlcnQtc3RhdGUtbWFwICJjYyIgIydvcmctY2FwdHVyZSkKKGtleS1zZXEtZGVmaW5lIGV2aWwt aW5zZXJ0LXN0YXRlLW1hcCAiMG8iICMnaHlkcmEtb3JnL2JvZHkpCgo7Ozs7IEVWSUwgbm9ybWFs IG1vZGUKKGtleS1zZXEtZGVmaW5lIGV2aWwtbm9ybWFsLXN0YXRlLW1hcCAiamoiICMnYXZ5LWdv dG8tY2hhci10aW1lcikKKGtleS1zZXEtZGVmaW5lIGV2aWwtbm9ybWFsLXN0YXRlLW1hcCAiamwi ICMnYXZ5LWdvdG8tbGluZSkKKGtleS1zZXEtZGVmaW5lIGV2aWwtbm9ybWFsLXN0YXRlLW1hcCAi cXEiICMnc3dpdGNoLXRvLXByZXZpb3VzLWJ1ZmZlcikKKGtleS1zZXEtZGVmaW5lIGV2aWwtbm9y bWFsLXN0YXRlLW1hcCAiY2MiICMnb3JnLWNhcHR1cmUpCihrZXktc2VxLWRlZmluZSBldmlsLW5v cm1hbC1zdGF0ZS1tYXAgIjBvIiAjJ2h5ZHJhLW9yZy9ib2R5KQoKICkKICMrRU5EX1NSQyAKKiog a2V5LWNob3JkCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGU2MDg5Zjg5LWMzZGMtNGEw Ny04MTkwLWE2NzMxYzI4NjgxZQogICA6RU5EOgogaHR0cDovL2Jsb2cuamVua3N0ZXIuY29tLzIw MTMvMDIvbWFwcGluZy1qay1pbi1lbWFjcy1ldmlsLW1vZGUuaHRtbAogICAjK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHVzZS1wYWNrYWdlIGtleS1jaG9yZCAKICAgOmVuc3Vy ZSB0CiAgIDpjb25maWcKKGtleS1jaG9yZC1tb2RlIDEpCihzZXRxIGtleS1jaG9yZC10d28ta2V5 cy1kZWxheSAwLjA5KQooc2V0cSBrZXktY2hvcmQtb25lLWtleS1kZWxheSAwLjIwKQogCjs7Oztr ZXlzCihrZXktY2hvcmQtZGVmaW5lIGV2aWwtaW5zZXJ0LXN0YXRlLW1hcCAgImprIiAnZXZpbC1u b3JtYWwtc3RhdGUpCgogKQogIytFTkRfU1JDCiAKCgoqIGh5ZHJhcwogIDpQUk9QRVJUSUVTOgog IDpJRDogICAgICAgZTI0MGNjMzQtNDI2MC00Zjk5LTlkY2UtZTM0YTc3YzdmYThhCiAgOkVORDoK KioqIGh5ZHJhIGV2aWwgbGVhZGVyLXNwYWNlIChTUEMpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgNWU4ZmM5ZWItZTk5My00NjlmLTgwNmQtNjEwOTFhZDI0MjFlCiAgICA6RU5EOgpt YXkgY29uc2lkZXIgaW4gdGhlIGZ1dHVyZSB0byBiaW5kIHRoZSBsZWFkZXIgdG8gYy16IHdoaWNo IGlzIGZyZWUgCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAgOzsgKGds b2JhbC1zZXQta2V5CiAgIDs7ICAgICAoa2JkICIiKQogICA7OyAgKGRlZmh5ZHJhIGh5ZHJhLWxl YWRlci1zcGFjZSAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29sdW1ucyA0KQogICA7OyAgIgog ICA7OyAgIgoKCiAgIDs7ICgiPyIgei9jb3Vuc2VsLWh5ZHJhLWhlYWRzICJpdnkgc3dpdGNoIGJ1 ZmZlciIpCiAgIDs7ICgiU1BDIiAgYXZ5LWdvdG8tY2hhci10aW1lciAgImF2eSBqdW1wIikKCgog ICA7OyApKQogIytFTkRfU1JDCioqKiBoeWRyYSBmYWNlcwogICAgOlBST1BFUlRJRVM6CiAgICA6 SUQ6ICAgICAgIDY4ZjQzYzQ4LTgzMTAtNDU4Ny1hMGU1LTJiMmIyYTY2N2E1ZQogICAgOkVORDoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZmYWNlIGh5ZHJhLWZhY2Ut cmVkCiAgICAnKCh0ICg6Zm9yZWdyb3VuZCAicmVkIiA6Ym9sZCB0KSkpICJyZWQiKQoKCihkZWZm YWNlIGh5ZHJhLWZhY2Utb3JhbmdlCiAgICAnKCh0ICg6Zm9yZWdyb3VuZCAib3JhbmdlIiA6Ym9s ZCB0KSkpIk9yYW5nZSIpCgoKKGRlZmZhY2UgaHlkcmEtZmFjZS1icm93bgogICAgJygodCAoOmZv cmVncm91bmQgIiNDMTVGMEQiIDpib2xkIHQpKSkgImJyb3duIikKCgooZGVmZmFjZSBoeWRyYS1m YWNlLWN5YW4KICAgICcoKHQgKDpmb3JlZ3JvdW5kICIjNDJCN0RFIiA6Ym9sZCB0IDp1bmRlcmxp bmUgdCkpKSAiY3lhbiIpCgooZGVmZmFjZSBoeWRyYS1mYWNlLWdyZWVuCiAgICAnKCh0ICg6Zm9y ZWdyb3VuZCAiZ3JlZW4iIDpib2xkIHQpKSkgImdyZWVuIikKCgooZGVmZmFjZSBoeWRyYS1mYWNl LXB1cnBsZQogICAgJygodCAoOmZvcmVncm91bmQgIiNENTJCRkYiIDpib2xkIHQpKSkgIiIpCgoK KGRlZmZhY2UgaHlkcmEtZmFjZS1ncmV5CiAgICAnKCh0ICg6Zm9yZWdyb3VuZCAiI0JlYmViZSIg OmJvbGQgdCkpKSIiKQoKCihkZWZmYWNlIGh5ZHJhLWZhY2Utc2t5CiAgICAnKCh0ICg6Zm9yZWdy b3VuZCAiIzAwYmZmZiIgOmJvbGQgdCkpKSIiKQoKCihkZWZmYWNlIGh5ZHJhLWZhY2Utc2FsbW9u CiAgICAnKCh0ICg6Zm9yZWdyb3VuZCAiI0ZhODA3MiIgOmJvbGQgdCkpKSIiKQoKCihkZWZmYWNl IGh5ZHJhLWZhY2UtdG9ycQogICAgJygodCAoOmZvcmVncm91bmQgIiM0MGUwZDAiIDpib2xkIHQp KSkiIikKCgooZGVmZmFjZSBoeWRyYS1mYWNlLWRhcmtyZWQKICAgICcoKHQgKDpmb3JlZ3JvdW5k ICIjOGIwMDAwIiA6Ym9sZCB0KSkpIiIpCgooZGVmZmFjZSBoeWRyYS1mYWNlLXllbGxvdwogICAg JygodCAoOmZvcmVncm91bmQgInllbGxvdyIgOmJvbGQgdCkpKSIiKQoKKGRlZmZhY2UgaHlkcmEt ZmFjZS1mb3Jlc3RncmVlbgogICAgJygodCAoOmZvcmVncm91bmQgIiMyMjhiMjIiIDpib2xkIHQp KSkiIikKCihkZWZmYWNlIGh5ZHJhLWZhY2UtZmFkZQogICAgJygodCAoOmZvcmVncm91bmQgIiNG RkVDRUMiIDpib2xkIHQpKSkiIikKCiMrRU5EX1NSQwoKKioqIGh5ZHJhIGxlYWRlciAoXCkKICAg IDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBiMWJkNzhhZS04M2I1LTRjYjQtYTRiNS02ZGI1 Mjg3ZjM5NTYKICAgIDpFTkQ6Cm1heSBjb25zaWRlciBpbiB0aGUgZnV0dXJlIHRvIGJpbmQgdGhl IGxlYWRlciB0byBjLXogd2hpY2ggaXMgZnJlZSAKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQogICAoZ2xvYmFsLXNldC1rZXkKICAgICAgIChrYmQgIlxcIikKICAgIChkZWZo eWRyYSBoeWRyYS1sZWFkZXIgICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKIgpM RUFERVI644CQQy1BLVfjgJEtYXBwZW5kIHRvIGtpbGxyaW5nIGhlbG0tcHJvamVjdGlsZS1yZWNl bnRmIOOAkEMtYyBwIGXjgJEKCuOAkEMtU1BBQ0UgQy1TUEFDReOAkSBhZGQgdG8gbWFya3JpbmcK IgooIlxcIiBoZWxtLW1pbmkgImhlbG0tbWluaSIpCjsoIlxcIiBpdnktc3dpdGNoLWJ1ZmZlciAi aXZ5IHN3aXRjaCBidWZmZXIiKQooIjxiYWNrc3BhY2U+IiBjb3Vuc2VsLWJvb2ttYXJrICJjb3Vu c2VsLWJvb2ttYXJrIikKKCJdIiAgaHlkcmEtY2hkLWRpcmVkL2JvZHkgICJKdW1wOmRpcmVkIiA6 ZmFjZSAnaHlkcmEtZmFjZS1wdXJwbGUgKQo7KCJcXSIgYXZ5LWdvdG8tY2hhci10aW1lciAgImF2 eSBqdW1wIikKCgooIlsiIHovaW5zZXJ0LXNsc2ggImluc2VydCBcXCIpCigifCIgICBoeWRyYS1n b3RvL2JvZHkgImdvdG8iICkKKCI8ZjM+IiAgcmVwZWF0ICJyZXBlYXQgbGFzdCBjb21tYW5kIiAp CigiPGRvd24+IiBkcmFnLXN0dWZmLWRvd24gICJtYXJrZWQgZG93biIgOmNvbG9yIHJlZCkKKCI8 dXA+IiBkcmFnLXN0dWZmLXVwICAibWFya2VkIHVwIiA6Y29sb3IgcmVkKQooIlJFVCIgYXZ5LWdv dG8tbGluZSAiZ290byBsaW5lIiApCigiLSIgIGh5ZHJhLW9yZy1jYXB0dXJlLWdvL2JvZHkgIm9y Zy1jYXB0dXJlLWh5ZHJhIiApCigiPSIgIChvcmctY2FwdHVyZSBuaWwgIm0iKSAgIm9yZy1jYXB0 dXJlLW1lZXRpbmciICkKKCI/IiB6L2NvdW5zZWwtaHlkcmEtaGVhZHMgIml2eSBzd2l0Y2ggYnVm ZmVyIikKKCIvIiAgKGRpcmVkICJ+LyIpICJkaXJlZCIgKQooIj8iICBkaXJlZC1qdW1wICAiZGly ZWQgY3VycmVudCBkaXIiICkKKCIxIiAgIGh5ZHJhLW9yZy10YWdzL2JvZHkgInRhZ3MiKQooIjIi ICAgb3JnLXRvZG8gInRvZG8gZGlhbG9nIikKKCI0IiAgIGR1cGxpY2F0ZS1jdXJyZW50LWxpbmUt b3ItcmVnaW9uLXJlZCAgImR1cGxpY2F0ZSIgOmNvbG9yIHJlZCApCigiNSIgICBkdXBsaWNhdGUt Y3VycmVudC1saW5lLW9yLXJlZ2lvbiAgImR1cGxpY2F0ZSIgKQooIjYiICAgei9jb3B5LWNvbW1l bnQtcGFzdGUgICJkdXBsaWNhdGUtY29tbWVudCIpCigiOyIgICBjb21tZW50LW9yLXVuY29tbWVu dC1yZWdpb24gKQoKCigiYSIgKG9yZy1hZ2VuZGEgbmlsICJhIikgICAib3JnIGFnZW5kYSIgKQoo ImIiICBoeWRyYS1jaGQtd29yay9ib2R5ICAgIkp1bXA6d29yayIgIDpmYWNlICdoeWRyYS1mYWNl LWN5YW4gKQooImMiICB6L29yZy1tb3ZlLXRvcC1jb2xsYXBzZSAiY29sbGFwc2UgaGVhZGVycyIg KQooImQiIGh5ZHJhLWNoZC1kaXJlZC9ib2R5ICJKdW1wOmRpcmVkIiAgOmZhY2UgJ2h5ZHJhLWZh Y2UtY3lhbiApCgooImUiICBoeWRyYS1jaGQtdGVjaC9ib2R5ICAgIkp1bXA6VGVjaCIgIDpmYWNl ICdoeWRyYS1mYWNlLWN5YW4gKQooImYiICBoZWxtLW9yZy1yaWZsZSAib3JnLXNlYXJjaCAocmlm bGUpIikKKCJndCIgICBoZWxtLXRvcCAidG9wIikKCigiaCIgIGh5ZHJhLWNoZC1ob21lL2JvZHkg ICAiSnVtcDp3b3JrIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtY3lhbiApCgooImkiICBoeWRyYS1lZGl0 aW5nLWluc2VydC9ib2R5ICJpbnNlcnQgc3ltYm9sIiApCigiaiIgIGh5ZHJhLWNvcHktcGFzdGUv Ym9keSAiY29weS9wYXN0ZSBtZW51IiA6ZmFjZSAnaHlkcmEtZmFjZS1jeWFuICkKOygiayIgIGhl bG0tc2hvdy1raWxsLXJpbmcgImtpbGwgcmluZyIpCigiayIgIGNvdW5zZWwteWFuay1wb3AgImtp bGwgcmluZyIpCigibCIgIGh5ZHJhLW9yZy1saW5rcy9ib2R5ICAib3JnIGxpbmtzIikKKCJtIiAg IG11bHRpLXRlcm0tZGVkaWNhdGVkLXRvZ2dsZSAibXVsdGl0ZXJtIHRvZ2dsZSIpCigiTSIgICB6 L3Zpc2l0LWFuc2ktdGVybSAiYW5zaSB0ZXJtIikKKCJuIiAgY2xvbmUtaW5kaXJlY3QtYnVmZmVy LW90aGVyLXdpbmRvdyAgImluZGlyZWN0IGJ1ZmZlciIgKQooIm8iICAgaHlkcmEtbGVhZGVyLWV4 dHJhLW9yZy9ib2R5ICAib3JnIG1lbnUiIDpmYWNlICdoeWRyYS1mYWNlLWN5YW4pCigicCIgICBo ZWxtLW1hcmstcmluZyAiSEVMTSBtYXJrICIpCigiUCIgICBoZWxtLWFsbC1tYXJrLXJpbmdzICJI RUxNIG1hcmsgQUxMICIpCigiciIgIGllZGl0LW1vZGUgICJpZWRpdCIgKQooInMiICBoeWRyYS1z ZWFyY2gvYm9keSAic2VhcmNoIGh5ZHJhIiApCigidCIgICBjb3Vuc2VsLW9yZy10YWcgInRhZyBk aWFsb2ciKQooInUiICBoeWRyYS10ZXJtaW5hbC9ib2R5ICAidGVybWluYWwgaHlkcmEiICkKKCJ2 IiBoeWRyYS1vcmctdGFuZ2xlL2JvZHkgICJ0YW5nbGUiICApCigidyIgbmlsICkKKCJ4IiAgei9i dWZmZXItY2xvc2UtYW5kbW92ZS1vdGhlciAgImNsb3NlIHdpbmRvdyIpCigieXUiICBoeWRyYS15 YXMvYm9keSAieWFzIG1lbnUiICkKKCJ5eSIgIHlhcy1pbnNlcnQtc25pcHBldCAieWFzIGluc2Vy dCIgKQooInoiICBvcmctYWdlbmRhICJhZ2VuZGEtdml3ZXMiICkKKCJxIiBuaWwgImNhbmNlbCIp CiAgICkpCiAjK0VORF9TUkMKCioqKiBIeWRyYSBsZWFkZXIgZXh0cmEgbWVudXMKKioqKiBoeWRy YS1jaGQtdGVjaCAKdGhlIFtbaWQ6ZWRhZTNlZTYtMGViNy00ZDc5LWJlZWYtY2ZmZGRjNTIyM2Fi XVtqdW1wIHRvIG9yZy1ib29rbWFya3MgdmlhIGh5ZHJhIGZ1bmN0aW9uc11dIGZ1bmN0aW9uIGlz IG5lZWRlZCB0byBydW4gdGhlIGp1bXBzIHRvIG9yZ21vZGUgYm9va21hcmtzIAogIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCgoKKGRlZmh5ZHJhIGh5ZHJhLWNoZC10ZWNoICAo OmNvbG9yIGJsdWUgOmhpbnQgbmlsIDpjb2x1bW5zIDQpCiJKdW1wIHRvIHRlY2ggYm9va21hcmsi CgooImIiICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2RvdGZpbGVzL2JpbnMu b3JnIikgIm8uYmluIiApCigiZCIgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMv ZG90ZmlsZXMvZG90ZmlsZXMub3JnIikgIm8uZG90ZmlsZXMiICkKKCJzIiAgKGZpbmQtZmlsZSAi L2hvbWUvemVsdGFrLy5lbWFjcy5kL3NldHRpbmdzLm9yZyIpICAiZS5zZXR0aW5ncyIgKQooIm0i ICAoYm1rcC1kaXJlZC1qdW1wICIqTWVzc2FnZXMqIiApICJtZXNzYWdlcyIgKQooImwiICAoZmlu ZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL1RlY2gvbGludXgub3JnIikgIm8ubGludXgi ICkKKCJ5IiAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9oZWxwL3lhbmtwYWQu b3JnIikgIm8ueWFua3BhZCIgKQooImUiICAobGFtYmRhICgpKGludGVyYWN0aXZlKSAoei9vcmct Ym9va21hcmstanVtcC1ieS1zdHJpbmcgIm8uZW1hY3MiKSkgImVtYWNzIiAgKSAKKCJvIiAgKGxh bWJkYSAoKShpbnRlcmFjdGl2ZSkgKHovb3JnLWJvb2ttYXJrLWp1bXAtYnktc3RyaW5nICJvLm9y ZyIpKSAiZW1hY3MiICApIAopCiAjK0VORF9TUkMKKioqKiBoeWRyYS1jaGQtd29yawoKICMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmaHlkcmEgaHlkcmEtY2hkLXdvcmsg ICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKIkp1bXAgdG8gd29yayAgYm9va21h cmsiCgooImIiICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9iZ3Uu b3JnIikgIm8uYmd1IiApCigiZyIgICAoZmluZC1maWxlICAiL2hvbWUvemVsdGFrL29yZy9maWxl cy9hZ2VuZGEvYmd1Lm9yZyIgKSAiby5ncmFudHMiICkKKCJtIiAgIChmaW5kLWZpbGUgIi9ob21l L3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL21lZXRpbmdzLm9yZyIgKSAiby5tZWV0aW5ncyIgKQoo InAiICAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9VbmkvcGFwZXJzL3BhcGVy Lm1ldGEub3JnIiApICJvLnBhcGVyLm1ldGEiICkKKCJyIiAgIChmaW5kLWZpbGUgIi9ob21lL3pl bHRhay9vcmcvZmlsZXMvYWdlbmRhL3Jlc2VhcmNoLm9yZyIgKSAiby5yZXNlYXJjaCIgKQooInMi ICB6L2J1ZmZlcnMtcmVzdG9yZS1yZWZ3b3JrICAicmVmd29yayIgOmZhY2UgJ2h5ZHJhLWZhY2Ut Y3lhbikKKCJ3IiAgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvaGVscC93b3Jr Zmxvd3Mub3JnIiApICJvLndvcmtmbG93cyIgKQopCiAjK0VORF9TUkMKKioqKiBoeWRyYS1jaGQt aG9tZSAKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmaHlkcmEgaHlk cmEtY2hkLWhvbWUgICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKIkp1bXAgdG8g aG9tZSAgYm9va21hcmsiCigiYiIgICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVz L3dlYi93Ym9va21hcmtzLm9yZyIgKSAiby53Ym9va21hcmtzIiApCigiZCIgICAoZmluZC1maWxl ICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9kbC5vcmciICkgIm8uZG93bmxvYWQiICkK KCJmIiAgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvYWdlbmRhL2Zvb2Qub3Jn IiApICJvLmZvb2QiICkKKCJnIiAgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMv YWdlbmRhL2dhcmRlbi5vcmciICkgIm8uZ2FyZGVuIiApCigiaCIgICAoZmluZC1maWxlICIvaG9t ZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9ob21lLm9yZyIgKSAiby5ob21lIiApCigidCIgICAo ZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS9UT0RPLm9yZyIgKSAiby50 b2RvIiApCigidSIgICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvb3JnL2ZpbGVzL2FnZW5kYS90 cmF2ZWwub3JnIiApICJvLnRyYXZlbCIgKQopCiAjK0VORF9TUkMKIAoqKioqIGRpcmVkLWNoZC1k aXJlZAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNTVjYWJlOTItOTJjOS00ZTAy LTk4ZWEtNDlhYWY2ZmRmYjM0CiAgICAgOkVORDoKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKKGRlZmh5ZHJhIGh5ZHJhLWNoZC1kaXJlZCAgKDpjb2xvciBibHVlIDpoaW50 IG5pbCA6Y29sdW1ucyA0KQoKIkEgQ2FwaXRhbCBsZXR0ZXIgbWVhbnMgb3BlbiBpbiBvdGhlciB3 aW5kb3ciCgooIlxcIiBoZWxtLW1pbmkgImhlbG0tbWluaSIpCjsoIlxcIiBpdnktc3dpdGNoLWJ1 ZmZlciAiaXZ5IHN3aXRjaCBidWZmZXIiKQooIjxiYWNrc3BhY2U+IiBjb3Vuc2VsLWJvb2ttYXJr ICJjb3Vuc2VsLWJvb2ttYXJrIikKKCJdIiAgaHlkcmEtbGVhZGVyL2JvZHkgICJKdW1wOmRpcmVk IiA6ZmFjZSAnaHlkcmEtZmFjZS1wdXJwbGUgKQoKKCI8ZGVsZXRlPiIgei9kaXJlZC1yZWNlbnQt ZGlycy1pdnkgInJlY2VudCBkaXJzIiApCgooImEiICAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFr L0FVUiIgKSAiYXVyIiApCigiQSIgIChmaW5kLWZpbGUtb3RoZXItd2luZG93ICIvaG9tZS96ZWx0 YWsvQVVSIikgImF1ciDihpIiIDpmYWNlICdoeWRyYS1mYWNlLWZhZGUgKQoKKCIyIiAgIGh5ZHJh LWRpcmVkLWNoZC1yYWlkL2JvZHkgICJQMlAiICkKCigiMyIgICAoZmluZC1maWxlICIvaG9tZS96 ZWx0YWsvbW91bnRzL2xyYWlkL3JhaWQiICkgInJhaWQiICkKKCIjIiAgKGZpbmQtZmlsZS1vdGhl ci13aW5kb3cgIi9ob21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFpZCIpICJyYWlkIOKGkiIgKQoK KCJiIiAgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9iaW4iICkgImJpbiIgKQooIkIiICAoZmlu ZC1maWxlLW90aGVyLXdpbmRvdyAiL2hvbWUvemVsdGFrL2JpbiIpICJiaW4g4oaSIiApCgooImMi ICAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrLy5jb25maWciICkgImNvbmZpZyIgKQooIkMiICAo ZmluZC1maWxlLW90aGVyLXdpbmRvdyAiL2hvbWUvemVsdGFrLy5jb25maWciKSAiY29uZmlnIOKG kiIgKQoKKCJkIiAgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9Eb3dubG9hZHMiICkgImRvd25s b2FkcyIgKQooIkQiICAoZmluZC1maWxlLW90aGVyLXdpbmRvdyAiL2hvbWUvemVsdGFrL0Rvd25s b2FkcyIpICJkb3dubG9hZHMg4oaSIiApCgooImUiICAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFr Ly5lbWFjcy5kIiApICJlbWFjcy5kIiApCigiRSIgIChmaW5kLWZpbGUtb3RoZXItd2luZG93ICIv aG9tZS96ZWx0YWsvLmVtYWNzLmQiKSAiZW1hY3MuZCDihpIiICkKCigiZiIgICAoZmluZC1maWxl ICIvaG9tZS96ZWx0YWsvaG1lZGlhIiApICJobWVkaWEiICkKKCJGIiAgKGZpbmQtZmlsZS1vdGhl ci13aW5kb3cgIi9ob21lL3plbHRhay9obWVkaWEiKSAiaG1lZGlhIOKGkiIgKQoKCigiZyIgIG5p bCApCgooImgiICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsiICkgImhvbWUiICkKKCJIIiAgKGZp bmQtZmlsZS1vdGhlci13aW5kb3cgIi9ob21lL3plbHRhayIpICJob21lIOKGkiIgKQoKCgooImlj IiAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9maWxlcy9VbmkvQ291cnNlcyIpICJPcmct Y291cnNlcyIgKQooImlhIiAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL29yZy9hdHRhY2gvIikg Ik9yZy1hdHRhY2giICkKCgooIkkiICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvU3luYy9Vbmkv IikgInVuaS1zeW5jIiApCgooImoiICBuaWwgKQooIkoiICBuaWwgKQoKKCJrIiAgKGZpbmQtZmls ZSAifi9CSy8iKSAiQksiICkKKCJsIiAgKGZpbmQtZmlsZSAifi9NTFQvIikgIk1MVCIpCigibSIg IChmaW5kLWZpbGUgIn4vbXVzaWMvIikgIm11c2ljIiApCgooIm8iICAgKGZpbmQtZmlsZSAiL2hv bWUvemVsdGFrL29yZyIgKSAib3JnIiApCigiTyIgIChmaW5kLWZpbGUtb3RoZXItd2luZG93ICIv aG9tZS96ZWx0YWsvb3JnIikgIm9yZyDihpIiICkKCigicCIgIChmaW5kLWZpbGUgIi9ob21lL3pl bHRhay9TeW5jL1VuaS9wZGZfbGliIikgInBkZiBsaWIiICkKCigiciIgIChmaW5kLWZpbGUgIn4v bXJldmlldy8iKSAibXJldmlldyIgKQooIlIiICAoZmluZC1maWxlICIvaG9tZS96ZWx0YWsvU291 bHNlZWsgRG93bmxvYWRzL2NvbXBsZXRlIikgInNvdWxzZWVrREwiICkKCigic3MiICAoZmluZC1m aWxlICJ+L1N5bmMvIikgIlN5bmMiICkKKCJzYyIgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9T eW5jL3NjYW5zLyIpICJzY2FucyIgKQoKKCJTIiAgKGZpbmQtZmlsZSAifi9zY3JpcHRzLyIgInNj cmlwdHMiKSApCigidCIgIChmaW5kLWZpbGUgIn4vbW91bnRzLyIgIm1vdW50cyIpICkKKCJ1IiAg KGZpbmQtZmlsZSAifi9VbmkvIikgIlVuaSIgKQooInYiICAoZmluZC1maWxlICIvaG9tZS96ZWx0 YWsvLnBhc3N3b3JkLXN0b3JlIikgInBhc3N3b3JkLXN0b3JlIiApCigidyIgIChmaW5kLWZpbGUg In4vZG90ZmlsZXMvIikgImRvdGZpbGVzIiApCgooIngiICB6L2J1ZmZlci1jbG9zZS1hbmRtb3Zl LW90aGVyICAiY2xvc2Ugd2luZG93IiA6ZmFjZSAnaHlkcmEtZmFjZS1yZWQgICkKCigieSIgIChm aW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmlsZXMvVW5pL1Byb2plY3RzL2NvZGUiKSAiY29k ZSIgKQoKKCJ6IiAgIChmaW5kLWZpbGUgIn4vWkhfdG1wLyIgKSAiWkhfdG1wIiApCigiWiIgIChm aW5kLWZpbGUtb3RoZXItd2luZG93ICJ+L1pIX3RtcC8iKSAiWkhfdG1wIiApCgooIi8iICAoZmlu ZC1maWxlICIvIikgIlJvb3QiKQoKKCJxIiBuaWwgICkKCikKIytFTkRfU1JDIAoKKioqKiogZGly ZWQgY2hkIHJhaWQKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgYzhkZmJhYmIt NzkyOC00MGMzLTliZDEtNTgyZjNmZGFlMWRmCiAgICAgIDpFTkQ6CiBjaGFuZ2UgZGlyIG9ubHkg aW4gZGlyIG1vZGUgaG9vaz8KICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQog KGdsb2JhbC1zZXQta2V5CiAgICAoa2JkICIiKQogKGRlZmh5ZHJhIGh5ZHJhLWRpcmVkLWNoZC1y YWlkICAoOmNvbG9yIGJsdWUgOmhpbnQgbmlsIDpjb2x1bW5zIDQpCgogIgogIgooIjIiICAgKGZp bmQtZmlsZSAiL2hvbWUvemVsdGFrL21vdW50cy9scmFpZC9Eb3dubG9hZC90cmFuc21pc3Npb24v Y29tcGxldGVkIiApICJQMlAiICkKKCJAIiAgKGZpbmQtZmlsZS1vdGhlci13aW5kb3cgIi9ob21l L3plbHRhay9tb3VudHMvbHJhaWQvRG93bmxvYWQvdHJhbnNtaXNzaW9uL2NvbXBsZXRlZCIpICJQ MlAg4oaSIiApCigiYyIgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFp ZC9WaWRlb3MvMV9WaWRlby9taWNoYWwiKSAibWljaGFsIiApCigiayIgIChmaW5kLWZpbGUgIi9o b21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFpZC9WaWRlb3MvMV9WaWRlby9LaWRzIikgImtpZHMi ICkKKCJtIiAgKGZpbmQtZmlsZSAiL2hvbWUvemVsdGFrL21vdW50cy9scmFpZC9yYWlkL1ZpZGVv cy9Nb3ZpZXMiKSAiTW92aWVzIiApCigiZiIgIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9tb3Vu dHMvbHJhaWQvcmFpZC9NdXNpYy9GcmVlemVkIENvbGxlY3Rpb24iKSAiRnJlZXplZCBtdXNpYyIg KQooIm8iICAoZGlyZWQgIi9ob21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFpZC9Db21pY3MiKSAi Y29taWNzIiApCjs7KCIiICAoZmluZC1maWxlICIiKSAiIiApCigidCIgIChmaW5kLWZpbGUgIi9o b21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFpZC9WaWRlb3MvVFYiKSAiVFYiICkKKCJ1IiAgKGZp bmQtZmlsZSAiL2hvbWUvemVsdGFrL21vdW50cy9scmFpZC9yYWlkL1ZpZGVvcy9RIikgIlF1ZXJ5 IiApCigicSIgbmlsICApCgogKSkKCiAjK0VORF9TUkMKCioqKioqIGRpcmVkIGNoZCBOQVMKICAg ICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgYzhjNTBkMjItM2VhMS00NWU4LWI4YTct NjhlMjg4ZTgwNGZjCiAgICAgIDpFTkQ6CiBjaGFuZ2UgZGlyIG9ubHkgaW4gZGlyIG1vZGUgaG9v az8KICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGdsb2JhbC1zZXQta2V5 CiAgICAoa2JkICIiKQogKGRlZmh5ZHJhIGh5ZHJhLWRpcmVkLWNoZC1yZW1vdGUgICg6Y29sb3Ig Ymx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKCiAiCiAiCiAoIm4gIiAoZmluZC1maWxlICIvbWVk aWEvTkFTL1VuaS8iKSAiTkFTIGhvbWUiICkKICgicCIgKGZpbmQtZmlsZSAiL21lZGlhL05BUy9V bmkvUHJvamVjdHMvIikgIk5BUyBob21lIiApCiAoImQgIiAoZmluZC1maWxlICIvbWVkaWEvTkFT L1VuaS9kYXRhLyIpICJOQVMgaG9tZSIgKQogKCJ1IiB6L3RyYW1wLWNvbm5lY3QtdW5pLWRpcmVk ICJ6dW5pLXNzaCIgKQoKICgicSIgbmlsICApCgogKSkKCiAjK0VORF9TUkMKCgoKCioqKiogaHlk cmEtbGVhZGVyLWV4dHJhLW9yZwogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogKGRlZmh5ZHJhIGh5ZHJhLWxlYWRlci1leHRyYS1vcmcgICg6Y29sb3IgYmx1ZSA6aGludCBu aWwgOmNvbHVtbnMgNCkKICJFeHRyYSBvcmcgY29tbWFuZHMiCigiNSIgei9vcmctY2xvbmUtc3Vi dHJlZSAgImNsb25lIGhlYWRlciB3aXRoIG5ldyBvcmctaWQgIiApCigiOyIgei9vcmctY2Jsb2Nr LWNvbW1lbnQgICJsaW5lIHRvIGNoZWNrYm94IiApCigiYyIgb3JnLXNldC1saW5lLWNoZWNrYm94 ICAibGluZSB0byBjaGVja2JveCIgKQooImQiIG9yZy1jdXQtc3VidHJlZSAgIm9yZyBjdXQiICkK KCJlIiB6L29yZy1lbWFpbC1oZWFkaW5nICAiZW1haWwgaGVhZGVyIiApCigiZiIgZmlsbC1wYXJh Z3JhcGggICJmaWxsIHBhcmFncmFwaCIgKQooIkYiIGZpbGwtcmVnaW9uICAiZmlsbCByZWdpb24i ICkKKCJoIiBvcmctc2V0LWxpbmUtaGVhZGxpbmUgImxpbmUgdG8gaGVhZGxpbmUiICkKKCJpIiBp ZWRpdC1tb2RlICJlZGl0IGN1cnJlbnRAcG9pbnQiICkKKCJtIiBvcmctdGVsZXBvcnQgICJ0ZWxl cG9ydCBoZWFkZXIgIiApCigibyIgd29yZi1nb3RvICAic2VhcmNoIGhlYWRlcnMgIiApCigicCIg b3JnLXBhc3RlLXN1YnRyZWUgICJvcmcgcGFzdGUiICkKKCJyIiBvcmctY29weSAgImNvcHkgdmlh IHJlZmlsZSIgKQooInMiIG9yZy1jbG9uZS1zdWJ0cmVlLXdpdGgtdGltZS1zaGlmdCAgImFkZCBh IHRpbWUgc2VyaWVzIGZvciBoZWFkZXJzIiApCigidCIgb3JnLWluc2VydC10b2RvLWhlYWRpbmct cmVzcGVjdC1jb250ZW50ICJpbnNlcnQgVE9ETyIgKQooInYiIG9yZy1jb3B5LXZpc2libGUgImNv cHkgdmlzaWJsZS9oZWFkZXJzICIgKQooInciIHdvcmYtbW9kZSAiV29yZiBtb2RlIiApCigieSIg b3JnLWNvcHktc3VidHJlZSAib3JnIGNvcHkiICkKKCJ6IiB6L29yZy1lbWFpbC1oZWFkaW5nLW1l ICAiZW1haWwgaGVhZGVyIFgiICkKKCI8dXA+IiBvcmctbW92ZS1zdWJ0cmVlLXVwICJoZWFkZXIg dXAiIDpjb2xvciByZWQgKQooIjxkb3duPiIgb3JnLW1vdmUtc3VidHJlZS1kb3duICJoZWFkZXIg ZG93biIgOmNvbG9yIHJlZCkKKCIuIiAgb3JnLWRvLWRlbW90ZSAiPCIgOmNvbG9yIHJlZCkKKCIs IiAgb3JnLWRvLXByb21vdGUgIj4iIDpjb2xvciByZWQpCgogKQogICMrRU5EX1NSQwoqKioqIGh5 ZHJhLWluc2VydCAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDBjZjUzNTcyLTY4 YTYtNDQwOS04MzE4LTA5MmU1MTJiNjRjMQogICAgIDpFTkQ6CmFkZCB0aGUgb3JnIGZhY2VzIG1h Y3JvcyBoZXJlICglVGlwJSwgJE5vdGUkIGV0YykKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJl c3VsdHMgbm9uZQooZGVmaHlkcmEgaHlkcmEtZWRpdGluZy1pbnNlcnQgICg6Y29sb3IgYmx1ZSAg OmNvbHVtbnMgNCA6aGludHMgbmlsKQogICJ1bmljb2RlIgogICgiYSIgICAgIGhlbG0tYXdlc29t ZSAgImhlbG0tYXdlc29tZSIpIAogICgiYiIgICAgIHovaW5zZXJ0LWJhc2hzY3JpcHQgICJpbnNl cnQgYmFzZyAjISIpIAogICgiYyIgICAgIHovaW5zZXJ0LWJsYWNrLWxlbnRpY3VsYXItYW5nbGUg ICLCuyIpIAogICgiQyIgICAgIGhlbG0tdW5pY29kZSAgImluc2VydCBVbmljb2RlIG1lbnUiKSAK ICAoImQiICAgICB6L2luc2VydC1ibGFjay1sZW50aWN1bGFyLWFuZ2xlLWJvbGQgICLinbEiKSAK ICAoImUiICAgICB6L2luc2VydC1ibGFjay1hcnJvd3MgICLil4Ag4pa2IikgCiAgKCJmIiAgICAg ei9pbnNlcnQtYmxhY2staGFuZHMgICLimJog4pibIikgCiAgKCJnIiAgICAgei9pbnNlcnQtYmxh Y2stbGVudGljdWxhci1icmFja2V0LXdoaXRlICAi44CWIikgCiAgKCJoIiAgICAgaHlkcmEtaW5z ZXJ0LWNvbG9ycy9ib2R5ICAiaHlkcmEgY29sb3IgIikgCiAgKCJpIiAgICAgeWFua3BhZC1pbnNl cnQgICJ5YW5rcGFkIGluc2VydCIpIAogICgibyIgICAgIHlhbmtwYWQtZXhwYW5kICAieWFua3Bh ZCBleHBhcG5kIikgCiAgKCJqIiAgICAgei9pbnNlcnQtYmxhY2stbGVudGljdWxhci1hbmdsZSAg IsKrwrsiKSAKICAoImsiICAgICB6L2luc2VydC1ibGFjay1sZW50aWN1bGFyLWJyYWNrZXQgICLj gJDjgJEiKSAKICAoIm0iICAgIGNoYXItbWVudSAiaW5zZXJ0IHN5bWJvbCIgKQogICgidSIgICAg IHlhbmtwYWQtc2V0LWNhdGVnb3J5ICAieWFua3BhZCBjaGFuZ2UiKSAKICAoIlUiICAgICB5YW5r cGFkLWVkaXQgICJlZGl0IHlhbmtwYWQiKSAKICAoInAiICAgICB6L2luc2VydC1wbGF5ICAiIOKA oyIpIAogICgidyIgICAgIHovaW5zZXJ0LXdoaXRlLWFycm93ICAi4pa7IikgCiAgKCJyIiAgICB6 L2luc2VydC1yZXZlYWwtc3BsaXQgICJyZXZlYWwtc3BsaXQiKSAKICAoInoiICAgICB6L2luc2Vy dC1FT0wgICIgXFwiKSAKICAoInEiIG5pbCAiY2FuY2VsIiBuaWwpCikKIytFTkRfU1JDCioqKioq IGh5ZHJhLWluc2VydC1jb2xvcnMKICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAg MzcyNTBlYTgtMzY1My00MGJhLWEzNTYtNWJhZThhOTYwZjE0CiAgICAgIDpFTkQ6CiAjK0JFR0lO X1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoZGVmaHlkcmEgIGh5ZHJhLWluc2VydC1j b2xvcnMgICg6Y29sb3IgYmx1ZSAgOmNvbHVtbnMgNCA6aGludHMgbmlsKQogICAidW5pY29kZSIK ICAgKCJyIiAgICB6L2luc2VydC1oeWRyYS1jb2xvci1yZWQgICJyZWQiIDpmYWNlICdoeWRyYS1m YWNlLXJlZCApIAogICAoIm8iICAgIHovaW5zZXJ0LWh5ZHJhLWNvbG9yLW9yYW5nZSAgIm9yYW5n ZSIgOmZhY2UgJ2h5ZHJhLWZhY2Utb3JhbmdlICkgCiAgICgiYiIgICAgei9pbnNlcnQtaHlkcmEt Y29sb3ItYnJvd24gICJicm93biIgOmZhY2UgJ2h5ZHJhLWZhY2UtYnJvd24gKSAKICAgKCJjIiAg ICB6L2luc2VydC1oeWRyYS1jb2xvci1jeWFuICAiY3lhbiIgOmZhY2UgJ2h5ZHJhLWZhY2UtY3lh biApIAogICAoImciICAgIHovaW5zZXJ0LWh5ZHJhLWNvbG9yLWdyZWVuICAiZ3JlZW4iIDpmYWNl ICdoeWRyYS1mYWNlLWdyZWVuICkgCiAgICgicCIgICAgei9pbnNlcnQtaHlkcmEtY29sb3ItcHVy cGxlICAicHVycGxlIiA6ZmFjZSAnaHlkcmEtZmFjZS1wdXJwbGUgKSAKICAgKCJlIiAgICB6L2lu c2VydC1oeWRyYS1jb2xvci1ncmV5ICAiZ3JleSIgOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JleSApIAog ICAoInMiICAgIHovaW5zZXJ0LWh5ZHJhLWNvbG9yLXNreSAgInNreSIgOmZhY2UgJ2h5ZHJhLWZh Y2Utc2t5ICkgCiAgICgibSIgICAgei9pbnNlcnQtaHlkcmEtY29sb3Itc2FsbW9uICAic2FsbW9u IiA6ZmFjZSAnaHlkcmEtZmFjZS1zYWxtb24gKSAKICAgKCJ0IiAgICB6L2luc2VydC1oeWRyYS1j b2xvci10b3JxICAidG9ycSIgOmZhY2UgJ2h5ZHJhLWZhY2UtdG9ycSApIAogICAoImQiICAgIHov aW5zZXJ0LWh5ZHJhLWNvbG9yLWRhcmtyZWQgICJkYXJrcmVkIiA6ZmFjZSAnaHlkcmEtZmFjZS1k YXJrcmVkICkgCiAgICgiZiIgICAgei9pbnNlcnQtaHlkcmEtY29sb3ItZm9yZXN0Z3JlZW4gICJm b3Jlc3RncmVlbiIgOmZhY2UgJ2h5ZHJhLWZhY2UtZm9yZXN0Z3JlZW4gKSAKICAgKCJ5IiAgICB6 L2luc2VydC1oeWRyYS1jb2xvci15ZWxsb3cgICJ5ZWxsb3ciIDpmYWNlICdoeWRyYS1mYWNlLXll bGxvdyApIAogICAoInEiIG5pbCAiY2FuY2VsIiBuaWwpCiApCiAjK0VORF9TUkMKCgoKCioqKiog aHlkcmEtY29weS1wYXN0ZS9ib2R5IAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAg YmRjOTA1YWEtMmFmNi00YTM0LWI5N2MtN2M5ZjBmOWRmMzEzCiAgICAgOkVORDoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZoeWRyYSBoeWRyYS1jb3B5LXBhc3RlICAo OmNvbG9yIGJsdWUgIDpjb2x1bW5zIDQgOmhpbnRzIG5pbCkKICAiY29weSBwYXN0ZSBvcGVyYXRp b25zIgogICgiYyIgY29weS10by1yZWdpc3RlciAgImNvcHkgdG8gcmVnaXN0ZXIiKSAKICAoInAi IGluc2VydC1yZWdpc3RlciAgInBhc3RlIGZyb20gcmVnaXN0ZXIiKSAKICAoInYiIHZpZXctcmVn aXN0ZXIgICJ2aWV3IHJlZ2lzdGVyIikgCiAgKCJxIiBuaWwgImNhbmNlbCIgbmlsKQopCiMrRU5E X1NSQwoqKioqIGh5ZHJhLXRlcm1pbmFsL2JvZHkgCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklE OiAgICAgICBmOGRmOGM5My1lNGRiLTRkMDAtODVmOC1lMzc0NzQ3ZGZmYzIKICAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZmh5ZHJhIGh5ZHJhLXRlcm1p bmFsICAoOmNvbG9yIGJsdWUgIDpjb2x1bW5zIDQgOmhpbnRzIG5pbCkKICAidGVybSAgb3BlcmF0 aW9ucyIKICAoInUiIGJldHRlci1zaGVsbC1yZW1vdGUtb3BlbiAgIm9wZW4gcmVtb3RlIHNoZWxs IikgCiAgKCJxIiBuaWwgImNhbmNlbCIgbmlsKQopCiMrRU5EX1NSQwoqKioqIGh5ZHJhLW9yZy10 YW5nbGUgKGh5ZHJhLW9yZy10YW5nbGUpCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAg ICA0YzI4MWVlZi0wN2QyLTQ3ZTktYmIxYS1iZTI5NTMyMDFjMDEKICAgICA6RU5EOgoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihnbG9iYWwtc2V0LWtleQogICAoa2JkICIi KQooZGVmaHlkcmEgaHlkcmEtb3JnLXRhbmdsZSAgKDpjb2xvciBibHVlIDpoaW50IG5pbCkKCiIK IgoKKCJhIiBuaWwgKQooImIiICBvcmctYmFiZWwtdGFuZ2xlICJ0YW5nbGUgRU5USVJFIGZpbGUi KQooImMiICBvcmctYmFiZWwtZXhlY3V0ZS1zdWJ0cmVlICJleGUgYmxvY2siKQooImQiICBvcmct YmFiZWwtZGVtYXJjYXRlLWJsb2NrICAiZGVtYXJjYXRlLWJsb2NrIChwYXN0ZSBhcyBjb2RlIGJs b2NrKSIgKQooImUiICBuaWwgKQooImYiIHovb3JnLXRhbmdsZS1hdC1ibG9jayAidGFuZ2xlIHVu ZGVyIGhlYWRlciBhbmQgc3ViIGhlYWRlcnMiICkKKCJnIiAgbmlsICkKKCJoIiAgbmlsICkKKCJp IiAgbmlsICkKKCJqIiAgbmlsICkKKCJrIiAgbmlsICkKKCJsIiAgbmlsICkKKCJtIiAgbmlsICkK KCJuIiAgei9vcmctYmFiZWwtZWRpdC1uZXh0ICJuZXh0IGNvZGUgYmxvY2siIDpjb2xvciByZWQp CigicCIgIHovb3JnLWJhYmVsLWVkaXQtcHJldmlvdXMgInByZXYgY29kZSBibG9jayIgOmNvbG9y IHJlZCkKKCJvIiAgei9vcmctdGFuZ2xlLWF0cG9pbnQgKQooInIiICBuaWwgKQooInMiICBuaWwg KQooInQiICBuaWwpCigidSIgIG5pbCApCigidiIgIHovb3JnLXRhbmdsZS1hdHBvaW50ICJ0YW5n bGUgY3VycmVudCIpCigidyIgIG5pbCApCigieCIgIG5pbCApCigieSIgIG5pbCApCigieiIgIG5p bCApCigicSIgIG5pbCApCgopKQoKCiMrRU5EX1NSQwoKCgoKKioqIEVtYWNzLy90b2dnbGVzIChm MSkKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA2Y2Q3YWQ4Ni0wYWJlLTQyNmQtODNk ZC03Y2E4NjYyOGYwZDMKICAgIDpFTkQ6CioqKiogbWFpbiB0b2dnbGVzIAogICAgIDpQUk9QRVJU SUVTOgogICAgIDpJRDogICAgICAgOWNiZTI3MTUtMzZjMS00NmMyLTkxZWEtMzI4YTQ0Yjg4OWYy CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihnbG9iYWwt c2V0LWtleQogICAoa2JkICI8ZjE+IikKKGRlZmh5ZHJhIGh5ZHJhLXRvZ2dsZXMgKDpjb2xvciBi bHVlICA6Y29sdW1ucyA2KQoiVG9nZ2xlczogICDjgJBNLWcgTS1n44CRIGdvdG8gbGluZSDjgJBD LXggU1BBQ0XjgJEgc3RhcnQgbWFyayByZWN0YW5nbGUgCmVhc3kta2lsbDog44CQTS13IHfjgJEg c2VsZWN0IHdvcmQgLy8gdywgKy0gLCAxLi45IHRvIGluY3JlbWVudCAoMCB0byByZXNldCkvL+OA kEMtc3BhY2XjgJEgdHVybiBzZWxlY3Rpb24gdG8gcmVnaW9uLy8g44CQTS0z44CRZWFzeS1tYXJr ClRlcm06IOOAkEMtYyBDLWrjgJEtYWN0aXZhdGUgRW1hY3MgbW9kZSDjgJBDLWMgQy1r44CRIGJh Y2sgdG8gbm9ybWFsIHRlcm0gbW9kZSAKKmNhbGMqIHVzZSDjgJBDLWVudGVy44CRdG8gY29weSBy ZXN1bHRzIHRvIGNsaXAgYW5kIOOAkD3jgJF0byBwcmludCBhbnN3ZXIK44CQQy14ICjjgJEgIHN0 YXJ0IGRlZmluaW5nIGEga2V5Ym9hcmQgbWFjcm8K44CQQy14ICnjgJEgIHN0b3AgZGVmaW5pbmcg dGhlIGtleWJvYXJkIG1hY3JvCuOAkEMteCBl44CRICBleGVjdXRlIHRoZSBrZXlib2FyZCBtYWNy bwoKIgooIjgiIGNhbGN1bGF0b3IgImNhbGMiICApCigiYSIgcGFuZG9jLW1vZGUgInBhbmRvYyIg ICkKKCJiIiBidWctaHVudGVyLWZpbGUgImJ1ZyBodW50ZXIiIDpmYWNlICdoeWRyYS1mYWNlLW9y YW5nZSApCigiYyIgY3VhLW1vZGUgImN1YSIgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICkKKCJkIiB0 b29sLWJhci1tb2RlICJ0b2dnbGUgdG9vbGJhciIgICApCigiZSIgZXZpbC1tb2RlICJldmlsIikK KCJmIiBmY2ktbW9kZSAiZmNpIiApCigiZyIgZ29vZ2xlLXNlYXJjaCAiZ29vZ2xlIikKKCJoIiBo eWRyYS10b2dnbGVzLWhlbHAvYm9keSAiaGVscCIgKQooImkiIG5pbCApCigiaiIgaGVsbS1jb2xv cnMgImNvbG9yIHBhbGxldGUiICkKKCJrIiBrZXktY2hvcmQtbW9kZSAia2V5LWNob3JkIiAgKQoo ImwiIG5saW51bS1tb2RlICAibGluZSBudW0iKQooIkwiIGxpbnVtLW1vZGUgICJsaW5pdW0iKQoo Im0iIGh5ZHJhLXRvZ2dsZXMtbWFjcm8vYm9keSAiRXh0cmEgbWFjcm8gbWVudSIpCigiTyIgb3Jn LW1vZGUgIm9yZy1tb2RlIiApCigicCIgbGlzdC1wYWNrYWdlcyAiZWxwYSIgICkKKCJyIiByZWFk LW9ubHktbW9kZSAicmVhZC1vbmx5IikKKCJSIiBoZWxtLXJlZ2V4cCAicmVnZXggYnVpbGRlciIp CigicyIgY3JlYXRlLXNjcmF0Y2gtYnVmZmVyICJOZXcgc2NyYXRjaCIgKQooIlMiIHNjcmF0Y2gg InNjcmF0Y2giKQooInUiIGVsZWN0cmljLXBhaXItbW9kZSAiZWxlY3RyaWMtcGFpciIpCigidiIg dmlldy1tb2RlICJ2aWV3LW1vZGUiKQooInciIHdoaXRlc3BhY2UtbW9kZSAid2hpdGVzcGFjZSIp CigieCIgZXZhbC1idWZmZXIgImV2YWwgYnVmZmVyIikKKCJYIiBldmFsLXJlZ2lvbiAiZXZhbC1y ZWdpb24iKQooInkiIG5pbCApCigieiIgbmlsICkKKCI9IiB0ZXh0LXNjYWxlLWluY3JlYXNlIDpj b2xvciByZWQgKQooIi0iIHRleHQtc2NhbGUtZGVjcmVhc2UgOmNvbG9yIHJlZCkKKCJHIiAgaW5k ZW50LWd1aWRlLW1vZGUgImd1aWRlLW1vZGUiKQooInEiIG5pbCAiY2FuY2VsIikKKSkKIytFTkRf U1JDCgoqKioqIGV4dHJhIG1hY3JvIGNvbW1hbmRzCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklE OiAgICAgICBkYjAwNGZhYi1kNTVlLTQ1MWMtOWFkMC02NGI2NjA5Yjg4ZmIKICAgICA6RU5EOgog IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAoZGVmaHlkcmEgaHlkcmEtdG9n Z2xlcy1tYWNybyAgKDpjb2xvciBibHVlIDpoaW50IG5pbCApCiAgICAgICJtYWNybyBjb21tYW5k cwogICAgICAiCiAgICAgICgicyIgc3RhcnQta2JkLW1hY3JvICAic3RhcnQgbWFjcm8iICkgCiAg ICAgICgiZSIgICAiZW5kIG1hY3JvIiApIAogICAgICAoImwiIGVsbWFjcm8tc2hvdy1sYXN0LWNv bW1hbmRzICAiZWxtYWNybyIgKSAKICAgICAgKCJlIiBrbWFjcm8tZW5kLWFuZC1jYWxsLW1hY3Jv ICAidXNlIEMteCBlIiApIAogICAgICAoIm4iIG5hbWUtbGFzdC1rYmQtbWFjcm8gICJuYW1lIG1h Y3JvIiApIAogICAgICAoImkiIGluc2VydC1rYmQtbWFjcm8gICJpbnNlcnQgbWFjcm8iICkgCiAg ICAgICgicSIgbmlsICJjYW5jZWwiIG5pbCkKICkKICMrRU5EX1NSQwoKKioqKiBoZWxwIG1lbnUg Y29tbWFuZHMKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGU5N2FiZDQ4LWNkZTUt NDZkNi05YjE4LWFhNTRlZjk3MzFiNAogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag OnJlc3VsdHMgbm9uZQoKKGdsb2JhbC1zZXQta2V5CiAgIChrYmQgIiIpCihkZWZoeWRyYSBoeWRy YS10b2dnbGVzLWhlbHAgKDpjb2xvciBibHVlIDpoaW50IG5pbCkKCiIKX2tfIDpkZXNjcmliZSBr ZXkgIF92XyBkZXNjcmliZSB2YXJpYWJsZSBfZl8gZGVzY3JpYmUgZnVuY3Rpb20gIApNLTEtIGNo YW5nZSB3aW5kb3dzCk0tMiBleHBhbmQgcmVnaW9uIChzZWxlY3QgZ3JhZHVhbHkgcmVnaW9ucykK fm1vdm1lbnR+ID4+IOOAkEMtZS8vQy1h44CRICAoZW5kL3N0YXJ0IG9mIGxpbmUpCn5lZGl0aW5n fiA+PiAg44CQQy1CS1NQLy9BLUJLU1DjgJEgKGtpbGwgd29yZCBzdGFydC9lbmQgb2YgbGluZSkK CgoKX3FfOiAKIgoKKCJhIiBuaWwgKQooImIiICBuaWwgICkKKCJjIiAgbmlsICkKKCJkIiAgZGVz Y3JpYmUtbGFzdC1mdW5jdGlvbiAiZGVzY3JpYmUgbGFzdCBjb21tYW5kIHVzZWQiICkKKCJlIiAg bmlsICkKKCJmIiAgZGVzY3JpYmUtZnVuY3Rpb24gKQooImciICBuaWwgKQooImgiICBuaWwgKQoo ImkiICBuaWwgKQooImoiICBuaWwgKQooImsiICBkZXNjcmliZS1rZXkgKQooImwiICBuaWwgKQoo Im0iICBuaWwgKQooIm4iICBuaWwgKQooIm8iICBuaWwgKQooInAiICBuaWwgKQooInIiICBuaWwg KQooInMiICBuaWwgKQooInQiICBuaWwgKQooInUiICBuaWwgKQooInYiICBkZXNjcmliZS12YXJp YWJsZSkKKCJ3IiAgbmlsICkKKCJ4IiAgbmlsICkKKCJ5IiAgbmlsICkKKCJ6IiAgbmlsICkKKCJx IiAgbmlsICkKCikpCiMrRU5EX1NSQwoqKiogaXZ5IGh5ZHJhIChpbiBkaXJlZCkKICAgIDpQUk9Q RVJUSUVTOgogICAgOklEOiAgICAgICBmODc1ODA3NC0wMGEzLTQ4OGUtYjQ5OS0wNDE4NzA3YTE1 YWIKICAgIDpFTkQ6Cmh0dHA6Ly9vcmVtYWNzLmNvbS8yMDE1LzAzLzI2L2h5ZHJhLWl2eS1zd2lw ZXIvCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZmh5ZHJhIGh5ZHJh LWl2eSAoOmhpbnQgbmlsCiAgICAgICAgICAgICAgICAgICAgIDpjb2xvciBwaW5rKQogICIKXl5e Xl5eICAgICAgICAgIF5BY3Rpb25zXiAgICBeRGlyZWReICAgICBeUXVpdF4KXl5eXl5eLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KXiBeIF9rXyBeIF4gICAgIF8u XyByZXBlYXQgICBfbV9hcmsgICAgICBfY186IGNhbmNlbApfaF8gXuKcnF4gX2xfICAgICBfcl9l cGxhY2UgICAgX1VfIHVubWFyayAgX3FfOiBxdWl0Cl4gXiBfal8gXiBeICAgICBfdV9uZG8gIAoi CiAgOzsgYXJyb3dzCiAgKCJoIiBpdnktYmVnaW5uaW5nLW9mLWJ1ZmZlcikKICAoImoiIGl2eS1u ZXh0LWxpbmUpCiAgKCJrIiBpdnktcHJldmlvdXMtbGluZSkKICAoImwiIGl2eS1lbmQtb2YtYnVm ZmVyKQogIDs7IGFjdGlvbnMKICAoIi4iIGh5ZHJhLXJlcGVhdCkKICAoInIiIGl2eS1yZXBsYWNl KQogICgidSIgaXZ5LXVuZG8pCiAgOzsgZGlyZWQKICAoIm0iIGl2eS1kaXJlZC1tYXJrKQogICgi VSIgaXZ5LWRpcmVkLXVubWFyaykKICA7OyBleGl0CiAgKCJxIiBrZXlib2FyZC1lc2NhcGUtcXVp dCA6ZXhpdCB0KQogICgiYyIgbmlsKSkKCgooZGVmaW5lLWtleSBpdnktbWluaWJ1ZmZlci1tYXAg KGtiZCAiQy1vIikgJ2h5ZHJhLWl2eS9ib2R5KQoKCihkZWZ1biBpdnktZGlyZWQtbWFyayAoYXJn KQogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGRvdGltZXMgKF9pIGFyZykKICAgICh3aXRoLWl2eS13 aW5kb3cKICAgICAgKGRpcmVkLW1hcmsgMSkpCiAgICAoaXZ5LW5leHQtbGluZSAxKQogICAgKGl2 eS0tZXhoaWJpdCkpKQoKKGRlZnVuIGl2eS1kaXJlZC11bm1hcmsgKGFyZykKICAoaW50ZXJhY3Rp dmUgInAiKQogIChkb3RpbWVzIChfaSBhcmcpCiAgICAod2l0aC1pdnktd2luZG93CiAgICAgIChk aXJlZC11bm1hcmsgMSkpCiAgICAoaXZ5LW5leHQtbGluZSAxKQogICAgKGl2eS0tZXhoaWJpdCkp KQoKKGRlZnVuIGl2eS1yZXBsYWNlICgpCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChmcm9tICh3 aXRoLWl2eS13aW5kb3cKICAgICAgICAgICAgICAgIChtb3ZlLWJlZ2lubmluZy1vZi1saW5lIG5p bCkKICAgICAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZAogICAgICAgICAgICAg ICAgICAgICAgIChpdnktLXJlZ2V4IGl2eS10ZXh0KSAobGluZS1lbmQtcG9zaXRpb24pIHQpCiAg ICAgICAgICAgICAgICAgIChtYXRjaC1zdHJpbmcgMCkpKSkpCiAgICAoaWYgKG51bGwgZnJvbSkK ICAgICAgICAodXNlci1lcnJvciAiTm8gbWF0Y2giKQogICAgICAobGV0ICgocmVwIChyZWFkLXN0 cmluZyAoZm9ybWF0ICJSZXBsYWNlIFslc10gd2l0aDogIiBmcm9tKSkpKQogICAgICAgICh3aXRo LXNlbGVjdGVkLXdpbmRvdyBzd2lwZXItLXdpbmRvdwogICAgICAgICAgKHVuZG8tYm91bmRhcnkp CiAgICAgICAgICAocmVwbGFjZS1tYXRjaCByZXAgdCB0KSkpKSkpCgooZGVmdW4gaXZ5LXVuZG8g KCkKICAoaW50ZXJhY3RpdmUpCiAgKHdpdGgtaXZ5LXdpbmRvdwogICAgKHVuZG8pKSkKCgojK0VO RF9TUkMKKioqIHNwZWxsaW5nL2VkaXRpbmcgIChGMykKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICA0ZDkzNDk0OC05MjU3LTRmZGItODk3My1jNzNkMTgzNWQ3ODEKICAgIDpFTkQ6Cgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAoZ2xvYmFsLXNldC1rZXkKICAo a2JkICI8ZjM+IikKICAoZGVmaHlkcmEgaHlkcmEtc3BlbGwgICg6Y29sb3IgYmx1ZSA6aGludCBu aWwgOmNvbHVtbnMgNCkKICAiCuOAkEMtU1BBQ0XjgJEgcmVjbnRhbmdsZSBzZWxlY3QgLy8g44CQ Qy0744CRIGlzcGVsbCBjeWNsZSAvLyDjgJBDLXggeuOAkSByZXBlYXQgbGFzdCBjb21tYW5kLSBr ZWVwIHByZXNzIOOAkHrjgJF0byByZXBlYXQKICIKICAoIjxmMz4iIGVuZGxlc3MvaXNwZWxsLXdv cmQtdGhlbi1hYmJyZXYgImNoZWNrIGFuZCBhZGQiICkKICAoIjxmMj4iIGZseXNwZWxsLWF1dG8t Y29ycmVjdC1wcmV2aW91cy13b3JkICJjb3JyZWN0IGxhc3Qgd29yZCIgKQogICgiPGY0PiIgei9m bHlzcGVsbC1nb3RvLXByZXZpb3VzLWVycm9yICJnb3RvIHByZXYgZXJyb3IiICkKICAoImMiICBj eWNsZS1zcGFjaW5nICJjeWNsZSBzcGFjaW5nIikKICAoImUiICBoeWRyYS1lZGl0aW5nL2JvZHkg ImVkaXRpbmcgbWVudSIgJ2h5ZHJhLWZhY2UtZ3JlZW4pCiAgKCJnIiAgcmdyZXAgIlJncmVwIikK ICAoImgiICBoaWdobGlnaHQtc3ltYm9sICJIUyBzeW1ib2wiKQogICgiSCIgIGhpZ2hsaWdodC1z eW1ib2wtcmVtb3ZlLWFsbCAiSFMgcmVtb3ZlIikKICAoImYiICBoZWxtLWZseXNwZWxsLWNvcnJl Y3QgImhlbG0tZmx5c3BlbGwiKQogICgiaSIgIGlzcGVsbCAiaXNwZWxsIikKICAoImoiICBoaWdo bGlnaHQtc3ltYm9sLW5leHQgIDpjb2xvciByZWQgICJIUyBOZXh0IikKICAoImsiICBoaWdobGln aHQtc3ltYm9sLXByZXYgIDpjb2xvciByZWQgICJIUyBQcmV2IikKICAoIm0iICBmbHlzcGVsbC1j aGVjay1uZXh0LWhpZ2hsaWdodGVkLXdvcmQgImNoZWNrIG5leHQgZXJyb3IiKQogICgibiIgIGZs eXNwZWxsLWdvdG8tbmV4dC1lcnJvciAiY2hlY2sgbmV4dCBlcnJvciIgKQogICgicCIgIGZvcndh cmQtd2hpdGVzcGFjZSAibmV4dCB3aGl0ZXNwYWNlIiAgKQogICgiciIgIGh5ZHJhLXJlY3Rhbmds ZS9ib2R5ICJyZWN0YW5nbGUgbWVudSAocGFydCBvZiBoeWRyYSkiKQogICgidCIgIHovYWN0aXZh dGUtd29yZC1jb2x1bW4tcmVnaW9uICJtYXJrIGN1cnJlbnQgY2hhciIgKQogICgidSIgIGltZW51 ICJpbWVudSIpCiAgKCJ2IiAgei9oZWxtLWluc2VydC1vcmctZW50aXR5ICJpbnNlcnQgVW5pY29k ZSIpCiAgKCJ3IiAgaXNwZWxsLXdvcmQgImlzcGVlbCB3b3JkIiApCiAgKCJ4IiAgeGFoLWN5Y2xl LWh5cGhlbi11bmRlcnNjb3JlLXNwYWNlICJjeWNsZS11bmRlcnNjb3JlIiApCiAgKCJ5IiAgbmls ICkKICAoInEiICBuaWwgKQoKICApKQojK0VORF9TUkMKCioqKiBjb2RlIGJsb2NrcyAoZjQpCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZGIyZmRmMWUtMjI5Ni00NmU3LTljODUtYzI3 NmJjZDFiNWY1CiAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25l CiAgIChnbG9iYWwtc2V0LWtleQogICAgKGtiZCAiPGY0PiIpCiAgICAoZGVmaHlkcmEgaHlkcmEt b3JnLWJsb2NrcyAoOmNvbG9yIGJsdWUgOmhpbnQgbmlsIDpjb2x1bW5zIDQpCiJ0byB3cmFwIGJ5 IHN5bWJvbCBtYXJrIHJlZ2lvbiBhbmQgdGhlbiBpc3N1ZSBzeW1ib2wsIGxpa2U6IOOAkCrjgJEi CiAgICAoIjxmND4iIHovb3JnLWNibG9jay1pd3JhcC1lbWFjcy1saXNwICJXUkFQLUVsaXNwIiAp CiAgICAoIjxmMz4iIHovb3JnLWNibG9jay1pd3JhcC1zaCAgIkJhc2giICkKICAgICgiYyIgIHov b3JnLWNibG9jay1wYXN0ZS1jb25mICAiaW5zZXJ0IGNvbmYgYmxvY2siICkKICAgICgiZCIgIHov b3JnLWluc2VydC1kcmF3ZXIgICJpbnNlcnQgZHJhd2VyIiApCiAgICAoImUiIHovb3JnLWNibG9j ay1ub3dyYXAtZXhhbXBsZSAiaW5zZXJ0IEV4YW1wbGUgYmxvY2siICkKICAgICgiciIgei9vcmct Y2Jsb2NrLWl3cmFwLWVtYWNzLVIgIldSQVAtUiIgKQogICAgKCJyIiB6L29yZy1jYmxvY2stcGFz dGUtUi1mdWxsICJXUkFQLVIiICkKICAgICgiYSIgei9vcmctY2Jsb2NrLWl3cmFwLUFTSyAgIkFz ayIgKQogICAgKCJsIiB6L29yZy1jYmxvY2staXdyYXAtQVNLLUxJTkUgIkFzayBsaW5lIiApCiAg ICAoIm0iIHovb3JnLWNibG9jay1pd3JhcC1tZW51ICJBc2sgbGluZSIgKQogICAgKCJwbCIgei9v cmctY2Jsb2NrLXBhc3RlLWxpc3AgInBhc3RlIGxpc3AiICkKICAgICgicGIiIHovb3JnLWNibG9j ay1wYXN0ZS1zaCAicGFzdGUgYmFzaCIgKQogICAgKCJwciIgei9vcmctY2Jsb2NrLXBhc3RlLVIg InBhc3RlIFIiICkKICAgICgicHMiIHovb3JnLWNibG9jay1wYXN0ZS1TQVMgICJwYXN0ZSBTQVMi ICkKICAgICgicGUiIHovb3JnLWNibG9jay1wYXN0ZS1leGFtcGxlICAicGFzdGUgRXhhbXBsZSIg KQogICAgKCJwdCIgei9vcmctY2Jsb2NrLXBhc3RlLXRhbmdsZS1iYXNlICJwYXN0ZSB0YW5nbGUi ICkKICAgICgicHEiIHovb3JnLWNibG9jay1wYXN0ZS1RVU9URSAicGFzdGUgUVVPVEUiICkKICAg ICgicyIgb3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAic3BsaXQgYmxvY2siICkKICAgICgieCIg ei9yZXBsYWNlLUVYQU1QTEUtMi1SICJyIiApCiAgICAoIngiIHovcmVwbGFjZS1FWEFNUExFLTIt UiAiIiApCiAgICAoInEiIG5pbCAiY2FuY2VsIikpKQoKICMrRU5EX1NSQwogICAKKioqIGVtYWls IGh5ZHJhcyAoRjUpCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgM2ZiOGEwNDktNGUy ZS00YjdhLWEyY2YtZjA2NzZlMzExNzVkCiAgICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihnbG9iYWwtc2V0LWtleQogICAoa2JkICI8ZjU+IikKKGRlZmh5ZHJh IGh5ZHJhLW11NGUgKDpjb2xvciBibHVlICA6Y29sdW1ucyAyIDpoaW50cyBuaWwpCiAgIgrjgJBN LUVudGVy44CRIG9wZW4gbGluayDjgJBS44CRIFJlcGx5IHRvIHNlbmRlciAK44CQK+OAkWZsYWcg KHN0YXIpCiIKOyAgKCI8ZjU+IiAgICAgei9nbnVzLXRvZ2dsZSAgICAgICAgICAgICJ0b2dnbGUg Z251cyAiKQo7KCI8ZjU+IiAgICAgbXU0ZSAgICAgICAgICAgICJtdTRlIGluYm94IikKKCI8ZjU+ IiAgICAgei9tdTRlLWluYm94ICAgICAgICAgICAgIm11NGUgaW5ib3giKQogICgiNyIgICAgIHov bXU0ZS1mbGFnZ2VkICAgICAgICAgICAgIm11NGUgZmxhZ2dlZCIpCiAgKCI1IiAgICAgei9oZWxt LW11LWZsYWdnZWQgICAgICAgICAgICAibXU0ZSBmbGFnZ2VkIChoZWxtKSIpCjs7ICAoIjxmNT4i ICAgICBtdTRlICAgICAgICAgICAgInN0YXJ0IG11NGUiKQogICgiPGY2PiIgICAgIGhlbG0tbXUg ICAgICAgICAgICAiaGVsbSBtdTRlIikKICAoIjxmND4iICAgIGhlbG0tbXUtY29udGFjdHMgICAg ICAgICAgICAiaGVsbS1tdS1jb250YWN0cyIpCiAgKCJsIiAgICBlbGZlZWQgICAgICAgICAgICAi ZWxmZWVkIikKICAoImV6IiB6L29yZy1lbWFpbC1oZWFkaW5nLW1lICJlbWFpbCBteXNsZWYgdGhl IHRyZWUiKQogICgiZXgiIHovb3JnLWVtYWlsLWhlYWRpbmcgImVtYWlsIG90aGVyIHRoZSB0cmVl IikKICAoImQiICAgIChleGVjdXRlLWtiZC1tYWNybyAoc3ltYm9sLWZ1bmN0aW9uICd6L2RlbF9l eGVfbXU0ZSkpICAgICAgICAgICAgImRlbGV0ZSIpCiAgKCJmIiAgICAoZXhlY3V0ZS1rYmQtbWFj cm8gKHN5bWJvbC1mdW5jdGlvbiAnbXU0ZS1mbGFnLWV4ZSkpICAgICAgICAgImZsYWciKQogICgi RiIgICAgKGV4ZWN1dGUta2JkLW1hY3JvIChzeW1ib2wtZnVuY3Rpb24gJ211NGUtdW5mbGFnLWV4 ZSkpICAgICAgICAgICJ1bmZsYWciKQogICgibyIgICAgIG11NGUtaGVhZGVycy1jaGFuZ2Utc29y dGluZyAgICAgICAgICAgICJzb3J0IikKICAgICgicSIgICAgIG5pbCAgICAgICAgICAgICAgICAg ICAgICAgICAgImNhbmNlbCIgKQopKQojK0VORF9TUkMKCmxpbmstaGludC1vcGVuLWxpbmstYXQt cG9pbnQgLSBPcGVuIHRoZSBsaW5rIGF0IHBvaW50LgpsaW5rLWhpbnQtY29weS1saW5rLWF0LXBv aW50IC0gQ29weSBsaW5rIGF0IHBvaW50IHRvIGtpbGwgcmluZyAoYW5kIG9wdGlvbmFsbHkgdG8g dGhlIGNsaXBib2FyZC9wcmltYXJ5KS4KbGluay1oaW50LW9wZW4tbGluayAtIFVzZSBhdnkgdG8g c2VsZWN0IGFuZCBvcGVuIGEgc2luZ2xlIHZpc2libGUgbGluay4gSWYgb25seSBvbmUgbGluayBp cyBjdXJyZW50bHkgdmlzaWJsZSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IG9wZW5lZCB3aXRo b3V0IHRoZSBuZWVkIGZvciBzZWxlY3Rpb24uCmxpbmstaGludC1vcGVuLW11bHRpcGxlLWxpbmtz IC0gVXNlIGF2eSB0byBzZWxlY3QgbXVsdGlwbGUgdmlzaWJsZSBsaW5rcyBhbmQgb3BlbiB0aGVt IGFzIHNvb24gYXMgYSBrZXkgdGhhdCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgbGluayAoYSBr ZXkgbm90IGluIHRoZSBhdnkgb3ZlcmxheSkgaXMgcHJlc3NlZCAobGlrZSBwZW50YWRhY3R5bOKA mXMgZzspLgpsaW5rLWhpbnQtb3Blbi1hbGwtbGlua3MgLSBPcGVucyBhbGwgbGlua3MgdmlzaWJs ZSBpbiB0aGUgYnVmZmVyLgpsaW5rLWhpbnQtY29weS1saW5rIC0gVXNlIGF2eSB0byBzZWxlY3Qg YW5kIGNvcHkgYSBzaW5nbGUgdmlzaWJsZSBsaW5rIHRvIHRoZSBraWxsIHJpbmcuIHNlbGVjdC1l bmFibGUtY2xpcGJvYXJkIGFuZCBzZWxlY3QtZW5hYmxlLWNsaXBib2FyZCBjYW4gZWFjaCBiZSBz ZXQgdG8gYSBub24tbmlsIHZhbHVlIHRvIGFsc28gdXNlIHRoZSBjbGlwYm9hcmQgYW5kL29yIHBy aW1hcnkuCgoKCgoqKiogbGF0ZXgvYmliIChGNikKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICBhMGVmMTM1NC0zYzgzLTQzZWMtYTVkZi1hMjJmOTFkODQ5ZjkKICAgIDpFTkQ6CgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKCihnbG9iYWwtc2V0LWtleQogICAoa2Jk ICI8ZjY+IikKKGRlZmh5ZHJhIGh5ZHJhLWJpYiAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29s dW1ucyA0KQoKIgrjgJBDLWMgQy1z44CRIHNlYXJjaCBieSBrZXkgaW4gYmliIGJ1ZmZlciAKIgoo IjxmNj4iIGhlbG0tYmlidGV4ICJoZWxtLWJpYnRleCIpCgooIjx1cD4iIG9yZy1yZWYtYmlidGV4 LXByZXZpb3VzLWVudHJ5ICJwcmV2IHJlZiIgOmNvbG9yIHJlZCApCigiPGRvd24+IiBvcmctcmVm LWJpYnRleC1uZXh0LWVudHJ5ICJuZXh0IHJlZiIgOmNvbG9yIHJlZCkKCigiMiIgei9kaXJlZC1z aGVsbC1jYjJiaWIgImxhdW5jaCBjYjJiaWIiICkKKCJhIiBvcmctcmVmLWJpYnRleC1oeWRyYS9i b2R5ICJiaWJ0ZXggbWVudSIgKQooImIiIChmaW5kLWZpbGUgIi9ob21lL3plbHRhay9vcmcvZmls ZXMvVW5pL3BhcGVycy94LnBhcGVycy5iaWIiKSAiaXplbHRhay1iaXRleCBmaWxlIiAgIDpmYWNl ICdoeWRyYS1mYWNlLXB1cnBsZSApCigiYyIgIG9yZy1yZWYtY2xlYW4tYmlidGV4LWVudHJ5ICJj bGVhbiBiaWIiICA6ZmFjZSAnaHlkcmEtZmFjZS1yZWQgKQooImQiICBkb2ktdXRpbHMtYWRkLWJp YnRleC1lbnRyeS1mcm9tLWRvaSAiYWRkIGJ5IGRvaSIgIDpmYWNlICdoeWRyYS1mYWNlLWJyb3du KQooIkQiICBkb2ktdXRpbHMtYWRkLWVudHJ5LWZyb20tY3Jvc3NyZWYtcXVlcnkgImFkZCBieSBk b2kgYnkgc2VhcmNoaW5nIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtYnJvd24pCigiZSIgIGViaWIgKQoo ImYiICBuaWwgKQooImciICBnc2Nob2xhci1iaWJ0ZXggImdzY2hvbGFyLXNlYXJjaCIgKQooImgi ICBuaWwgKQooImkiICBuaWwgKQooImoiICBuaWwgKQooImsiICBoZWxtLWJpYnRleC1pemVsdGFr LXB1YmxpY2F0aW9ucyAiemVsdGFrIHBhcGVycyIgIDpmYWNlICdoeWRyYS1mYWNlLWdyZWVuICkK KCJLIiAgaGVsbS1iaWJ0ZXgtaXplbHRhay1wdWJsaWNhdGlvbnMtYWxsICJ6ZWx0YWsgQUxMIiAg OmZhY2UgJ2h5ZHJhLWZhY2UtZ3JlZW4gKQooImwiICBuaWwgKQooIm0iIChmaW5kLWZpbGUgIi9o b21lL3plbHRhay9vcmcvZmlsZXMvVW5pL3BhcGVycy9wYXBlci5tZXRhLm9yZyIpICJpemVsdGFr LW1ldGEgZmlsZSIgIDpmYWNlICdoeWRyYS1mYWNlLXB1cnBsZSApCigibiIgIG9yZy1iaWJ0ZXgt Y3JlYXRlICJuZXcgYmliIGVudHJ5IikKKCJvIiAgb3JnLXJlZiAiY2hlY2sgY3VycmVudCBwYXBl ciIgKQooInAiICBoZWxtLWJpYnRleC1pemVsdGFrLXByZXAgInplbHRhayBwcmVwIiAgOmZhY2Ug J2h5ZHJhLWZhY2UtZ3JlZW4gKQooInIiICBoZWxtLXJlc3VtZSAiaGVsbSByZXN1bWUiKQooInMi ICBiaWJ0ZXgtc29ydC1idWZmZXIgInNvcnQgYnVmZmVyIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVk KQooInQiICBoZWxtLWJpYnRleC1wYXBlcnMtcnRvZG8gICJ0b3JlYWQgcGFwZXJzIiAgOmZhY2Ug J2h5ZHJhLWZhY2UtZ3JlZW4gKQooInUiICBvcmctcmVmLWJpYnRleC1maWxlL2JvZHkgInZhbGlk YXRpb24gbWVudSIgKQooInYiICBiaWJ0ZXgtdmFsaWRhdGUgInZhbGlkdGFlIiAgOmZhY2UgJ2h5 ZHJhLWZhY2UtcmVkICkKKCJWIiAgYmlidGV4LXZhbGlkYXRlLWdsb2JhbGx5ICJ2YWxpZGF0ZS1j aGVjayBmb3IgZHVwcyIgIDpmYWNlICdoeWRyYS1mYWNlLXJlZCkKKCJ3IiAgYWRkIG9yZy1yZWYt aXZ5LXNldC1rZXl3b3JkcyAiYWRkIGtleXdvcmRzIiApCigiVyIgIGhlbG0tdGFnLWJpYnRleC1l bnRyeSAiYWRkIGtleXdvcmRzIHZpYSBoZWxtIiApCigieCIgIGNyb3NzcmVmLWFkZC1iaWJ0ZXgt ZW50cnkgInNlYXJjaCBjcm9zc3JlZiIgKQooInkiICBvcmctYmlidGV4LXlhbmsgInlhbmsgYmli dGV4IikKKCJ6IiAgbmlsICkKKCJxIiAgbmlsICkKCikpCgoKIytFTkRfU1JDCgoqKiogTi9BIChG NykKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4ZDRkNzVjNC1iN2QyLTRjZmQtODUw OS1jNDVlYjZjZjhiNWUKICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKKGdsb2JhbC1zZXQta2V5CiAgIChrYmQgIjxmNz4iKQooZGVmaHlkcmEgaHlkcmEtZjcg KDpjb2xvciBibHVlICA6Y29sdW1ucyAyIDpoaW50cyBuaWwpCiAgIgoiCiAgKCI8Zjc+IiAgICAg Y29tcGFueS1jb21wbGV0ZSAgICAgICAgICAgICJjb21wbGV0ZSIpCiAgKCI8ZjY+IiAgICAgY29t cGFueS1kYWJicmV2ICAgICAgICAgICAgImRhYmJyZXYgY29tcCIpCiAgKCJ5IiAgIGNvbXBhbnkt eWFzbmlwcGV0ICAieWFzbmlwcGV0IGNvbXAiKQogICgibSIgICBjb21wYW55LW1hbnVhbC1iZWdp biAgIm1hbnVhbCBjb21wIikKICAoImMiICAgY29tcGFueS1jb21wbGV0ZS1jb21tb24gICJjb21t b20gY29tcCIpCiAgKCJuIiAgIGNvbXBhbnktc2VsZWN0LW5leHQgICJuZXh0IGNvbXAiKQogICAg KCJxIiAgICAgbmlsICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuY2VsIiApCikpCiMrRU5E X1NSQwoKCgoqKiogYm9va21hcmsgaHlkcmEgKEY4KQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIDkwYzQ4MmQzLWQ4OWQtNDYwNC04MmFhLTQ0NzZhYTZiZjkwNAogICAgOkVORDoKCiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZ2xvYmFsLXNldC1rZXkKICAgKGti ZCAiPGY4PiIpCihkZWZoeWRyYSAgaHlkcmEtb3BlbiAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6 Y29sdW1ucyA0KQoiCuOAkEMtYyBo44CRaGVsbS1wcmVmaXgg44CQKuOAkXRvIHNlbGVjdCBtb2Rl IOOAkEDjgJF0byBzZWxlY3QgcmVnZXgg44CQLOOAkXRvIHNlbGVjdCBtdWx0aXBsZSAobW9kZXMs cmVnZXgpIOOAkCHjgJFleGNsdWRlIArjgJBDLXrjgJFwZXJzaXN0YW50IHNlbGVjdCDjgJBDLWzj gJF1cCBkaXIg44CQQy1y44CRYmFjayBkaXIgCuOAkH4v44CRYWRkIHRvIGdvIGJhY2sgdG8gaG9t ZSDjgJAuL+OAkSBkZWZhdWx0LWRpcmVjdG9yeSAg44CQQy1jIGjjgJFoaXN0b3J5IChDLXUgYmVm b3JlIHRvIGF1dG8gZ28gdG8gaGlzdG9yeSkK44CQQy1z44CRZ3JlcCBIZWxtICDjgJBDLXXjgJFy ZWN1cnNpdmVseSBncmVwIEhlbG0g44CQQy1jIGggYuOAkSBoZWxtIHJlcwrjgJBDLWYvYuOAkSBo ZWxtIGZyd2QvYmFjayAxIGNoYXIKIgooIjxmOD4iIGhlbG0tYm9va21hcmtzICJCS01LJ3MiKQoo IjxmNz4iIGhlbG0tbWluaSAiaGVsbS1taW5pIikKKCI8Zjk+IiBwcm9qZWN0aWxlLWZpbmQtZmls ZSAgInByb2plY3RpbGUgZmYiKQooIjciIG9yZy1pc3dpdGNoYiAib3JnIGJ1ZmZlcnMiKQooImEi IG5pbCApCigiYiIgIGJta3AtYm9va21hcmstc2V0LWNvbmZpcm0tb3ZlcndyaXRlICJhZGQgQktN SyIgKQooIkIiICBibWtwLW1ha2UtZnVuY3Rpb24tYm9va21hcmsgImFkZCBmdW5jdGlvbiBCS01L IiApCigiYyIgIGhlbG0tY2hyb21lLWJvb2ttYXJrcyAiQ2hvcm1lIEJLTUsiKQooImQiICB6L2hl bG0tYnVmZmVycy1kaXJlZCAiZGlyZWQgYnVmZmVycyIgKQooImUiICBuaWwgKQooImYiICBibWtw LWJtZW51LWZpbHRlci10YWdzLWluY3JlbWVudGFsbHkgIkJLTUsgbWVudSBmaWx0ZXIiKQooImci ICBuaWwgKQooImgiICBuaWwgKQooImkiICBoZWxtLXByb2plY3RpbGUgIkhlbG0gUHJvamVjdGls ZSIpCigiaiIgIGhlbG0tcHJvamVjdGlsZS1zd2l0Y2gtdG8tYnVmZmVyICJIZWxtIHByb2plY3Rp bGUgc3dpdGNoIiApCigiayIgIG5pbCApCigibCIgIG5pbCApCigibSIgIGJvb2ttYXJrLWJtZW51 LWxpc3QgIkJLTUsgbWVudSIpCigibiIgIG5pbCApCigibyIgIHovaGVsbS1idWZmZXJzLW9yZyAi b3JnIGJ1ZmZlcnMiKQooInAiICBwcm9qZWN0aWxlLWZpbmQtZmlsZSAicHJvamVjdGlsZSBmaW5k IGZpbGUiKQooInIiICBoZWxtLXJlY2VudGYgIkhlbG0gUmVjZW50cyIgKQooInMiICBib29rbWFy ay1zYXZlICJCS01LIFNhdmUiICkKKCJ0IiAgei9sYXVuY2gtLWFuc2ktdGVybSAiYW5zaS10ZXJt IiApCigidSIgIG5pbCApCigidiIgIG5pbCkKKCJ3IiAgbmlsICkKKCJ4IiAgbmlsICkKKCJ5IiAg bmlsICkKKCJ6IiAgbmlsICkKKCJxIiAgbmlsICkKCikpCgojK0VORF9TUkMKCioqKiBvcmcgCiAg ICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMzJhZGY4N2MtN2M0ZS00NDA4LTkxYjUtM2E2 NzEwZjQwOTM5CiAgICA6RU5EOgoqKioqIG9yZyBtYWluIChGOSkKICAgICA6UFJPUEVSVElFUzoK ICAgICA6SUQ6ICAgICAgIDE4Nzk5ZmQ2LTI3YTUtNDEzMC1hYWQ3LTIwYzA3ZGFmNTEzMwogICAg IDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGdsb2JhbC1zZXQt a2V5CiAgIChrYmQgIjxmOT4iKQooZGVmaHlkcmEgaHlkcmEtb3JnICg6Y29sb3IgYmx1ZSA6aGlu dCBuaWwgOmNvbHVtbnMgNCkKCiJPUkcgZWRpdGluZwrjgJBDLWMgLeOAkSBjb252ZXJ0IHRvIGRh c2hlZCBsaW5lcyAg44CQQy1NLWwgIG9yZyB0YWJsZSBtZW51CuOAkEMtdSBDLXUgQy1jIGPjgJEg Z28gdG8gd2hlcmUgY2FwdHVyZSB3YXMgZmlsbGVkCiIKCigiPGY5PiIgd29yZi1nb3RvICJ3b3Jm IG9yZyBoZWFkZXJzIikKKCI8ZjEwIHc+IiBoZWxtLW9yZy1oZWFkbGluZXMgImhlbG0gb3JnIGhl YWRlcnMiKQooIjxmMTA+IHYiIG9yZy12ZWxvY2l0eS1yZWFkICAib3JnIHZhbG9jaXR5IikKKCI8 Zjg+IiB6L29yZy1pbnNlcnQtaGVhZGluZy1saW5rICJsaW5rL3JlZmlsZSIpCigiUkVUIiAgb3Jn LWluc2VydC10b2RvLWhlYWRpbmcgIm9yZyB0b2RvIGhlYWRlci8vY2hlY2sgbGlzdCIpCigiPGYx MD4gUkVUIiAgb3JnLWluc2VydC1zdWJoZWFkaW5nICJvcmcgc3ViIGhlYWRlciIpCigiPGYxMD4g dCIgIG9yZy1pbnNlcnQtdG9kby1zdWJoZWFkaW5nICJvcmcgc3ViIGhlYWRlciIpCigiLiIgIG9y Zy1kby1kZW1vdGUgIjwiIDpjb2xvciByZWQpCigiLCIgIG9yZy1kby1wcm9tb3RlICI+IiA6Y29s b3IgcmVkKQooIjwiICBvcmctcHJvbW90ZS1zdWJ0cmVlICJUPCIgOmNvbG9yIHJlZCkKKCI+IiAg b3JnLWRlbW90ZS1zdWJ0cmVlICJUPiIgOmNvbG9yIHJlZCkKCigiYSIgIG9yZy1zb3J0ICJzb3J0 IikKKCJiIiAgd29yZi1tb2RlICJ3b3JmIiAgKQooImMiICBvcmctY29sdW1ucyAiQ29sdW1ucyIg KQooIkMiICBvcmctY29sdW1ucy1xdWl0ICJxdWl0IENvbHVtbnMiICkKKCJkIiAgb3JnLWRvd25s b2FkLXNjcmVlbnNob3QgInNjcmVlbnNob3QiKQooIkQiICBvcmctZG93bmxvYWQtZGVsZXRlICJk ZWwgc2NyZWVuc2hvdCIpCigiZWUiICBvcmctZXhwb3J0LWRpc3BhdGNoICJleHBvcnQiKQooImVw IiBvcmctbGF0ZXgtZXhwb3J0LXRvLXBkZiAiZXhwb3J0IGxhdGV4IikKKCJlciIgei9vcmctZXhw b3J0LXJldmVsLWJyb3dzZSAiZXhwb3J0IHJldmVhbCBicm93c2UiKQooImV0IiB6L29yZy1leHBv cnQtcmV2ZWwtc3VidHJlZSAiZXhwb3J0IHJldmVhbCBzdWJ0cmVlIikKKCJleCIgb3JnLXBhbmRv Yy1leHBvcnQtdG8tZG9jeCAgIm94LXBhbmRvYyAyIGRvY3giKQooImVSIiBvcmctcGFuZG9jLWV4 cG9ydC10by1ydGYgICJveC1wYW5kb2MgMiBydGYiKQooImV5IiB6L29yZy1leHBvcnQtcmV2ZWwt aHRtbCAgImV4cG9ydCByZXZlYWwgaHRtbCAiKQooImYiICBoeWRyYS1vcmctZm9vZC9ib2R5ICJm b29kIG1lbnUiICA6ZmFjZSAnaHlkcmEtZmFjZS1vcmFuZ2UgKQooImciICBvcmctc2V0LXRhZ3Mg InRhZ3MgZGlhbG9nIikKKCJoIiAgb3JnLXNlYXJjaC12aWV3ICJvcmcgc2VhcmNoIikKKCJpIiAg b3JnLWRpc3BsYXktaW5saW5lLWltYWdlcyAiZGlzcGxheSBpbWFnZXMiKQooIkkiICBvcmctdG9n Z2xlLWlubGluZS1pbWFnZXMgInRvZ2dsZSBpbWFnZXMiKQooImoiICBuaWwgKQooImsiICBuaWwg KQooImwiICBoeWRyYS1vcmctbGlua3MvYm9keSAibGluayBtZW51IiA6ZmFjZSAnaHlkcmEtZmFj ZS1ncmVlbikKKCJtIiAgb3JnLW1hcmstc3VidHJlZSAibWFyayBzdWJ0cmVlIiApCigicCIgIG9y Zy1pbnNlcnQtZHJhd2VyICJpbnNlcnQgZHJhd2VyIiApCigicnIiICBvcmctcmVmaWxlICJyZWZp bGUiKQooInJ0IiAgaHlkcmEtb3JnLXJlZmlsZS9ib2R5ICJyZWZpbGUgbWVudSIpCigiUiIgIHov cHJlZml4LW9yZy1yZWZpbGUgImp1bXAgdG8gaGVhZGVyIHVzaW5nIHJlZmlsZSIpCigicyIgIGh5 ZHJhLW9yZy10aW1lL2JvZHkgInRpbWUgbWVudSIgOmZhY2UgJ2h5ZHJhLWZhY2Utb3JhbmdlICkK KCJ0IiAgb3JnLXRvZG8gInRvZG8gZGlhbG9nIikKKCJ1IiAgbmlsICkKKCJ2diIgIG9yZy1iYWJl bC1leGVjdXRlLXN1YnRyZWUgImV4ZSBibG9jayIpCigidmIiICBvcmctYmFiZWwtdGFuZ2xlICJ0 YW5nbGUiKQooInciICB6L25hcnJvdy1vci13aWRlbi1kd2ltICJUb2dnbGUgbmFycm93Ly93aWRl biIgKQooIngiICBvcmctYXJjaGl2ZS1zdWJ0cmVlICJBcmNoaXZlIiApCigiLSIgIG9yZy10b2dn bGUtaGVhZGluZyAiSGVhZGVyIGxvd2VyIiApCigiPSIgIHovb3JnLWNvbnZlcnQtaGVhZGVyLXNh bWVsZXZlbCAiSGVhZGVyIHNhbWUiKQooIjAiICBvcmctY3RybC1jLXN0YXIgImNvbnZlcnQgbGlu ZXMgdG8gaGVhZGVycyIpCigiXFwiICBoeWRyYS1vcmctdGFibGUvYm9keSAidGFibGUgbWVudSIg IDpmYWNlICdoeWRyYS1mYWNlLW9yYW5nZSApCigiOyIgIHovY29tbWVudC1vcmctaW4tc3JjLWJs b2NrICJjb21tZW50IGJsb2NrIiApCigieSIgIG5pbCApCigieiIgIG5pbCApCigiPGhvbWU+IiBv dXRsaW5lLXVwLWhlYWRpbmcgICJ1cCBtYWluIGhlYWRlciIgOmNvbG9yIHJlZCkKKCI8ZG93bj4i IG9yZy1mb3J3YXJkLWhlYWRpbmctc2FtZS1sZXZlbCAgInVwIGhlYWRlciIgOmNvbG9yIHJlZCkK KCI8dXA+IiBvcmctYmFja3dhcmQtaGVhZGluZy1zYW1lLWxldmVsICAiZG93biBoZWFkZXIiIDpj b2xvciByZWQpCigicSIgIG5pbCApCgopKQojK0VORF9TUkMKICAgCioqKiogYWdlbmRhIChGMTAp CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA2ODk5YzliZC0xYzQxLTQxNjYtYjMz Mi1jNDgwZWQxNjg5NjAKICAgICA6RU5EOgoqKioqKiBvcmcgYWdlbmRhIG1haW4KICAgICAgOlBS T1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgNWQ1NTY3ZjgtOWYxNi00Yjc2LWFkYjYtODYwMGNl MTZlMmVjCiAgICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK ICAgICAoZ2xvYmFsLXNldC1rZXkKCShrYmQgIjxmMTA+IikKICAgICAoZGVmaHlkcmEgaHlkcmEt b3JnLWFnZW5kYSAoOmNvbG9yIGJsdWUgOmhpbnQgbmlsIDpjb2x1bW5zIDQpCiAgICJBR0VOREE6 CiAgIOOAkGfjgJEtIFJlZnJlc2ggYWdlbmRhIAogICDjgJBTUEFDRS8vVEFC44CRb3Blbi8vb3Bl bi1nbyBpdGVtIGluIHNpZGUgdmlldyDjgJBG44CRd2lsbCB0b2dnbGUgZm9sbG93IG1vZGUgZm9y IHNwYWNlL3RhYiB2aWV3CiAgIOOAkEHjgJFBcHBlbmQgYW5vdGhlciB2aWV3IOOAkC/jgJEgZmls dGVyIHRhZyDjgJA944CRIGZpbHRlciByZWdleCDjgJB844CRIGNsZWFuIGFsbCBmaWx0ZXJzCiAg IOOAkHbjgJFDaG9vc2UgdmlldyDjgJBm44CRZm9yd2FyZCBpbiB0aW1lIOOAkGLjgJFiYWNrIGlu IHRpbWUg44CQLuOAkWdvdG8gdG9kYXkg44CQauOAkSBqdW1wIHRvIGRhdGUKICAg44CQUy1sZWZ0 Ly9yaWdodOOAkSBjaGFuZ2UgZGVhZGxpbmUg44CQa+OAkSBsYXVuY2ggY2FwdHVyZSB3aXRoIGRh dGUvdGFzawogICDjgJA644CRIHNldCB0YWdzIOOAkCzjgJFzZXQgcHJpb3JpdHkgKHRoZW4gY2hv b3NlKSDjgJBTLVUvRC9ML1LjgJEgY2hhbmdlIHRvZG8vcHJpIAogICDjgJBtLHUsVS4uLuOAkSBk aXJlZCBtYXJraW5nIOOAkE0tbeOAkXRvZ2dsZSBtYXJraW5nIOOAkELjgJEgZXhlY3V0ZSBvbiBt YXJrcyB2aWEgZGlzcGF0Y2hlciDjgJB244CRIHZpZXcgbW9kZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgIG1hcmsgaXRlbXMgK+OAkEIgc+OAkS1SZXNjaGVkdWxlIG11bHRpcGxlIGl0 ZW1zCgogICAiCiAgICAgICAgICgiPGYxMD4iIHovb3JnLWFnZW5kYS1jYWxlbmRhciAgIm9yZyBh Z2VuZGEiICApCiAgICAgICAgICgiPGY5PiIgY2Z3Om9wZW4tb3JnLWNhbGVuZGFyeiAgIm1vbnRo IGNhbGVuZGFyIiAgKQogICAgICAgICAoImMiICBvcmctYWdlbmRhLWNvbHVtbnMgICJhZ2VuZGEg Y29sdW1ucyIgKQogICAgICAgICAoInQiICAgIG9yZy1hZ2VuZGEtdG9kbyAgICAgICJjaGFuZ2Ug dG9kbyIpCiAgICAgICAgICgiayIgICAgb3JnLWFnZW5kYS1raWxsICAgICAgImRlbGV0ZSBDLWsi KQogICAgICAgICAoIm0iICAgIG9yZy1hZ2VuZGEtYnVsay10b2dnbGUgICJidWxrIG1hcmsiICA6 Y29sb3IgcmVkICkgCiAgICAgICAgICgieCIgICAgb3JnLWFnZW5kYS1idWxrLWFjdGlvbiAgImJ1 bGsgZXhlIikKICAgICAgICAgKCJ4IiAgIG9yZy1hZ2VuZGEtYXJjaGl2ZSAgICAgICJhcmNoaXZl ICIpCiAgICAgICAgICgidyIgICBvcmctYWdlbmRhLXJlZmlsZSAgICAgICJyZWZpbGUgIikKICAg ICAgICAgKCI6IiAgIG9yZy1hZ2VuZGEtc2V0LXRhZ3MgICAgICAic2V0IHRhZ3MgIikKICAgICAg ICAgKCIsIiAgIG9yZy1hZ2VuZGEtcHJpb3JpdHkgICAgICAicHJpb3JpdHkgKFMtVVAvUy1EbiB0 byBjaGFuZ2UgYXMgd2VsbCAiKQogICAgICAgICAoInMiICAgb3JnLWFnZW5kYS1zY2hlZHVsZSAg ICAgICJzY2hlZHVsZSB0YXNrICIpCiAgICAgICAgICgidCIgICBvcmctYWdlbmRhLXJlZmlsZSAg ICAgICJzY2hlZHVsZSB0YXNrICIpCiAgICAgICAgICgiZCIgICBvcmctYWdlbmRhLWRlYWRsaW5l ICAgICAgImRlYWRsaW5lIHRhc2sgIikKICAgICAgICAgKCJwIiAgIG9yZy1hZ2VuZGEtZGF0ZS1w cm9tcHQgICAgICAicHJvbXB0IGRhdGUgIikKICAgICAgICAgKCJNIiAgIGNmdzpvcmctb3Blbi1h Z2VuZGEtZGF5ICAgICAgIm1vbnRoIHZpZXcgIikKICAgICAgICAgKCJ6IiAgY2Z3Om9wZW4tb3Jn LWNhbGVuZGFyICJtb250aCBjYWxhbmRlciIgKQogICAgICAgICAgKCJxIiAgICAgbmlsICAgICAg ICAgICAgICAgICAgICAgICAgICAiY2FuY2VsIiApCiAgICAgKSkKICMrRU5EX1NSQwoKCioqKiog YWdlbmRhLXZpZXdzLXRvZG9zICAoRjExKQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgNGFkMTM5ZWQtNGZiNS00ZWI5LWI4ODMtMTNhZjA1ODNmOTUyCiAgICAgOkVORDoKICMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGdsb2JhbC1zZXQta2V5CiAgICAoa2Jk ICI8ZjExPiIpCiAgICAoZGVmaHlkcmEgaHlkcmEtYnVmZmVyICAoOmNvbG9yIGJsdWUgOmhpbnQg bmlsIDpjb2x1bW5zIDQpCiAgICAgICJUT0RPIGNvbW1hbmRzCiDjgJBDLWMgQy1k44CRIGltc2Vy dCBkZWFkbGluZSAKICIKICAgICAgKCI8ZjExPiIgb3JnLWFnZW5kYSAib3JnLWFnZW5kYSIgKQog ICAgICAoInMiICAgei9vcmctYWdlbmRhLXNlYXJjaCAgICAgInJlZ2V4IHNlYXJjaCIpCiAgICAg ICgidCIgICB6L29yZy1hZ2VuZGEtc2VhcmNoLXRvZG8gICAgICJyZWdleCBzZWFyY2ggVE9ETyIp CiAgICAgICgiZmEiIChvcmctdGFncy12aWV3IG5pbCAiQ3Vpc2luZT1cIkFtZXJpY2FuXCIiKSAi Zm9vZC1hbWVyaWNhbiIgKQogICAgICAoImgiIChvcmctYWdlbmRhIG5pbCAiMmgiKSAgImhvbWUi KQogICAgICAoImkiICIiICkKICAgICAgKCJjIiAiIiAgKQogICAgICAoImsiICAiIiApCiAgICAg ICgibiIgIiIgKQogICAgICAoInEiIG5pbCAiY2FuY2VsIikpKQoKICMrRU5EX1NSQwoKKioqKiBs aW5rcyBvcmcgY29tbWFuZHMKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDg2OTNi ZmQ5LWNmZTAtNGQ4MS1iYjZkLTI5MTIxMDY1NGFlYQogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBl bWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZmh5ZHJhIGh5ZHJhLW9yZy1saW5rcyAoOmNvbG9y IGJsdWUgIDpoaW50IG5pbCA6Y29sdW1ucyAzKQogICAgICAiCuOAkEMtYyBDLWwgaWQ6IFJFVOOA kSBjb21wbGV0ZSBhbGwgaGVhZGVycyBpbiBhZ2VuZGEgZmlsZXMgIAogICAgICAiCiAgICAgKCJh IiBvcmctbWFyay1yaW5nLWdvdG8gICJnbyBiYWNrIHRvIHByZXYgcG9zaXRpb24tcHJlIGxpbnFr IiA6ZmFjZSAnaHlkcmEtZmFjZS1ibHVlKSAKICAgICAoImMiIG9yZy1pZC1jb3B5ICAiY3JlYXRl IElEIiA6ZmFjZSAnaHlkcmEtZmFjZS1jeWFuKSAKICAgICAoImQiIG9yZy1pZC1jcmVhdGUgImp1 c3QgY3JlYXRlIElkIikKICAgICAoIkQiIHovb3JnLWFkZC1pZHMtdG8taGVhZGxpbmVzLWluLWZp bGUgICJhZGQgaWQncyB0byBhbGwgaGVhZGVycyIgKSAKICAgICAoImUiIGhlbG0tb3JnLWFnZW5k YS1maWxlcy1oZWFkaW5ncyAgImxpbmsvcmVmaWxlIHdpdGggaGVsbSIgOmZhY2UgJ2h5ZHJhLWZh Y2UtY3lhbiAgKSAKICAgICAoImYiIHovb3JnLWxpbmstZmlsZSAgImxpbmsgdG8gZmlsZSIgOmZh Y2UgJ2h5ZHJhLWZhY2UtY3lhbiAgKSAKICAgICAoImgiIHdvcmYtY29weS1oZWFkaW5nLWlkICAi d29yZiBjb3B5IGlkIG9mIGtpbGxyaW5nIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JleSApIAogICAg ICgibCIgb3JnLWluc2VydC1saW5rICAgImluc2VydC8vZWRpdCBsaW5rIiA6ZmFjZSAnaHlkcmEt ZmFjZS1ncmVlbiAgKSAKICAgICAoImsiIG9yZy1zdG9yZS1saW5rICAgInN0b3JlIChjb3B5KSBo ZWFkZXIgbGluayIgOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JlZW4gICkgCiAgICAgKCJKIiBvcmctbGlu ay1lZGl0LWZvcndhcmQtYmFyZiAgImZvcndhcmQgZWRpdCIgIDpmYWNlICdoeWRyYS1mYWNlLWdy ZXkpIAogICAgICgiSyIgb3JnLWxpbmstZWRpdC1iYWNrd2FyZC1iYXJmICAiYmFja3dhcmQgZWRp dCIgIDpmYWNlICdoeWRyYS1mYWNlLWdyZXkpCiAgICAgKCJvIiBsaW5rLWhpbnQtb3Blbi1saW5r ICJvcGVuIGxpbmsiICkKICAgICAoInAiIG9yZy1jbGlwbGluayAib3JnLWNsaXBsaW5rIikKICAg ICAoInMiIG9yZy1pZC1zdG9yZS1saW5rICAic3RvcmUgb3JnLWlkIiApIAogICAgICgidSIgb3Jn LWxpbmstZWRpdC1mb3J3YXJkLXNsdXJwICAiZm9yd2FyZCBzbHVycCIgIDpmYWNlICdoeWRyYS1m YWNlLWdyZXkpCiAgICAgKCJ5IiBvcmctbGluay1lZGl0LWJhY2t3YXJkLXNsdXJwICAiYmFjayAg c2x1cnAiICA6ZmFjZSAnaHlkcmEtZmFjZS1ncmV5KQogICAgICgidyIgei9vcmctbGluay1wYXN0 ZS1maWxlLXBhdGggInBhc3RlIGZpbGUgbGluayIpCiAgICAgKCJxIiBuaWwgImNhbmNlbCIgbmls KQopCiAjK0VORF9TUkMKKioqKiBvcmcgcmVmaWxlIGNvbW1hbmRzCiAgICAgOlBST1BFUlRJRVM6 CiAgICAgOklEOiAgICAgICBiMGU1ZmVkNy1iM2MyLTRjNDgtOTAyOS1iZTBhNTZiMDJiMGYKICAg ICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZoeWRyYSBo eWRyYS1vcmctcmVmaWxlICg6Y29sb3IgYmx1ZSAgOmhpbnQgbmlsIDpjb2x1bW5zIDMpCiAgICAg ICIKICAgICAgIgogICAgICgiYiIgei9vcmctcmVmaWxlLXRvLWJndSAgInJlZmlsZSBiZ3UiIDpm YWNlICdoeWRyYS1mYWNlLWN5YW4pIAogICAgICgiciIgei9vcmctcmVmaWxlLXRvLXJlc2VhcmNo ICAicmVmaWxlIHJlc2VhcmNoIiA6ZmFjZSAnaHlkcmEtZmFjZS1jeWFuKSAKICAgICAoInQiIHov b3JnLXJlZmlsZS10by10b2RvICAicmVmaWxlIHJlc2VhcmNoIikgCiAgICAgKCJrIiB6L29yZy1y ZWZpbGUtdG8tYm9va21hcmtzICAicmVmaWxlIGJvb2ttYXJrcyIpIAogICAgICgicSIgbmlsICJj YW5jZWwiIG5pbCkKKQogIytFTkRfU1JDCioqKiogb3JnIGNvb2tpbmcgCiAgICAgOlBST1BFUlRJ RVM6CiAgICAgOklEOiAgICAgICBmOWVlMDNlMC0zOTdhLTQzYjctYTZkZC0yZTA1MTRmYzc0OGIK ICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZoeWRy YSBoeWRyYS1vcmctZm9vZCAoKQogICAib3JnLWZvb2QgIgogICAoImIiIGNvb2tpbmctc3BhcnNl LXRyZWUtYnJlYWtmZWFzdCAiYnJlYWtmZWFzdF92aWV3IiA6Y29sb3IgYmx1ZSkKICAgKCJtIiBj b29raW5nLXNwYXJzZS10cmVlLW1haW4gIm1haW5fdmlldyIgOmNvbG9yIGJsdWUpCiAgICgiciIg cmVjaXBlLXRlbXBsYXRlICJyZWNpcGUtdGVtcGxhdGUiIDpjb2xvciBibHVlKQogICAoInQiIHRy YXZlbC10ZW1wbGF0ZSAgInRyYXZlbC10ZW1wbGF0ZSIgOmNvbG9yIGJsdWUpCiAgICgicSIgbmls ICJjYW5jZWwiKQopCiMrRU5EX1NSQwoKKioqKiBvcmdtb2RlIHRpbWUgZnVuY3Rpb25zIAogICAg IDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgN2IyZDExMDMtNWNlNy00MTY4LWE1MTAtMDUy MWQwMzFjZDE3CiAgICAgOkVORDoKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKICAgICAoZGVmaHlkcmEgaHlkcmEtb3JnLXRpbWUgICg6Y29sb3IgYmx1ZSA6aGludCBuaWwg OmNvbHVtbnMgNCkKICAgIgogICDimJorMXfimJsgaW1wbGllcyB0aGF0IHRoaXMgZXZlbnQgd2ls bCByZXBlYXQgZXZlcnkgd2VlayBhdCB0aGUgc2FtZSB0aW1lICYgZGF0ZSAg4piaLS3imJsgbXVs dGkgZGF5CiAgIOOAkC7jgJEgR28gdG8gdG9kYXkg44CQcuOAkXJlYnVpbGQgYWdlbmRhIAogICDj gJBDdHJsK2MgLuOAkSBmcmkg44CQUmV0dXJu44CRLy8gSWYgeW91IHdhbnQgYW4gaW5hY3RpdmUg ZGF0ZSB1c2Ug44CQQ3RybCtjICHjgJEgZnJpIOOAkFJldHVybuOAkQogICAiCiAgICAgICAoInMi ICBvcmctdGltZS1zdGFtcCAiYWdlbmRhIGRhdGUiKQogICAgICAgKCJ4IiBvcmctdGltZS1zdGFt cC1pbmFjdGl2ZSAgInN0YW1wIGRhdGUiICkKICAgICAgICgieSIgei1pbnNlcnQtZGF0ZSAiaW5z ZXJ0IGN1cnJlbnQgZGF0YSIpICAKICAgICAgICgidCIgei1pbnNlcnQtZGF0ZS10aW1lICJpbnNl cnQgY3VycmVudCBkYXRhIikgIAogICAgICAgKCJkIiBvcmctZGVhZGxpbmUgICJzZXQgZGVhZGxp bmUiKSAgCiAgICAgICAoImYiIG9yZy1zY2hlZHVsZSAgInNldCBzY2hlZHVsZSIpICAKICAgICAg ICgidyIgb3JnLWNsb25lLXN1YnRyZWUtd2l0aC10aW1lLXNoaWZ0ICAgImNsb25lIGFuZCB0aW1l IHNoaWZ0IikgIAogICAgICAgKCJxIiBuaWwgImNhbmNlbCIpCiAgICApCiAjK0VORF9TUkMKCgoK KioqKiBvcmcgZWRpdGluZyAoQy1NLW8pCQkJCQkJICAgICAKICAgICA6UFJPUEVSVElFUzoKICAg ICA6SUQ6ICAgICAgIDNhZTEwNzMyLWYxZDEtNGEyNC1iZjJjLTVmNzdmOTY5MmMxOAogICAgIDpF TkQ6CgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgIChnbG9iYWwtc2V0 LWtleQogICAgKGtiZCAiQy1NLW8iKQogICAgKGRlZmh5ZHJhIGh5ZHJhLW9yZy1lZGl0ICg6Y29s b3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKICAgICAgIm9yZ21vZGUgZWRpdGluZyAiCiAg ICAgICgiNSIgei9vcmctY2xvbmUtc3VidHJlZSAgImNsb25lIGhlYWRlciB3aXRoIG5ldyBvcmct aWQgIiApCiAgICAgICgiOyIgei9vcmctY2Jsb2NrLWNvbW1lbnQgICJsaW5lIHRvIGNoZWNrYm94 IiApCiAgICAgICgiYyIgb3JnLXNldC1saW5lLWNoZWNrYm94ICAibGluZSB0byBjaGVja2JveCIg KQogICAgICAoImQiIG9yZy1jdXQtc3VidHJlZSAgIm9yZyBjdXQiICkKICAgICAgKCJlIiB6L29y Zy1lbWFpbC1oZWFkaW5nICAiZW1haWwgaGVhZGVyIiApCiAgICAgICgiZiIgZmlsbC1wYXJhZ3Jh cGggICJmaWxsIHBhcmFncmFwaCIgKQogICAgICAoIkYiIGZpbGwtcmVnaW9uICAiZmlsbCByZWdp b24iICkKICAgICAgKCJoIiBvcmctc2V0LWxpbmUtaGVhZGxpbmUgImxpbmUgdG8gaGVhZGxpbmUi ICkKICAgICAgKCJpIiB6L29yZy1wYXN0ZS1pbWFnZS1saW5rICJwYXN0ZSBhcyBsaW5rIiApCiAg ICAgICgiSSIgaWVkaXQtbW9kZSAiZWRpdCBjdXJyZW50QHBvaW50IiApCiAgICAgICgibSIgb3Jn LXRlbGVwb3J0ICAidGVsZXBvcnQgaGVhZGVyICIgKQogICAgICAoInAiIG9yZy1wYXN0ZS1zdWJ0 cmVlICAib3JnIHBhc3RlIiApCiAgICAgICgiciIgb3JnLWNvcHkgICJjb3B5IHZpYSByZWZpbGUi ICkKICAgICAgKCJzIiBvcmctY2xvbmUtc3VidHJlZS13aXRoLXRpbWUtc2hpZnQgICJhZGQgYSB0 aW1lIHNlcmllcyBmb3IgaGVhZGVycyIgKQogICAgICAoInQiIG9yZy1pbnNlcnQtdG9kby1oZWFk aW5nLXJlc3BlY3QtY29udGVudCAiaW5zZXJ0IFRPRE8iICkKICAgICAgKCJ2IiBvcmctY29weS12 aXNpYmxlICJjb3B5IHZpc2libGUgdGV4dCBvbmx5IChoZWFkZXJzKSAiICkKICAgICAgKCJ3IiB3 b3JmLW1vZGUgIldvcmYgbW9kZSIgKQogICAgICAoInkiIG9yZy1jb3B5LXN1YnRyZWUgIm9yZyBj b3B5IiApCiAgICAgICgieiIgei9vcmctZW1haWwtaGVhZGluZy1tZSAgImVtYWlsIGhlYWRlciBp emVsdGFrIiApCiAgICAgICgiPHVwPiIgb3JnLW1vdmUtc3VidHJlZS11cCAiaGVhZGVyIHVwIiA6 Y29sb3IgcmVkICkKICAgICAgKCI8ZG93bj4iIG9yZy1tb3ZlLXN1YnRyZWUtZG93biAiaGVhZGVy IGRvd24iIDpjb2xvciByZWQpCiAgICAgICgicSIgbmlsICJjYW5jZWwiKSkpCgogOzsgYWRkaXRp b25hbCBiaW5kCiAoZ2xvYmFsLXNldC1rZXkgKGtiZCAiQy1jIDAiKSAnaHlkcmEtb3JnLWVkaXQv Ym9keSkKCiAjK0VORF9TUkMKCgoqKioqIG9yZyB0YWdzCiAgICAgOlBST1BFUlRJRVM6CiAgICAg OklEOiAgICAgICBiNGJiZWMxOC04YzUxLTQ4NDctYWIyMi1jYWJhNWMxNzE2YTEKICAgICA6RU5E OgoKICAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAgIChnbG9iYWwtc2V0 LWtleQoJKGtiZCAiIikKICAgICAoZGVmaHlkcmEgaHlkcmEtb3JnLXRhZ3MgICg6Y29sb3IgYmx1 ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkKICAgICAiCiAgICAgIgoKICAgICgiMSIgKG9yZy1zZXQt dGFncy1jb21tYW5kKSAic2V0IHRhZ3MiICA6ZmFjZSAnaHlkcmEtZmFjZS1ncmVlbikKICAgICgi YSIgKG9yZy1zZXQtdGFncy10byAiYWxsYW4iKSAiQWxsYW4iICkKICAgICgiYiIgKG9yZy1zZXQt dGFncy10byAiYm9yaXMiKSAiQm9yaXMiICkKICAgIDsoImMiIChvcmctc2V0LXRhZ3MtdG8gIiIp ICJ0YWdzIiApCiAgICAoImQiIChvcmctc2V0LXRhZ3MtdG8gImRhdmlkIikgIkRhdmlkIiApCiAg ICA7KCJlIiAob3JnLXNldC10YWdzLXRvICJhbGxhbiIpICJ0YWdzIiApCiAgICA7KCJmIiAob3Jn LXNldC10YWdzLXRvICJhbGxhbiIpICJ0YWdzIiApCiAgICA7KCJnIiAob3JnLXNldC10YWdzLXRv ICJhbGxhbiIpICJ0YWdzIiApCiAgICAoImgiIChvcmctc2V0LXRhZ3MtdG8gImhpbGEiKSAiSGls YSIgKQogICAgOygiaSIgKG9yZy1zZXQtdGFncy10byAiYWxsYW4iKSAidGFncyIgKQogICAgKCJq IiAob3JnLXNldC10YWdzLXRvICJqb2VsIikgIkpvZWwiICkKICAgIDsoImsiIChvcmctc2V0LXRh Z3MtdG8gImFsbGFuIikgInRhZ3MiICkKICAgICgibCIgKG9yZy1zZXQtdGFncy10byAibGFyYSIp ICJMYXJhIiApCiAgICAoIm0iIChvcmctc2V0LXRhZ3MtdG8gIm1leXRhciIpICJNZXl0YXIiICkK ICAgIDsoIm4iIChvcmctc2V0LXRhZ3MtdG8gImFsbGFuIikgInRhZ3MiICkKICAgICgibyIgKG9y Zy1zZXQtdGFncy10byAib21lciIpICJPbWVyIiApCiAgICA7KCJwIiAob3JnLXNldC10YWdzLXRv ICJhbGxhbiIpICJ0YWdzIiApCiAgICA7KCJxIiAob3JnLXNldC10YWdzLXRvICJhbGxhbiIpICJ0 YWdzIiApCiAgICAoInIiIChvcmctc2V0LXRhZ3MtdG8gImFkYXIiKSAiQWRhciIgKQogICAgKCJz IiAob3JnLXNldC10YWdzLXRvICJtYXNzaW1vIikgIk1hc3NpbW8iICkKICAgICgiUyIgKG9yZy1z ZXQtdGFncy10byAiZnJhbmNlc2NhIikgIkZyYW5jZXNjYSIgKQogICAgOygidCIgKG9yZy1zZXQt dGFncy10byAiYWxsYW4iKSAidGFncyIgKQogICAgOygidSIgKG9yZy1zZXQtdGFncy10byAiYWxs YW4iKSAidGFncyIgKQogICAgKCJ2IiAob3JnLXNldC10YWdzLXRvICJhZGkiKSAiQWRpIiApCiAg ICA7KCJ3IiAob3JnLXNldC10YWdzLXRvICJhbGxhbiIpICJ0YWdzIiApCiAgICAoIngiIChvcmct c2V0LXRhZ3MtdG8gImFsZXgiKSAiQWxleCIgKQogICAgKCJ5IiAob3JnLXNldC10YWdzLXRvICJt YWF5YW4iKSAiTWFheWFuIiApCiAgICAoInoiIChvcmctc2V0LXRhZ3MtdG8gImJvYiIpICJCb2Ii ICkKICAgICgicSIgbmlsICJjYW5jZWwiKQoKICAgICkpCiAgIytFTkRfU1JDCioqKiogb3JnIHRh YmxlcyAoQy1NLXQpCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAzOGYyMzdhMC1k YzUxLTQyNmUtODkxNC0yNjliNWM3ZWU2ZDUKICAgICA6RU5EOgoKICMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQogKGdsb2JhbC1zZXQta2V5CiAgKGtiZCAiQy1NLWwiKQoKIChk ZWZoeWRyYSBoeWRyYS1vcmctdGFibGUgKDpjb2xvciBibHVlICA6Y29sdW1ucyA2KQogIuOAkEMt YyAr44CRIHdpbGwgc3VtIGEgY29sdW1uIGFuZCBtb3ZlIHRvIGNsaXAgIOOAkEMtc3BhY2XjgJEg YmxhbmsgZmllbGQg44CQTS1sZWZ0L3JpZ2h044CRbW92ZSBjb2x1bW4gbGVmdC9yaWdodCAg44CQ TS1TLWxlZnQvcmlnaHTjgJFraWxsL2FkZCBjb2x1bW4gCiDjgJBNLXVwL2Rvd27jgJEgbW92ZSBy b3cgdXAvZG93biDjgJBNLVMtZG93buOAkSBpbnNlcnQgcm93ICDjgJBNLVMtdXDjgJEga2lsbCBy b3cKIOOAkHwt44CRIHdpbGwgc3RhcnQgYSBkYXNoZWQgbGluZSDjgJBDLWMgK+OAkSBvcmcgc3Vt IOOAkEMtYyA/L33jgJEgZmluZC9zaG93IG91dCBmaWVsZCBpbmZvIAog44CQQHJvdyRjb2x1bW7j gJE+PiAgQDIkMyB3aWxsIG1lYW4gMm5kIHJvdywgM3JkIGNvbHVtbiAKICAkMS4uJDNmICBmaXJ0 c3QgdGhyZWUgZmllbGRzIGluIHRoZSBjdXJyZW50IHJvdyAvLyBAMiQxLi5ANCQzICA2IGZpZWxk cyBiZXR3ZWVuIHRoZXNlIHR3byBmaWVsZHMKIEZPUlVNTEFTOiDjgJBDLWMgPeOAkSBpbnNlcnQg Zm9ybXVsYSDjgJBDLWMgKuOAkSByZWNhbGN1bGF0ZSBmb3JtdWxhICB2bWVhbi92c3VtIAog44CQ Oj3jgJFpbnNlcnQgZm9ybXVsYSBkaXJlY3RseSA+PiA6PXZzdW0oQDIkMy4uQDMyJDMpCiAiCiAg ICAgICgiaSIgb3JnLXRhYmxlLWluc2VydC1yb3cgICJpbnNlcnQgcm93IiA6Y29sb3IgYmx1ZSkg CiAgICAgICgieSIgb3JnLXRhYmxlLWNvcHktcmVnaW9uICAiY29weSIgOmNvbG9yIGJsdWUpIAog ICAgICAoImQiIG9yZy10YWJsZS1jdXQtcmVnaW9uICAiY3V0IiA6Y29sb3IgYmx1ZSkgCiAgICAg ICgicCIgb3JnLXRhYmxlLXBhc3RlLXJlY3RhbmdsZSAgInBhc3RlIiA6Y29sb3IgYmx1ZSkgCiAg ICAgICgicyIgb3JnLXRhYmxlLXNvcnQtbGluZXMgICJzb3J0IiA6Y29sb3IgYmx1ZSkgCiAgICAg ICgiYyIgb3JnLXRhYmxlLWNyZWF0ZS1vci1jb252ZXJ0LWZyb20tcmVnaW9uICAiY29udmVydCIg KSAKICAgICAgKCJ3IiBxdWljay1jYWxjICAicXVpY2sgY2FsYyIgKSAKICAgICgicSIgbmlsICJj YW5jZWwiKSkpCiAjK0VORF9TUkMKKioqKiBvcmctY2FwdHVyZQogICAgIDpQUk9QRVJUSUVTOgog ICAgIDpJRDogICAgICAgZjg4ODc4NWMtNmUwNS00MTY1LTgzMjYtOTM5M2ExNTczZjY5CiAgICAg OkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKIChkZWZoeWRyYSBo eWRyYS1vcmctY2FwdHVyZS1nbyAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29sdW1ucyA1KQog ICAib3JnIGNhcHR1cmU6IgogICAoImUiIChvcmctY2FwdHVyZSBuaWwgImUiKSAiZW1haWwgVEQi KQogICAoIkUiIChvcmctY2FwdHVyZSBuaWwgIkUiKSAiZW1haWwgVEQgKGFsdCkiKQogICAoIm0i ICAob3JnLWNhcHR1cmUgbmlsICJtIikgICJBREQgbWVldGluZyIgOmZhY2UgJ2h5ZHJhLWZhY2Ut cHVycGxlKQogICAoIk0iICAgKG9yZy1jYXB0dXJlIG5pbCAiTSIpICJBREQgcmVjIG1lZXRpbmci IDpmYWNlICdoeWRyYS1mYWNlLXB1cnBsZSkKICAgKCJ4IiAgIChvcmctY2FwdHVyZSBuaWwgIngi KSAibml4IFREIikKICAgKCJoIiAgIChvcmctY2FwdHVyZSBuaWwgImgiKSAiSG9tZSBURCIpCiAg ICgidiIgICAob3JnLWNhcHR1cmUgbmlsICJ2IikgIlJlc2VhcmNoIFREIikKICAgKCJiIiAgIChv cmctY2FwdHVyZSBuaWwgImIiKSAiQkdVIFREIikKICAgKCJyIiAgIChvcmctY2FwdHVyZSBuaWwg InIiKSAicmVzcG9uZCBURCAiKQogICAoInBwIiAgKG9yZy1jYXB0dXJlIG5pbCAicHAiKSAgImFk ZCBwYXBlciAiKQogICAoInBhIiAgKG9yZy1jYXB0dXJlIG5pbCAicGEiKSAiYWRkIGFic3RyYWN0 IikKICAgKCJqIiAgKG9yZy1jYXB0dXJlIG5pbCAiaiIpICJqb3VucmFsIHdvcmsiKQogICAoImRt IiAgKG9yZy1jYXB0dXJlIG5pbCAiZG0iKSAiREwtbW92aWVzIiA6ZmFjZSAnaHlkcmEtZmFjZS1n cmVlbikKICAgKCJkcCIgKG9yZy1jYXB0dXJlIG5pbCAiZHAiKSAiREwtbW92aWVzLVBSRSIgOmZh Y2UgJ2h5ZHJhLWZhY2UtZ3JlZW4pCiAgICgiZHQiIChvcmctY2FwdHVyZSBuaWwgImR0IikgIkRM LVRWIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JlZW4pCiAgICgiZHMiIChvcmctY2FwdHVyZSBuaWwg ImRzIikgIkRMLU11c2ljIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtZ3JlZW4pCiAgICgiZGMiICAob3Jn LWNhcHR1cmUgbmlsICJkYyIpICJETC1jb21pY3MiIDpmYWNlICdoeWRyYS1mYWNlLWdyZWVuKQog ICAoImMiIChvcmctY2FwdHVyZSBuaWwgImMiKSAiY29udGFjdHMiKQogICAoImsiIChvcmctY2Fw dHVyZSBuaWwgImsiKSAgICJhZGQgYm9va21hcmsgIikKICAgKCJLIiAgKG9yZy1jYXB0dXJlIG5p bCAiSyIpICJhZGQgYm9va21hcmsoYWx0KSIpCiAgICgidyIgIChvcmctY2FwdHVyZSBuaWwgInci KSAiYWRkIHRtcCBib29rbWFyayIpCiAgICgiZmYiICAob3JnLWNhcHR1cmUgbmlsICJmZiIpICJh ZGQgcmVjaXBlIikKICAgKCJmcyIgKG9yZy1jYXB0dXJlIG5pbCAiZnMiKSAiYWRkIHNob3AgaXRl bSIpCiAgICgidSIgIChvcmctY2FwdHVyZSBuaWwgInUiKSAgImFkZCByZXN0YXVyYW50IikKICAg KCJVIiAob3JnLWNhcHR1cmUgbmlsICJVIikgICAiYWRkIHRyYXZlbCBzaXRlIikKICAgKCJxIiBu aWwgInF1aXQiKSkKICMrRU5EX1NSQwoKCioqKiB5YXMgKEMtTS1oKQogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIDBhZjA3YTVkLTI3MjUtNGU0MC1hMDBmLWU1MWMzOTFlNjZhMAogICAg OkVORDoKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZ2xvYmFsLXNldC1r ZXkKIChrYmQgIkMtTS15IikKIChkZWZoeWRyYSBoeWRyYS15YXMgKCkKICAgInlhcyBjb21tYW5k ICIKICAgKCJhIiB5YXMtYWN0aXZhdGUtZXh0cmEtbW9kZSAiZW5hYmxlIEVtYWNzIG1vZGUgZm9y IHlhcyIgOmNvbG9yIGJsdWUpCiAgICgibiIgeWFzLW5ldy1zbmlwcGV0ICJhZGQgbmV3IHNuaXBw ZXQiIDpjb2xvciBibHVlKQogICAoInYiIHlhcy12aXNpdC1zbmlwcGV0LWZpbGUgInZpc2l0IiA6 Y29sb3IgYmx1ZSkKICAgKCJpIiB5YXMtaW5zZXJ0LXNuaXBwZXQgImluc2VydF9wb2ludCIgOmNv bG9yIGJsdWUpCiAgICgiciIgeWFzLXJlbG9hZC1hbGwgICJyZWxvYWQiIDpjb2xvciBibHVlKQog ICAoInQiIHlhcy10cnlvdXQtc25pcHBldCAgInRyeSBzbmlwZXQiIDpjb2xvciBibHVlKQogICAo InEiIG5pbCAiY2FuY2VsIikpKQojK0VORF9TUkMKKioqIEVkaXRpbmcgKEMtTS1lKQogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGI5MGFhODc3LWM2ODMtNDYwZS05ZjU1LTBmNWZjMmZl NWI0MQogICAgOkVORDoKKioqKiBtYWluIGVkaXRpbmcgY29tbWFuZCAKICAgICA6UFJPUEVSVElF UzoKICAgICA6SUQ6ICAgICAgIGNlNGJmM2E5LTM1NGUtNGU2Mi05MWNhLTQyNzQ3NWVhNzM5Zgog ICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICAgKGdsb2Jh bC1zZXQta2V5ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgKGtiZCAiQy1NLWUiKQogICAg KGRlZmh5ZHJhIGh5ZHJhLWVkaXRpbmcgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29sdW1ucyA0 KQogICAgICAiZWRpdGluZyBjb21tYW5kIgogICAgICAoIm8iIGNydXgtc21hcnQtb3Blbi1saW5l ICAib3BlbiBsaW5lIiApCiAgICAgICgiOyIgIGh5ZHJhLWNvbW1lbnRpbmcvYm9keSAgImNvbW1l bnQhIiApCiAgICAgICgiPGRvd24+IiBkcmFnLXN0dWZmLWRvd24gICJtYXJrZWQgZG93biIgOmNv bG9yIHJlZCkKICAgICAgKCI8dXA+IiBkcmFnLXN0dWZmLXVwICAibWFya2VkIHVwIiA6Y29sb3Ig cmVkKQogICAgICAoImMiIG94LWNsaXAtZm9ybWF0dGVkLWNvcHkgImNvcHkgZm9ybWF0ZWQgIiAp CiAgICAgICgiZCIgZG93bmNhc2UtcmVnaW9uICAiZG93bmNhc2UgIiApCiAgICAgICgiZSIgaHlk cmEtZWRpdC1leHRyYS9ib2R5ICAiRXh0cmEgZWRpdGluZyBjb21tYW5kcyIgOmZhY2UgJ2h5ZHJh LWZhY2UtcHVycGxlKQogICAgICAoImYiIGZsdXNoLWJsYW5rLWxpbmUgICJmbHVzaCBibGFuayIg KQogICAgICAoImciIGdvb2dsZS1zZWFyY2ggImdvb2dsZSBzZWFyaCBzZWxlY3RlZCIgKQogICAg ICAoImgiIHovZWRpdC1jb3B5LWFsbC1vci1yZWdpb24gICJjb3B5IGJ1ZmZlciIgKQogICAgICAo ImkiICBoeWRyYS1lZGl0aW5nLWluc2VydC9ib2R5ICAiaW5zZXJ0IiApICAgCiAgICAgICgibCIg IGVuZGxlc3MvZmlsbC1vci11bmZpbGwgICJmaWxsL3VuZmlsbCIgKSAgIAogICAgICAoIm4iIHov aW5zZXJ0LWZpbGUtbmFtZSAiaW5zZXJ0IGZpbGUgbmFtZSIgKQogICAgICAoInAiIGR1cGxpY2F0 ZS1jdXJyZW50LWxpbmUtb3ItcmVnaW9uICAiZHVwbGljYXRlIiA6Y29sb3IgcmVkKQogICAgICAo InMiIHdyaXRlLWFiYnJldi1maWxlICAic2F2ZSBhYmJydiBmaWxlIikgCiAgICAgICgidCIgei9o dG1sMm9yZy1jbGlwYm9hcmQgICJwYXN0ZSBmb3JtYXR0ZWQgaHRtbCIgKQogICAgICAoInUiIHVw Y2FzZS1yZWdpb24gICJ1cGNhc2UgIiApCiAgICAgICgiVSIgei1maXgtY2hhcmFjdGVycyAiZml4 IHVuaWNvZGUiICkKICAgICAgKCJ3IiBzaHJpbmstd2hpdGVzcGFjZSAgInNocmluay13aGl0ZXNw YWNlIiApCiAgICAgICgieCIgei9jb21tZW50LWJveCAiY29tbWVudCBib3giICkKICAgICAgOygi PGxlZnQ+IiBkcmFnLXN0dWZmLWxlZnQgICJtYXJrZWQgbGVmdCIgOmNvbG9yIHJlZCkKICAgICAg OygiPHJpZ2h0PiIgZHJhZy1zdHVmZi1yaWdodCAibWFya2VkIHJpZ2h0IiA6Y29sb3IgcmVkKQog ICAgICAoIlIiIHJldmVydC1idWZmZXIgICJyZXZlcnQgYnVmZmVyIGJlZm9yZSBjaGFuZ2VzIiAp IAogICAgICAoInEiIG5pbCAiY2FuY2VsIikpKQoKOzthZGl0dGlvbmFsIGJpbmQgCihnbG9iYWwt c2V0LWtleSAoa2JkICJDLWMgMSIpICdoeWRyYS1lZGl0aW5nL2JvZHkpCiAjK0VORF9TUkMKCioq KiogZXh0cmEgZWRpdGluZyBjb21tYW5kcwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgYTVmY2M5NjQtMzVjZS00YzIzLTllOTktNjI0NDllZDcwZjhhCiAgICAgOkVORDoKCiAjK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZoeWRyYSBoeWRyYS1lZGl0LWV4 dHJhICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgKQogICAgICAiCiBmaXggX3Vfbmljb2RlIGlzc3Vl ICAvLyB1X3BfY2FzZSByZWdpb24gLy8gX2Rfb3duY2FzZSByZWdpb24gCiAgICAgICIKICAgICAg KCJjIiB6L2NsZWFudXAtcmVmcyAgImNsZWFudXAgcmVmZXJlbmNlcyIgKSAKICAgICAgKCJ1IiB6 LWZpeC1jaGFyYWN0ZXJzICAiZml4IHVuaWNvZGUiICkgCiAgICAgICgicCIgdXBjYXNlLXJlZ2lv biAgInVwY2FzZSByZWdpb24iICkgCiAgICAgICgiZCIgZG93bmNhc2UtcmVnaW9uICAiZG93bmNh c2UgcmVnaW9uIiApIAogICAgICAoImYiIHRvZ2dsZS1maWxsLXVuZmlsbCAgImZpbGwvdW5maWxs IikKICAgICAgKCJyIiB6LWVkaXQtZmlsZS1hcy1yb290ICAiZWRpdCBhcyByb290IikKICAgICAg KCJxIiBuaWwgImNhbmNlbCIgbmlsKQogICAgICAoIjEiIHovcmVnZXgtZGVsZXRlLW51bWVyaWMg ImRlbGV0ZSBudW1iZXJzIikKICkKCiAjK0VORF9TUkMKCioqKiogY29tbWVudGluZyBoeWRyYSAK ICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGY4ZWQ4YWNkLTEwYjMtNGZjZC1iZDcz LTBjNGQ2NDI0ZTg4MgogICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKICAoZGVmaHlkcmEgaHlkcmEtY29tbWVudGluZyAoOmNvbG9yIGJsdWUgICkKICAgICAg ICIKICBjb21tZW50ICBfO18gLy8gY29tbWVudCBfdF9vIGxpbmUgLy8gY29tbWVudCBwYXJhX2df cmFwaCAvLyBjb19wX3ktcGFzdGUtY29tbWVudCAKICBjb21tZW50IF9lX21hY3MgZnVuY3Rpb24g IC8vIGNvcHktcGFzdGUtY29tbWVudC1mdW5jdGlvbiBfcl8gIAogICAgICAgIgogICAgICAgKCI7 IiBldmlsbmMtY29tbWVudC1vci11bmNvbW1lbnQtbGluZXMgICJjb21tZW50IiApIAogICAgICAg KCJ0IiBldmlsbmMtcXVpY2stY29tbWVudC1vci11bmNvbW1lbnQtdG8tdGhlLWxpbmUgICAiYyAy IGxpbmUiICBuaWwgKSAKICAgICAgICgiZyIgZXZpbG5jLWNvbW1lbnQtb3ItdW5jb21tZW50LXBh cmFncmFwaHMgICJjIHBhcmFncmFwaCIgIG5pbCApIAogICAgICAgKCJwIiBldmlsbmMtY29weS1h bmQtY29tbWVudC1saW5lcyAgImMsYyxwIiAgbmlsICkgCiAgICAgICAoImUiIGNvbW1lbnQtbGlu ZSAgImNvbW1lbnQtbGluZS1lbWFjc2Z1biIgOmNvbG9yIGJsdWUpCiAgICAgICAoInIiIHovY29w eS1jb21tZW50LXBhc3RlICAiYyxjLHAtZnVuICIgOmNvbG9yIGJsdWUpCiAgICAgICAoInEiIG5p bCAiY2FuY2VsIiBuaWwpICAgICAgICAgICAgIDsKICApCgojK0VORF9TUkMKCgoqKiogcGFzc3dv cmQtc3RvcmUgKEMtTS1wKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDkyMzQxMWIy LTU2MDUtNDAyNC1iYmMzLWJjNTg3MDg5NjRlYwogICAgOkVORDoKKioqKiBtYWluIGVkaXRpbmcg Y29tbWFuZCAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDIyMWY5NWFmLWRjNWEt NDcwOS05MTRkLTE1MDZkYWYwZDE5ZgogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKICAgKGdsb2JhbC1zZXQta2V5ICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgKGtiZCAiQy1NLXAiKQogICAgKGRlZmh5ZHJhIGh5ZHJhLXBhc3N3b3JkLXN0b3JlICg6 Y29sb3IgYmx1ZSA6Y29sdW1ucyA0IDpoaW50IG5pbCkKICAgICAgInBhc3N3b3JkIHN0b3JlIGNv bW1hbmQiCiAgICAgICgicCIgcGFzc3dvcmQtc3RvcmUtZWRpdCAgICJlZGl0IHBhc3MiICkKICAg ICAgKCJ0IiBwYXNzICAgInBhc3MgdHJlZSIgKQogICAgICAoImQiIHBhc3N3b3JkLXN0b3JlLXJl bW92ZSAgICJkZWxldGUgcGFzcyIgKQogICAgICAoImgiIGhlbG0tcGFzcyAgICJkZWxldGUgcGFz cyIgKQogICAgICAoInEiIG5pbCAiY2FuY2VsIikpKQoKICMrRU5EX1NSQwoqKiogYXZ5IChDLU07 KQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDY4OGZkOTJiLTYzNTQtNDA3ZS05YWIz LWViZTkzZjllOTgzMgogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCihnbG9iYWwtc2V0LWtleQogKGtiZCAiQy1NLTsiKQogKGRlZmh5ZHJhIGh5ZHJhLWF2eSAo KQogICAieWFzIGNvbW1hbmQgIgogICAoImciIGF2aS1nb3RvLWNoYXItMiAiYXZpLWdvdG8tY2hh ci0yIiA6Y29sb3IgYmx1ZSkKICAgKCJjIiBhdmktZ290by1jaGFyICJhdmktZ290by1jaGFyIiA6 Y29sb3IgYmx1ZSkKICAgKCJsIiBhdmktZ290by1saW5lICJhdmktZ290by1saW5lIiA6Y29sb3Ig Ymx1ZSkKICAgKCI0IiBhdmktY29weS1saW5lICAiYXZpLWNvcHktbGluZSIgOmNvbG9yIGJsdWUp CiAgICgiMyIgYXZpLW1vdmUtbGluZSAgImF2aS1tb3ZlLWxpbmUiIDpjb2xvciBibHVlKQogICAo InIiIGF2aS1jb3B5LXJlZ2lvbiAgImF2aS1jb3B5LXJlZ2lvbiIgOmNvbG9yIGJsdWUpCiAgICgi YSIgYXZpLWdvdG8td29yZC0xICAiYXZpLWdvdG8td29yZC0xIiA6Y29sb3IgYmx1ZSkKICAgKCJ2 IiBhdmktZ290by13b3JkLTAgICJhdmktZ290by13b3JkLTAiIDpjb2xvciBibHVlKQogICAoInoi IGFjZS1qdW1wLXphcCAgInphcCB0ZXh0IiA6Y29sb3IgYmx1ZSkKICAgKCJxIiBuaWwgImNhbmNl bCIpKSkKIytFTkRfU1JDCgoqKiogd2luZG93cyAoRjEyKQogICAgOlBST1BFUlRJRVM6CiAgICA6 SUQ6ICAgICAgIDE0ZjgwZjRlLWI2NzgtNDBhZC04YTZlLTkyNGFjMDJlODdkYgogICAgOkVORDoK CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZ2xvYmFsLXNldC1rZXkKIChr YmQgIjxmMTI+IikKIChkZWZoeWRyYSBoeWRyYS13aW5kb3cgKDpjb2xvciBibHVlIDpoaW50IG5p bCA6Y29sdW1ucyA1KQogIldpbmRvdyBhbmQgYnVmZmVyIE9wZXJhdGlvbnMiCiAgICgiPGYxMj4i IHN3aXRjaC10by1wcmV2aW91cy1idWZmZXIgICJsYXN0IGJ1ZmZlciIgICkKICAgKCI8ZjExPiIg YWNlLWRlbGV0ZS13aW5kb3cgImRlbGV0ZSB3aW5kb3ciKQogICAoIjxob21lPiIgYWNlLXdpbmRv dyAiYWNlLXdpbmRvdy8vYWxzbyBNLTEiIDpleGl0IHQpICAgCiAgICgiMCIgei90b2dnbGUtd2lu ZG93LXNwbGl0ICJ0b2dnbGUgc3BsaXRzIikgICAKICAgKCI9IiAobGFtYmRhICgpCiAgICAgICAg ICAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAoc3BsaXQtd2luZG93LXJpZ2h0KQogICAgICAgICAg KHdpbmRtb3ZlLXJpZ2h0KSkKICAgICAgICAiU3BsaXQgVmVydGljYWwgKHwpIikKICAgKCItIiAo bGFtYmRhICgpCiAgICAgICAgICAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAoc3BsaXQtd2luZG93 LWJlbG93KQogICAgICAgICAgKHdpbmRtb3ZlLWRvd24pKQogICAgICAgICJTcGxpdCBob3J6aXpv bnRhbCAoLSkiKQogICAoIjxsZWZ0PiIgaHlkcmEtbW92ZS1zcGxpdHRlci1sZWZ0ICJyZXNpemUg bGVmdCIgIDpjb2xvciByZWQpCiAgICgiPHJpZ2h0PiIgaHlkcmEtbW92ZS1zcGxpdHRlci1yaWdo dCAicmVzaXplIHJpZ2h0IiAgOmNvbG9yIHJlZCkKICAgKCI8dXA+IiBoeWRyYS1tb3ZlLXNwbGl0 dGVyLXVwICJyZXNpemUgdXAiICA6Y29sb3IgcmVkKQogICAoIjxkb3duPiIgaHlkcmEtbW92ZS1z cGxpdHRlci1kb3duICJyZXNpemUgZG93biIgIDpjb2xvciByZWQpCiAgICgidCIgYWNlLXN3YXAt d2luZG93ICAidHJhbnNwb3NlIChhY2Utc3dhcCkiKQogICAoImkiIGFjZS1tYXhpbWl6ZS13aW5k b3cgImFjZS1vbmUiICkKICAgKCJyIiByZXNpemUtd2luZG93ICJyZXNpemUgbWVudSIgKQogICA7 O05vdGUgd2luZXIgbW9kZSBtdXN0IGJlIGVuYWJsZWQKICAgKCJ1IiB3aW5uZXItdW5kbyAid2lu bmVyIHVuZG8iKQogICAoInMiIHNhdmUtYnVmZmVyICJzYXZlIGJ1ZmZlciIgICkKICAgKCJhIiB3 cml0ZS1maWxlICAic2F2ZSBhcy4uIiAgKQogICAoIngiIGtpbGwtdGhpcy1idWZmZXIgImtpbGwg YnVmZmVyIiAgKQogICAoImMiIHotc2F2ZS1idWZmZXItY2xvc2Utd2luZG93ICJzYXZlIGFuZCBj bG9zZSIgICkKICAgKCJ2IiB6L3dyaXRlLWZpbGUtaW5jcmVtZW50ICJpbmNyZW1lbnQgdmVyc2lv biIgICkKICAgKCJuIiBuZXh0LXVzZXItYnVmZmVyICAibmV4dCBidWZmZXIiICkKICAgKCJwIiBw cmV2aW91cy11c2VyLWJ1ZmZlciAicHJldiBidWZmZXIiICApCiAgICgiTiIgbmV4dC1lbWFjcy1i dWZmZXIgIm5leHQgRW1hY3MgIGJ1ZmZlciIgICkKICAgKCJQIiBwcmV2aW91cy1lbWFjcy1idWZm ZXIgInByZXYgZW1hY3MgYnVmZmVyIiAgKQogICAoImRhIiBhY2UtZGVsZXRlLXdpbmRvdykKICAg KCJkYiIga2lsbC10aGlzLWJ1ZmZlcikKICAgKCJkZiIgZGVsZXRlLWZyYW1lICJkZWxldGUgZnJh bWUiKQogICAoImt3IiBkZWxldGUtd2luZG93ICJkZWxldGUgd2luZG93IikKICAgKCJrYSIgZGVs ZXRlLW90aGVyLXdpbmRvd3MgImRlbGV0ZSBhbGwgb3RoZXIgIHdpbmRvd3MiKQogICAoImtoIiBr aWxsLWJ1ZmZlciAiaGVsbSBraWxsIGJ1ZmZlciIgKQogICAoImtiIiB6LWtpbGwtb3RoZXItYnVm ZmVycyAia2lsbCBhbGwgYnV0IGN1cnJlbnQiICkKICAgKCJ3IiBuZXh0LW11bHRpZnJhbWUtd2lu ZG93ICJuZXh0LW11bHRpZnJhbWUtd2luZG93IiApCiAgICgicSIgbmlsICJjYW5jZWwiKSkpCgoj K0VORF9TUkMKKioqIGh5ZHJhIG1hcmsKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBj N2I5NDJhZS1iM2FkLTQ5MzYtOTM0Zi0xYmYzMjE2MjhmZWUKICAgIDpFTkQ6CiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGdsb2JhbC1zZXQta2V5CiAoa2JkICJNLTIiKQoo ZGVmaHlkcmEgaHlkcmEtbWFyay1lciAoOmJvZHktcHJlIChjYWxsLWludGVyYWN0aXZlbHkgJ3Nl dC1tYXJrLWNvbW1hbmQpIDpoaW50IG5pbCA6Y29sdW1ucyA0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6ZXhpdCB0ICkKICAiaHlkcmEgZm9yIG1hcmsgY29tbWFuZHMiCiAgKCIyIiBl ci9leHBhbmQtcmVnaW9uICJleHBhbmQgcmVnaW9uIikKICAoImwiIGVyL21hcmstdGV4dC1zZW50 ZW5jZSAic2VudGVuY2UiKQogICgicCIgZXIvbWFyay10ZXh0LXBhcmFncmFwaCAicGFyYWdyYXBo IikKICAoInciIGVyL21hcmstd29yZCAid29yZCIpCiAgKCJyIiBlci9tYXJrLW91dHNpZGUtcGFp cnMiZXhwYW5kIG91dHNpZGUgcGFyaXMiKQogICgiUiIgZXIvbWFyay1pbnNpZGUtcGFpcnMgImV4 cGFuZCBpbnNpZGUgcGFyaXMiKQogICgidSIgZXIvbWFyay1vdXRzaWRlLXF1b3RlcykKICAoIlUi IGVyL21hcmstaW5zaWRlLXF1b3RlcyAicXVvdGVzIikKICAoImQiIGVyL21hcmstZGVmdW4gImZ1 bmN0aW9uIikKICAoImMiIGVyL21hcmstY29tbWVudCAiY29tbWVudCIpCiAgKCJrIiBlci9tYXJr LXVybCAidXJsIikKICAoIm0iIGVyL21hcmstZW1haWwgImVtYWlsIikKICAoInMiIGVyL21hcmst c3ltYm9sICJzeW1ib2wiKQogICgicSIgKGZ1bmNhbGwgJ3NldC1tYXJrLWNvbW1hbmQgdCkgOmV4 aXQgbmlsKSkpCgojK0VORF9TUkMKKioqIFRPRE8gc2VhcmNoIChDLVMtcykKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICBhMjJjMmYxNy1mOGQ1LTQwZTUtOWI0YS05MjY1NTE3ZGY5ZjkK ICAgIDpFTkQ6Cm9yZ2FuaXplIGJldHRlciBhbmQgdXAgcXVlIGluIGxpc3Qgb2Z0ZW4gdXNlZCBz ZWFyY2hlcyAKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZ2xvYmFsLXNl dC1rZXkKIChrYmQgIkMtUy1zIikKIChkZWZoeWRyYSBoeWRyYS1zZWFyY2ggICg6Y29sb3IgYmx1 ZSA6aGludCBuaWwgOmNvbHVtbnMgNCkgCiAgICIgCuOAlnJncmVw44CXIHNlYXJjaCBzdHJpbmc+ PiBleHRlbnNpb24gPj4gbG9jYXRpb24gCuOAlnN3b29w44CXIHdpbGwgc2hvdyBhIHNlYXJjaCB3 b3JkIGluIGhlbG0gYnVmZmVyCuOAlm9jY3Vy44CXIHdpbGwgc2hvdyBhIHNlYXJjaCB3b3JkIGlu bGluZQrjgJZyaWZsZeOAlyBjb21tYW5kcyB0aGF0IHVzZSBoZWxtIGFuZCBwcmVzZW50IHJlc3Vs dHMgaW4gb3JnIGZvcm1hdCAKIgoKO2lzZXJhY2gKCigicyIgY291bnNlbC1ncmVwLW9yLXN3aXBl ciAiJ2NvdW5zZWwtZ3JlcC1vci1zd2lwZXIiIDpmYWNlICdoeWRyYS1mYWNlLWJyb3duICkKOygi cyIgaXNlYXJjaC1mb3J3YXJkICJpc2VhcmNoIiA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biApCigi UyIgaXNlYXJjaC1mb3J3YXJkLXN5bWJvbC1hdC1wb2ludCAiaXNlYXJjaEBwb2ludCIgOmZhY2Ug J2h5ZHJhLWZhY2UtYnJvd24gKQoKCjs7YWR2YW5jZWQgc2VhcmNoZXMgCigiZCIgei9oZWxtLW1n LXByZWZpeCAiaGVsbS1hZy1yZWN1cnNpdmUiIDpmYWNlICdoeWRyYS1mYWNlLWdyZWVuICkKKCJm IiBoZWxtLWFnICJIZWxtLWFnIikKKCJGIiBoZWxtLWRvLWFnLXByb2plY3Qtcm9vdCAiaGVsbS1h ZyBpbiBwb3JqZWN0IiApCigiciIgIHJncmVwICJ1c2UgZW1hY3MgcmVjdXJzaXZlIGdyZXAiKSAK KCIxIiAgc3dpcGVyLWFsbCAic3dpcGVyIGFsbCBvcGVuIGJ1ZmZlcnMiICkKCjs7O3JpZmxlIGNv bW1hbmRzIAoKKCJ3dyIgIGhlbG0tb3JnLXJpZmxlICJyaWZsZSBvcGVuIG9yZyIgOmZhY2UgJ2h5 ZHJhLWZhY2UtY3lhbiApCigid2QiICBoZWxtLW9yZy1yaWZsZS1kaXJlY3RvcmllcyAicmlmbGUg c2VsZWN0ZWQgZGlyZWN0b3JpZXMiIDpmYWNlICdoeWRyYS1mYWNlLWN5YW4gKQooIndvIiAgaGVs bS1vcmctcmlmbGUtb3JnLWRpcmVjdG9yeSAicmlmbGUgYSBvcmcgZGlyIiA6ZmFjZSAnaHlkcmEt ZmFjZS1jeWFuICkKKCJ3ZiIgIGhlbG0tb3JnLXJpZmxlLWZpbGVzICJyaWZsZSBhIHNwZWNpZmlj IGZpbGUiIDpmYWNlICdoeWRyYS1mYWNlLWN5YW4gKQoKOzs7IGhlbG0gc3dvb3BzIGFuZCBvY2N1 cnMgIAooIjIiIGhlbG0tc3dvb3AgImZpbmQgd29yZEBwb2ludCBpbiBkb2N1bWVudCIgOmZhY2Ug J2h5ZHJhLWZhY2UtZ3JleSApCigiMyIgaGVsbS1tdWx0aS1zd29vcCAgImZpbmQgd29yZEBwb2lu dCBpbiBzZWxlY3RlZCBkb2N1bWVudHMiIDpmYWNlICdoeWRyYS1mYWNlLWdyZXkpCigiNCIgaGVs bS1tdWx0aS1zd29vcC1vcmcgImZpbmQgd29yZEBwb2ludCBpbiBvcmcgYWdlbmRhIiAgOmZhY2Ug J2h5ZHJhLWZhY2UtZ3JleSApCigiNSIgaGVsbS1vY2N1ciAiaGVsbSBPY2N1ciIgIDpmYWNlICdo eWRyYS1mYWNlLWdyZXkpCigiNiIgIG9yZy1vY2N1ciAib3JnLW9jY3VyIiAgOmZhY2UgJ2h5ZHJh LWZhY2UtZ3JleSApCgo7ZmlsZSBzeXN0ZW0gc2VhcmNoZXMgCigiaCIgaGVsbS1mb3ItZmlsZXMg IkhlbG0gc2VhcmNoIGFsbCBmaWxlIHN5c3RlbSAiICkKCjsgZW1hY3MgZG9jdSBzZWFyY2hlcyAK KCJQIiBoZWxtLWFwcm9wb3MgIkhlbG0tQXByb3BvcyIpCgo7cmVwbGFjZSAKKCJSIiBhbnp1LXF1 ZXJ5LXJlcGxhY2UtYXQtY3Vyc29yICJSZXBsYWNlQGN1cnNvciIpCgoKKCJ6IiB6L2NvdW5zZWwt eWFuay16c2gtaGlzdG9yeSAienNoIGhpc3RvcnkiICkKCigiWiIgei9yZXBsYWNlLW9uLW1hdGNo aW5nLWxpbmVzICJyZXBsYWNlIG9ubHkgaW4gc3BlY2lmaWMgbGluZXMiICkKCjsgYnVmZmVyIG1v dmVtZW50IAooIjkiIGdvdG8tbGFzdC1jaGFuZ2UgImdvdG8gbGFzdCBjaGFuZ2UiICA6ZmFjZSAn aHlkcmEtZmFjZS1kYXJrcmVkICkKKCIwIiBnb3RvLWxhc3QtY2hhbmdlLXJldnJlc2UgImdvdG8g cHJldiBjaGFuZ2UiICA6ZmFjZSAnaHlkcmEtZmFjZS1kYXJrcmVkICkgIAoKOzsoIiIgY291bnNl bC1hZyAiY291bnNlbCBzZWFyY2ggb3JnIiA6ZmFjZSAnaHlkcmEtZmFjZS1wdXJwbGUpCjs7KCJj IiB6L2NvdW5zZWwtYWctcHJvbXB0LWRpciAiY291bnNlbCBzZWFyY2ggcHJvbXBydCBkaXIiIDpm YWNlICdoeWRyYS1mYWNlLXB1cnBsZSkKCiAgICgicSIgbmlsICJjYW5jZWwiKSkpCiMrRU5EX1NS QwoKCiogTWFjcm9zCiAgOlBST1BFUlRJRVM6CiAgOklEOiAgICAgICAyM2RiZTQ1Zi04ODhkLTRk ZGEtYjkyYi1iODQ3ZWNkMTMxMWMKICA6RU5EOgoqKiBFZGl0aW5nCiAgIDpQUk9QRVJUSUVTOgog ICA6SUQ6ICAgICAgIDcwNTNjZWQ0LTM5YjAtNDZmNS1hMjY0LWIwOTM0ZDBjYTQ2NAogICA6RU5E OgoqKiogbGluazJwaWNoZWFkZXIgCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKKGZzZXQgJ2xpbmsycGljaGVhZGVyCiAgIFtmMTIgPz0gZjEgP3MgP2kgcmV0dXJuIHJldHVy biByZXR1cm4gdXAgdXAgdXAgZjEgP21dKQojK0VORF9TUkMKKioqIGFkZCBsaW5lcwojK0JFR0lO X1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihmc2V0ICd6L21hYy5pbnNlcnQubGluZSAK ICAgWz9cQy1zID8uIHJldHVybiA/XEMtal0pCiMrRU5EX1NSQwoqKiBwcmVmaXggbWFjcm8KICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNzUwN2IzY2QtMDNlMC00YzQ5LWJiYzAtMjRkZjg3 MjQyYmU5CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVm bWFjcm8gQy11ICgmcmVzdCBhcmdzKQogIChsZXQgKChwcmVmaXggKGxpc3QgNCkpKQogICAgKHdo aWxlIChjZHIgYXJncykKICAgICAgKGNvbmQKICAgICAgICgoZXEgKGNhciBhcmdzKSAnQy11KQog ICAgICAgIChzZXRmIChjYXIgcHJlZml4KSAoKiA0IChjYXIgcHJlZml4KSkpKQogICAgICAgKChl cSAoY2FyIGFyZ3MpICdNLXgpCiAgICAgICAgOzsgaWdub3JlCiAgICAgICAgdCkKICAgICAgICh0 CiAgICAgICAgKGVycm9yICJVbmtub3duIGFyZyAlUyIgKGNhciBhcmdzKSkpKQogICAgICAoc2V0 cSBhcmdzIChjZHIgYXJncykpKQogICAgKHVubGVzcyAoZnVuY3Rpb25wIChjYXIgYXJncykpCiAg ICAgIChlcnJvciAiJVMgaXMgbm90IGEgZnVuY3Rpb24iIChjYXIgYXJncykpKQogICAgYChsYW1i ZGEgKCkKICAgICAgIChpbnRlcmFjdGl2ZSkKICAgICAgIChsZXQgKChjdXJyZW50LXByZWZpeC1h cmcgJyxwcmVmaXgpKQogICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICcsKGNhciBhcmdzKSkp KSkpCiMrRU5EX1NSQwoKCgoKKiBTZXR0aW5ncwogIDpQUk9QRVJUSUVTOgogIDpJRDogICAgICAg MDk5MTU0NmUtOTJiNC00MmQzLTliOTktZDNjNjM5ZDJkNWY4CiAgOkVORDoKKiogWERHL29wZW4g d2l0aCAKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgOGM1ODllMDUtODJhMi00ZjMxLTg3 Y2UtZTNkMmE4NThhYzA4CiAgIDpFTkQ6CioqKiBzZXQgZW1hY3MgYnJvd3NlcgogICAgOlBST1BF UlRJRVM6CiAgICA6SUQ6ICAgICAgIDE2MmM2MjAxLTNlODEtNDQxZS1hNzI5LTY5OGUzODdjNzMx ZAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGJy b3dzZS11cmwtYnJvd3Nlci1mdW5jdGlvbiAocXVvdGUgYnJvd3NlLXVybC1nZW5lcmljKSkKOyhz ZXRxIGJyb3dzZS11cmwtZ2VuZXJpYy1wcm9ncmFtICJxdXRlYnJvd3NlciIpCjsoc2V0cSBicm93 c2UtdXJsLWdlbmVyaWMtcHJvZ3JhbSAiZmlyZWZveCIpCihzZXRxIGJyb3dzZS11cmwtZ2VuZXJp Yy1wcm9ncmFtICJjaHJvbWl1bSIpCiMrRU5EX1NSQwoqKiBCYWNrdXAKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgNTk0ZDQwMGUtNWFmZC00OTM1LWE3ZGQtZjg3ODM1OWE3MjE0CiAgIDpF TkQ6CkF1dG8tYmFja3VwIGlzIHRyaWdnZXJlZCB3aGVuIHlvdSBzYXZlIGEgZmlsZSAtIGl0IHdp bGwga2VlcCB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIGZpbGUgYXJvdW5kLCBhZGRpbmcgYSB+IHRv IGl0cyBuYW1lLiAKYXV0by1zYXZlLW1vZGUgYXV0by1zYXZlcyBhIGZpbGUgZXZlcnkgZmV3IHNl Y29uZHMgCmhlcmUgd2UgcHV0IHRoZXNlIGZpbGVzIGluIHRoZSAvdG1wIGRpcgoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGJhY2t1cC1kaXJlY3RvcnktYWxpc3QK ICAgICAgYCgoIi4qIiAuICx0ZW1wb3JhcnktZmlsZS1kaXJlY3RvcnkpKSkKKHNldHEgYXV0by1z YXZlLWZpbGUtbmFtZS10cmFuc2Zvcm1zCiAgICAgIGAoKCIuKiIgLHRlbXBvcmFyeS1maWxlLWRp cmVjdG9yeSB0KSkpCiMrRU5EX1NSQwoKKiogU2F2ZSBhbmQgc2Vzc2lvbnMKICAgOlBST1BFUlRJ RVM6CiAgIDpJRDogICAgICAgYWFjNWZiYmQtZTFmNS00Mzg0LTgyODQtZTkyYTY5MzhlMmQzCiAg IDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7SWYgSSByZW9w ZW4gYSBmaWxlLCBJIHdhbnQgdG8gc3RhcnQgYXQgdGhlIGxpbmUgYXQgd2hpY2ggSSB3YXMgd2hl biBJIGNsb3NlZCBpdC4KICA7IHNhdmUgdGhlIHBsYWNlIGluIGZpbGVzCiAgOyhyZXF1aXJlICdz YXZlcGxhY2UpCiAgOyhzZXRxLWRlZmF1bHQgc2F2ZS1wbGFjZSB0KQoKICA7IHNhdmUgbWluaWJ1 ZmZlciBoaXN0b3J5CiAgKHJlcXVpcmUgJ3NhdmVoaXN0KQoKICAoc2V0cSBzYXZlaGlzdC1zYXZl LW1pbmlidWZmZXItaGlzdG9yeSAxKQogIChzYXZlaGlzdC1tb2RlIDEpCiAgKHNldHEgaGlzdG9y eS1sZW5ndGggdCkKICAoc2V0cSBoaXN0b3J5LWRlbGV0ZS1kdXBsaWNhdGVzIHQpCgogIChzZXRx IHNhdmVoaXN0LWFkZGl0aW9uYWwtdmFyaWFibGVzICcoc2VhcmNoLXJpbmcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4cC1zZWFyY2gtcmluZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS1uYW1lLWhpc3RvcnkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkLWNvbW1hbmQtaGlzdG9yeQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoLXJpbmcKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyLWhpc3RvcnktcmVnaXN0cnkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKCiAgKHNldHEgc2F2ZWhp c3Qtc2F2ZS1taW5pYnVmZmVyLWhpc3RvcnkgMSkKCiAgOzthdXRvc2F2ZQogIDsoc2V0cSBhdXRv LXNhdmUtdmlzaXRlZC1maWxlLW5hbWUgdCkKICA7KHNldHEgYXV0by1zYXZlLWludGVydmFsIDIw KSA7IHR3ZW50eSBrZXlzdHJva2VzCiAgKHNldHEgYXV0by1zYXZlLXRpbWVvdXQgNjApIDsgdGVu IGlkbGUgc2Vjb25kcwoKIytFTkRfU1JDCioqIHNhdmUga2lsbCByaW5nIAojK0JFR0lOX1NSQyBl bWFjcy1saXNwICA6cmVzdWx0cyBub25lCjs7IEFsc28gc2F2ZSBtaW5pYnVmZmVyL3ZhcmlhYmxl IGhpc3Rvcmllcy4KOzsgbi5iLiBzYXZlaGlzdC1tb2RlIGRlZmF1bHRzIHRvIHNhdmluZyB0aGUg dmFycyBsaXN0ZWQgaW4KOzsgc2F2ZWhpc3QtbWluaWJ1ZmZlci1oaXN0b3J5LXZhcmlhYmxlcywg d2hpY2ggZ2V0cyBhZGRlZCB0bwo7OyBhcyBpbmRpdmlkdWFsIGZlYXR1cmVzIGFyZSB1dGlsaXNl ZC4KKHNldHEgc2F2ZWhpc3QtYWRkaXRpb25hbC12YXJpYWJsZXMKJyhraWxsLXJpbmcKOzsgWW91 IGRvbid0IG5lZWQgdG8gYWRkIG1pbmlidWZmZXIgaGlzdG9yeSB2YXJpYWJsZXMgdG8gdGhpcwo7 OyBsaXN0LCBhbGwgbWluaWJ1ZmZlciBoaXN0b3JpZXMgd2lsbCBiZSBzYXZlZCBhdXRvbWF0aWNh bGx5Cjs7IGFzIGxvbmcgYXMgYHNhdmVoaXN0LXNhdmUtbWluaWJ1ZmZlci1oaXN0b3J5JyBpcyBu b24tbmlsLgopKQo7OyBuLmIuIENvZGUgZWxzZXdoZXJlIHNob3VsZCB1c2U6Cjs7IChldmFsLWFm dGVyLWxvYWQgInNhdmVoaXN0Igo7OyAnKGFkZC10by1saXN0ICdzYXZlaGlzdC1hZGRpdGlvbmFs LXZhcmlhYmxlcyAnc29tZS12YXIpKQoKOzsgUmVtb3ZlIHRleHQgcHJvcGVydGllcyBmcm9tIGtp bGwtcmluZyBiZWZvcmUgaXQgaXMgc2F2ZWQgdG8gdGhlCjs7IGhpc3RvcnkgZmlsZSwgYXMgdGhl c2UgYmxvYXQgdGhlIGZpbGUgZHJhbWF0aWNhbGx5Lgo7OyBTZWUgaHR0cDovL2VtYWNzLnN0YWNr ZXhjaGFuZ2UuY29tL2EvNDE5MSBmb3Igd2h5IHRoaXMgZG9lc24ndAo7OyB1c2UgYHNhdmVoaXN0 LXNhdmUtaG9vaycuCihhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICdteS11bnByb3BlcnRpemUt a2lsbC1yaW5nKQooZGVmdW4gbXktdW5wcm9wZXJ0aXplLWtpbGwtcmluZyAoKQooc2V0cSBraWxs LXJpbmcgKG1hcGNhciAnc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMga2lsbC1yaW5nKSkpCiMrRU5E X1NSQwoKKiogcmVjZW50ZgogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICAzNWVmNDVjMi05 N2RkLTRmZWYtODExNy1lMDM1ZGZmMGUyYmQKICAgOkVORDoKCiRub3RlIGl0cyBidWlsdCBpbnRv IGVtYWNzIG5vIGludHNhbGwgbmVlZGVkJAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0 cyBub25lCiAoc2V0cSByZWNlbnRmLXNhdmUtZmlsZSAiL2hvbWUvemVsdGFrLy5lbWFjcy50L3Jl Y2VudGYiKSAgOzsgKHNldHEgcmVjZW50Zi1hdXRvLWNsZWFudXAgJ25ldmVyKSA7OyBkaXNhYmxl IGJlZm9yZSB3ZSBzdGFydCByZWNlbnRmIQoocmVxdWlyZSAncmVjZW50ZikKKHJlY2VudGYtbW9k ZSAxKQooc2V0cSByZWNlbnRmLW1heC1tZW51LWl0ZW1zIDUwKQo7KHNldHEgcmVjZW50Zi1hdXRv LWNsZWFudXAgJ25ldmVyKSA7OyBkaXNhYmxlIGJlZm9yZSB3ZSBzdGFydCByZWNlbnRmIQojK0VO RF9TUkMKCioqIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6 ICAgICAgIDFmN2M0NmI0LTk4YjItNGVmNC05NjhjLTc1YzE5NjdmM2E0OAogICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgY2FjaGUtbG9uZy1zY2FucyBu aWwpCiMrRU5EX1NSQwoqKiBUT0RPIGZpbGUgY29tcGxldGlvbgogICA6UFJPUEVSVElFUzoKICAg OklEOiAgICAgICA1N2ExOWU5Zi1kODVkLTQxMDAtYWRmNC1hNTkzYzdhNWJjY2EKICAgOkVORDoK CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKKHNldHEgcmVhZC1maWxlLW5hbWUtY29tcGxldGlvbi1p Z25vcmUtY2FzZSB0KQooc2V0cSByZWFkLWJ1ZmZlci1jb21wbGV0aW9uLWlnbm9yZS1jYXNlIHQp CihtYXBjIChsYW1iZGEgKHgpCiAgICAgICAgKGFkZC10by1saXN0ICdjb21wbGV0aW9uLWlnbm9y ZWQtZXh0ZW5zaW9ucyB4KSkKICAgICAgJygiLmF1eCIgIi5iYmwiICIuYmxnIiAiLmV4ZSIKICAg ICAgICAiLmxvZyIgIi5tZXRhIiAiLm91dCIgIi5zeW5jdGV4Lmd6IiAiLnRkbyIgIi50b2MiCiAg ICAgICAgIi1wa2cuZWwiICItYXV0b2xvYWRzLmVsIgogICAgICAgICJOb3Rlcy5iaWIiICJhdXRv LyIpKQojK0VORF9TUkMKKiogVE9ETyBUUkFNUCBzZXR0aW5ncwogICA6UFJPUEVSVElFUzoKICAg OklEOiAgICAgICAxZjllZTc4ZC1iY2MxLTQ0YzgtYjY2MS03ODY5NzEyMTE5ZDkKICAgOkVORDoK KioqIHRyYW1wIHNzaAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGY3ZmVhZTk5LTUz OTktNDExOC04NzY5LTEyZDg1N2VhMzJkNQogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCA6cmVzdWx0cyBub25lCihyZXF1aXJlICd0cmFtcCkgOyBSZW1vdGUgZmlsZSBlZGl0aW5nIHZp YSBzc2gKKHNldHEgdHJhbXAtZGVmYXVsdC1tZXRob2QgInNzaCIpCiMrRU5EX1NSQwoqKiogc2V0 IHRlbXAgZGlyZWN0b3J5CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgNTg5MGRiZTgt YzEzMC00MWI2LWJlYzctNTA4MmU5ZGQwMTFhCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCihzZXRxIHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeSAiL3RtcCIp CiMrRU5EX1NSQwoqKiogY2FjaGUgcGFzc3dvcmQKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICA2ODkzOGY5YS1hYzY2LTQ1NzktOGNhNy0zZDM5YjQ2NjllN2IKICAgIDpFTkQ6CmRvbid0 IGxldCBwYXNzd29yZHMgZXhwaXJlCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKICA7OyAoc2V0cSBwYXNzd29yZC1jYWNoZS1leHBpcnkgbmlsKQojK0VORF9TUkMKKioqIHRy YW1wIGRlZmF1bHRzIGFuZCB1c2UgLnNzaCBzZXR0aW5ncyAKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICA5N2VmNWE5Yi0yNTk5LTQyMjgtYmRjZS00N2NjZDFjZTcyMzMKICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICA7OyAoc2V0cSB0cmFtcC1k ZWZhdWx0LW1ldGhvZCAic3NoIgogIDs7ICAgICAgICAgdHJhbXAtZGVmYXVsdC11c2VyLWFsaXN0 ICcoKCJcXGBzdVxcKGRvXFwpP1xcJyIgbmlsICJyb290IikpCiAgOzsgICAgICAgICB0cmFtcC1h ZGItcHJvZ3JhbSAiYWRiIgogIDs7ICAgICAgICAgOzsgdXNlIHRoZSBzZXR0aW5ncyBpbiB+Ly5z c2gvY29uZmlnIGluc3RlYWQgb2YgVHJhbXAncwogIDs7ICAgICAgICAgdHJhbXAtdXNlLXNzaC1j b250cm9sbWFzdGVyLW9wdGlvbnMgbmlsCiAgOzsgICAgICAgICBiYWNrdXAtZW5hYmxlLXByZWRp Y2F0ZQogIDs7ICAgICAgICAgKGxhbWJkYSAobmFtZSkKICA7OyAgICAgICAgICAgKGFuZCAobm9y bWFsLWJhY2t1cC1lbmFibGUtcHJlZGljYXRlIG5hbWUpCiAgOzsgICAgICAgICAgICAgICAgKG5v dCAobGV0ICgobWV0aG9kIChmaWxlLXJlbW90ZS1wIG5hbWUgJ21ldGhvZCkpKQogIDs7ICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoc3RyaW5ncCBtZXRob2QpCiAgOzsgICAgICAgICAgICAg ICAgICAgICAgICAgKG1lbWJlciBtZXRob2QgJygic3UiICJzdWRvIikpKSkpKSkpCiMrRU5EX1NS QwoqKiogdXNlIHN1ZG8gd2l0aCBzc2gKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA2 ZDI3YmViYy1hMjY3LTRlMDEtYjhmMS1lYzVmNzQ3OGExNDUKICAgIDpFTkQ6Cmh0dHA6Ly9tb2xs ZXJtYXJhLmNvbS90YWdzL3Byb2R1Y3Rpdml0eS8KCkl04oCZcyBldmVuIHBvc3NpYmxlIHRvIHJl bW90ZWx5IGVkaXQgZmlsZXMgYXMgcm9vdCB1c2luZyAvc3VkbzpzZXJ2ZXI6L3BhdGgvdG8vZmls ZSwgYWx0aG91Z2ggdGhpcyBkb2VzbuKAmXQgd29yayBvdXQgb2YgdGhlIGJveC4gWW914oCZbGwg bmVlZCB0byBhZGQgdGhpcyB0byB5b3VyIC5lbWFjcwoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQogIDs7IChhZGQtdG8tbGlzdCAndHJhbXAtZGVmYXVsdC1wcm94aWVzLWFs aXN0IAogIDs7ICAgICAgJygoYW5kIChzdHJpbmctbWF0Y2ggc3lzdGVtLW5hbWUgCiAgOzsgICAg ICAgICAgICAgICAgICAgKHRyYW1wLWZpbGUtbmFtZS1ob3N0IChjYXIgdGFyZ2V0LWFsaXN0KSkp CiAgOzsgICAgICAgICAgICAgIlRISVNTSE9VTERORVZFUk1BVENIIikKICA7OyAgICAgICAgIlxc YHJvb3RcXCciICIvc3NoOiVoOiIpKQojK0VORF9TUkMKClRoaXMgYWxsb3dzIHlvdSB0byBzdWRv IGludG8gcmVtb3RlIHNlcnZlcnMsIGJ1dCBhbHNvIHByZXZlbnRzIGl0IGZyb20gaW50ZXJmZXJp bmcgd2l0aCBzdWRvaW5nIGxvY2FsbHkuCgoqKiBFZGl0aW5nCiAgIDpQUk9QRVJUSUVTOgogICA6 SUQ6ICAgICAgIDJkNmQyYTk2LWZiYmEtNDFhMC05NWJhLTcwZjAyMjhmYjZiNAogICA6RU5EOgoq Kiogc3BlbGxpbmcKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4YzA1ODc4NS1kZTM2 LTQyMGYtOTA5YS04M2M2OWU0ODQ3YmYKICAgIDpFTkQ6CiMrYmVnaW5fc3JjIGVtYWNzLWxpc3Ag cmVzdWx0cyBub25lCjtTcGVsbGluZwooYXV0b2xvYWQgJ2ZseXNwZWxsLW1vZGUgImZseXNwZWxs IiAiT24tdGhlLWZseSBzcGVsbGluZyBjaGVja2VyLiIgdCkKKGF1dG9sb2FkICdmbHlzcGVsbC1k ZWxheS1jb21tYW5kICJmbHlzcGVsbCIgIkRlbGF5IG9uIGNvbW1hbmQuIiB0KQooYXV0b2xvYWQg J3RleC1tb2RlLWZseXNwZWxsLXZlcmlmeSAiZmx5c3BlbGwiICIiIHQpIAoKCihkZWZ1biBmbHlz cGVsbC1jaGVjay1uZXh0LWhpZ2hsaWdodGVkLXdvcmQgKCkKICAiY3VzdG9tIGZ1bmN0aW9uIHRv IHNwZWxsIGNoZWNrIG5leHQgaGlnaGxpZ2h0ZWQgd29yZCIKICAoaW50ZXJhY3RpdmUpCiAgKGZs eXNwZWxsLWdvdG8tbmV4dC1lcnJvcikKICAoaXNwZWxsLXdvcmQpCiAgKQoKOzsgc2tpcCBvcmcg bW9kZSBibG9ja3MgCjs7O2h0dHA6Ly9lbWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMv NDUwL2ludGVsbGlnZW50LXNwZWxsLWNoZWNraW5nLWluLW9yZy1tb2RlCihhZGQtdG8tbGlzdCAn aXNwZWxsLXNraXAtcmVnaW9uLWFsaXN0ICcoIjpcXChQUk9QRVJUSUVTXFx8TE9HQk9PS1xcKToi IC4gIjpFTkQ6IikpCihhZGQtdG8tbGlzdCAnaXNwZWxsLXNraXAtcmVnaW9uLWFsaXN0ICcoIiNc XCtCRUdJTl9TUkMiIC4gIiNcXCtFTkRfU1JDIikpCgojK2VuZF9zcmMKCiMrUkVTVUxUUzoKOiAo KCNcK0JFR0lOX1NSQyAuICNcK0VORF9TUkMpICg6XChQUk9QRVJUSUVTXHxMT0dCT09LXCk6IC4g OkVORDopICgjXCtiZWdpbl9zcmMgLiAjXCtlbmRfc3JjKSAoaXNwZWxsLXdvcmRzLWtleXdvcmQg Zm9yd2FyZC1saW5lKSAoaXNwZWxsLWRpY3Rpb25hcnkta2V5d29yZCBmb3J3YXJkLWxpbmUpIChp c3BlbGwtcGRpY3Qta2V5d29yZCBmb3J3YXJkLWxpbmUpIChpc3BlbGwtcGFyc2luZy1rZXl3b3Jk IGZvcndhcmQtbGluZSkgKF4tLS0qQkVHSU4gUEdQIFtBLVogXSotLSogLiBeLS0tKkVORCBQR1Ag W0EtWiBdKi0tKikgKF5iZWdpbiBbMC05XVswLTldWzAtOV0gW14gCV0rJCAuIAo6IGVuZAo6ICkg KF4lIVBTLUFkb2JlLVsxMjNdLjAgLiAKOiAlJUVPRgo6ICkgKF4tLS0qIFwoU3RhcnQgb2YgXCk/ W0ZmXW9yd2FyZGVkIFtNbV1lc3NhZ2UgLiBeLS0tKiBFbmQgb2YgW0ZmXW9yd2FyZGVkIFtNbV1l c3NhZ2UpIChcKC0tK1x8XytcfFwoL1x3XHxcKFwoXHdcfFstX11cKStbLjpAXVwpXClcKFx3XHxb LV9dXCkqXChbLjovQF0rXChcd1x8Wy1ffj0/Jl1cKStcKStcKSkpCioqKiBPdmVyd3JpdGUgc2Vs ZWN0ZWQgdGV4dCAod29yZCBsaWtlKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDU4 YTUwNjEyLTFlMjItNDdmZi05NDA3LWRhNTk5YWRkYzQyMgogICAgOkVORDoKaHR0cDovL3ByYWdt YXRpY2VtYWNzLmNvbS9lbWFjcy9vdmVyd3JpdGUtc2VsZWN0ZWQtdGV4dC8KCkJ5IGRlZmF1bHQs IGlmIHlvdSBoaWdobGlnaHQgdGV4dCBpbiBFbWFjcyBhbmQgdGhlbiBzdGFydCB0eXBpbmcsIHRo ZSBoaWdobGlnaHRlZCB0ZXh0IGlzIG5vdCBvdmVyd3JpdHRlbiBhcyBpbiBtYW55IG90aGVyIGVk aXRvcnMuCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsgb3ZlcndyaXRl IHNlbGVjdGVkIHRleHQKKGRlbGV0ZS1zZWxlY3Rpb24tbW9kZSB0KQojK0VORF9TUkMKCioqKiB3 YXJuIG9uIGxhcmdlIGZpbGVzCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMWM0OWZl ZTktMjI0OS00YjkwLTgzZDUtOWQwYjJjMzkwOWUyCiAgICA6RU5EOgpzZXQgY3VycmVudGx5IHRv IDEwMG1iCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7OyB3YXJuIHdoZW4g b3BlbmluZyBmaWxlcyBiaWdnZXIgdGhhbiAxMDBNQgooc2V0cSBsYXJnZS1maWxlLXdhcm5pbmct dGhyZXNob2xkIDEwMDAwMDAwMCkKIytFTkRfU1JDCioqIHN5c3RlbSBjbGlwIAoqKiogU2F2ZSB3 aGF0ZXZlcuKAmXMgaW4gdGhlIGN1cnJlbnQgKHN5c3RlbSkgY2xpcGJvYXJkIGJlZm9yZQojK0JF R0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCjs7IFNhdmUgd2hhdGV2ZXLigJlzIGlu IHRoZSBjdXJyZW50IChzeXN0ZW0pIGNsaXBib2FyZCBiZWZvcmUKOzsgcmVwbGFjaW5nIGl0IHdp dGggdGhlIEVtYWNz4oCZIHRleHQuCjs7IGh0dHBzOi8vZ2l0aHViLmNvbS9kYWtyb25lL2Vvcy9i bG9iL21hc3Rlci9lb3Mub3JnCihzZXRxIHNhdmUtaW50ZXJwcm9ncmFtLXBhc3RlLWJlZm9yZS1r aWxsIHQpCiMrRU5EX1NSQwoqIGxvb2sgYW5kIGZlZWwKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAg ICAgIDkxZDE4NTMwLTNiZTctNGIzNC05ODM3LTgyYTg4MjEzODM0YwogIDpFTkQ6CioqIHdpbmRv d3MgcG9wdXAgYW5kIHBvc2l0aW9uIChkaXNwbGF5LWJ1ZmZlci1hbGlzdCkKICAgOlBST1BFUlRJ RVM6CiAgIDpJRDogICAgICAgMWVkMmYyZmEtOWYzMy00NmJhLWIyMWEtZDVlYmJjZTE1MjBiCiAg IDpFTkQ6CmV4YW1wbGUgZnJvbTogaHR0cDovL3d3dy5sdW5hcnlvcm4uY29tL3Bvc3RzL3RoZS1w b3dlci1vZi1kaXNwbGF5LWJ1ZmZlci1hbGlzdC5odG1sCiMrQkVHSU5fRVhBTVBMRQooYWRkLXRv LWxpc3QgJ2Rpc3BsYXktYnVmZmVyLWFsaXN0CiAgICAgICAgICAgICAnKCJcXCpzaGVsbFxcKiIK ICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgZGlzcGxheS1idWZmZXItaW4tcHJldmlv dXMtd2luZG93CiAgICAgICAgICAgICAgICBkaXNwbGF5LWJ1ZmZlci1iZWxvdy1zZWxlY3RlZAog ICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAocmV1c2FibGUtZnJhbWVzKQogICAgICAg ICAgICAgICAod2luZG93LWhlaWdodCAuIDE1KQogICAgICAgICAgICAgICAod2luZG93LXdpZHRo IC4gNjApKSkKIytFTkRfRVhBTVBMRQoKCioqKiBtYWtlIGhlbHAgYnVmZmVyIG9wZW4gaW4gY3Vy cmVudCB3aW5kb3cKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBkMDNkYmQzYS1hMjVl LTQ3ODYtYWRhZS02ODliYTAyYjJlN2UKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdkaXNwbGF5LWJ1ZmZlci1hbGlzdAogICAgICAg ICAgICAgJygiKkhlbHAqIiBkaXNwbGF5LWJ1ZmZlci1zYW1lLXdpbmRvdykpCiMrRU5EX1NSQwoq KiogaGlkZSBzcGVjaWZpYyBkaXJlZCBwb3Agd2luZG93cyAKICMrQkVHSU5fU1JDIGVtYWNzLWxp c3AgIDpyZXN1bHRzIG5vbmUKKGFkZC10by1saXN0ICdkaXNwbGF5LWJ1ZmZlci1hbGlzdCAoY29u cyAiXFwqQXN5bmMgU2hlbGwgQ29tbWFuZFxcKi4qIiAoY29ucyAjJ2Rpc3BsYXktYnVmZmVyLW5v LXdpbmRvdyBuaWwpKSkKCihhZGQtdG8tbGlzdCAnZGlzcGxheS1idWZmZXItYWxpc3QgKGNvbnMg IlxcKlJ1bm5lciBPdXRwdXRcXCouKiIgKGNvbnMgIydkaXNwbGF5LWJ1ZmZlci1uby13aW5kb3cg bmlsKSkpCgogIytFTkRfU1JDCioqKiBzdXBwcmVzcyBzcGVjaWZpYyB3aW5kb3dzIGZyb20gcG9w cGluZyB1cCAoaGlkZSBzcGVjaWZpYyBidWZmZXJzKQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6 ICAgICAgIDBjOTkyMGJkLTFjNjEtNDMzYy04YTUxLTg5ZjQ1OTA4OTZlMAogICAgOkVORDoKCiBo dHRwOi8vbWJvcmsucGwvMjAxNi0wNC0xMl9TaG93aW5nX3NvbWVfb2ZfdGhvc2VfQXN5bmNfU2hl bGxfQ29tbWFuZF9idWZmZXJzCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9u ZQogICA7OyAoYWRkLXRvLWxpc3QgJ2Rpc3BsYXktYnVmZmVyLWFsaXN0ICcoIl4qQXN5bmMgU2hl bGwgQ29tbWFuZCoiIC4gKGRpc3BsYXktYnVmZmVyLW5vLXdpbmRvdykpKQoKICAgOzsgKGRlZnVu IGFzeW5jLXNoZWxsLWRpc3BhdGNoIChvcmlnLWZ1biBjb21tYW5kICZvcHRpb25hbCBvdXRwdXQt YnVmZmVyIGVycm9yLWJ1ZmZlcikKICAgOzsgICAiSWYgT1VUUFVULUJVRkZFUiBpcyAnKDQpIChp LmUuLCBDLXUpLCB0ZW1wb3JhcmlseSB0dXJuIG9mZgogICA7OyBibG9ja2luZyBvZiBkaXNwbGF5 aW5nIHRoZSBvdXRwdXQtYnVmZmVyLiIKICAgOzsgICAoaWYgKGVxdWFsIG91dHB1dC1idWZmZXIg Jyg0KSkKICAgOzsgICAgICAgKGxldCAoKGRpc3BsYXktYnVmZmVyLWFsaXN0CiAgIDs7ICAgICAg ICAgICAgICAocmVtb3ZlICcoIl4qQXN5bmMgU2hlbGwgQ29tbWFuZCoiIC4gKGRpc3BsYXktYnVm ZmVyLW5vLXdpbmRvdykpIGRpc3BsYXktYnVmZmVyLWFsaXN0KSkpCiAgIDs7ICAgICAgICAgKGZ1 bmNhbGwgb3JpZy1mdW4gY29tbWFuZCBuaWwgZXJyb3ItYnVmZmVyKSkKICAgOzsgICAgIChmdW5j YWxsIG9yaWctZnVuIGNvbW1hbmQgb3V0cHV0LWJ1ZmZlciBlcnJvci1idWZmZXIpKSkKCiAgIDs7 IChhZHZpY2UtYWRkICdhc3luYy1zaGVsbC1jb21tYW5kIDphcm91bmQgJ2FzeW5jLXNoZWxsLWRp c3BhdGNoKQogIytFTkRfU1JDCgoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKICAgOzsgKGFkZC10by1saXN0ICdkaXNwbGF5LWJ1ZmZlci1hbGlzdCAnKCJeU2hlbGwgQ29t bWFuZCBPdXRwdXQqIiAuIChkaXNwbGF5LWJ1ZmZlci1uby13aW5kb3cpKSkKCiAgIDs7IChkZWZ1 biBhc3luYy1zaGVsbC1kaXNwYXRjaC1vdXQgKG9yaWctZnVuIGNvbW1hbmQgJm9wdGlvbmFsIG91 dHB1dC1idWZmZXIgZXJyb3ItYnVmZmVyKQogICA7OyAgICJJZiBPVVRQVVQtQlVGRkVSIGlzICco NCkgKGkuZS4sIEMtdSksIHRlbXBvcmFyaWx5IHR1cm4gb2ZmCiAgIDs7IGJsb2NraW5nIG9mIGRp c3BsYXlpbmcgdGhlIG91dHB1dC1idWZmZXIuIgogICA7OyAgIChpZiAoZXF1YWwgb3V0cHV0LWJ1 ZmZlciAnKDQpKQogICA7OyAgICAgICAobGV0ICgoZGlzcGxheS1idWZmZXItYWxpc3QKICAgOzsg ICAgICAgICAgICAgIChyZW1vdmUgJygiXipTaGVsbCBDb21tYW5kIE91dHB1dCoiIC4gKGRpc3Bs YXktYnVmZmVyLW5vLXdpbmRvdykpIGRpc3BsYXktYnVmZmVyLWFsaXN0KSkpCiAgIDs7ICAgICAg ICAgKGZ1bmNhbGwgb3JpZy1mdW4gY29tbWFuZCBuaWwgZXJyb3ItYnVmZmVyKSkKICAgOzsgICAg IChmdW5jYWxsIG9yaWctZnVuIGNvbW1hbmQgb3V0cHV0LWJ1ZmZlciBlcnJvci1idWZmZXIpKSkK CiAgIDs7IChhZHZpY2UtYWRkICdhc3luYy1zaGVsbC1jb21tYW5kIDphcm91bmQgJ2FzeW5jLXNo ZWxsLWRpc3BhdGNoLW91dCkKICMrRU5EX1NSQwoKCgoKCioqIEJhc2UKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgNzk5YjQ3MmItYTRkOS00OWI5LThlYWItYWI4MzZjMDYwZmZjCiAgIDpF TkQ6CgojK2JlZ2luX3NyYyBlbWFjcy1saXNwIHJlc3VsdHMgbm9uZQo7OyBSZW1vdmUgc3BsYXNo IHNjcmVlbgooc2V0cSBpbmhpYml0LXNwbGFzaC1zY3JlZW4gdCkKCjs7IHRyYW5zaWVudCBtb2Rl LWltcG9ydG5hdCEKKHRyYW5zaWVudC1tYXJrLW1vZGUgMSkKCjs7d2lubmVyIG1vZGUgYnkgZGVm LWFsdXQKCjttIHVzZSBDLWMgPGxlZnQ+IHRvIHJlc3RvcmUgdGhlIHByZXZpb3VzIHdpbmRvdyBj b25maWd1cmF0aW9uCih3aW5uZXItbW9kZSAxKQoKOyBzeW50YXggaGlnaGxpZ2h0aW5nIGV2ZXJ5 d2hlcmUKKGdsb2JhbC1mb250LWxvY2stbW9kZSAxKQoKOzsgYWZ0ZXIgY29weSBDdHJsK2MgaW4g TGludXggWDExLCB5b3UgY2FuIHBhc3RlIGJ5IGB5YW5rJyBpbiBlbWFjcwooc2V0cSB4LXNlbGVj dC1lbmFibGUtY2xpcGJvYXJkIHQpCgo7OyBhZnRlciBtb3VzZSBzZWxlY3Rpb24gaW4gWDExLCB5 b3UgY2FuIHBhc3RlIGJ5IGB5YW5rJyBpbiBlbWFjcwooc2V0cSB4LXNlbGVjdC1lbmFibGUtcHJp bWFyeSB0KQoKOztwYXJlbiBtb2RlLSBzaG93IHZpc3VhbGx5IG1hdGNoaW5nIHBhcmVucwooc2hv dy1wYXJlbi1tb2RlIDEpCjtzaG93IGxpbmUgbnVtYmVycwooZ2xvYmFsLWxpbnVtLW1vZGUgMCkg OyBkaXNwbGF5IGxpbmUgbnVtYmVycyBpbiBtYXJnaW4uIEVtYWNzIDIzIG9ubHkKCjt2aXN1YWwg bGluZQooZ2xvYmFsLXZpc3VhbC1saW5lLW1vZGUgMSkgOyAxIGZvciBvbiwgMCBmb3Igb2ZmLgoK OzsgZG9uJ3Qgc2hvdyB0ZXh0IGluIHNjcmF0Y2ggYnVmZmVyCihzZXRxIGluaXRpYWwtc2NyYXRj aC1tZXNzYWdlIG5pbCkKCjsgQWRkIHdvcmQgd3JhcHBpbmcvd3JhcCwgbWF5IGNhdXNlIGxpbmVz IHRvIGJlIHRvIHNob3J0IGlmIGVuYWJsZWQKOyhnbG9iYWwtdmlzdWFsLWxpbmUtbW9kZSB0KQoo c2V0cSBsaW5lLW1vdmUtdmlzdWFsIG5pbCkKCgo7O2Rpc2FibGUgdG9vbHRpcHMKKHRvb2x0aXAt bW9kZSAtMSkKCiMrZW5kX3NyYwoKIytSRVNVTFRTOgoKKiogc3RhcnQgbWF4aW1pemVkCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDU2MzYwMjVkLTNjYTktNDRjZC05NWYxLTVmNDgxNzYw NGVkMwogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKO1N0YXJ0 IG1heGltaXplZCwgcGxlYXNlCihjdXN0b20tc2V0LXZhcmlhYmxlcwogJyhpbml0aWFsLWZyYW1l LWFsaXN0IChxdW90ZSAoKGZ1bGxzY3JlZW4gLiBtYXhpbWl6ZWQpKSkpKSA7OyBzdGFydCBtYXhp bWl6ZWQKCiMrRU5EX1NSQwoqKiBzY3JvbGwKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAg MTE1YThkOGYtZTI2Yy00YWFlLThkN2EtOThmZTZkODJlZTg1CiAgIDpFTkQ6CiMrQkVHSU5fU1JD IGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBzY3JvbGwtbWFyZ2luIDMKICAgICAgc2Ny b2xsLWNvbnNlcnZhdGl2ZWx5IDEwMQogICAgICBzY3JvbGwtdXAtYWdncmVzc2l2ZWx5IDAuMDEK ICAgICAgc2Nyb2xsLWRvd24tYWdncmVzc2l2ZWx5IDAuMDEKICAgICAgc2Nyb2xsLXByZXNlcnZl LXNjcmVlbi1wb3NpdGlvbiB0CiAgICAgIGF1dG8td2luZG93LXZzY3JvbGwgbmlsCiAgICAgIGhz Y3JvbGwtbWFyZ2luIDUKICAgICAgaHNjcm9sbC1zdGVwIDUpCiMrRU5EX1NSQwoqKiB0b29sYmFy cwogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA3YTJkMDM0Yy1jOWNhLTRhYjItODU0YS04 NjViZDQwZWM3MDcKICAgOkVORDoKdHVybiBvbiBvZmYgdG9vbGJhcnMgd2l0aCBpY29ucwoxIHRv IHN3aXRjaCBvbiBhbmQgLTEgdG8gc3dpdGNoIG9mZgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKKHRvb2wtYmFyLW1vZGUgLTEpCiMrRU5EX1NSQwoqKiBtb3VzZSBhbmQgY3Vy c29yCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIDc0ZTY0YzRhLTg5ZTctNDM4MS1hNGNi LTFlNzE1OWE1MWJjMAogICA6RU5EOgoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBu b25lCihzZXRxIG1vdXNlLXdoZWVsLXNjcm9sbC1hbW91bnQgJygxICgoc2hpZnQpIC4gMSkpKSA7 OyBvbmUgbGluZSBhdCBhIHRpbWUKCihzZXRxIG1vdXNlLXdoZWVsLXByb2dyZXNzaXZlLXNwZWVk IG5pbCkgOzsgZG9uJ3QgYWNjZWxlcmF0ZSBzY3JvbGxpbmcKCihzZXRxIG1vdXNlLXdoZWVsLWZv bGxvdy1tb3VzZSAndCkgOzsgc2Nyb2xsIHdpbmRvdyB1bmRlciBtb3VzZQoKO21ha2UgY3Vyc29y IGJsaW5rICh1c2UgLTEgdG8gZGlzYWJsZSk6CihibGluay1jdXJzb3ItbW9kZSAtMSkKCjs7S2Vl cCB0aGUgY3Vyc29yIHN0ZWFkeSB3aGVuIHNjcm9sbGluZwooc2V0cSBzY3JvbGwtcHJlc2VydmUt c2NyZWVuLXBvc2l0aW9uIHQpCjtGb2N1cyBGb2xsb3dzIE1vdXNlCihzZXRxIG1vdXNlLWF1dG9z ZWxlY3Qtd2luZG93IHQpCgoKIytFTkRfU1JDCioqIE1lbnVzCiAgIDpQUk9QRVJUSUVTOgogICA6 SUQ6ICAgICAgIGM5NjgzNmQ4LTZjMzEtNGNlMi04NGIxLWVmZjM5MDU1NDdlNgogICA6RU5EOgoq KiogQWRkIGxhbmd1YWdlIHN3aXRjaGluZyBtZW51CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgZWE0YjVhYzQtNjdjZS00MmRiLWFiZmEtYTJlZmM5MWI5OTIzCiAgICA6RU5EOgogCiMr YmVnaW5fc3JjIGVtYWNzLWxpc3AgcmVzdWx0cyBub25lCihkZWZpbmUta2V5LWFmdGVyIGdsb2Jh bC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2Rlc10gCiAgKGNvbnMgIkxhbmd1YWdlIE1vZGVz IiAobWFrZS1zcGFyc2Uta2V5bWFwICJtYWpvciBtb2RlcyIpKSAna2lsbC1idWZmZXIgKQoKKGRl ZmluZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1vZGVzIGJhc2hdICcoIkJh c2giIC4gc2gtbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFu Zy1tb2RlcyBvcmddICcoIk9yZyIgLiBvcmctbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAg W21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyB0Y2xdICcoIlRDTCIgLiB0Y2wtbW9kZSkpCihkZWZp bmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBydWJ5XSAnKCJSdWJ5 IiAuIHJ1YnktbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFu Zy1tb2RlcyBweXRob25dICcoIlB5dGhvbiIgLiBweXRob24tbW9kZSkpCihkZWZpbmUta2V5IGds b2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBwaHBdICcoIlBIUCIgLiBwaHAtbW9k ZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBwZXJs XSAnKCJQZXJsIiAuIGNwZXJsLW1vZGUpKQooZGVmaW5lLWtleSBnbG9iYWwtbWFwIFttZW51LWJh ciBmaWxlIGxhbmctbW9kZXMgc2VwYXJhdG9yMV0gJygiLS0iKSkKKGRlZmluZS1rZXkgZ2xvYmFs LW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1vZGVzIGhhc2tlbGxdICcoIkhhc2tlbGwiIC4gaGFz a2VsbC1tb2RlKSkKKGRlZmluZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1v ZGVzIG9jYW1sXSAnKCJPQ2FtbCIgLiB0dWFyZWctbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1t YXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBlbGlzcF0gJygiRW1hY3MgTGlzcCIgLiBlbWFj cy1saXNwLW1vZGUpKQooZGVmaW5lLWtleSBnbG9iYWwtbWFwIFttZW51LWJhciBmaWxlIGxhbmct bW9kZXMgc2VwYXJhdG9yMl0gJygiLS0iKSkKKGRlZmluZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1i YXIgZmlsZSBsYW5nLW1vZGVzIGxhdGV4XSAnKCJMYVRlWCIgLiBsYXRleC1tb2RlKSkKKGRlZmlu ZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1vZGVzIGpzXSAnKCJKYXZhc2Ny aXB0IiAuIGpzMi1tb2RlKSkKKGRlZmluZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1iYXIgZmlsZSBs YW5nLW1vZGVzIHhtbF0gJygiWE1MICh4bWwtbW9kZSkiIC4geG1sLW1vZGUpKQooZGVmaW5lLWtl eSBnbG9iYWwtbWFwIFttZW51LWJhciBmaWxlIGxhbmctbW9kZXMgbnhtbF0gJygiWE1MIChueG1s LW1vZGUpIiAuIG54bWwtbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZp bGUgbGFuZy1tb2RlcyBodG1sXSAnKCJIVE1MIiAuIGh0bWwtbW9kZSkpCihkZWZpbmUta2V5IGds b2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBodG1saGVscGVyXSAnKCJIVE1MICho dG1sLWhlbHBlci1tb2RlKSIgLiBodG1sLWhlbHBlci1tb2RlKSkKKGRlZmluZS1rZXkgZ2xvYmFs LW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1vZGVzIGNzc10gJygiQ1NTIiAuIGNzcy1tb2RlKSkK KGRlZmluZS1rZXkgZ2xvYmFsLW1hcCBbbWVudS1iYXIgZmlsZSBsYW5nLW1vZGVzIHNlcGFyYXRv cjNdICcoIi0tIikpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1t b2RlcyBqYXZhXSAnKCJKYXZhIiAuIGphdmEtbW9kZSkpCihkZWZpbmUta2V5IGdsb2JhbC1tYXAg W21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBjKytdICcoIkMrKyIgLiBjKystbW9kZSkpCihkZWZp bmUta2V5IGdsb2JhbC1tYXAgW21lbnUtYmFyIGZpbGUgbGFuZy1tb2RlcyBjXSAnKCJDIiAuIGMt bW9kZSkpCiMrZW5kX3NyYwoKKioqIEFkZCB6ZWx0YWsgbWVudQogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIDk3NmZiNjBiLTgxN2MtNGMxMS05YWYwLTk1M2Y0ZTcwNmYyMAogICAgOkVO RDoKIAojK2JlZ2luX3NyYyBlbWFjcy1saXNwIHJlc3VsdHMgbm9uZQogIDs7IChlYXN5LW1lbnUt ZGVmaW5lIHptZW51IGdsb2JhbC1tYXAgInpnbG9iYWwtbWVudSIKICA7OyAgICcoInpnbG9iYWwi CiAgICAgICAKICA7OyAoIlByb2dyYW1zIiA7OyBzdWJtZW51CiAgOzsgICAgICAgIFsiIiAgKGRq Y2ItdGVybS1zdGFydC1vci1zd2l0Y2ggIm11dHQiIHQpXQogIDs7ICAgICAgICBbIm1jIiAgICAo ZGpjYi10ZXJtLXN0YXJ0LW9yLXN3aXRjaCAibWMiIHQpXQogIDs7ICAgICAgICBbImh0b3AiICAo ZGpjYi10ZXJtLXN0YXJ0LW9yLXN3aXRjaCAiaHRvcCIgdCldCiAgOzsgICAgICAgIFsiaW90b3Ai IChkamNiLXRlcm0tc3RhcnQtb3Itc3dpdGNoICJpb3RvcCIgdCldKQogICAgCiAgOzsgICAgICA7 OyBodHRwOi8vZW1hY3MtZnUuYmxvZ3Nwb3QuY29tLzIwMDkvMDMvbWF0aC1mb3JtdWxhZS1pbi13 ZWJwYWdlcy5odG1sCiAgOzsgICAgICA7OyB0aGlzIHN1Ym1lbnUgaXMgb25seSB2aXNpYmxlIHdo ZW4gaW4gb3JnLS1tb2RlCiAgOzsgICAgICAoIk9yZyIgIDp2aXNpYmxlIChvciAoc3RyaW5nPSBt YWpvci1tb2RlICJvcmctbW9kZSIpIChzdHJpbmc9IG1ham9yLW1vZGUgIm9yZy1tb2RlIikpCiAg OzsgICAgICAgIFsiSW5zZXJ0IGZvcm11bGEiICAgdGV4ZHJpdmUtaW5zZXJ0LWZvcm11bGEgOmhl bHAgIkluc2VydCBzb21lIGZvcm11bGEiXQogIDs7ICAgICAgICBbIkdlbmVyYXRlIGltYWdlcyIg IHRleGRyaXZlLWdlbmVyYXRlLWltYWdlcyA6aGVscCAiKFJlKWdlbmVyYXRlIHRoZSBpbWFnZXMg Zm9yIHRoZSBmb3JtdWxhZSJdKQogICAgICAgCiAgOzsgICAgICA7OyBodHRwOi8vZW1hY3MtZnUu YmxvZ3Nwb3QuY29tLzIwMDkvMDMvdHdpdHRlci5odG1sCiAgOzsgICAgICAoIlR3aXR0ZXIiIDs7 IHN1Ym1lbnUKICA7OyAgICAgICAgWyJWaWV3IGZyaWVuZHMiIHR3aXR0ZXItZ2V0LWZyaWVuZHMt dGltZWxpbmVdCiAgOzsgICAgICAgIFsiV2hhdCBhcmUgeW91IGRvaW5nPyIgdHdpdHRlci1zdGF0 dXMtZWRpdF0pCiAgCiAgOzsgICAgICAoIk1pc2MiICA7OyBzdWJtZW51CiAgOzsgICAgICAgIDs7 IGh0dHA6Ly9lbWFjcy1mdS5ibG9nc3BvdC5jb20vMjAwOS8wMS9jb3VudGluZy13b3Jkcy5odG1s CiAgOzsgICAgICAgIFsiQ291bnQgd29yZHMiIGRqY2ItY291bnQtd29yZHNdCiAgCiAgOzsgICAg ICAgIDs7aHR0cDovL2VtYWNzLWZ1LmJsb2dzcG90LmNvbS8yMDA4LzEyL3Nob3dpbmctbGluZS1u dW1iZXJzLmh0bWwKICA7OyAgICAgICAgWyJTaG93L2hpZGUgbGluZSBudW1iZXJzIiBsaW51bV0K ICAKICA7OyAgICAgICAgOzsgaHR0cDovL2VtYWNzLWZ1LmJsb2dzcG90LmNvbS8yMDA4LzEyL3J1 bm5pbmctZW1hY3MtaW4tZnVsbC1zY3JlZW4tbW9kZS5odG1sCiAgOzsgICAgICAgIFsiVG9nZ2xl IGZ1bGwtc2NyZWVuIiBkamNiLWZ1bGxzY3JlZW4tdG9nZ2xlXSkpKQogIAogIChlYXN5LW1lbnUt ZGVmaW5lIHpvcmcgb3JnLW1vZGUtbWFwICJ6b3JnLW1lbnUiCiAgICAnKCJ6b3JnIgogICAgICAg OzsgaHR0cDovL2VtYWNzLWZ1LmJsb2dzcG90LmNvbS8yMDA4LzEyL3J1bm5pbmctY29uc29sZS1w cm9ncmFtcy1pbnNpZGUtZW1hY3MuaHRtbAogICAgICAgKCJpbWFnZXMiIDs7IHN1Ym1lbnUKICAg ICAgICAgWyJvcmcgdG9nZ2xlIGlubGluZSIgIChvcmctdG9nZ2xlLWlubGluZS1pbWFnZXMgdCld CiAgICAgICAgIFsibWMiICAgIChmdW4xICB0KV0KICAgICAgICAgWyJodG9wIiAgKGZ1bjIgIHQp XQogICAgICAgICBbImlvdG9wIiAoZnVuMyAgdCldKQogICAgICAgCiAgICAgICA7OyBodHRwOi8v ZW1hY3MtZnUuYmxvZ3Nwb3QuY29tLzIwMDkvMDMvdHdpdHRlci5odG1sCiAgICAgICAoIlR3aXR0 ZXIiIDs7IHN1Ym1lbnUKICAgICAgICAgWyJWaWV3IGZyaWVuZHMiIHR3aXR0ZXItZ2V0LWZyaWVu ZHMtdGltZWxpbmVdCiAgICAgICAgIFsiV2hhdCBhcmUgeW91IGRvaW5nPyIgdHdpdHRlci1zdGF0 dXMtZWRpdF0pCiAgCiAgICAgICAoIk1pc2MiICA7OyBzdWJtZW51CiAgICAgICAgIDs7IGh0dHA6 Ly9lbWFjcy1mdS5ibG9nc3BvdC5jb20vMjAwOS8wMS9jb3VudGluZy13b3Jkcy5odG1sCiAgICAg ICAgIFsiQ291bnQgd29yZHMiIGRqY2ItY291bnQtd29yZHNdCiAgCiAgICAgICAgIDs7aHR0cDov L2VtYWNzLWZ1LmJsb2dzcG90LmNvbS8yMDA4LzEyL3Nob3dpbmctbGluZS1udW1iZXJzLmh0bWwK ICAgICAgICAgWyJTaG93L2hpZGUgbGluZSBudW1iZXJzIiBsaW51bV0KICAKICAgICAgICAgOzsg aHR0cDovL2VtYWNzLWZ1LmJsb2dzcG90LmNvbS8yMDA4LzEyL3J1bm5pbmctZW1hY3MtaW4tZnVs bC1zY3JlZW4tbW9kZS5odG1sCiAgICAgICAgIFsiVG9nZ2xlIGZ1bGwtc2NyZWVuIiBkamNiLWZ1 bGxzY3JlZW4tdG9nZ2xlXSkpKQogIAogIAojK2VuZF9zcmMKCioqIFRoZW1lIGFuZCBjb2xvcnMK ICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgODEyZTIzNDAtMjBmZi00Y2MwLWIxZTQtYTcw MzI4ZjVmNjY4CiAgIDpFTkQ6CioqKiBkaXNhYmxlIGFuc3dlcmluZyB5ZXMgdG8gInVuc2FmZSIg dGhlbWVzIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGRlYzBlYjBkLWMxMGEtNDEz MC1hOGYyLThiNzk1NjJiNWQyZgogICAgOkVORDoKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAooc2V0 cSBjdXN0b20tc2FmZS10aGVtZXMgdCkgICAgCiMrZW5kX3NyYwoqKiogY2hhbmdlIGJhY2tncm91 bmQgYmFzZWQgb24gZmlsZSB0eXBlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZTY4 ZDc1NTMtZWE1NS00ZTE3LWIwZTYtODI1MGIxNGIwY2I4CiAgICA6RU5EOgojK2JlZ2luX3NyYyBl bWFjcy1saXNwIHJlc3VsdHMgbm9uZQoKOzsgc2FtcGxlIGNvZGUgZm9yIHNldHRpbmcgYSBiYWNr Z3JvdW5kIGNvbG9yIGRlcGVuZGluZyBvbiBmaWxlIG5hbWUgZXh0ZW5zaW9uCgo7IChkZWZ1biBt eS1zZXQtdGhlbWUtb24tbW9kZSAoKQo7ICAgInNldCBiYWNrZ3JvdW5kIGNvbG9yIGRlcGVuZGlu ZyBvbiBmaWxlIHN1ZmZpeCIKOyAgIChpbnRlcmFjdGl2ZSkKOyAgIChsZXQgKChmaWxlTmFtZVN1 ZmZpeCAoZmlsZS1uYW1lLWV4dGVuc2lvbiAoYnVmZmVyLWZpbGUtbmFtZSkgKSApKQo7ICAgICAo Y29uZAo7ICAgICAgKChzdHJpbmc9IGZpbGVOYW1lU3VmZml4ICJweSIgKSAoc2V0LWJhY2tncm91 bmQtY29sb3IgImhvbmV5ZGV3IikpCjsgICAgICAoKHN0cmluZz0gZmlsZU5hbWVTdWZmaXggInR4 dCIgKSAoc2V0LWJhY2tncm91bmQtY29sb3IgImNvcm5zaWxrIikpCjsgICAgICAodCAobWVzc2Fn ZSAiJXMiICJubyBtYXRjaCBmb3VuZCIpKQo7ICAgICAgKQo7ICAgICApKQo7CjsgKGFkZC1ob29r ICdmaW5kLWZpbGUtaG9vayAnbXktc2V0LXRoZW1lLW9uLW1vZGUpCiMrZW5kX3NyYwoKKiogRXZp bCBtb2RlIGxvb2sgYW5kIGZlZWwKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMjM5NGFj OGMtZTc2Zi00MmQ1LWIxNDMtNzFjMGU5MDRmNjc5CiAgIDpFTkQ6CioqKiBDdXJzb3IgY29sb3Jz IGJ5IHN0YXRlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMGYwMzlkMjctOTVkMS00 MzFmLWI4MjctYWM1ZDI1NDAzNGMxCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpy ZXN1bHRzIG5vbmUKO2NvbG9yIGluIGVtYWNzIG1vZGUKKHNldHEgZXZpbC1lbWFjcy1zdGF0ZS1j dXJzb3IgJygiY3lhbiIgYm94KSkKO25vbXJhbCBzdGF0ZSBtb2RlCihzZXRxIGV2aWwtbm9ybWFs LXN0YXRlLWN1cnNvciAnKCJyZWQiIGJveCkpCjt2aXN1YWwgc3RhdGUgbW9kZQooc2V0cSBldmls LXZpc3VhbC1zdGF0ZS1jdXJzb3IgJygib3JhbmdlIiBib3gpKQo7aW5zZXQgc3RhdGUgbW9kZQoo c2V0cSBldmlsLWluc2VydC1zdGF0ZS1jdXJzb3IgJygiZ3JlZW4iIGJveCkpCihzZXRxIGV2aWwt cmVwbGFjZS1zdGF0ZS1jdXJzb3IgJygiZ3JlZW4iIGJveCkpCihzZXRxIGV2aWwtb3BlcmF0b3It c3RhdGUtY3Vyc29yICcoImdyZWVuIiBob2xsb3cpKQoKIytFTkRfU1JDCioqIHdoaXRlc3BhY2Ug CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKHNldHEtZGVmYXVsdCBzaG93 LXRyYWlsaW5nLXdoaXRlc3BhY2UgbmlsKQojK0VORF9TUkMKKiogc3ludGF4IGhpZ2hsaWdodGlu ZwoqKiogYWRkIG9mZmxpbmVpbWFwcmMgc3ludGF4CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCiA7OyAub2ZmbGluZWltYXByYyBpcyBhIHVuaXggY29uZiBmaWxlCiAoYWRk LXRvLWxpc3QgJ2F1dG8tbW9kZS1hbGlzdCAnKCJcXC5vZmZsaW5laW1hcHJjIiAuIGNvbmYtbW9k ZSkpCiAjK0VORF9TUkMKCiogRGlyZWQKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAgICAgIDYzODYy YTNlLTViMDUtNDI0ZC05YTM5LTJjZWI3ODVkMjhmYwogIDpFTkQ6CioqIG1haW4gb3B0aW9ucyAK ICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYjkyNmFhNDAtMmMzOS00YmQ2LTgyMWYtNWJi NTEwNmUwZjlhCiAgIDpFTkQ6CioqKiBTb3J0IERpcmVjdG9yaWVzIEZpcnN0CiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgMjIxOTVlMTQtNTRkZi00ODExLWIxMTYtMTI0MGJjYjU1MTc4 CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzsgTWFrZSBz aXplcyBodW1hbi1yZWFkYWJsZSBieSBkZWZhdWx0LCBzb3J0IHZlcnNpb24gbnVtYmVycwo7OyBj b3JyZWN0bHksIGFuZCBwdXQgZG90ZmlsZXMgYW5kIGNhcGl0YWwtbGV0dGVycyBmaXJzdC4KKHNl dHEtZGVmYXVsdCBkaXJlZC1saXN0aW5nLXN3aXRjaGVzICItYWxodiAtLWdyb3VwLWRpcmVjdG9y aWVzLWZpcnN0ICIpCgojK0VORF9TUkMKKioqIEF1dG8gZ3Vlc3MgdGFyZ2V0CiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgNGVhZDYwZjgtNGQzZS00MWU2LWJkMmMtZDk3Y2I0MmE4YzM2 CiAgICA6RU5EOgpTZXQgdGhpcyB2YXJpYWJsZSB0byBub24tbmlsLCBEaXJlZCB3aWxsIHRyeSB0 byBndWVzcyBhIGRlZmF1bHQgdGFyZ2V0IGRpcmVjdG9yeS4gVGhpcyBtZWFuczogaWYgdGhlcmUg aXMgYSBkaXJlZCBidWZmZXIgZGlzcGxheWVkIGluIHRoZSBuZXh0IHdpbmRvdywgdXNlIGl0cyBj dXJyZW50IHN1YmRpciwgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBzdWJkaXIgb2YgdGhpcyBkaXJl ZCBidWZmZXIuIFRoZSB0YXJnZXQgaXMgdXNlZCBpbiB0aGUgcHJvbXB0IGZvciBmaWxlIGNvcHks IHJlbmFtZSBldGMuCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBk aXJlZC1kd2ltLXRhcmdldCB0KQojK0VORF9TUkMKKioqIEFsd2F5cyBSZWN1cnNpb24KICAgIDpQ Uk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4ZmU3NmY2Ny0xMjFlLTQzZjMtYjc3NC1lMTU1MDVl NWY2NDkKICAgIDpFTkQ6CkFsd2F5cyByZWN1cnNpdmVseSBkZWxldGUgZGlyZWN0b3J5CiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooc2V0cSBkaXJlZC1yZWN1cnNpdmUtZGVs ZXRlcyAnYWx3YXlzKTsg4oCcYWx3YXlz4oCdIG1lYW5zIG5vIGFza2luZwo7QWx3YXlzIHJlY3Vy c2l2ZWx5IGNvcHkgZGlyZWN0b3J5Cjsoc2V0cSBkaXJlZC1yZWN1cnNpdmUtY29waWVzICd0b3Ap IDsg4oCcdG9w4oCdIG1lYW5zIGFzayBvbmNlCihzZXRxIGRpcmVkLXJlY3Vyc2l2ZS1jb3BpZXMg J2Fsd2F5cykgOyBuZXZlciBhc2sKCiMrRU5EX1NSQwoKKioqIGRpcmVkIGZpbmQKICAgIDpQUk9Q RVJUSUVTOgogICAgOklEOiAgICAgICA0YWJmZTk4YS0yNDM3LTQyMTItOTg0ZS1jYTBkNThkNWM2 MDIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoocmVxdWly ZSAnZmluZC1kaXJlZCkKKHNldHEgZmluZC1scy1vcHRpb24gJygiLXByaW50MCB8IHhhcmdzIC0w IGxzIC1sZCIgLiAiLWxkIikpCiMrRU5EX1NSQwoqKiogQXV0by1yZWZyZXNoIGRpcmVkIG9uIGZp bGUgY2hhbmdlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMWYyMTlkZGItYmIyMC00 NTlhLWI0ZTEtOWRjNWU3MzYxMTQ5CiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCjs7IEF1dG8tcmVmcmVzaCBkaXJlZCBvbiBmaWxlIGNoYW5nZQooYWRkLWhv b2sgJ2RpcmVkLW1vZGUtaG9vayAnYXV0by1yZXZlcnQtbW9kZSkKOzsgQXV0byByZWZyZXNoIGRp cmVkLCBidXQgYmUgcXVpZXQgYWJvdXQgaXQKKHNldHEgZ2xvYmFsLWF1dG8tcmV2ZXJ0LW5vbi1m aWxlLWJ1ZmZlcnMgdCkKKHNldHEgYXV0by1yZXZlcnQtdmVyYm9zZSBuaWwpCiMrRU5EX1NSQwoq KiogZGlyZWQgc3luYyBmb3IgZXh0ZXJuYWwgY29tbWFuZHMKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICA4OGY0Y2Y0Ny1lZGFiLTRiYzQtODUwMS1mMzA3NjczODJjODgKICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsgQWxsb3cgcnVubmluZyBt dWx0aXBsZSBhc3luYyBjb21tYW5kcyBzaW11bHRhbmVvdXNseQooZGVmYWR2aWNlIHNoZWxsLWNv bW1hbmQgKGFmdGVyIHNoZWxsLWluLW5ldy1idWZmZXIgKGNvbW1hbmQgJm9wdGlvbmFsIG91dHB1 dC1idWZmZXIgZXJyb3ItYnVmZmVyKSkKICAod2hlbiAoZ2V0LWJ1ZmZlciAiKkFzeW5jIFNoZWxs IENvbW1hbmQqIikKICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICIqQXN5bmMgU2hlbGwgQ29tbWFu ZCoiCiAgICAgIChyZW5hbWUtdW5pcXVlbHkpKSkpCihhZC1hY3RpdmF0ZSAnc2hlbGwtY29tbWFu ZCkKIytFTkRfU1JDCioqIGRpcmVkIG9taXQgCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAg IGFmZDc5ODdlLTBlYjctNGY2Ni04OGY1LWM3OGI1NzM0MmE2NwogICA6RU5EOgpPbWl0dGluZyBh IGZpbGUgbWVhbnMgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgZGlyZWN0b3J5IGxpc3RpbmcuIE9taXR0 aW5nIGlzIHVzZWZ1bCBmb3Iga2VlcGluZyBEaXJlZCBidWZmZXJzIGZyZWUgb2Yg4oCcdW5pbnRl cmVzdGluZ+KAnSBmaWxlcyAoZm9yIGluc3RhbmNlLCBhdXRvLXNhdmUsIGF1eGlsaWFyeSwgYmFj a3VwLCBhbmQgcmV2aXNpb24gY29udHJvbCBmaWxlcykgc28gdGhhdCB0aGUgdXNlciBjYW4gY29u Y2VudHJhdGUgb24gdGhlIGludGVyZXN0aW5nIGZpbGVzLgpUbyBhY3RpdmF0ZSBpdCwgYWRkIHRo aXMgdG8geW91ciAuZW1hY3MKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoo c2V0cS1kZWZhdWx0IGRpcmVkLW9taXQtbW9kZSB0KQooc2V0cS1kZWZhdWx0IGRpcmVkLW9taXQt dmVyYm9zZSBuaWwpCiMrRU5EX1NSQwoKVG8gdG9nZ2xlIHRoZSBtb2RlLCBiaW5kIGl0IHRvIGEg a2V5c3Ryb2tlIHRoYXQgeW91IGxpa2UKCihkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQg IkMtbyIpICdkaXJlZC1vbWl0LW1vZGUpCgpkaXJlZC1vbWl0LWZpbGVzIGNvbnRhaW5zIHRoZSBy ZWdleCBvZiB0aGUgZmlsZXMgdG8gaGlkZSBpbiBEaXJlZCBNb2RlLiBGb3IgZXhhbXBsZSwgaWYg eW91IHdhbnQgdG8gaGlkZSB0aGUgZmlsZXMgdGhhdCBiZWdpbiB3aXRoIC4gYW5kICMsIHNldCB0 aGF0IHZhcmlhYmxlIGxpa2UgdGhpcwoKKHNldHEtZGVmYXVsdCBkaXJlZC1vbWl0LWZpbGVzICJe XFwuPyNcXHxeXFwuJFxcfF5cXC5cXC4kXFx8XlxcLiIpCgpUaGUgdmFyaWFibGUgZGlyZWQtb21p dC1leHRlbnNpb25zIGhvbGRzIHRoZSBsaXN0IG9mIGFsbCBmaWxlIGV4dGVuc2lvbnMgdG8gaGlk ZSBpbiBEaXJlZCBPbWl0IE1vZGUuIFlvdSBjYW4gbW9kaWZ5IHRoZSBsaXN0IHRvIGFkZCBtb3Jl IGZpbGUgZXh0ZW5zaW9ucyB0byBoaWRlIG9yIHJlbW92ZSB0aGUgb25lcyB0aGF0IHlvdSB3b3Vs ZCBsaWtlIHRvIHNob3cuCgooYWRkLXRvLWxpc3QgJ2RpcmVkLW9taXQtZXh0ZW5zaW9uICIuZXhh bXBsZSIpCihkZWxldGUgJ2RpcmVkLW9taXQtZXh0ZW5zaW9uICIuZXhhbXBsZSIpCgoqKiogc3Rh cnQgYW5kIHRvZ2dsZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGIxMzQ0N2EyLTFl MzItNDhlNC04N2E0LTA1YTUwYzFhN2JlMgogICAgOkVORDoKQE5vdGU6IElmIHlvdSBhcmUgdXNp bmcgRGlyZWQgT21pdCBNb2RlIHdpdGggZGlyZWQrLCByZW1lbWJlciB0byBwdXQgdGhlIGNvbmZp ZyBvZiBEaXJlZCBPbWl0IE1vZGUgYmVmb3JlIGxvYWRpbmcgKHJlcXVpcmUpIGRpcmVkKyBzaW5j ZSBzb21lIGZlYXR1cmUgb2YgZGlyZWQrIHVzZSB0aGUgY29uZmlnIGZyb20gRGlyZWQgT21pdCBN b2RlIChmb3IgZXhhbXBsZSBmb3IgZGlzcGxheWluZyB0aGUgZmlsZSBuYW1lcykuQAojK0JFR0lO X1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKO1RvIGFjdGl2YXRlIGl0LCBhZGQgdGhpcyB0 byB5b3VyIC5lbWFjcwooc2V0cS1kZWZhdWx0IGRpcmVkLW9taXQtbW9kZSB0KQo7VG8gdG9nZ2xl IHRoZSBtb2RlLCBiaW5kIGl0IHRvIGEga2V5c3Ryb2tlIHRoYXQgeW91IGxpa2UKKGRlZmluZS1r ZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAiQy1vIikgJ2RpcmVkLW9taXQtbW9kZSkKIytFTkRfU1JD CgoqKiB3ZGlyZWQgbW9kZQogICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICBmYWU0ODY5Ny1i MGZjLTRhMWEtYTFmOC0yZGFmOTMzMDI2YTUKICAgOkVORDoKIWNoZWNrIHdoeSBtYXBwaW5nIHRh YiBkb2Vzbid0IHdvcmsgYW5kIGtpbGxzIEVtYWNzIHN0YXJ0dXAhCmZ1bmN0aW9ucyB0byBnZXQg dGFiIGV0YyB0byB3b3JrIAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihk ZWZ1biBteS1tYXJrLWZpbGUtbmFtZS1mb3ItcmVuYW1lICgpCiAgICAiTWFyayBmaWxlIG5hbWUg b24gY3VycmVudCBsaW5lIGV4Y2VwdCBpdHMgZXh0ZW5zaW9uIgogICAgKGludGVyYWN0aXZlKQoK ICAgIDs7IGdldCB0aGUgZmlsZSBmaWxlIG5hbWUgZmlyc3QKICAgIDs7IGZ1bGwtbmFtZTogZnVs bCBmaWxlIG5hbWUKICAgIDs7IGV4dGVuc2lvbjogZXh0ZW5zaW9uIG9mIHRoZSBmaWxlCiAgICA7 OyBiYXNlLW5hbWU6IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgogICAgKGxldCAoKGZ1bGwt bmFtZSAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSAoZGlyZWQtZ2V0LWZpbGVuYW1lKSkpCiAgICAg ICAgICBleHRlbnNpb24gYmFzZS1uYW1lKQogICAgICAKICAgICAgOzsgY2hlY2sgaWYgaXQncyBh IGRpciBvciBhIGZpbGUKICAgICAgOzsgVE9ETyBub3QgdXNlIGlmLCB1c2Ugc3dpdGNoIGNhc2Ug Y2hlY2sgZm9yIHN5bWxpbmsKICAgICAgKGlmIChmaWxlLWRpcmVjdG9yeS1wIGZ1bGwtbmFtZSkK ICAgICAgICAgIChwcm9nbgogICAgICAgICAgICA7OyBpZiBmaWxlIG5hbWUgaXMgZGlyZWN0b3J5 LCBtYXJrIGZpbGUgbmFtZSBzaG91bGQgbWFyayB0aGUgd2hvbGUKICAgICAgICAgICAgOzsgZmls ZSBuYW1lCiAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgJ2VuZC1vZi1saW5lKSA7bW92 ZSB0aGUgZW5kIG9mIGxpbmUKICAgICAgICAgICAgKGJhY2t3YXJkLWNoYXIgKGxlbmd0aCBmdWxs LW5hbWUpKSA7YmFjayB0byB0aGUgYmVnaW5uaW5nCiAgICAgICAgICAgIChzZXQtbWFyayAocG9p bnQpKQogICAgICAgICAgICAoZm9yd2FyZC1jaGFyIChsZW5ndGggZnVsbC1uYW1lKSkpCiAgICAg ICAgKHByb2duCiAgICAgICAgICA7OyBpZiBjdXJyZW50IGZpbGUgaXMgYSBmaWxlLCBtYXJrIGZp bGUgbmFtZSBtYXJrIG9ubHkgdGhlIGJhc2UgbmFtZSwKICAgICAgICAgIDs7IGV4Y2x1ZGUgdGhl IGV4dGVuc2lvbgogICAgICAgICAgKHNldHEgZXh0ZW5zaW9uIChmaWxlLW5hbWUtZXh0ZW5zaW9u IGZ1bGwtbmFtZSkpCiAgICAgICAgICAoc2V0cSBiYXNlLW5hbWUgKGZpbGUtbmFtZS1zYW5zLWV4 dGVuc2lvbiBmdWxsLW5hbWUpKQogICAgICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnZW5kLW9m LWxpbmUpCiAgICAgICAgICAoYmFja3dhcmQtY2hhciAobGVuZ3RoIGZ1bGwtbmFtZSkpCiAgICAg ICAgICAoc2V0LW1hcmsgKHBvaW50KSkKICAgICAgICAgIChmb3J3YXJkLWNoYXIgKGxlbmd0aCBi YXNlLW5hbWUpKSkpKSkKCiAgKGRlZnVuIG15LW1hcmstZmlsZS1uYW1lLWZvcndhcmQgKCkKICAg ICJNYXJrIGZpbGUgbmFtZSBvbiB0aGUgbmV4dCBsaW5lIgogICAgKGludGVyYWN0aXZlKQogICAg KGRlYWN0aXZhdGUtbWFyaykKICAgIChuZXh0LWxpbmUpCiAgICAobXktbWFyay1maWxlLW5hbWUt Zm9yLXJlbmFtZSkpCgogIChkZWZ1biBteS1tYXJrLWZpbGUtbmFtZS1iYWNrd2FyZCAoKQogICAg Ik1hcmsgZmlsZSBuYW1lIG9uIHRoZSBuZXh0IGxpbmUiCiAgICAoaW50ZXJhY3RpdmUpCiAgICAo ZGVhY3RpdmF0ZS1tYXJrKQogICAgKHByZXZpb3VzLWxpbmUpCiAgICAobXktbWFyay1maWxlLW5h bWUtZm9yLXJlbmFtZSkpCgojK0VORF9TUkMKCiROb3RlLWlmIHlvdSBzZWUgc3Rhcm5nZSBiZWhp dm91ciB0aGlzIG1heWJlIGEgY3VscHJpdCQgIAojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1 bHRzIG5vbmUKICA7OyAoZXZhbC1hZnRlci1sb2FkICd3ZGlyZWQKICA7OyAgIChwcm9nbgogIDs7 ICAgICAoZGVmaW5lLWtleSB3ZGlyZWQtbW9kZS1tYXAgKGtiZCAiZCIpICdteS1tYXJrLWZpbGUt bmFtZS1mb3J3YXJkKSkKIytFTkRfU1JDCioqIGFyY2hpdmUgZmlsZXMKICAgOlBST1BFUlRJRVM6 CiAgIDpJRDogICAgICAgNzM2MGFhNDMtNjMzZC00ZTA0LWI2NmYtNzBkYzdkY2Q1YTI3CiAgIDpF TkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7OyBIYW5kbGUgemlwIGNv bXByZXNzaW9uCihldmFsLWFmdGVyLWxvYWQgImRpcmVkLWF1eCIKICAnKGFkZC10by1saXN0ICdk aXJlZC1jb21wcmVzcy1maWxlLXN1ZmZpeGVzCiAgICAgICAgICAgICAgICAnKCJcXC56aXBcXCci ICIuemlwIiAidW56aXAiKSkpCiMrRU5EX1NSQwoqKiBuYXZpZ2F0ZQogICA6UFJPUEVSVElFUzoK ICAgOklEOiAgICAgICA5YzViYjM1NC03NmYxLTRiNzQtOGIwYS1hYmU5NjEyYjljYjkKICAgOkVO RDoKKioqIGF1dG8gb3Blbi9lbnRlciBmaWxlL2RpciBpbiBpc2VhcmNoCiAgICA6UFJPUEVSVElF UzoKICAgIDpJRDogICAgICAgZGJiOTkxMWEtNDVmMC00NjdhLTliNDgtNDIwMmIyODlhYzViCiAg ICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKICA7OyAoYWRkLWhv b2sgJ2lzZWFyY2gtbW9kZS1lbmQtaG9vayAKICA7OyAgIChsYW1iZGEgKCkKICA7OyAgICAgKHdo ZW4gKGFuZCAoZXEgbWFqb3ItbW9kZSAnZGlyZWQtbW9kZSkKICA7OyAgICAgICAgICAgIChub3Qg aXNlYXJjaC1tb2RlLWVuZC1ob29rLXF1aXQpKQogIDs7ICAgICAgIChkaXJlZC1maW5kLWZpbGUp KSkpCiMrRU5EX1NSQwoKKioga2V5YmluZHMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAg NDlkNDc5NmItMDczNC00NTdiLWEzYTktMDYzNzMyZTFhOWJkCiAgIDpFTkQ6CiAjK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChr YmQgIjxsZWZ0PiIpICdkaXJlZHAtdXAtZGlyZWN0b3J5LXJldXNlLWRpci1idWZmZXIgKQo7IChk ZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQgIjxyaWdodD4iKSAnZGlyZWRwLWZpbmQtZmls ZS1yZXVzZS1kaXItYnVmZmVyICkKIChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQgIjxy aWdodD4iKSAnZGlyZWQtZmluZC1kaXJlY3RvcnkgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1t YXAgKGtiZCAiVEFCIikgJ2FjZS13aW5kb3cgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAg KGtiZCAiUy1SRVQiKSAnZGlyZWQtb3Blbi1pbi1leHRlcm5hbC1hcHAgKQo7OyAoZGVmaW5lLWtl eSBkaXJlZC1tb2RlLW1hcCAoa2JkICIvIikgJ2lzZWFyY2gtcmVwZWF0LWZvcndhcmQgKQo7OyAo ZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICIvIikgJ2NvdW5zZWwtZ3JlcC1vci1zd2lw ZXIpCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICIvIikgJ2NvdW5zZWwtZmluZC1m aWxlKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAiUy0uIikgJ2hlbG0tZGlyZWQt cmVjZW50LWRpcnMtdmlldyApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAiXFwi KSAnaHlkcmEtbGVhZGVyL2JvZHkgICApCjsgKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGti ZCAgIlxcIikgJ2h5ZHJhLWNoZC1kaXJlZC9ib2R5ICkKIChkZWZpbmUta2V5IGRpcmVkLW1vZGUt bWFwIChrYmQgICJgIikgJ2h5ZHJhLWRpcmVkLWxlYWRlci9ib2R5ICkKIChkZWZpbmUta2V5IGRp cmVkLW1vZGUtbWFwIChrYmQgICI8ZjE+IikgJ2RpcmVkLWRvLWFzeW5jLXNoZWxsLWNvbW1hbmQg ICApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAiPGYyPiIpICdkaXJlZC1lZmFw ICAgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgIjxmMz4iKSAnZGlyZWQtdmll dy1maWxlICAgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgIjxmNT4iKSAnZGly ZWQtZG8tY29weSAgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgIjxmNj4iKSAn ZGlyZWQtZG8tcmVuYW1lICApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAiPGY3 PiIpICdkaXJlZC1jcmVhdGUtZGlyZWN0b3J5ICApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1h cCAoa2JkICAiPGY5PiIpICd6L2RpcmVkLXNoZWxsLW90aGVyLXdpbmRvdyAgKQogKGRlZmluZS1r ZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgInkiKSAndGRhL3JzeW5jLW11bHRpcGxlLW1hcmstZmls ZSApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAicCIpICd0ZGEvcnN5bmMtbXVs dGlwbGUgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgInMiKSAnaHlkcmEtZGly ZWQtc29ydC9ib2R5ICkKIChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQgICI8Qy1yZXR1 cm4+IikgJ3ovZGlyZWQteGRnLW9wZW4gKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGti ZCAgIjxDLWE+IikgJ2RpcmVkLW1hcmstc3ViZGlyLWZpbGVzICkKIChkZWZpbmUta2V5IGRpcmVk LW1vZGUtbWFwIChrYmQgICJTLTxmMT4iKSAnaHlkcmEtdG9nZ2xlcy9ib2R5ICApCiAoZGVmaW5l LWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAiUy08ZjM+IikgJ2h5ZHJhLXNwZWxsL2JvZHkgICkK IChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQgICJTLTxmND4iKSAnaHlkcmEtb3JnLWJs b2Nrcy9ib2R5ICApCiAoZGVmaW5lLWtleSBkaXJlZC1tb2RlLW1hcCAoa2JkICAiUy08ZjU+Iikg J2h5ZHJhLW11NGUvYm9keSAgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGtiZCAgIlMt PGY2PiIpICdoeWRyYS1iaWIvYm9keSAgKQogKGRlZmluZS1rZXkgZGlyZWQtbW9kZS1tYXAgKGti ZCAgIlMtPGY5PiIpICdoeWRyYS1vcmcvYm9keSAgKQo7OzsgZm9yIGltYWdlIGRpcmVkIHRvIGRl bGV0ZSBwaG90b3MgdXNpbmcgJ2QnCiAoZGVmaW5lLWtleSBpbWFnZS1tb2RlLW1hcCAoa2JkICAi ZCIpICd6L2RlbGV0ZS1jdXJyZW50LWZpbGUgICkKICMrRU5EX1NSQwoKKiogaHlkcmEgCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGE2YWJlMTQwLTViMDEtNGE4NS1iYTc5LWI2MWYyMTVj NTY2MgogICA6RU5EOgoqKiogZGlyZWQgbGVhZGVyCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgNjRlZTQ3MzEtODhmYi00N2FiLWJiYjYtOTNlYzA1M2YyNDlmCiAgICA6RU5EOgoKICMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogICAgKGdsb2JhbC1zZXQta2V5CiAg ICAgICAoa2JkICIiKQogICAgKGRlZmh5ZHJhIGh5ZHJhLWRpcmVkLWxlYWRlciAgKDpjb2xvciBi bHVlICA6Y29sdW1ucyA0IDpoaW50cyBuaWwpCiIKCiIKICAgICgiMSIgaHlkcmEtZGlyZWQtY29w eS9ib2R5ICJjb3B5IG9wZXJhdGlvcyIgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICApCiAgICAoIjIi ICB6L2RpcmVkLXNoZWxsLXNzaGZzLXFuYXAgInNzaCBxbmFwIiApCiAgICAoIjMiIGh5ZHJhLWRp cmVkLW9wZXJhdGlvbnMvYm9keSAiZGlyZWQgb3BlcmF0aW9ucyIgKQogICAgKCI0IiBoeWRyYS1k aXJlZC1zZWFyY2hlcy9ib2R5ICJkaXJlZCBzZWFyY2hlcyIgKSAgKCIvIiBkaXJlZC10b2dnbGUt c3VkbyAgImRpcmVkIHRvZ2dsZSBzdWRvIiA6ZmFjZSAnaHlkcmEtZmFjZS1yZWQgKSAKIAogICAg KCI8ZjE+IiBoeWRyYS1jaGVhdHNoZWV0LWRpcmVkL2JvZHkgICJ0b2dnbGUgZGlyZWQgY2hlYXRz aGVldCIgKSAKICAgICgiPGY0PiIgZGlyZWRwLXRvZ2dsZS1maW5kLWZpbGUtcmV1c2UtZGlyICAi dG9nZ2xlIHJlc3VlIGRpcmVkIiApIAogICAgKCI8Zjk+IiB6L2RpcmVkLW9wZW4taW4tdGVybSAg ICAib3BlbiB0ZXJtaW5hdG9yIiApIAogICAgKCI9IiB6L3RyYW5zcG9zZS1idWZmZXJzICAidHJh bnNwb3NlLWJ1ZmZlcnMiICkgCiAgIAogICAgKCJhIiBkaXJlZC1tYXJrLXN1YmRpci1maWxlcyAi bWFyayBhbGwiICkKICAgICgiYiIgei9kaXJlZC1zaGVsbC1vdGhlci13aW5kb3ctYmVldHMgICJi ZWV0IGltcG9ydCIgKSAKICAgICgiQiIgei9kaXJlZC1zaGVsbC1vdGhlci13aW5kb3ctYmVldHMt c2luZ2xlICAiYmVldCBpbXBvcnQiICkgCiAgOyAgKCJCIiAoZXhlY3V0ZS1rYmQtbWFjcm8gKHN5 bWJvbC1mdW5jdGlvbiAnei9kaXJlZC1tYWNyby1iZWV0aW1wKSkgICJiZWV0IGltcG9ydCBCQUNL R1JPVU5EIiApIAogICAgKCJkIiAgei9kaXJlZC1zaGVsbC1uY2R1ICAibmNkdSIgKSAKICAgICgi YyIgei9kaXJlZC1jb3B5LXNldGRpcnMgImNvcHkgdG8gZGlycyIgIDpmYWNlICdoeWRyYS1mYWNl LXJlZCApCiAgICAoIkMiIHovZGlyZWQtY29weS1zZXRkaXJzLXJlY3VycyAiY29weSB0byBkaXJz LVJFQ1VSU0UiICAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICApCiAgICAoImUiICB6L2RpcmVkLW1l ZGlhLWZpbGVib3QgImZpbGVib3QiICAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICApCiAgICAoImYi IHovZGlyZWQtc2hlbGwtZmIgImZiIiApCiAgICAoImkiIHBlZXAtZGlyZWQgInBlZWsgKHNob3cp IGltYWdlcyBldGMgaW4gb3RoZXIgcGFuZWwiICkKICAgICgibCIgZGlyZWRwLWxpc3QtbWFya2Vk ICJsaXN0IG1hcmtlZCBpbiBidWZmZXIiICkKICAgICgiTCIgZGlyZWRwLWxpc3QtbWFya2VkLXJl Y3Vyc2l2ZSAibGlzdCBtYXJrZWQgaW4gYnVmZmVyIFJFQ1VSU0lWTFkiICkKICAgICgibSIgei9k aXJlZC1tb3ZlLXNldGRpcnMgICJtb3ZlIHRvIGRpcnMiICAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVk ICApICAgICAgICAgICAgCiAgICAoIk0iIHovZGlyZWQtbW92ZS1zZXRkaXJzLXJlY3VycyAgICJt b3ZlIHRvIGRpcnMtUkVDVVJTRSIgICA6ZmFjZSAnaHlkcmEtZmFjZS1yZWQgICkgICAgICAgICAg ICAKICAgICgidiIgei9kaXJlZC1jb3B5LXJzeW5jICAgInJzeW5jIGNvcHkiICAgOmZhY2UgJ2h5 ZHJhLWZhY2UtcmVkICApICAgICAgICAgICAgCiAgICAoInoiIGRpcmVkLWZpbHRlci1sb2FkLXNh dmVkLWZpbHRlcnMgImxvYWQgZmlsdGVyIikKICAgICgiWiIgaHlkcmEtZGlyZWQtZmlsdGVyL2Jv ZHkgImZpbHRlciBtZW51IikKICAgICgiaCIgIG5pbCApCiAgICAoIm8iIHovZGlyZWQtb3Blbi1p bi1kZXNrdG9wICJvcGVuIHdpdGggRk0iICkKICAgICgicyIgZGlyZWQtZG8tc3ltbGluayAgICJz b3J0IG1lbnUiICkKICAgICgibiIgIHovZGlyZWQtZ2V0LXNpemUgImdldCBzaXplIiApCiAgICAo InIiIHdkaXJlZC1jaGFuZ2UtdG8td2RpcmVkLW1vZGUgIndkaXJlZCAoYmF0aCByZW5hbWUpIiAp CiAgICAoIlIiIHovb3Blbi10aGlzLWZpbGUtYXMtb3RoZXItdXNlciAib3BlbiBhcyBST09UIG9y IFVTRVIiICkKICAgICgidSIgIGRpcmVkZmQtZG8tdW5wYWNrICJ1bnBhY2siICAgOmZhY2UgJ2h5 ZHJhLWZhY2UtYnJvd24gICkKICA7ICgiVSIgIHovZGlyZWQtYXJjaGl2ZS11bnJhciAidW5yYXIi IDpmYWNlICdoeWRyYS1mYWNlLWJyb3duICkKICAgICgiVSIgIHovZGlyZWQtc2hlbGwtcGVhLWV4 dHJhY3QgInB6IHVucGFjayIgICA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biAgKQogICAgKCJwIiAg ZGlyZWRmZC1kby1wYWNrICAicGFjayIgOmZhY2UgJ2h5ZHJhLWZhY2UtYnJvd24gKQogICAgKCJQ IiAgei9kaXJlZC1zaGVsbC1wZWEtemlwICAicGVhIHppcCBwYWNrIiA6ZmFjZSAnaHlkcmEtZmFj ZS1icm93biApCiAgICAoIlkiICBkaXJlZC1yYW5nZXItY29weSAiY29weTJjbGlwIiApCiAgICAo IlAiICBkaXJlZC1yYW5nZXItcGFzdGUgInBhc3RlX0ZfY2xpcCIpCiAgICAoIkQiIGRpcmVkLXJh bmdlci1tb3ZlICJtb3ZlMmNsaXAiKQogICAgKCJ4IiAgei9kaXJlZC1zaGVsbC1jaG1vZHggIit4 IiApCiAgICAoInIiICB3ZGlyZWQtY2hhbmdlLXRvLXdkaXJlZC1tb2RlICJ3ZGlyZWQgKGJhdGgg cmVuYW1lKSIgKQogICAgKCI7IiAgbmlsICkKICAgICgicSIgIG5pbCApCgogICAgKSkKICMrRU5E X1NSQwoKCgoqKiogZGlyZWQgZmlsdGVyIGFuZCBmaW5kIAogICAgOlBST1BFUlRJRVM6CiAgICA6 SUQ6ICAgICAgIDhhZTI3ZGY0LWJkYWQtNDY3ZC05MGMzLTkwYjQwNGYwZWRjNAogICAgOkVORDoK CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZoeWRyYSBoeWRyYS1k aXJlZC1maWx0ZXIgICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNSkKICAgICAgIgpG aWx0ZXIgYnk6CiAgICAgICIKICAgICAoImUiIGRpcmVkLWZpbHRlci1ieS1leHRlbnNpb24gICJl eHRlbnNpb24iICA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biApIAogICAgICgiciIgZGlyZWQtZmls dGVyLWJ5LXJlZ2V4cCAgInJlZ2V4IiA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biApIAogICAgICgi ZiIgZGlyZWQtZmlsdGVyLWJ5LWZpbGUgICJmaWxlIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtYnJvd24g KSAKICAgICAoIm4iIGRpcmVkLWZpbHRlci1ieS1uYW1lICAibmFtZSIgIDpmYWNlICdoeWRyYS1m YWNlLWJyb3duICkgCiAgICAgKCJTIiBkaXJlZC1maWx0ZXItc2F2ZS1maWx0ZXJzICAic2F2ZSBm aWx0ZXIiICkgCiAgICAgKCJsIiBkaXJlZC1maWx0ZXItbG9hZC1zYXZlZC1maWx0ZXJzICAibG9h ZCBmaWx0ZXIiICA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biApIAogICAgICgiTCIgZGlyZWQtZmls dGVyLWFkZC1zYXZlZC1maWx0ZXJzICJhZGQgb250b3AgZmlsdGVyIiAgOmZhY2UgJ2h5ZHJhLWZh Y2UtYnJvd24gKSAKICAgICAoInoiIGRpcmVkLWZpbHRlci1tb2RlICJ0b2dnbGUgKGNsZWFyKSBm aWx0ZXIiICA6ZmFjZSAnaHlkcmEtZmFjZS1icm93biApIAogICAgICgiZCIgZmluZC1uYW1lLWRp cmVkICAiZmluZCBmaWxlIGRpcmVkIiApIAogICAgICgiZyIgZmluZC1ncmVwLWRpcmVkICAiZmlu ZCBncmVwIGRpcmVkIiApIAogICAgICAoInEiIG5pbCAiY2FuY2VsIiBuaWwpCiApCiAjK0VORF9T UkMKCioqKiBkaXJlZC1vbWl0LW1vZGUKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBk OTgxNjY0My0yZmI1LTRhYzktYjllMi0xMDM1ZWI5ZDlkNDYKICAgIDpFTkQ6CgogIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAoZGVmaHlkcmEgaHlkcmEtZGlyZWQtY29uZmln cyAoOmNvbG9yIGJsdWUgKQogICAgICAiCiAgICAgICIKICAgICAoIm8iIGRpcmVkLW9taXQtbW9k ZSAgImRpcmVkIG9taXQiICkgCiAgICAgKCJ0IiBkaXJlZC1kZXRhaWxzLXRvZ2dsZSAgImRpcmVk IGRldGFpbHMiICkgCiAgICAgKCJ3IiB3ZGlyZWQtY2hhbmdlLXRvLXdkaXJlZC1tb2RlICAid2Rp cmVkIiApIAogICAgICAoInEiIG5pbCAiY2FuY2VsIiBuaWwpCiApCiAjK0VORF9TUkMKCmRpcmVk LW9taXQtbW9kZQoKCioqKiBkaXJlZCBvcGVyYXRpb25zCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgMjQ0MzhhN2ItMzIxYi00ZTQ5LWI3MmQtZjk4YmUxZjM1ZDNhCiAgICA6RU5EOgog IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAoZGVmaHlkcmEgaHlkcmEtZGly ZWQtb3BlcmF0aW9ucyAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29sdW1ucyA1KQogICAgICAi CkZpbHRlciBieToKICAgICAgIgogICAgICgibm0iIHovZGlyZWQtc2hlbGwtbm1hcC1obGFuICAi bm1hcCIgKSAKICAgICAoIm5zIiB6L2RpcmVkLXNoZWxsLW5ldHN0YXQgICJuZXRzdGF0IikgCiAg ICAgKCJvIiB6L2RlbC1ub25vcmctZmlsZXMgICJkZWxldGUgbm9uIG9yZyIgKSAKICAgICAoIm0i IHovZGlyZWQtbWVkaWEtaW5mbyAgIm1lZGlhLWluZm8iICkgCiAgICAgKCJjZCIgei9kaXJlZC1z aGVsbC1kb2MyZG9jeCAgImRvYzJkb2N4IiApIAogICAgICgiY3AiIHovZGlyZWQtc2hlbGwtcGRm MnRleHQgICJwZGYydGV4dCIgKSAKICAgICAoImlzIiB4YWgtZGlyZWQtc2NhbGUtaW1hZ2UgICJz Y2FsZSIgKSAKICAgICAoImljIiB4YWgtZGlyZWQtaW1hZ2UtYXV0b2Nyb3AgICJhdXRvY3JvcCIg KSAKICAgICAoImlqIiB4YWgtZGlyZWQtMmpwZyAgInRvLWpwZyIgKSAKICAgICAoImlwIiB4YWgt ZGlyZWQtMnBuZyAidG8tcG5nIiApIAogICAgICgidiIgIGRpcmVkLWRvLXZlcnNpb24gICJ2ZXJz aW9uIChjb3B5KSBmaWxlIiApIAogICAgICAoInEiIG5pbCAiY2FuY2VsIiBuaWwpCiApCiAjK0VO RF9TUkMKCgoqKiogZGlyZWQgY29weS1tb3ZlIAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAg ICAgIGE1OGExOTFiLTMzMjUtNGY4YS1iZDYwLWFmODk5M2FjYWRiMAogICAgOkVORDoKICMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGRlZmh5ZHJhIGh5ZHJhLWRpcmVkLWNv cHkgICg6Y29sb3IgYmx1ZSA6aGludCBuaWwgOmNvbHVtbnMgNSkKICAgICAgIgptb3ZlIChyZWQp IG9yIGNvcHkgKGdyZWVuKSB0bzoKICAgICAgIgogICAgICgiQiIgei9kaXJlZC1jb3B5LXRvLUJL ICAiQksiIDpmYWNlICdoeWRyYS1mYWNlLWdyZWVuICkgCiAgICAgKCJjIiB6L2RpcmVkLW1vdmUt dG8tY29taWNzICAiY29taWNzIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICkgCiAgICAgKCJoIiB6 L2RpcmVkLW1vdmUtdG8taG1lZGlhICAiaG1lZGlhIiAgOmZhY2UgJ2h5ZHJhLWZhY2UtcmVkICkg CiAgICAgKCJ0IiB6L2RpcmVkLW1vdmUtdG8tdHYgICAidHYiICA6ZmFjZSAnaHlkcmEtZmFjZS1y ZWQgKSAgCiAgICAgKCJrIiB6L2RpcmVkLW1vdmUtdG8tdHYta2lkcyAgICJ0di1raWRzIiAgOmZh Y2UgJ2h5ZHJhLWZhY2UtcmVkICkgIAogICAgICgibCIgei9kaXJlZC1tb3ZlLXRvLW1vdmllcy1r aWRzICAibW92aWVzLWtpZHMiICA6ZmFjZSAnaHlkcmEtZmFjZS1yZWQgKSAKICAgICAoInIiIHov ZGlyZWQtbW92ZS10by1tcmV2aWV3ICAibXJldmlldyIgIDpmYWNlICdoeWRyYS1mYWNlLXJlZCAp IAogICAgICgibSIgei9kaXJlZC1tb3ZlLXRvLW11c2ljICAibXVzaWMiICA6ZmFjZSAnaHlkcmEt ZmFjZS1yZWQgKSAKICAgICAoInYiIHovZGlyZWQtbW92ZS10by1tb3ZpZXMgICJtb3ZpZXMiICA6 ZmFjZSAnaHlkcmEtZmFjZS1yZWQgKSAKICAgICAgKCJxIiBuaWwgImNhbmNlbCIgbmlsKQogKQog IytFTkRfU1JDCioqKiBoeWRyYS1kaXJlZC1zb3J0CiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgMzhjYjQ4ZTktZTNmOS00OTlmLWFkMGItNzBlZWY3NmRiYTljCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoZGVmaHlkcmEgaHlkcmEtZGlyZWQt c29ydCAoOmNvbG9yIGJsdWUgOmhpbnQgbmlsIDpjb2x1bW5zIDUpCiAgICAgICIKc29ydGJ5Ogog ICAgICAiCiAgICAgKCJ0IiB6L2RpcmVkLXNvcnQtdGltZS10b2dnbGUgICJ0aW1lIiAgICkgCiAg ICAgKCJyIiB6L2RpcmVkLXNvcnQtdGltZS10b2dnbGUtcmV2ZXJzZSAidGltZS1SRVZFUlNFIiAg ICkgCiAgICAgKCJuIiB6L2RpcmVkLXNvcnQtbmFtZS10b2dnbGUgICJuYW1lIiAgICkgCiAgICAg KCJlIiB6L2RpcmVkLXNvcnQtZXh0ZW5zaW9uLXRvZ2dsZSAgImV4dGVuc2lvbiIgICApIAogICAg ICgicyIgei9kaXJlZC1zb3J0LXNpemUtdG9nZ2xlICAic2l6ZSIgICApIAogICAgICgiaCIgaHlk cmEtZGlyZWQtcXVpY2stc29ydC9ib2R5ICAicXVpYy1zb3J0LW1lbnUiICAgKSAKICAgICAoIngi IHovZGlyZWQtc29ydC1tZW51ICAieGhhIHNvcnQgbWVudSIgICApIAogICAgICAoInEiIG5pbCAi Y2FuY2VsIiBuaWwpCiApCiMrRU5EX1NSQwoKKioqIHovaHlkcmEtY2hlYXRzaGVldC1kaXJlZC1i b2R5CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGRlZmh5ZHJhIGh5ZHJh LWNoZWF0c2hlZXQtZGlyZWQgKDpjb2xvciBibHVlICA6Y29sdW1ucyA1KQoiCk1hcmtpbmcgYW5k IFVubWFya2luZyBGaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQptYXJrIGZpbGVzIHdpdGggYSBnaXZl biBleHRlbnNpb24g44CQKiAu44CRCm1hcmsgYWxsIGRpcmVjdG9yaWVzIOOAkCogL+OAkQppbnZl cnQgbWFya2luZyDjgJB044CRCm1hcmsgYWxsICBmaWxlcyBpbiB0aGUgY3VycmVudCBzdWJkaXIg 44CQKiBz44CRCm1hcmsgZmlsZXMgbmFtZXMgbWF0Y2hpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24g 44CQKiBTLTXjgJEgPiBtYXJrIGJ5IHN0cmluZyAvLyBedGVzdChzdGFydCB3aXRoKSB0eHRET0xM QVIgKGVuZCB3aXRoKSAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K44CQTS1u44CRIGN5Y2xlIGRpcmVkeCBn dWVzc2VzIOOAkFbjgJFvcGVuIGZpbGUgcmVhZCBvbmx5IOOAkGnjgJFvcGVuIGRpci12aWV3IGJl bG93IOOAkGLjgJFwcmV2aWV3IGZpbGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuOAkE8vR+OAkWNoYW5n ZSBvd25lci9ncm91cCDjgJBN44CRQ2hhbmdlIG1vZGUg44CQJXUvJWzjgJEgY29udmVydCB0byB1 cHBlci9sb3dlciBjYXNlCuOAkFDjgJEgcGVlcC1kaXIgKGltYWdlIHZpZXcpID4+IGltYWdlIG1v ZGU6ICDjgJBwL27jgJFuZXh0L3ByZXYgaW1hZ2VzIOOAkGTjgJFkZWwgaW1hZ2UgCiIKKCJxIiBu aWwgIiIpCiApCiMrRU5EX1NSQwoqKiogZGlyZWQgc2VhcmNoZXMKICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICAyMzMzMWQ5Yi0yNThmLTQ0MjQtYmJjYS1iYzI5ZGY2NmU5Y2UKICAgIDpF TkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZoeWRyYSBoeWRy YS1kaXJlZC1zZWFyY2hlcyAgKDpjb2xvciBibHVlIDpoaW50IG5pbCA6Y29sdW1ucyA1KQogICAg ICAiCkZpbHRlciBieToKICAgICAgIgogICAgICgiaSIgei9kaXJlZC1zZWFyY2gtaW1kYiAiaW1k YiIgKSAKICAgICAoImciIHovZGlyZWQtc2VhcmNoLWdvb2dsZSAiZ29vZ2xlIiApIAogICAgICgi bSIgei9kaXJlZC1zZWFyY2gtYWxsbXVzaWMgImFsbG11c2ljIiApIAogICAgICAoInEiIG5pbCAi Y2FuY2VsIiBuaWwpCiApCiAjK0VORF9TUkMKCgoqKiBkaXJlZCBmdW5jdGlvbnMKICAgOlBST1BF UlRJRVM6CiAgIDpJRDogICAgICAgNTc0M2NlNTctMGU2ZS00MjAwLTk4YTEtMDQxZGQ1MzQyZGI4 CiAgIDpFTkQ6CioqKiBNYWtpbmcgZGlyZWN0b3JpZXMgb24gdGhlIGZseQpodHRwOi8vbWJvcmsu cGwvMjAxNi0wNy0yNV9NYWtpbmdfZGlyZWN0b3JpZXNfb25fdGhlX2ZseQoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gbWFrZS1wYXJlbnQtZGlyZWN0b3J5ICgp CiAgIk1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IG9mIGBidWZmZXItZmlsZS1uYW1lJyBleGlzdHMu IgogIChtYWtlLWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBidWZmZXItZmlsZS1uYW1l KSB0KSkKCihhZGQtaG9vayAnZmluZC1maWxlLW5vdC1mb3VuZC1mdW5jdGlvbnMgIydtYWtlLXBh cmVudC1kaXJlY3RvcnkpCiMrRU5EX1NSQwoqKiogbWFya3MKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICBhYzRmYmM3NC0yNTRlLTRlZDYtYmNhNy0zM2UwOTNhM2Y2MjYKICAgIDpFTkQ6 CioqKiogbWFyayBhbmQgZGVsZXRlIG5vbiBvcmcKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6 ICAgICAgIDlkZWJjMzY0LWUyMDMtNDQ5Yy04OGI4LWY0MjU3YzU5ZDFiYwogICAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kZWwtbm9ub3JnLWZp bGVzICgpCihpbnRlcmFjdGl2ZSkKKGRpcmVkLW1hcmstZmlsZXMtcmVnZXhwICJcXC5vcmckIikg CihkaXJlZC10b2dnbGUtbWFya3MpCihkaXJlZC1kby1kZWxldGUpCikKIytFTkRfU1JDCioqKiBy ZWNlbnQgZGlycwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDFkYmU4MzU5LTNiZTEt NDBlNC1iZjUxLTdmYjQ3ZGZiMzlhMwogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQo7OyBvcGVuIHJlY2VudCBkaXJlY3RvcnksIHJlcXVpcmVzIGl2eSAocGFy dCBvZiBzd2lwZXIpCjs7IGJvcnJvd3MgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVl c3Rpb25zLzIzMzI4MDM3L2luLWVtYWNzLWhvdy10by1tYWludGFpbi1hLWxpc3Qtb2YtcmVjZW50 LWRpcmVjdG9yaWVzCihkZWZ1biB6L2RpcmVkLXJlY2VudC1kaXJzLWl2eSAoKQogICJQcmVzZW50 IGEgbGlzdCBvZiByZWNlbnRseSB1c2VkIGRpcmVjdG9yaWVzIGFuZCBvcGVuIHRoZSBzZWxlY3Rl ZCBvbmUgaW4gZGlyZWQiCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChyZWNlbnQtZGlycwogICAg ICAgICAoZGVsZXRlLWR1cHMKICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoZmlsZSkKICAgICAg ICAgICAgICAgICAgICAoaWYgKGZpbGUtZGlyZWN0b3J5LXAgZmlsZSkgZmlsZSAoZmlsZS1uYW1l LWRpcmVjdG9yeSBmaWxlKSkpCiAgICAgICAgICAgICAgICAgIHJlY2VudGYtbGlzdCkpKSkKCiAg ICAobGV0ICgoZGlyIChpdnktcmVhZCAiRGlyZWN0b3J5OiAiCiAgICAgICAgICAgICAgICAgICAg ICAgICByZWNlbnQtZGlycwogICAgICAgICAgICAgICAgICAgICAgICAgOnJlLWJ1aWxkZXIgIydp dnktLXJlZ2V4CiAgICAgICAgICAgICAgICAgICAgICAgICA6c29ydCBuaWwKICAgICAgICAgICAg ICAgICAgICAgICAgIDppbml0aWFsLWlucHV0IG5pbCkpKQogICAgICAoZGlyZWQgZGlyKSkpKQoK KGdsb2JhbC1zZXQta2V5IChrYmQgIkMteCBDLWQiKSAnei9pdnktZGlyZWQtcmVjZW50LWRpcnMp CiMrRU5EX1NSQwoqKiogb3BlbiBpbiBleHRlcm5hbCAoWERHIGRlZmF1bHQpIGFwcAogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDIwM2ZhYWQ3LTkyOWQtNDUzMy1iOTRiLTcwYzQzOTE1 NTA1NQogICAgOkVORDoKaHR0cDovL2VyZ29lbWFjcy5vcmcvZW1hY3MvZW1hY3NfZGlyZWRfb3Bl bl9maWxlX2luX2V4dF9hcHBzLmh0bWwKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMg bm9uZQooZGVmdW4gei9kaXJlZC1vcGVuLWluLWV4dGVybmFsLWFwcCAoKQogICJPcGVuIHRoZSBj dXJyZW50IGZpbGUgb3IgZGlyZWQgbWFya2VkIGZpbGVzIGluIGV4dGVybmFsIGFwcC4KVGhlIGFw cCBpcyBjaG9zZW4gZnJvbSB5b3VyIE9TJ3MgcHJlZmVyZW5jZS4iCiAgKGludGVyYWN0aXZlKQog IChsZXQqICgKICAgICAgICAgKM6+ZmlsZS1saXN0CiAgICAgICAgICAoaWYgKHN0cmluZy1lcXVh bCBtYWpvci1tb2RlICJkaXJlZC1tb2RlIikKICAgICAgICAgICAgICAoZGlyZWQtZ2V0LW1hcmtl ZC1maWxlcykKICAgICAgICAgICAgKGxpc3QgKGJ1ZmZlci1maWxlLW5hbWUpKSkpCiAgICAgICAg ICjOvmRvLWl0LXAgKGlmICg8PSAobGVuZ3RoIM6+ZmlsZS1saXN0KSA1KQoJCSAgICAgICB0CiAg ICAgICAgICAgICAgICAgICAgICh5LW9yLW4tcCAiT3BlbiBtb3JlIHRoYW4gNSBmaWxlcz8gIikp KSkKCiAgICAod2hlbiDOvmRvLWl0LXAKICAgICAgKGNvbmQKICAgICAgICgoc3RyaW5nLWVxdWFs IHN5c3RlbS10eXBlICJ3aW5kb3dzLW50IikKICAgICAgICAobWFwYwogICAgICAgICAobGFtYmRh IChmUGF0aCkKICAgICAgICAgICAodzMyLXNoZWxsLWV4ZWN1dGUgIm9wZW4iIChyZXBsYWNlLXJl Z2V4cC1pbi1zdHJpbmcgIi8iICJcXCIgZlBhdGggdCB0KSkpIM6+ZmlsZS1saXN0KSkKICAgICAg ICgoc3RyaW5nLWVxdWFsIHN5c3RlbS10eXBlICJkYXJ3aW4iKQogICAgICAgIChtYXBjCiAgICAg ICAgIChsYW1iZGEgKGZQYXRoKSAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJvcGVuIFwiJXNcIiIg ZlBhdGgpKSkgIM6+ZmlsZS1saXN0KSkKICAgICAgICgoc3RyaW5nLWVxdWFsIHN5c3RlbS10eXBl ICJnbnUvbGludXgiKQogICAgICAgIChtYXBjCiAgICAgICAgIChsYW1iZGEgKGZQYXRoKSAobGV0 ICgocHJvY2Vzcy1jb25uZWN0aW9uLXR5cGUgbmlsKSkgKHN0YXJ0LXByb2Nlc3MgIiIgbmlsICJ4 ZGctb3BlbiIgZlBhdGgpKSkgzr5maWxlLWxpc3QpKSkpKSkKIytFTkRfU1JDCioqKiBvcGVuIGlu IFdNL0RFIGZpbGUgbWFuYWdlcgogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDkxODM3 NzNiLWU3MTAtNDEzOS1iMjAxLWFjYWM1ZmE3MzcxZQogICAgOkVORDoKCiMrQkVHSU5fU1JDIGVt YWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1vcGVuLWluLWRlc2t0b3AgKCkK ICAiU2hvdyBjdXJyZW50IGZpbGUgaW4gZGVza3RvcCAoT1MncyBmaWxlIG1hbmFnZXIpLiIKICAo aW50ZXJhY3RpdmUpCiAgKGNvbmQKICAgKChzdHJpbmctZXF1YWwgc3lzdGVtLXR5cGUgIndpbmRv d3MtbnQiKQogICAgKHczMi1zaGVsbC1leGVjdXRlICJleHBsb3JlIiAocmVwbGFjZS1yZWdleHAt aW4tc3RyaW5nICIvIiAiXFwiIGRlZmF1bHQtZGlyZWN0b3J5IHQgdCkpKQogICAoKHN0cmluZy1l cXVhbCBzeXN0ZW0tdHlwZSAiZGFyd2luIikgKHNoZWxsLWNvbW1hbmQgIm9wZW4gLiIpKQogICAo KHN0cmluZy1lcXVhbCBzeXN0ZW0tdHlwZSAiZ251L2xpbnV4IikKICAgIChsZXQgKChwcm9jZXNz LWNvbm5lY3Rpb24tdHlwZSBuaWwpKSAoc3RhcnQtcHJvY2VzcyAiIiBuaWwgInhkZy1vcGVuIiAi LiIpKQogICAgOzsgKHNoZWxsLWNvbW1hbmQgInhkZy1vcGVuIC4iKSA7OyAyMDEzLTAyLTEwIHRo aXMgc29tZXRpbWVzIGZyb3plIGVtYWNzIHRpbGwgdGhlIGZvbGRlciBpcyBjbG9zZWQuIOKBliB3 aXRoIG5hdXRpbHVzCiAgICApICkpCiMrRU5EX1NSQwoKKioqIG9wZW4gaW4gdGVybQogICAgOlBS T1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGRkNmE3ZDdmLWM0M2MtNDA1OS05OGUwLWJiOTBiZDE4 M2U3NgogICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVm dW4gei9kaXJlZC1vcGVuLWluLXRlcm0gKCkKICAoaW50ZXJhY3RpdmUpCiAgKGFzeW5jLXNoZWxs LWNvbW1hbmQgInRlcm1pdGUgLiIpKQogIytFTkRfU1JDCioqKiBkaXJlZC1maW5kIGRpcmVjdG95 CnRvIHVzZSB0aGUgcmlnaHQga2V5IHRvIG9ubHkgZW50ZXIgZGlyZWN0b3JpZXMgbm90IGZpbGVz IAojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biBkaXJlZC1maW5k LWRpcmVjdG9yeSAoKQogICJBIGBkaXJlZC1maW5kLWZpbGUnIHdoaWNoIG9ubHkgd29ya3Mgb24g ZGlyZWN0b3JpZXMuIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoZmluZC1maWxlLXJ1bi1kaXJl ZCB0KQogICAgICAgIChmaWxlIChkaXJlZC1nZXQtZmlsZS1mb3ItdmlzaXQpKSkKICAgICh3aGVu IChmaWxlLWRpcmVjdG9yeS1wIGZpbGUpCiAgICAgIChmaW5kLWZpbGUgZmlsZSkpKSkKIytFTkRf U1JDCioqKiBTaGVsbCBmdW5jdGlvbnMKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA4 YTIwMjU2MS00YjU5LTRjMWQtOWEyYS01MTRlOTY4NzJjNTQKICAgIDpFTkQ6CioqKiogY29udmVy dCBkb2MgdG8gZG9jeAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgNjFkZWE2NTEt ZWMzZC00OTA4LWEyYzQtYmZiODA1ZWNlYTk0CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcAooZGVmdW4gIHovZGlyZWQtc2hlbGwtZG9jMmRvY3ggKCkKICAgICJkb2MgdG8gZG9jeCIK ICAgIChpbnRlcmFjdGl2ZSkKICAgIChzaGVsbC1jb21tYW5kIChjb25jYXQgImxpYnJlb2ZmaWNl IC0taGVhZGxlc3MgLS1jb252ZXJ0LXRvIGRvY3ggIiAoZGlyZWQtZmlsZS1uYW1lLWF0LXBvaW50 KSkpKQoKIDs7IChhZGQtaG9vayAnZGlyZWQtbW9kZS1ob29rICcobGFtYmRhICgpIAogOzsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsLXNldC1rZXkgKGtiZCAiTyIpICdjeWdz dGFydC1pbi1kaXJlZCkpKQojK0VORF9TUkMKKioqKiBjb252ZXJ0IGRvYyB0byBkb2N4CiAgICAg OlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA4ZWE0ZTQ4NS1lMDc4LTQ3NGUtODczOS0xNmE2 MjA3MmIwMmEKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwCihkZWZ1biAgei9kaXJl ZC1zaGVsbC1wZGYydGV4dCAoKQogICAgInBkZiB0byB0ZXh0IgogICAgKGludGVyYWN0aXZlKQog ICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAicGRmdG90ZXh0ICIgKGRpcmVkLWZpbGUtbmFtZS1h dC1wb2ludCkpKSkKCiA7OyAoYWRkLWhvb2sgJ2RpcmVkLW1vZGUtaG9vayAnKGxhbWJkYSAoKSAK IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhbC1zZXQta2V5IChrYmQgIk8i KSAnY3lnc3RhcnQtaW4tZGlyZWQpKSkKIytFTkRfU1JDCioqKiogVE9ETyBjb252ZXJ0IG1kIHRv IG9yZwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgMjcwMWJjMzQtYWM4MS00NWE3 LWI0M2YtNzAxN2JmY2JkOGU1CiAgICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKKGRl ZnVuICB6L2RpcmVkLXNoZWxsLW1kMm9yZyAoKQogIi4uLiIKIChpbnRlcmFjdGl2ZSkKIChsZXQg KChiYXNlICAoZmlsZS1uYW1lLWJhc2UgKGRpcmVkLWdldC1maWxlLW5hbWUpKSkpCiAgIChzaGVs bC1jb21tYW5kIChmb3JtYXQgInBhbmRvYyAtbyAlcy5vcmcgJS5tZCIgYmFzZSBiYXNlKSkpKQoj K0VORF9TUkMKCgoqKioqIG5jZHUKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDhj Y2IzZTQ4LTIzNDItNDU3Yy1hMTU1LTNhYzNmZmVjMGE1NQogICAgIDpFTkQ6CiAjK0JFR0lOX1NS QyBlbWFjcy1saXNwCihkZWZ1biAgei9kaXJlZC1zaGVsbC1uY2R1ICgpCiAibmNkdSIKKGludGVy YWN0aXZlKQooei92aXNpdC1hbnNpLXRlcm0pCih0ZXJtLXNlbmQtaW5wdXQpCihpbnNlcnQgIm5j ZHUiICkKKHRlcm0tc2VuZC1pbnB1dCkKKQogIytFTkRfU1JDCgoqKioqIHNzaGZzIHFuYXAKICAg ICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDEzY2M2NWEzLWM3NDgtNDc5My04YjY0LTI5 YTVjZTcwMzNlNQogICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9u ZQogKGRlZnVuICB6L2RpcmVkLXNoZWxsLXNzaGZzLXFuYXAgKCkKICAgICAic3NoIHFuYXAiCiAg ICAgKGludGVyYWN0aXZlKQogICAoei92aXNpdC1hbnNpLXRlcm0pCih0ZXJtLXNlbmQtaW5wdXQp CiAgICAoaW5zZXJ0ICJzc2hmcyAtcCAxMjEyMSBhZG1pbkAxMC4wLjAuMjovc2hhcmUvTUQwX0RB VEEvIC9ob21lL3plbHRhay9tb3VudHMvbHJhaWQgICIgKQoodGVybS1zZW5kLWlucHV0KQopCiAj K0VORF9TUkMKKioqKiBzaGVsbCBvdGhlciB3aW5kb3cKICAgICA6UFJPUEVSVElFUzoKICAgICA6 SUQ6ICAgICAgIDQ2ZDZjYzk1LWRjMWUtNGM3ZC1hOTkwLWFkOTk5ZDU0ODE2YwogICAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRlZnVuIHovZGlyZWQtc2hl bGwtb3RoZXItd2luZG93ICgpCiAgIk9wZW4gYSBgc2hlbGwnIGluIGEgbmV3IHdpbmRvdy4iCiAg KGludGVyYWN0aXZlKQogIChsZXQgKChidWYgKHNoZWxsKSkpCiAgICAoc3dpdGNoLXRvLWJ1ZmZl ciAob3RoZXItYnVmZmVyIGJ1ZikpCiAgICAoc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cg YnVmKSkpCgojK0VORF9TUkMKKioqKiBjYjJiaWIKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJl c3VsdHMgbm9uZQogKGRlZnVuICB6L2RpcmVkLXNoZWxsLWNiMmJpYiAoKQogICAgICJVc2VzIGZi IHRvIHVwbG9hZCBmaWxlIGF0IHBvaW50LiIKICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHNoZWxs LWNvbW1hbmQgImNiMmJpYiIpCgkJICAgICkKIytFTkRfU1JDCgoqKioqIHNoZWxsIGJlZXQgCiAg ICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBmZTBhNWQ5OS0xODUzLTQyM2UtODM2Yi0z YTU5ZWNjZDY0M2UKICAgICA6RU5EOgpodHRwOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5jb20vcXVl c3Rpb25zLzIzOTYxL2hlbHAtd2l0aC1kaXJlZC1mdW5jdGlvbi1pLXdyb3RlLWhvdy10by1pbnNl cnQtY3VycmVudC1maWxlLWF0LXBvaW50LWludG8tYnVmZmUvMjM5NjMjMjM5NjMKCiAjK0JFR0lO X1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoZGVmdW4gei9kaXJlZC1zaGVsbC1vdGhl ci13aW5kb3ctYmVldHMgKCkKICAgKGludGVyYWN0aXZlKQogICAobGV0ICgoY29tbWFuZCAoY29u Y2F0ICJiZWV0IGltcG9ydCAiIChmb3JtYXQgIiVTIiAoZGlyZWQtZ2V0LWZpbGVuYW1lKSkpKSkK ICAgICAoc3dpdGNoLXRvLWJ1ZmZlciAoc2hlbGwpCiAgICAgICAoaW5zZXJ0IGNvbW1hbmQpCiAg ICAgICAoY29taW50LXNlbmQtaW5wdXQpKSkpCiMrRU5EX1NSQwoqKioqIHNoZWxsIGJlZXQgCiAg ICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA0ODJkODM0OS1jNzZhLTQwY2YtODY3ZS03 ZjJhYTJiM2Q4NDkKICAgICA6RU5EOgpodHRwOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5jb20vcXVl c3Rpb25zLzIzOTYxL2hlbHAtd2l0aC1kaXJlZC1mdW5jdGlvbi1pLXdyb3RlLWhvdy10by1pbnNl cnQtY3VycmVudC1maWxlLWF0LXBvaW50LWludG8tYnVmZmUvMjM5NjMjMjM5NjMKCiAjK0JFR0lO X1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAoZGVmdW4gei9kaXJlZC1zaGVsbC1vdGhl ci13aW5kb3ctYmVldHMtc2luZ2xlICgpCiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoKGNvbW1h bmQgKGNvbmNhdCAiYmVldCBpbXBvcnQgLXMgIiAoZm9ybWF0ICIlUyIgKGRpcmVkLWdldC1maWxl bmFtZSkpKSkpCiAgICAgKHN3aXRjaC10by1idWZmZXIgKHNoZWxsKQogICAgICAgKGluc2VydCBj b21tYW5kKQogICAgICAgKGNvbWludC1zZW5kLWlucHV0KSkpKQojK0VORF9TUkMKKioqIGdldCBt YXJrZWQgZmlsZXMgc2l6ZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGY4MDYxZjRi LWFkZGItNDdiZS04ZjBkLWRjMWY0OTE3ZTMwMwogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3Mt bGlzcCA6cmVzdWx0cyBub25lCiAoZGVmdW4gei9kaXJlZC1nZXQtc2l6ZSAoKQogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgoZmlsZXMgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpKSkKICAgICh3aXRo LXRlbXAtYnVmZmVyCiAgICAgIChhcHBseSAnY2FsbC1wcm9jZXNzICIvdXNyL2Jpbi9kdSIgbmls IHQgbmlsICItc2NoIiBmaWxlcykKICAgICAgKG1lc3NhZ2UgIlNpemUgb2YgYWxsIG1hcmtlZCBm aWxlczogJXMiCgkgICAgICAgKHByb2duIAogICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtYmFj a3dhcmQgIlxcKF5bMC05LixdK1tBLVphLXpdK1xcKS4qdG90YWwkIikKICAgICAgICAgICAgICAg ICAgKG1hdGNoLXN0cmluZyAxKSkpKSkpCiMrRU5EX1NSQwoKKioqIG1lZGlhCiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgY2YwZjA5OWUtYmFkMy00MTljLThiNmItNjY1ODMxODYwOTk3 CiAgICA6RU5EOgoqKioqIG1lZGlhaW5mbwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAg ICAgODQxMmE5MTItNzlmOS00YjFmLThjMWMtZjJhNzMyOWNlMjBiCiAgICAgOkVORDoKIytCRUdJ Tl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKGRlZnVuICB6L2RpcmVkLW1lZGlhLWlu Zm8gKCkKICAgICAgIm1lZGlhIGluZm8gIgogICAgICAoaW50ZXJhY3RpdmUpCiAgICAgIChzaGVs bC1jb21tYW5kIChjb25jYXQgIm1lZGlhaW5mbyAiICAoZGlyZWQtZmlsZS1uYW1lLWF0LXBvaW50 KQogKSkpCiMrRU5EX1NSQwoqKioqIGZpbGUgYm90CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklE OiAgICAgICA0YTE2NTY5ZS1kMTExLTQ4NGUtODBmYy0yNGQwOGMzNWZkODEKICAgICA6RU5EOgoj K0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCiAgKGRlZnVuICB6L2RpcmVkLW1l ZGlhLWZpbGVib3QgKCkKICAgICAgIm1lZGlhIGluZm8iCiAgICAgIChpbnRlcmFjdGl2ZSkKICAg ICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAiZmlsZWJvdCAiICAoZGlyZWQtZmlsZS1uYW1lLWF0 LXBvaW50KQogKSkpCiMrRU5EX1NSQwoqKiogbmV0d29ya2luZwogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIGIwMGE4MTRlLThiNWUtNDZjZi04NWU3LTA4NDU0Yzk4MGUxYgogICAgOkVO RDoKKioqKiBuZXRzdGF0CiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAwY2QyODEz Yy1mY2VmLTQwODYtYjM4Ni1kMzMyZGYyMWJjYTYKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L2RpcmVkLXNoZWxsLW5ldHN0YXQgKCkKICJu ZXRzdGF0IgooaW50ZXJhY3RpdmUpCih6L3Zpc2l0LWFuc2ktdGVybSkKKHRlcm0tc2VuZC1pbnB1 dCkKKGluc2VydCAibmV0c3RhdCAtdGxucCIgKQoodGVybS1zZW5kLWlucHV0KQopCiAjK0VORF9T UkMKKioqKiBubWFwIGhvbWUgbGFuCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICA4 NTljMmVhNy02ZTc2LTQ2MjAtOTFjMS1lMzQzMmI1OGVlYzEKICAgICA6RU5EOgojK0JFR0lOX1NS QyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuICB6L2RpcmVkLXNoZWxsLW5tYXAtaGxh biAoKQogIm5tYXAtaGxhbiIKKGludGVyYWN0aXZlKQooei92aXNpdC1hbnNpLXRlcm0pCih0ZXJt LXNlbmQtaW5wdXQpCihpbnNlcnQgIm5tYXAgLXNQIDE5Mi4xNjguMC4xLzI0IiApCih0ZXJtLXNl bmQtaW5wdXQpCikKICMrRU5EX1NSQwoqKiogZmIKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICA2NGIwNjZkZi05MDQ3LTRhMDYtOTAyZS04YWZlZjI5ZDE1MjUKICAgIDpFTkQ6CiAjK0JF R0lOX1NSQyBlbWFjcy1saXNwCiAoZGVmdW4gIHovZGlyZWQtc2hlbGwtZmIgKCkKICAgICAiVXNl cyBmYiB0byB1cGxvYWQgZmlsZSBhdCBwb2ludC4iCiAgICAgKGludGVyYWN0aXZlKQogICAgIChz aGVsbC1jb21tYW5kIChjb25jYXQgImZiICIgKGRpcmVkLWZpbGUtbmFtZS1hdC1wb2ludCkpKQog ICAgIChtZXNzYWdlIChwcm9wZXJ0aXplICJVcGxvYWRlZCB0byBGQiIgJ2ZhY2UgJ2ZvbnQtbG9j ay13YXJuaW5nLWZhY2UpKQogICAgIChhbGVydCAiVXBsb2FkIHRvIEZCIiA6dGl0bGUgIkZCIiA6 Y2F0ZWdvcnkgJ2RlYnVnKQoKKQogIytFTkRfU1JDCgogIytSRVNVTFRTOgogOiB6L2RpcmVkLXNo ZWxsLWZiCgogCioqKiBzc2hmcyBxbmFwCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAg MTUzMDU5NjQtNmNiNi00MjM5LTllMjUtOGIxY2Y4MjkyNzEzCiAgICA6RU5EOgojK0JFR0lOX1NS QyBlbWFjcy1saXNwCihkZWZ1biB6L2RpcmVkLXNzaC1xbmFwICgpCiAgICAiY2htb2QiCiAgICAo aW50ZXJhY3RpdmUpCiAgICAoc2hlbGwtY29tbWFuZCAoY29uY2F0ICJzc2hmcyAtcCAxMjEyMSBh ZG1pbkAxMC4wLjAuMjovc2hhcmUvTUQwX0RBVEEvIC9ob21lL3plbHRhay9tb3VudHMvbHJhaWQg IiAoZGlyZWQtZmlsZS1uYW1lLWF0LXBvaW50KSkpCiAgICAobWVzc2FnZSAocHJvcGVydGl6ZSAi Y29ubmVjdGVkIHRvIHNzaCIgJ2ZhY2UgJ2ZvbnQtbG9jay13YXJuaW5nLWZhY2UpKQopCiMrRU5E X1NSQwoKKioqIGNobW9keAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDA3MTY4ZjE3 LWZmODMtNDY2Ni04OTI4LWNhMzhkMjFjZDk2YQogICAgOkVORDoKCiAjK0JFR0lOX1NSQyBlbWFj cy1saXNwCiAoZGVmdW4gei9kaXJlZC1zaGVsbC1jaG1vZHggKCkKICAgICAiY2htb2QiCiAgICAg KGludGVyYWN0aXZlKQogICAgIChzaGVsbC1jb21tYW5kIChjb25jYXQgImNobW9kICt4ICIgKGRp cmVkLWZpbGUtbmFtZS1hdC1wb2ludCkpKQo7OzsgdG8gcmVmcmVzaCB2aWV3IHVzZSByZXZlcnQg YnVmZmVyICAKICAgIChyZXZlcnQtYnVmZmVyKQogICAgKG1lc3NhZ2UgKHByb3BlcnRpemUgImNo YW5nZWQgbW9kZSB0byBleGVjdXRhYmxlIiAnZmFjZSAnZm9udC1sb2NrLXdhcm5pbmctZmFjZSkp CiApCgogIytFTkRfU1JDCgoqKioqIHNzaGZzIHFuYXAKICAgICA6UFJPUEVSVElFUzoKICAgICA6 SUQ6ICAgICAgIDRhODU0MjhiLTMzZTYtNGYxNi05ZDMwLWZkYTY2YWE0MjA1OQogICAgIDpFTkQ6 CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwCiAoZGVmdW4gei9kaXJlZC1zc2gtcW5hcCAoKQogICAg ICJjaG1vZCIKICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAi c3NoZnMgLXAgMTIxMjEgYWRtaW5AMTAuMC4wLjI6L3NoYXJlL01EMF9EQVRBLyAvaG9tZS96ZWx0 YWsvbW91bnRzL2xyYWlkICIgKGRpcmVkLWZpbGUtbmFtZS1hdC1wb2ludCkpKQogICAgIChtZXNz YWdlIChwcm9wZXJ0aXplICJjb25uZWN0ZWQgdG8gc3NoIiAnZmFjZSAnZm9udC1sb2NrLXdhcm5p bmctZmFjZSkpCiApCiAjK0VORF9TUkMKKioqIG5tYXAgbmV0d29yawogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIDkzM2I5OGQ4LWFlZjQtNGRhMS04NTQ4LWRjNzZkMWE5MmEzZgogICAg OkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVk LW5tYXAtbmV0d29yayAoKQoibWFwIGFsbCBhdmFpbGFibGUgSVAgb24gbXkgbmV0d3JvayIKKGlu dGVyYWN0aXZlKQooc3ItdGVybSApCihpbnNlcnQgIiBubWFwIC1zUCAxMC4wLjAuMS8yNCIgKQoo ZXNoZWxsLXNlbmQtaW5wdXQpCikKIytFTkRfU1JDCioqKiBTb3J0aW5nIAogICAgOlBST1BFUlRJ RVM6CiAgICA6SUQ6ICAgICAgIDhlNGY4ODgzLTAwYzgtNDgzNy04YjFlLTI3N2IxMDA5MzczMAog ICAgOkVORDoKKioqKiB4aGEgZGlyZWQgc29ydAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDog ICAgICAgMGY1Mzg2ZmItOTg1Zi00ZjM4LThiOTgtY2E3MmEyNGExZGZhCiAgICAgOkVORDoKICMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGRlZnVuIHovZGlyZWQtc29ydC1t ZW51ICgpCiAgICJTb3J0IGRpcmVkIGRpciBsaXN0aW5nIGluIGRpZmZlcmVudCB3YXlzLgogUHJv bXB0IGZvciBhIGNob2ljZS4KIFVSTCBgaHR0cDovL2VyZ29lbWFjcy5vcmcvZW1hY3MvZGlyZWRf c29ydC5odG1sJwogVmVyc2lvbiAyMDE1LTA3LTMwIgogICAoaW50ZXJhY3RpdmUpCiAgIChsZXQg KM6+c29ydC1ieSDOvmFyZykKICAgICAoc2V0cSDOvnNvcnQtYnkgKGlkby1jb21wbGV0aW5nLXJl YWQgIlNvcnQgYnk6IiAnKCAiZGF0ZSIgInNpemUiICJuYW1lIiAiZGlyIikpKQogICAgIChjb25k CiAgICAgICgoZXF1YWwgzr5zb3J0LWJ5ICJuYW1lIikgKHNldHEgzr5hcmcgIi1BbCAtLXNpIC0t dGltZS1zdHlsZSBsb25nLWlzbyAiKSkKICAgICAgKChlcXVhbCDOvnNvcnQtYnkgImRhdGUiKSAo c2V0cSDOvmFyZyAiLUFsIC0tc2kgLS10aW1lLXN0eWxlIGxvbmctaXNvIC10IikpCiAgICAgICgo ZXF1YWwgzr5zb3J0LWJ5ICJzaXplIikgKHNldHEgzr5hcmcgIi1BbCAtLXNpIC0tdGltZS1zdHls ZSBsb25nLWlzbyAtUyIpKQogICAgICAoKGVxdWFsIM6+c29ydC1ieSAiZGlyIikgKHNldHEgzr5h cmcgIi1BbCAtLXNpIC0tdGltZS1zdHlsZSBsb25nLWlzbyAtLWdyb3VwLWRpcmVjdG9yaWVzLWZp cnN0IikpCiAgICAgICh0IChlcnJvciAibG9naWMgZXJyb3IgMDk1MzUiICkpKQogICAgIChkaXJl ZC1zb3J0LW90aGVyIM6+YXJnICkpKQogIytFTkRfU1JDCioqKiogZGlyZWQtcXVpY2stc29ydC10 aW1lCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1zb3J0LXRpbWUtdG9nZ2xlICgpCiAgICAoaW50 ZXJhY3RpdmUpCiAgICAoZGlyZWQtcXVpY2stc29ydCAidGltZSIgKGlmIChjaGFyLWVxdWFsIGRp cmVkLXF1aWNrLXNvcnQtcmV2ZXJzZS1sYXN0ID95KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/biA/eSkpCiAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmctb2YtYnVmZmVyICkK KQojK0VORF9TUkMKCioqKiogZGlyZWQtcXVpY2stc29ydC10aW1lLXJldmVyc2UKICAgICA6UFJP UEVSVElFUzoKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25l CihkZWZ1biB6L2RpcmVkLXNvcnQtdGltZS10b2dnbGUtcmV2ZXJzZSAoKQogICAgKGludGVyYWN0 aXZlKQooei9kaXJlZC1zb3J0LXRpbWUtdG9nZ2xlKQooei9kaXJlZC1zb3J0LXRpbWUtdG9nZ2xl KQopCiMrRU5EX1NSQwoKCioqKiogZGlyZWQtcXVpY2stc29ydC1uYW1lCiAgICAgOlBST1BFUlRJ RVM6CiAgICAgOklEOiAgICAgICBjOTNjMTQ4ZS03ZDhmLTRiMDctOGMxNS1jMjJjMTMzYjg0MWEK ICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6 L2RpcmVkLXNvcnQtbmFtZS10b2dnbGUgKCkKICAgIChpbnRlcmFjdGl2ZSkKICAgIChkaXJlZC1x dWljay1zb3J0ICJ2ZXJzaW9uIiAoaWYgKGNoYXItZXF1YWwgZGlyZWQtcXVpY2stc29ydC1yZXZl cnNlLWxhc3QgP3kpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9uID95KSkKICAg ICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1idWZmZXIgKQopCiMrRU5EX1NSQwoqKioqIGRp cmVkLXF1aWNrLXNvcnQtc2l6ZQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgZmZl ODk3Y2MtODY5Ny00MGIxLTgzNmEtZjMyZWI4ZWYxMTQ1CiAgICAgOkVORDoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1zb3J0LXNpemUtdG9nZ2xl ICgpCiAgICAoaW50ZXJhY3RpdmUpCiAgICAoZGlyZWQtcXVpY2stc29ydCAic2l6ZSIgKGlmIChj aGFyLWVxdWFsIGRpcmVkLXF1aWNrLXNvcnQtcmV2ZXJzZS1sYXN0ID95KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA/biA/eSkpCiAgICAgICAgICAgICAgICAgIChiZWdpbm5pbmct b2YtYnVmZmVyICkKKQojK0VORF9TUkMKKioqKiBkaXJlZC1xdWljay1zb3J0LWV4dGVuc2lvbgog ICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgMDhiNDc1N2UtMzVhNy00MmI1LTllNTYt NjliN2Y3M2E5ZGM0CiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMg bm9uZQooZGVmdW4gei9kaXJlZC1zb3J0LWV4dGVuc2lvbi10b2dnbGUgKCkKICAgIChpbnRlcmFj dGl2ZSkKICAgIChkaXJlZC1xdWljay1zb3J0ICJleHRlbnNpb24iIChpZiAoY2hhci1lcXVhbCBk aXJlZC1xdWljay1zb3J0LXJldmVyc2UtbGFzdCA/eSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgP24gP3kpKQogICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWJ1ZmZlciAp CikKIytFTkRfU1JDCgoKKioqIGRpcmVkLWltYWdlCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgOGQyYzFhZWItODA4My00MDgwLTliOWEtNGU3YmJmYTcwY2ViCiAgICA6RU5EOgoqKioq IGV4dHJhIGJpbmRzCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICBjNGU0N2QwYS1k ZTdjLTQzNTItYWUwZS0yY2M0NzY5YTIyNGIKICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVkLW5leHQtaW1hZ2UgKCkKICAoaW50ZXJh Y3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uIAogICAgKHdpdGgtY3VycmVudC1idWZmZXIgIippbWFn ZS1kaXJlZCoiCiAgICAgIChpbWFnZS1kaXJlZC1mb3J3YXJkLWltYWdlKQogICAgICAoaW1hZ2Ut ZGlyZWQtZGlzcGxheS10aHVtYm5haWwtb3JpZ2luYWwtaW1hZ2UpKSkpCgooZGVmdW4gei9kaXJl ZC1wcmV2LWltYWdlICgpCiAgKGludGVyYWN0aXZlKQogIChzYXZlLWV4Y3Vyc2lvbiAKICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyICIqaW1hZ2UtZGlyZWQqIgogICAgICAoaW1hZ2UtZGlyZWQtYmFj a3dhcmQtaW1hZ2UpCiAgICAgIChpbWFnZS1kaXJlZC1kaXNwbGF5LXRodW1ibmFpbC1vcmlnaW5h bC1pbWFnZSkpKSkKCihkZWZ1biB4L2RpcmVkLWluc2VydC1jdXJyZW50LWltYWdlLXBhdGggKCkK ICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydAogICAoY29uY2F0CiAgICAiW1siCiAgICAoc2F2ZS1l eGN1cnNpb24KICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgIippbWFnZS1kaXJlZCoiCiAgICAg ICAgKGltYWdlLWRpcmVkLW9yaWdpbmFsLWZpbGUtbmFtZSkpKQogICAgIl1dIikpKQojK0VORF9T UkMKKioqKiB4YWggaW1hZ2UgbWFuaXB1bGF0aW9ucwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJ RDogICAgICAgZGNiZDM2MzQtZTdmNi00OGM1LTliMmUtZjVlODliMzA5OTc0CiAgICAgOkVORDoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4geGFoLXByb2Nlc3Mt aW1hZ2UgKM+GZmlsZS1saXN0IM+GYXJncy1zdHIgz4ZuZXctbmFtZS1zdWZmaXggz4ZuZXctbmFt ZS1maWxlLXN1ZmZpeCApCiAgIldyYXBwZXIgdG8gSW1hZ2VNYWdpY2sncyDigJxjb252ZXJ04oCd IHNoZWxsIGNvbW1hbmQuCs+GZmlsZS1saXN0IGlzIGEgbGlzdCBvZiBpbWFnZSBmaWxlIHBhdGhz LgrPhmFyZ3Mtc3RyIGlzIGFyZ3VtZW50IHN0cmluZyBwYXNzZWQgdG8gSW1hZ2VNYWdpY2sncyDi gJxjb252ZXJ04oCdIGNvbW1hbmQuCs+GbmV3LW5hbWUtc3VmZml4IGlzIHRoZSBzdHJpbmcgYXBw ZW5kZWQgdG8gZmlsZS4gZS5nLiDigJxfbmV34oCdIGdldHMgeW91IOKAnOKApl9uZXcuanBn4oCd Cs+GbmV3LW5hbWUtZmlsZS1zdWZmaXggaXMgdGhlIG5ldyBmaWxlJ3MgZmlsZSBleHRlbnNpb24u IGUuZy4g4oCcLnBuZ+KAnQoKVVJMIGBodHRwOi8vZXJnb2VtYWNzLm9yZy9lbWFjcy9lbWFjc19k aXJlZF9jb252ZXJ0X2ltYWdlcy5odG1sJwpWZXJzaW9uIDIwMTUtMTAtMTkiCiAgKHJlcXVpcmUg J2RpcmVkKQogIChtYXBjCiAgIChsYW1iZGEgKM6+ZikKICAgICAobGV0ICggbmV3TmFtZSBjbWRT dHIgKQogICAgICAgKHNldHEgbmV3TmFtZQogICAgICAgICAgICAgKGNvbmNhdAogICAgICAgICAg ICAgIChmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gzr5mKQogICAgICAgICAgICAgIM+GbmV3LW5h bWUtc3VmZml4CiAgICAgICAgICAgICAgz4ZuZXctbmFtZS1maWxlLXN1ZmZpeCkpCiAgICAgICAo d2hpbGUgKGZpbGUtZXhpc3RzLXAgbmV3TmFtZSkKICAgICAgICAgKHNldHEgbmV3TmFtZQogICAg ICAgICAgICAgICAoY29uY2F0CiAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5z aW9uIG5ld05hbWUpCiAgICAgICAgICAgICAgICDPhm5ldy1uYW1lLXN1ZmZpeAogICAgICAgICAg ICAgICAgKGZpbGUtbmFtZS1leHRlbnNpb24gbmV3TmFtZSB0KSkpKQogICAgICAgOzsgcmVsYXRp dmUgcGF0aHMgdXNlZCB0byBnZXQgYXJvdW5kIFdpbmRvd3MvQ3lnd2luIHBhdGggcmVtYXBwaW5n IHByb2JsZW0KICAgICAgIChzZXRxIGNtZFN0cgogICAgICAgICAgICAgKGZvcm1hdAogICAgICAg ICAgICAgICJjb252ZXJ0ICVzICclcycgJyVzJyIgCiAgICAgICAgICAgICAgz4ZhcmdzLXN0ciAK ICAgICAgICAgICAgICAoZmlsZS1yZWxhdGl2ZS1uYW1lIM6+ZikgCiAgICAgICAgICAgICAgKGZp bGUtcmVsYXRpdmUtbmFtZSBuZXdOYW1lKSkpCiAgICAgICAoc2hlbGwtY29tbWFuZCBjbWRTdHIp KSkKICAgz4ZmaWxlLWxpc3QgKQogIChyZXZlcnQtYnVmZmVyKSkKCihkZWZ1biB4YWgtZGlyZWQt c2NhbGUtaW1hZ2UgKM+GZmlsZS1saXN0IM+Gc2NhbGUtcGVyY2VudGFnZSDPhnNoYXJwZW4/KQog ICJDcmVhdGUgYSBzY2FsZWQgdmVyc2lvbiBvZiBpbWFnZXMgb2YgbWFya2VkIGZpbGVzIGluIGRp cmVkLgpUaGUgbmV3IG5hbWVzIGhhdmUg4oCcLXPigJ0gYXBwZW5kZWQgYmVmb3JlIHRoZSBmaWxl IG5hbWUgZXh0ZW5zaW9uLgoKSWYgYHVuaXZlcnNhbC1hcmd1bWVudCcgaXMgZ2l2ZW4sIG91dHB1 dCBpcyBQTkcgZm9ybWF0LiBFbHNlLCBKUEcuCgpXaGVuIGNhbGxlZCBpbiBsaXNwIGNvZGUsCiDP hmZpbGUtbGlzdCBpcyBhIGxpc3QuCiDPhnNjYWxlLXBlcmNlbnRhZ2UgaXMgYSBpbnRlZ2VyLgog z4ZzaGFycGVuPyBpcyB0cnVlIG9yIGZhbHNlLgoKUmVxdWlyZXMgSW1hZ2VNYWdpY2sgdW5peCBz aGVsbCBjb21tYW5kLgpVUkwgYGh0dHA6Ly9lcmdvZW1hY3Mub3JnL2VtYWNzL2VtYWNzX2RpcmVk X2NvbnZlcnRfaW1hZ2VzLmh0bWwnClZlcnNpb24gMjAxNS0wMy0xMCIKICAoaW50ZXJhY3RpdmUK ICAgKGxldCAoCiAgICAgICAgIChteUZpbGVMaXN0CiAgICAgICAgICAoY29uZAogICAgICAgICAg ICgoc3RyaW5nLWVxdWFsIG1ham9yLW1vZGUgImRpcmVkLW1vZGUiKSAoZGlyZWQtZ2V0LW1hcmtl ZC1maWxlcykpCiAgICAgICAgICAgKChzdHJpbmctZXF1YWwgbWFqb3ItbW9kZSAiaW1hZ2UtbW9k ZSIpIChsaXN0IChidWZmZXItZmlsZS1uYW1lKSkpCiAgICAgICAgICAgKHQgKGxpc3QgKHJlYWQt ZnJvbS1taW5pYnVmZmVyICJmaWxlIG5hbWU6IikpKSkpKQogICAgIChsaXN0IG15RmlsZUxpc3QK ICAgICAgICAgICAocmVhZC1mcm9tLW1pbmlidWZmZXIgIlNjYWxlICU6IikKICAgICAgICAgICAo eS1vci1uLXAgIlNoYXJwZW4iKSkpKQogIChsZXQgKChzaGFycGVuT3JObyAoaWYgz4ZzaGFycGVu PyAiLXNoYXJwZW4gMSIgIiIgKSkKICAgICAgICAob3V0cHV0U3VmZml4IChpZiBjdXJyZW50LXBy ZWZpeC1hcmcgIi5wbmciICIuanBnIiApKSkKICAgICh4YWgtcHJvY2Vzcy1pbWFnZSDPhmZpbGUt bGlzdAogICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIi1zY2FsZSAlcyUlIC1xdWFsaXR5 IDg1JSUgJXMgIiDPhnNjYWxlLXBlcmNlbnRhZ2Ugc2hhcnBlbk9yTm8pCiAgICAgICAgICAgICAg ICAgICAgICAgIi1zIiBvdXRwdXRTdWZmaXggKSkpCgooZGVmdW4geGFoLWRpcmVkLWltYWdlLWF1 dG9jcm9wICjPhmZpbGUtbGlzdCDPhm91dHB1dC1pbWFnZS10eXBlLXN1ZmZpeCkKICAiQ3JlYXRl IGEgbmV3IGF1dG8tY3JvcHBlZCB2ZXJzaW9uIG9mIGltYWdlcyBvZiBtYXJrZWQgZmlsZXMgaW4g ZGlyZWQuClJlcXVpcmVzIEltYWdlTWFnaWNrIHNoZWxsIGNvbW1hbmQuCgpJZiBgdW5pdmVyc2Fs LWFyZ3VtZW50JyBpcyBnaXZlbiwgb3V0cHV0IGlzIFBORyBmb3JtYXQuIEVsc2UsIEpQRy4KVVJM IGBodHRwOi8vZXJnb2VtYWNzLm9yZy9lbWFjcy9lbWFjc19kaXJlZF9jb252ZXJ0X2ltYWdlcy5o dG1sJwpWZXJzaW9uIDIwMTUtMDMtMTAiCiAgKGludGVyYWN0aXZlCiAgIChsZXQgKAogICAgICAg ICAobXlGaWxlTGlzdAogICAgICAgICAgKGNvbmQKICAgICAgICAgICAoKHN0cmluZy1lcXVhbCBt YWpvci1tb2RlICJkaXJlZC1tb2RlIikgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpKQogICAgICAg ICAgICgoc3RyaW5nLWVxdWFsIG1ham9yLW1vZGUgImltYWdlLW1vZGUiKSAobGlzdCAoYnVmZmVy LWZpbGUtbmFtZSkpKQogICAgICAgICAgICh0IChsaXN0IChyZWFkLWZyb20tbWluaWJ1ZmZlciAi ZmlsZSBuYW1lOiIpKSkpKQogICAgICAgICAoz4ZvdXRwdXQtaW1hZ2UtdHlwZS1zdWZmaXggKGlm IGN1cnJlbnQtcHJlZml4LWFyZyAiLnBuZyIgIi5qcGciICkpKQogICAgIChsaXN0IG15RmlsZUxp c3Qgz4ZvdXRwdXQtaW1hZ2UtdHlwZS1zdWZmaXgpKSkKICAoeGFoLXByb2Nlc3MtaW1hZ2Ugz4Zm aWxlLWxpc3QgIi10cmltIiAiLWNyb3BwZWQiIM+Gb3V0cHV0LWltYWdlLXR5cGUtc3VmZml4ICkp CgooZGVmdW4geGFoLWRpcmVkLTJwbmcgKM+GZmlsZS1saXN0KQogICJDcmVhdGUgYSBwbmcgdmVy c2lvbiBvZiBpbWFnZXMgb2YgbWFya2VkIGZpbGVzIGluIGRpcmVkLgpSZXF1aXJlcyBJbWFnZU1h Z2ljayBzaGVsbCBjb21tYW5kLgpVUkwgYGh0dHA6Ly9lcmdvZW1hY3Mub3JnL2VtYWNzL2VtYWNz X2RpcmVkX2NvbnZlcnRfaW1hZ2VzLmh0bWwnClZlcnNpb24gMjAxNS0wMy0xMCIKICAoaW50ZXJh Y3RpdmUKICAgKGxldCAoCiAgICAgICAgIChteUZpbGVMaXN0CiAgICAgICAgICAoY29uZAogICAg ICAgICAgICgoc3RyaW5nLWVxdWFsIG1ham9yLW1vZGUgImRpcmVkLW1vZGUiKSAoZGlyZWQtZ2V0 LW1hcmtlZC1maWxlcykpCiAgICAgICAgICAgKChzdHJpbmctZXF1YWwgbWFqb3ItbW9kZSAiaW1h Z2UtbW9kZSIpIChsaXN0IChidWZmZXItZmlsZS1uYW1lKSkpCiAgICAgICAgICAgKHQgKGxpc3Qg KHJlYWQtZnJvbS1taW5pYnVmZmVyICJmaWxlIG5hbWU6IikpKSkpKQogICAgIChsaXN0IG15Rmls ZUxpc3QpKSkKICAoeGFoLXByb2Nlc3MtaW1hZ2Ugz4ZmaWxlLWxpc3QgIiIgIi0yIiAiLnBuZyIg KSkKCihkZWZ1biB4YWgtZGlyZWQtMmpwZyAoz4ZmaWxlLWxpc3QpCiAgIkNyZWF0ZSBhIEpQRyB2 ZXJzaW9uIG9mIGltYWdlcyBvZiBtYXJrZWQgZmlsZXMgaW4gZGlyZWQuClJlcXVpcmVzIEltYWdl TWFnaWNrIHNoZWxsIGNvbW1hbmQuClVSTCBgaHR0cDovL2VyZ29lbWFjcy5vcmcvZW1hY3MvZW1h Y3NfZGlyZWRfY29udmVydF9pbWFnZXMuaHRtbCcKVmVyc2lvbiAyMDE1LTAzLTEwIgogIChpbnRl cmFjdGl2ZQogICAobGV0ICgKICAgICAgICAgKG15RmlsZUxpc3QKICAgICAgICAgIChjb25kCiAg ICAgICAgICAgKChzdHJpbmctZXF1YWwgbWFqb3ItbW9kZSAiZGlyZWQtbW9kZSIpIChkaXJlZC1n ZXQtbWFya2VkLWZpbGVzKSkKICAgICAgICAgICAoKHN0cmluZy1lcXVhbCBtYWpvci1tb2RlICJp bWFnZS1tb2RlIikgKGxpc3QgKGJ1ZmZlci1maWxlLW5hbWUpKSkKICAgICAgICAgICAodCAobGlz dCAocmVhZC1mcm9tLW1pbmlidWZmZXIgImZpbGUgbmFtZToiKSApKSApICkgKQogICAgIChsaXN0 IG15RmlsZUxpc3QpICkKICAgKQogICh4YWgtcHJvY2Vzcy1pbWFnZSDPhmZpbGUtbGlzdCAiIiAi LTIiICIuanBnIiApKQojK0VORF9TUkMKKioqIEFyY2hpdmVzIAogICAgOlBST1BFUlRJRVM6CiAg ICA6SUQ6ICAgICAgIGY4YjY0NzdmLTEwYjctNGIwMC05YzRiLWI2M2Q2YmFiYTc5YwogICAgOkVO RDoKKioqKiB1bnJhciAKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDU3YWEyNzU2 LWI4MjItNDU5ZC04YTRlLWE0ZGZmYzY1ZmU5NQogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKIChkZWZ1biAgei9kaXJlZC1hcmNoaXZlLXVucmFyICgpCiAg ICAgInVucmFyIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2hlbGwtY29tbWFuZCAoY29uY2F0 ICJ1bnJhciB4IiAoZGlyZWQtZmlsZS1uYW1lLWF0LXBvaW50KSkpKQogIytFTkRfU1JDCioqKiog cGVhemlwIGV4dHJhY3QKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGY0N2NlNDQ3 LTQ5OTUtNDI1MC1iMzkyLTE3OTExMGIxMjE0YQogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFj cy1saXNwCiAoZGVmdW4gei9kaXJlZC1zaGVsbC1wZWEtZXh0cmFjdCAoKQogICAgICJjaG1vZCIK ICAgICAoaW50ZXJhY3RpdmUpCiAgICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAicGVhemlwIC1l eHQyZm9sZGVyICIgKGRpcmVkLWZpbGUtbmFtZS1hdC1wb2ludCkpKQo7OzsgdG8gcmVmcmVzaCB2 aWV3IHVzZSByZXZlcnQgYnVmZmVyICAKICAgIChyZXZlcnQtYnVmZmVyKQogICAgKG1lc3NhZ2Ug KHByb3BlcnRpemUgImV4dHJhY3RlZCIgJ2ZhY2UgJ2ZvbnQtbG9jay13YXJuaW5nLWZhY2UpKQog KQoKICMrRU5EX1NSQwoKCioqKiogcGVhemlwIHppcAogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJ RDogICAgICAgMmYzNDBiMTgtNjk1ZS00NmU5LWJhMjUtYzQ0OGQzMTZjM2Q0CiAgICAgOkVORDoK ICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKIChkZWZ1biB6L2RpcmVkLXNoZWxsLXBlYS16aXAgKCkK ICAgICAiY2htb2QiCiAgICAgKGludGVyYWN0aXZlKQogICAgIChzaGVsbC1jb21tYW5kIChjb25j YXQgInBlYXppcCAtYWRkMnppcCAiIChkaXJlZC1maWxlLW5hbWUtYXQtcG9pbnQpKSkKOzs7IHRv IHJlZnJlc2ggdmlldyB1c2UgcmV2ZXJ0IGJ1ZmZlciAgCiAgICAocmV2ZXJ0LWJ1ZmZlcikKICAg IChtZXNzYWdlIChwcm9wZXJ0aXplICJwZWF6aXAgemlwcGVkIiAnZmFjZSAnZm9udC1sb2NrLXdh cm5pbmctZmFjZSkpCiApCgogIytFTkRfU1JDCgogIytSRVNVTFRTOgogOiB6L2RpcmVkLXNoZWxs LXBlYS16aXAKCgoqKiogQ29weS9tb3ZlIG9wZXJhdGlvbnMKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICBhMTIzM2U4Ni0xY2E5LTQ2MDEtYjY1ZC0xZWU5ZThiODY3MTEKICAgIDpFTkQ6 CioqKiogY29weSB0byBsaXN0IG9mIHNwZWNpZmljIGZvbGRlcnMKICAgICA6UFJPUEVSVElFUzoK ICAgICA6SUQ6ICAgICAgIDBlMDllODY5LTkyYzYtNDYzMS1iOGVhLTZhNDk5ZDU0YTZlYwogICAg IDpFTkQ6Cmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjk4MDk2OTgvZW1hY3Mt ZGlyZWQtdXNpbmctcHJlZGVmaW5lZC12YXJpYWJsZQoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQo7OyBVc2UgaWRvCihyZXF1aXJlICdpZG8pCgo7OyBNYWtlIGEgaGFzaCB0 YWJsZSB0byBob2xkIHRoZSBwYXRocwooc2V0cSBteS10YXJnZXQtZGlycyAobWFrZS1oYXNoLXRh YmxlIDp0ZXN0ICdlcXVhbCkpCgo7OyBBIGZ1bmN0aW9uIHRvIHJldHVybiBhbGwgdGhlIGtleXMg ZnJvbSBhIGhhc2guCihkZWZ1biBnZXQta2V5cy1mcm9tLWhhc2ggKGhhc2gpCiAgKGxldCAoKGtl eXMgKCkpKQogICAgKG1hcGhhc2ggKGxhbWJkYSAoayB2KSAocHVzaCBrIGtleXMpKSBoYXNoKQog ICAga2V5cykpCgo7OyBBbmQgdGhlIGZ1bmN0aW9uIHRvIHByb21wdCBmb3IgYSBkaXJlY3Rvcnkg Ynkga2V5d29yZCB0aGF0IGlzIGxvb2tlZAo7OyB1cCBpbiB0aGUgaGFzaC10YWJsZSBhbmQgdXNl ZCB0byBidWlsZCB0aGUgdGFyZ2V0IHBhdGggZnJvbSB0aGUKOzsgdmFsdWUgb2YgdGhlIGxvb2t1 cC4KKGRlZnVuIHovZGlyZWQtY29weS1zZXRkaXJzICgpCiAgKGludGVyYWN0aXZlKQogIChsZXQq ICgobXktaGFzaCBteS10YXJnZXQtZGlycykKICAgICAgICAgKGZpbGVzIChkaXJlZC1nZXQtbWFy a2VkLWZpbGVzKSkKICAgICAgICAgKGtleXMgKGdldC1rZXlzLWZyb20taGFzaCBteS1oYXNoKSkp CiAgICAobWFwYyAobGFtYmRhIChmaWxlKQogICAgICAgICAgICAoY29weS1maWxlIGZpbGUKCQkg ICAgICAgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaAogICAgICAgICAg ICAgICAgICAgICAgICAgKGlkby1jb21wbGV0aW5nLXJlYWQKICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29uY2F0ICJjb3B5ICIgZmlsZSAiIHRvOiAiKSBrZXlzKSBteS1oYXNoKQogICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkpKQogICAgICAg ICAgZmlsZXMpKSkKCgooZGVmdW4gei9kaXJlZC1tb3ZlLXNldGRpcnMgKCkKICAoaW50ZXJhY3Rp dmUpCiAgKGxldCogKChteS1oYXNoIG15LXRhcmdldC1kaXJzKQogICAgICAgICAoZmlsZXMgKGRp cmVkLWdldC1tYXJrZWQtZmlsZXMpKQogICAgICAgICAoa2V5cyAoZ2V0LWtleXMtZnJvbS1oYXNo IG15LWhhc2gpKSkKICAgIChtYXBjIChsYW1iZGEgKGZpbGUpCiAgICAgICAgICAgIChyZW5hbWUt ZmlsZSBmaWxlCgkJICAgICAgIChjb25jYXQKICAgICAgICAgICAgICAgICAgICAgICAgKGdldGhh c2gKICAgICAgICAgICAgICAgICAgICAgICAgIChpZG8tY29tcGxldGluZy1yZWFkCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAibW92ZSIgZmlsZSAiIHRvOiAiKSBrZXlzKSBteS1o YXNoKQogICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxl KSkpKQogICAgICAgICAgZmlsZXMpKSkKIytFTkRfU1JDCgoKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCAgOnJlc3VsdHMgbm9uZQo7OyBQdXQgc29tZSBwYXRocyBpbiB0aGUgaGFzaCAoc29ycnkgZm9y IFVuaXggcGF0aG5hbWVzKQoocHV0aGFzaCAiaG9tZSIgIi9ob21lL3plbHRhay8iIG15LXRhcmdl dC1kaXJzKQoocHV0aGFzaCAiQVVSIiAiL2hvbWUvemVsdGFrL0FVUi8iIG15LXRhcmdldC1kaXJz KQoocHV0aGFzaCAiZG93bmxvYWRzIiAiL2hvbWUvemVsdGFrL0Rvd25sb2Fkcy8gIiBteS10YXJn ZXQtZGlycykKKHB1dGhhc2ggIlpIX3RtcCIgIi9ob21lL3plbHRhay9aSF90bXAvIiBteS10YXJn ZXQtZGlycykKKHB1dGhhc2ggIm11c2ljIiAiL2hvbWUvemVsdGFrL211c2ljLyIgbXktdGFyZ2V0 LWRpcnMpCihwdXRoYXNoICJiaW4iICIvaG9tZS96ZWx0YWsvYmluLyIgbXktdGFyZ2V0LWRpcnMp CihwdXRoYXNoICJCSyIgIi9ob21lL3plbHRhay9CSy8iIG15LXRhcmdldC1kaXJzKQoocHV0aGFz aCAib3JnIiAiL2hvbWUvemVsdGFrL29yZy8iIG15LXRhcmdldC1kaXJzKQoocHV0aGFzaCAibXJl dmlldyIgIi9ob21lL3plbHRhay9tcmV2aWV3LyIgbXktdGFyZ2V0LWRpcnMpCihwdXRoYXNoICJT eW5jIiAiL2hvbWUvemVsdGFrL1N5bmMvIiBteS10YXJnZXQtZGlycykKKHB1dGhhc2ggIlVuaSIg Ii9ob21lL3plbHRhay9VbmkvIiBteS10YXJnZXQtZGlycykKKHB1dGhhc2ggInNjcmlwdHMiICIv aG9tZS96ZWx0YWsvc2NyaXB0cy8iIG15LXRhcmdldC1kaXJzKQoocHV0aGFzaCAicDJwIiAiL2hv bWUvemVsdGFrL21vdW50cy9scmFpZC9Eb3dubG9hZC90cmFuc21pc3Npb24vY29tcGxldGVkLyIg bXktdGFyZ2V0LWRpcnMpCihwdXRoYXNoICJkb3RmaWxlcyIgIi9ob21lL3plbHRhay9kb3RmaWxl cy8iIG15LXRhcmdldC1kaXJzKQoocHV0aGFzaCAiY29uZmlnIiAiL2hvbWUvemVsdGFrLy5jb25m aWcvIiBteS10YXJnZXQtZGlycykKKHB1dGhhc2ggImNvbnYiICIvaG9tZS96ZWx0YWsvWkhfdG1w LyRDT05WIiBteS10YXJnZXQtZGlycykKKHB1dGhhc2ggIm12aWQiICIvaG9tZS96ZWx0YWsvbW91 bnRzL2xyYWlkL3JhaWQvVmlkZW9zLzFfVmlkZW8vbWljaGFsLyIgbXktdGFyZ2V0LWRpcnMpCihw dXRoYXNoICJraWRzdHYiICIvaG9tZS96ZWx0YWsvbW91bnRzL2xyYWlkL3JhaWQvVmlkZW9zLzFf VmlkZW8vS2lkcy9UVi8iIG15LXRhcmdldC1kaXJzKQoocHV0aGFzaCAia2lkc3R2IiAiL2hvbWUv emVsdGFrL21vdW50cy9scmFpZC9yYWlkL1ZpZGVvcy8xX1ZpZGVvL0tpZHMvQW5pbWF0ZWQgTW92 aWVzLyIgbXktdGFyZ2V0LWRpcnMpCiMrRU5EX1NSQwoKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNw CiAgIChkZWZ1biB6L2RpcmVkLWNvcHktc2V0ZGlycy1yZWN1cnMgKCkKICAgICAoaW50ZXJhY3Rp dmUpCiAgICAgKGxldCogKChteS1oYXNoIG15LXRhcmdldC1kaXJzKQogICAgICAgICAgICAoZmls ZXMgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpKQogICAgICAgICAgICAoa2V5cyAoZ2V0LWtleXMt ZnJvbS1oYXNoIG15LWhhc2gpKSkKICAgICAgIChtYXBjIChsYW1iZGEgKGZpbGUpCgkgICAgICAg KGxldCAoKHRhcmdldCAoZ2V0aGFzaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWRv LWNvbXBsZXRpbmctcmVhZAoJCQkgICAgICAgKGNvbmNhdCAiY29weSAiIGZpbGUgIiB0bzogIikg a2V5cykgbXktaGFzaCkpKQogICAgICAgICAgICAgICAgIChpZiAoeS1vci1uLXAgIkRlc2NlbmQ/ IikKICAgICAgICAgICAgICAgICAgICAgOzsgRGVzY2VuZCBpbnRvIHN1YmRpcmVjdG9yaWVzIHJl bGF0aXZlIHRvIHRhcmdldCBkaXIKICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5ldy10YXJn ZXQgKGlkby1yZWFkLWRpcmVjdG9yeS1uYW1lICJuZXcgZGlyOiAiIHRhcmdldCkpKSAKCQkgICAg ICAgKGNvcHktZmlsZSBmaWxlIChjb25jYXQgbmV3LXRhcmdldAoJCQkJCSAgICAgICAoZmlsZS1u YW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkpCgkJICAgICAgIChtZXNzYWdlIChjb25jYXQgIkZpbGU6 ICIgZmlsZSAiIHdhcyBjb3BpZWQgdG8gIiBuZXctdGFyZ2V0KSkpCiAgICAgICAgICAgICAgICAg ICA7OyBFbHNlIGNvcHkgdG8gcm9vdCBvZiBvcmlnaW5hbGx5IHNlbGVjdGVkIGRpcmVjdG9yeQog ICAgICAgICAgICAgICAgICAgKGNvcHktZmlsZSBmaWxlIChjb25jYXQgdGFyZ2V0IChmaWxlLW5h bWUtbm9uZGlyZWN0b3J5IGZpbGUpKSkKICAgICAgICAgICAgICAgICAgIChtZXNzYWdlIChjb25j YXQgIkZpbGU6ICIgZmlsZSAiIHdhcyBjb3BpZWQgdG8gIiB0YXJnZXQpKSkpKQogICAgICAgICAg ICAgZmlsZXMpKSkKCiAgIChkZWZ1biB6L2RpcmVkLW1vdmUtc2V0ZGlycy1yZWN1cnMgKCkKICAg ICAoaW50ZXJhY3RpdmUpCiAgICAgKGxldCogKChteS1oYXNoIG15LXRhcmdldC1kaXJzKQogICAg ICAgICAgICAoZmlsZXMgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpKQogICAgICAgICAgICAoa2V5 cyAoZ2V0LWtleXMtZnJvbS1oYXNoIG15LWhhc2gpKSkKICAgICAgIChtYXBjIChsYW1iZGEgKGZp bGUpCgkgICAgICAgKGxldCAoKHRhcmdldCAoZ2V0aGFzaAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWRvLWNvbXBsZXRpbmctcmVhZAoJCQkgICAgICAgKGNvbmNhdCAibW92ZSAiIGZp bGUgIiB0bzogIikga2V5cykgbXktaGFzaCkpKQogICAgICAgICAgICAgICAgIChpZiAoeS1vci1u LXAgIkRlc2NlbmQ/IikKICAgICAgICAgICAgICAgICAgICAgOzsgRGVzY2VuZCBpbnRvIHN1YmRp cmVjdG9yaWVzIHJlbGF0aXZlIHRvIHRhcmdldCBkaXIKICAgICAgICAgICAgICAgICAgICAgKGxl dCAoKG5ldy10YXJnZXQgKGlkby1yZWFkLWRpcmVjdG9yeS1uYW1lICJuZXcgZGlyOiAiIHRhcmdl dCkpKSAKCQkgICAgICAgKHJlbmFtZS1maWxlIGZpbGUgKGNvbmNhdCBuZXctdGFyZ2V0CgkJCQkJ ICAgICAgIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUpKSkKCQkgICAgICAgKG1lc3NhZ2Ug KGNvbmNhdCAiRmlsZTogIiBmaWxlICIgd2FzIG1vdmVkIHRvICIgbmV3LXRhcmdldCkpKQogICAg ICAgICAgICAgICAgICAgOzsgRWxzZSBjb3B5IHRvIHJvb3Qgb2Ygb3JpZ2luYWxseSBzZWxlY3Rl ZCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgIChyZW5hbWUtZmlsZSBmaWxlIChjb25jYXQg dGFyZ2V0IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUpKSkKICAgICAgICAgICAgICAgICAg IChtZXNzYWdlIChjb25jYXQgIkZpbGU6ICIgZmlsZSAiIHdhcyBtb3ZlZCB0byAiIHRhcmdldCkp KSkpCiAgICAgICAgICAgICBmaWxlcykpKQogIytFTkRfU1JDCioqKiogY29weSBmaWxlICh2ZXJz aW9uIGl0KQogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYzY1NDQwODgtNWFiZi00 NDRkLWIwM2ItZDYxODIzODYzODVlCiAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQooZGVmY3VzdG9tIGRpcmVkLWtlZXAtbWFya2VyLXZlcnNpb24gP1YKICAi Q29udHJvbHMgbWFya2luZyBvZiB2ZXJzaW9uZWQgZmlsZXMuCklmIHQsIHZlcnNpb25lZCBmaWxl cyBhcmUgbWFya2VkIGlmIGFuZCBhcyB0aGUgY29ycmVzcG9uZGluZyBvcmlnaW5hbCBmaWxlcyB3 ZXJlLgpJZiBhIGNoYXJhY3RlciwgY29waWVkIGZpbGVzIGFyZSB1bmNvbmRpdGlvbmFsbHkgbWFy a2VkIHdpdGggdGhhdCBjaGFyYWN0ZXIuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJL ZWVwIiB0KQogICAgICAgICAoY2hhcmFjdGVyIDp0YWcgIk1hcmsiKSkKICA6Z3JvdXAgJ2RpcmVk LW1hcmspCgooZGVmdW4gZGlyZWQtdmVyc2lvbi1maWxlIChmcm9tIHRvIG9rLWZsYWcpCiAgKGRp cmVkLWhhbmRsZS1vdmVyd3JpdGUgdG8pCiAgKGRpcmVkLWNvcHktZmlsZS1yZWN1cnNpdmUgZnJv bSB0byBvay1mbGFnIGRpcmVkLWNvcHktcHJlc2VydmUtdGltZSB0CiAgICAgICAgICAgICAgICAg ZGlyZWQtcmVjdXJzaXZlLWNvcGllcykpCgooZGVmdW4gZGlyZWQtZG8tdmVyc2lvbiAoJm9wdGlv bmFsIGFyZykKICAiU2VhcmNoIGZvciBudW1lcmljIHBhdHRlcm4gaW4gZmlsZSBuYW1lIGFuZCBj cmVhdGUgYSB2ZXJzaW9uIG9mIHRoYXQgZmlsZQp3aXRoIHRoYXQgbnVtYmVyIGluY3JlbWVudGVk IGJ5IG9uZSwgb3IsIGluIGNhc2Ugc3VjaCBmaWxlIGFscmVhZHkgZXhpc3RzLAp3aWxsIHNlYXJj aCBmb3IgYSBmaWxlIHdpdGggdGhlIHNpbWlsYXIgbmFtZSwgaW5jcmVtZW50aW5nIHRoZSBjb3Vu dGVyIGVhY2gKdGltZSBieSBvbmUuCkFkZGl0aW9uYWxseSwgaWYgY2FsbGVkIHdpdGggcHJlZml4 IGFyZ3VtZW50LCB3aWxsIHByb21wdCBmb3IgbnVtYmVyIGZvcm1hdC4KVGhlIGZvcm1hdHRpbmcg aXMgdGhlIHNhbWUgYXMgaXMgdXNlZCB3aXRoIGBmb3JtYXQnIGZ1bmN0aW9uLiIKICAoaW50ZXJh Y3RpdmUgIlAiKQogIChsZXQgKChmbi1saXN0IChkaXJlZC1nZXQtbWFya2VkLWZpbGVzIG5pbCBu aWwpKSkKICAgIChkaXJlZC1jcmVhdGUtZmlsZXMKICAgICAoZnVuY3Rpb24gZGlyZWQtdmVyc2lv bi1maWxlKSAiVmVyc2lvbiIgZm4tbGlzdAogICAgIChmdW5jdGlvbgogICAgICAobGFtYmRhIChm cm9tKQogICAgICAgIChsZXQgKG5ldy1uYW1lIChpIDApIChmbXQgKGlmIGFyZyAocmVhZC1zdHJp bmcgIlZlcnNpb24gZm9ybWF0OiAiICIlZCIpICIlZCIpKSkKICAgICAgICAgICh3aGlsZSAob3Ig KG51bGwgbmV3LW5hbWUpIChmaWxlLWV4aXN0cy1wIG5ldy1uYW1lKSkKICAgICAgICAgICAgKHNl dHEgbmV3LW5hbWUKICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggICJeXFwoW14w LTldKlxcKVxcKFswLTldK1xcKVxcKC4qXFwpJCIgZnJvbSkKICAgICAgICAgICAgICAgICAgICAg IChjb25jYXQgKG1hdGNoLXN0cmluZyAxIGZyb20pCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmb3JtYXQgZm10CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsg KHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAyIGZyb20pKSAoMSsgaSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDMgZnJvbSkpCiAgICAgICAgICAg ICAgICAgICAgKGNvbmNhdCBmcm9tIChmb3JtYXQgKGNvbmNhdCAiLiIgZm10KSBpKSkpCiAgICAg ICAgICAgICAgICAgIGkgKDErIGkpKSkgbmV3LW5hbWUpKSkKICAgICBkaXJlZC1rZWVwLW1hcmtl ci12ZXJzaW9uKSkpCgo7OyhkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChrYmQgImMiKSAnZGly ZWQtZG8tdmVyc2lvbikKIytFTkRfU1JDCioqKiogcXVpY2sgbW92ZS9jb3B5IHRvIHByZWRlZmlu ZWQgZm9sZGVycwogICAgIDpQUk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgYTY0ZTk0ODItZDAz ZC00NjU0LTliY2ItMzY5MmI0OTczNzM3CiAgICAgOkVORDoKKioqKiogbW92ZSB0byBNb3ZpZXMK ICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgMjMwNTlmNDUtZjhjOC00ZTU4LWEz NzItZGRjNzczN2U0ZjE3CiAgICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIHovZGlyZWQtbW92ZS10by1tb3ZpZXMgKCZvcHRpb25hbCBhcmcpCiAg KGludGVyYWN0aXZlICJQIikKICAoY2wtbGV0ZiogKChkZWZhdWx0LWRlc3QtZGlyICIvaG9tZS96 ZWx0YWsvbW91bnRzL2xyYWlkL3JhaWQvVmlkZW9zL01vdmllcyIpCiAgICAgICAgICAgICAoKHN5 bWJvbC1mdW5jdGlvbiAnZGlyZWQtZHdpbS10YXJnZXQtZGlyZWN0b3J5KQogICAgICAgICAgICAg IChsYW1iZGEgKCkKICAgICAgICAgICAgICAgIGRlZmF1bHQtZGVzdC1kaXIpKSkKICAgIChjYWxs LWludGVyYWN0aXZlbHkgIydkaXJlZC1kby1yZW5hbWUpKSkKOzsoZGVmaW5lLWtleSBkaXJlZC1t b2RlLW1hcCAoa2JkICI7IikgIydteS9kaXJlZC1kby1yZW5hbWUpCiMrRU5EX1NSQwoqKioqKiBt b3ZlIHRvIE1vdmllcyBraWRzCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIGZh ZGI4YjkyLWFiMDgtNDFkMC04NWFjLWUwN2MwNmVhM2I5MQogICAgICA6RU5EOgojK0JFR0lOX1NS QyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVkLW1vdmUtdG8tbW92aWVz LWtpZHMgKCZvcHRpb25hbCBhcmcpCiAgKGludGVyYWN0aXZlICJQIikKICAoY2wtbGV0ZiogKChk ZWZhdWx0LWRlc3QtZGlyICIvaG9tZS96ZWx0YWsvbW91bnRzL2xyYWlkL3JhaWQvVmlkZW9zLzFf VmlkZW8vS2lkcy9BbmltYXRlZCBNb3ZpZXMvIikKICAgICAgICAgICAgICgoc3ltYm9sLWZ1bmN0 aW9uICdkaXJlZC1kd2ltLXRhcmdldC1kaXJlY3RvcnkpCiAgICAgICAgICAgICAgKGxhbWJkYSAo KQogICAgICAgICAgICAgICAgZGVmYXVsdC1kZXN0LWRpcikpKQogICAgKGNhbGwtaW50ZXJhY3Rp dmVseSAjJ2RpcmVkLWRvLXJlbmFtZSkpKQo7OyhkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwIChr YmQgIjsiKSAjJ215L2RpcmVkLWRvLXJlbmFtZSkKIytFTkRfU1JDCioqKioqIG1vdmUgdG8gdHYK ICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgODFmZTJjNDItMGMxNy00MDNmLWI3 ZTktMzQ2OWQyY2RmODliCiAgICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIHovZGlyZWQtbW92ZS10by10diAoJm9wdGlvbmFsIGFyZykKICAoaW50 ZXJhY3RpdmUgIlAiKQogIChjbC1sZXRmKiAoKGRlZmF1bHQtZGVzdC1kaXIgIi9ob21lL3plbHRh ay9tb3VudHMvbHJhaWQvcmFpZC9WaWRlb3MvVFYiKQogICAgICAgICAgICAgKChzeW1ib2wtZnVu Y3Rpb24gJ2RpcmVkLWR3aW0tdGFyZ2V0LWRpcmVjdG9yeSkKICAgICAgICAgICAgICAobGFtYmRh ICgpCiAgICAgICAgICAgICAgICBkZWZhdWx0LWRlc3QtZGlyKSkpCiAgICAoY2FsbC1pbnRlcmFj dGl2ZWx5ICMnZGlyZWQtZG8tcmVuYW1lKSkpCiMrRU5EX1NSQwoKKioqKiogbW92ZSB0byB0diBr aWRzCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIDdmOGVmZTEwLWY5OTctNGVk Zi1hZDA5LWY4NmMxZmMzMTQ4OAogICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVkLW1vdmUtdG8tdHYta2lkcyAoJm9wdGlvbmFsIGFy ZykKICAoaW50ZXJhY3RpdmUgIlAiKQogIChjbC1sZXRmKiAoKGRlZmF1bHQtZGVzdC1kaXIgIi9o b21lL3plbHRhay9tb3VudHMvbHJhaWQvcmFpZC9WaWRlb3MvMV9WaWRlby9LaWRzL1RWLyIpCiAg ICAgICAgICAgICAoKHN5bWJvbC1mdW5jdGlvbiAnZGlyZWQtZHdpbS10YXJnZXQtZGlyZWN0b3J5 KQogICAgICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgIGRlZmF1bHQtZGVzdC1k aXIpKSkKICAgIChjYWxsLWludGVyYWN0aXZlbHkgIydkaXJlZC1kby1yZW5hbWUpKSkKIytFTkRf U1JDCgoqKioqKiBtb3ZlIHRvIGhtZWRpYQogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAg ICAgICAyY2MwNzQ2ZS1lZDE2LTQ0NTctOWU0Yy1mYmVmN2Y5YjUwMDkKICAgICAgOkVORDoKIytC RUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1tb3ZlLXRv LWhtZWRpYSAoJm9wdGlvbmFsIGFyZykKICAoaW50ZXJhY3RpdmUgIlAiKQogIChjbC1sZXRmKiAo KGRlZmF1bHQtZGVzdC1kaXIgIi9ob21lL3plbHRhay9tZWRpYS8iKQogICAgICAgICAgICAgKChz eW1ib2wtZnVuY3Rpb24gJ2RpcmVkLWR3aW0tdGFyZ2V0LWRpcmVjdG9yeSkKICAgICAgICAgICAg ICAobGFtYmRhICgpCiAgICAgICAgICAgICAgICBkZWZhdWx0LWRlc3QtZGlyKSkpCiAgICAoY2Fs bC1pbnRlcmFjdGl2ZWx5ICMnZGlyZWQtZG8tcmVuYW1lKSkpCiMrRU5EX1NSQwoKKioqKiogbW92 ZSB0byBtcmV2aWV3CiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAgIGUwZDcxNDEy LTZhM2UtNDg4OC1iMjJlLThlMDc4NDQyZTU0ZAogICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFj cy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVkLW1vdmUtdG8tbXJldmlldyAoJm9w dGlvbmFsIGFyZykKICAoaW50ZXJhY3RpdmUgIlAiKQogIChjbC1sZXRmKiAoKGRlZmF1bHQtZGVz dC1kaXIgIi9ob21lL3plbHRhay9tcmV2aWV3IikKICAgICAgICAgICAgICgoc3ltYm9sLWZ1bmN0 aW9uICdkaXJlZC1kd2ltLXRhcmdldC1kaXJlY3RvcnkpCiAgICAgICAgICAgICAgKGxhbWJkYSAo KQogICAgICAgICAgICAgICAgZGVmYXVsdC1kZXN0LWRpcikpKQogICAgKGNhbGwtaW50ZXJhY3Rp dmVseSAjJ2RpcmVkLWRvLXJlbmFtZSkpKQojK0VORF9TUkMKKioqKiogbW92ZSB0byBjb21pY3MK ICAgICAgOlBST1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgYTU0MThhOWYtM2NlMS00YjRhLTg3 NWQtMzc1YWEzY2IyZmEyCiAgICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1 bHRzIG5vbmUKKGRlZnVuIHovZGlyZWQtbW92ZS10by1jb21pY3MgKCZvcHRpb25hbCBhcmcpCiAg KGludGVyYWN0aXZlICJQIikKICAoY2wtbGV0ZiogKChkZWZhdWx0LWRlc3QtZGlyICIvaG9tZS96 ZWx0YWsvbW91bnRzL2xyYWlkL3JhaWQvQ29taWNzIikKICAgICAgICAgICAgICgoc3ltYm9sLWZ1 bmN0aW9uICdkaXJlZC1kd2ltLXRhcmdldC1kaXJlY3RvcnkpCiAgICAgICAgICAgICAgKGxhbWJk YSAoKQogICAgICAgICAgICAgICAgZGVmYXVsdC1kZXN0LWRpcikpKQogICAgKGNhbGwtaW50ZXJh Y3RpdmVseSAjJ2RpcmVkLWRvLXJlbmFtZSkpKQojK0VORF9TUkMKKioqKiogbW92ZSB0byBtdXNp YwogICAgICA6UFJPUEVSVElFUzoKICAgICAgOklEOiAgICAgICA0MTA4MzE1OC01ZDhjLTRlMTIt YTk5MS05MGE3ZmVhNDcxODUKICAgICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJl c3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1tb3ZlLXRvLW11c2ljICgmb3B0aW9uYWwgYXJnKQog IChpbnRlcmFjdGl2ZSAiUCIpCiAgKGNsLWxldGYqICgoZGVmYXVsdC1kZXN0LWRpciAiL2hvbWUv emVsdGFrL211c2ljLyIpCiAgICAgICAgICAgICAoKHN5bWJvbC1mdW5jdGlvbiAnZGlyZWQtZHdp bS10YXJnZXQtZGlyZWN0b3J5KQogICAgICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAg ICAgIGRlZmF1bHQtZGVzdC1kaXIpKSkKICAgIChjYWxsLWludGVyYWN0aXZlbHkgIydkaXJlZC1k by1yZW5hbWUpKSkKIytFTkRfU1JDCgoqKioqKiBtb3ZlIHRvIEJLCiAgICAgIDpQUk9QRVJUSUVT OgogICAgICA6SUQ6ICAgICAgIGQxNDQ0N2FmLTIxNWMtNDZmZS05YzdhLWFhMDg2NDA0YmY5Ygog ICAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6 L2RpcmVkLWNvcHktdG8tQksgKCZvcHRpb25hbCBhcmcpCiAgKGludGVyYWN0aXZlICJQIikKICAo Y2wtbGV0ZiogKChkZWZhdWx0LWRlc3QtZGlyICIvaG9tZS96ZWx0YWsvQksvIikKICAgICAgICAg ICAgICgoc3ltYm9sLWZ1bmN0aW9uICdkaXJlZC1kd2ltLXRhcmdldC1kaXJlY3RvcnkpCiAgICAg ICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgZGVmYXVsdC1kZXN0LWRpcikpKQog ICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2RpcmVkLWRvLWNvcHkpKSkKIytFTkRfU1JDCgoKCioq KiBzZWFyY2hpbmcKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3M2QyYzU2Yy05MTMy LTRiYWMtOGEzNC1hYTRmMGNmZmRmOGMKICAgIDpFTkQ6CioqKiogaW1kYiBzZWFyY2gKICAgICA6 UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDc4NjAyOTEwLWMwMTYtNDMyOC04NjlhLWYxOGM4 MzdlZjE5NQogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK IChkZWZ1biAgei9kaXJlZC1zZWFyY2gtaW1kYiAoKQogICAgICJpbWRiIHBvaW50ICIKICAgICAo aW50ZXJhY3RpdmUpCiAgICAgKHNoZWxsLWNvbW1hbmQgKGNvbmNhdCAic3VyZnJhdyBpbWRiICIg KGRpcmVjdG9yeS1maWxlLW5hbWUgKGZpbGUtcmVsYXRpdmUtbmFtZSAoZGlyZWQtZmlsZS1uYW1l LWF0LXBvaW50KSkpIAopKSkKICMrRU5EX1NSQwoqKioqIGdvb2dsZSBzZWFyY2gKICAgICA6UFJP UEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGJkYjgwY2Q0LTMwZTctNGEzNS1iMzk1LTcyZDM4YzBh Y2U0MwogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChk ZWZ1biAgei9kaXJlZC1zZWFyY2gtZ29vZ2xlICgpCiAgICAgImdvb2dsZSBwb2ludCAiCiAgICAg KGludGVyYWN0aXZlKQogICAgIChzaGVsbC1jb21tYW5kIChjb25jYXQgInN1cmZyYXcgZ29vZ2xl ICIgKGRpcmVjdG9yeS1maWxlLW5hbWUgKGZpbGUtcmVsYXRpdmUtbmFtZSAoZGlyZWQtZmlsZS1u YW1lLWF0LXBvaW50KSkpIAopKSkKICMrRU5EX1NSQwoKKioqKiBhbGxtdXNpYyBzZWFyY2gKICAg ICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDkzZDU0NWRiLTRkNjEtNGRiMi1hYTdmLWFk Mjk0Yzc4MzU5ZAogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5v bmUKIChkZWZ1biAgei9kaXJlZC1zZWFyY2gtYWxsbXVzaWMgKCkKICAgICAiYWxsbXVzaWMgcG9p bnQgIgogICAgIChpbnRlcmFjdGl2ZSkKICAgICAoc2hlbGwtY29tbWFuZCAoY29uY2F0ICJzdXJm cmF3IHl1Ym51YiBhbGxtdXNpYyAgIiAoZGlyZWN0b3J5LWZpbGUtbmFtZSAoZmlsZS1yZWxhdGl2 ZS1uYW1lIChkaXJlZC1maWxlLW5hbWUtYXQtcG9pbnQpKSkgCikpKQogIytFTkRfU1JDCioqKiBS c3luYyBjb3B5IAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGY0ZGFmM2ZmLTE1NGUt NDZjOS04NmE5LThlMWJjOTNjNzRjMwogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQo7OzsjIyNhdXRvbG9hZAooZGVmdW4gei9kaXJlZC1jb3B5LXJzeW5jIChk ZXN0KQogIChpbnRlcmFjdGl2ZQogICAobGlzdAogICAgKGV4cGFuZC1maWxlLW5hbWUKICAgICAo cmVhZC1maWxlLW5hbWUKICAgICAgIlJzeW5jIHRvOiIKICAgICAgKGRpcmVkLWR3aW0tdGFyZ2V0 LWRpcmVjdG9yeSkpKSkpCiAgOzsgc3RvcmUgYWxsIHNlbGVjdGVkIGZpbGVzIGludG8gImZpbGVz IiBsaXN0CiAgKGxldCAoKGZpbGVzIChkaXJlZC1nZXQtbWFya2VkLWZpbGVzCiAgICAgICAgICAg ICAgICBuaWwgY3VycmVudC1wcmVmaXgtYXJnKSkKICAgICAgICA7OyB0aGUgcnN5bmMgY29tbWFu ZAogICAgICAgICh0bXR4dC9yc3luYy1jb21tYW5kCiAgICAgICAgICJyc3luYyAtYXJ2eiAtLXBy b2dyZXNzICIpKQogICAgOzsgYWRkIGFsbCBzZWxlY3RlZCBmaWxlIG5hbWVzIGFzIGFyZ3VtZW50 cwogICAgOzsgdG8gdGhlIHJzeW5jIGNvbW1hbmQKICAgIChkb2xpc3QgKGZpbGUgZmlsZXMpCiAg ICAgIChzZXRxIHRtdHh0L3JzeW5jLWNvbW1hbmQKICAgICAgICAgICAgKGNvbmNhdCB0bXR4dC9y c3luYy1jb21tYW5kCiAgICAgICAgICAgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IGZp bGUpCiAgICAgICAgICAgICAgICAgICAgIiAiKSkpCiAgICA7OyBhcHBlbmQgdGhlIGRlc3RpbmF0 aW9uCiAgICAoc2V0cSB0bXR4dC9yc3luYy1jb21tYW5kCiAgICAgICAgICAoY29uY2F0IHRtdHh0 L3JzeW5jLWNvbW1hbmQKICAgICAgICAgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IGRl c3QpKSkKICAgIDs7IHJ1biB0aGUgYXN5bmMgc2hlbGwgY29tbWFuZAogICAgKGFzeW5jLXNoZWxs LWNvbW1hbmQgdG10eHQvcnN5bmMtY29tbWFuZCAiKnJzeW5jKiIpCiAgICA7OyBmaW5hbGx5LCBz d2l0Y2ggdG8gdGhhdCB3aW5kb3cKICAgIChvdGhlci13aW5kb3cgMSkpKQoKKGRlZmluZS1rZXkg ZGlyZWQtbW9kZS1tYXAgIlkiICdvcmEtZGlyZWQtcnN5bmMpCgojK0VORF9TUkMKKioqIGRpcmVk IFhERyBvcGVuCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgZDAzNjA5ZDgtYWMxYS00 Yjk3LWFiZDItMTI5YTBiZjg4MTIyCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCihkZWZ1biB6L2RpcmVkLXhkZy1vcGVuICgpCiAgIk9wZW4gdGhlIGN1cnJl bnQgZmlsZSBvciBkaXJlZCBtYXJrZWQgZmlsZXMgaW4gZXh0ZXJuYWwgYXBwLgpUaGUgYXBwIGlz IGNob3NlbiBmcm9tIHlvdXIgT1MncyBwcmVmZXJlbmNlLgoKVVJMIGBodHRwOi8vZXJnb2VtYWNz Lm9yZy9lbWFjcy9lbWFjc19kaXJlZF9vcGVuX2ZpbGVfaW5fZXh0X2FwcHMuaHRtbCcKVmVyc2lv biAyMDE1LTAxLTI2IgogIChpbnRlcmFjdGl2ZSkKICAobGV0KiAoCiAgICAgICAgICjOvmZpbGUt bGlzdAogICAgICAgICAgKGlmIChzdHJpbmctZXF1YWwgbWFqb3ItbW9kZSAiZGlyZWQtbW9kZSIp CiAgICAgICAgICAgICAgKGRpcmVkLWdldC1tYXJrZWQtZmlsZXMpCiAgICAgICAgICAgIChsaXN0 IChidWZmZXItZmlsZS1uYW1lKSkpKQogICAgICAgICAozr5kby1pdC1wIChpZiAoPD0gKGxlbmd0 aCDOvmZpbGUtbGlzdCkgNSkKICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAg ICAgICAgICh5LW9yLW4tcCAiT3BlbiBtb3JlIHRoYW4gNSBmaWxlcz8gIikpKSkKCiAgICAod2hl biDOvmRvLWl0LXAKICAgICAgKGNvbmQKICAgICAgICgoc3RyaW5nLWVxdWFsIHN5c3RlbS10eXBl ICJ3aW5kb3dzLW50IikKICAgICAgICAobWFwYwogICAgICAgICAobGFtYmRhIChmUGF0aCkKICAg ICAgICAgICAodzMyLXNoZWxsLWV4ZWN1dGUgIm9wZW4iIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJp bmcgIi8iICJcXCIgZlBhdGggdCB0KSkpIM6+ZmlsZS1saXN0KSkKICAgICAgICgoc3RyaW5nLWVx dWFsIHN5c3RlbS10eXBlICJkYXJ3aW4iKQogICAgICAgIChtYXBjCiAgICAgICAgIChsYW1iZGEg KGZQYXRoKSAoc2hlbGwtY29tbWFuZCAoZm9ybWF0ICJvcGVuIFwiJXNcIiIgZlBhdGgpKSkgIM6+ ZmlsZS1saXN0KSkKICAgICAgICgoc3RyaW5nLWVxdWFsIHN5c3RlbS10eXBlICJnbnUvbGludXgi KQogICAgICAgIChtYXBjCiAgICAgICAgIChsYW1iZGEgKGZQYXRoKSAobGV0ICgocHJvY2Vzcy1j b25uZWN0aW9uLXR5cGUgbmlsKSkgKHN0YXJ0LXByb2Nlc3MgIiIgbmlsICJ4ZGctb3BlbiIgZlBh dGgpKSkgzr5maWxlLWxpc3QpKSkpKSkKIytFTkRfU1JDCioqKiBjb3B5IGN1cnJlbnQgb3BlbiBi dWZmZXIgcGF0aCB0byBraWxscmluZwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDQ3 ZWE5ZmYzLTQzYTYtNGRkYy05NmJmLWY1MzFhZDc5OTUwOQogICAgOkVORDoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1jb3B5LWJ1ZmZlci1maWxl LXBhdGggKCZvcHRpb25hbCDPhmRpci1wYXRoLW9ubHktcCkKICAiQ29weSB0aGUgY3VycmVudCBi dWZmZXIncyBmaWxlIHBhdGggb3IgZGlyZWQgcGF0aCB0byBga2lsbC1yaW5nJy4KUmVzdWx0IGlz IGZ1bGwgcGF0aC4KSWYgYHVuaXZlcnNhbC1hcmd1bWVudCcgaXMgY2FsbGVkIGZpcnN0LCBjb3B5 IG9ubHkgdGhlIGRpciBwYXRoLgpVUkwgYGh0dHA6Ly9lcmdvZW1hY3Mub3JnL2VtYWNzL2VtYWNz X2NvcHlfZmlsZV9wYXRoLmh0bWwnClZlcnNpb24gMjAxNS0xMi0wMiIKICAoaW50ZXJhY3RpdmUg IlAiKQogIChsZXQgKCjOvmZwYXRoCiAgICAgICAgIChpZiAoZXF1YWwgbWFqb3ItbW9kZSAnZGly ZWQtbW9kZSkKICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0b3J5 KQogICAgICAgICAgIChpZiAobnVsbCAoYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgICAgICAgICAg ICh1c2VyLWVycm9yICJDdXJyZW50IGJ1ZmZlciBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgZmls ZS4iKQogICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUpKSkpKQogICAgKGtpbGwtbmV3CiAg ICAgKGlmIChudWxsIM+GZGlyLXBhdGgtb25seS1wKQogICAgICAgICAocHJvZ24KICAgICAgICAg ICAobWVzc2FnZSAiRmlsZSBwYXRoIGNvcGllZDog44CMJXPjgI0iIM6+ZnBhdGgpCiAgICAgICAg ICAgzr5mcGF0aAogICAgICAgICAgICkKICAgICAgIChwcm9nbgogICAgICAgICAobWVzc2FnZSAi RGlyZWN0b3J5IHBhdGggY29waWVkOiDjgIwlc+OAjSIgKGZpbGUtbmFtZS1kaXJlY3Rvcnkgzr5m cGF0aCkpCiAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IM6+ZnBhdGgpKSkpKSkKIytFTkRf U1JDXE4KKioqIGdldC1vdGhlci1kaXJlZC1kaXJlY3RvcnkKICAgIDpQUk9QRVJUSUVTOgogICAg OklEOiAgICAgICAzMDhmYTRkOC1lMzc3LTQ0ODctOTFiMS03ZTExNWI1ZjJjNmUKICAgIDpFTkQ6 Cmh0dHA6Ly9lbWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjA5MzUvc3luY2hyb25p emUtY3VycmVudC1kaXJlZC1wYXRoLXRvLW5leHQtZGlyZWQtZGlyLXNob3duLWluLWEtc3BsaXQt d2luZG93CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihkZWZ1biB6L2Rp cmVkLWdldC1vdGhlci1kaXJlZC1kaXJlY3RvcnkgKCkKICAiZmluZCBuYW1lIGFuZCBkaXJlY3Rv cnkgb2YgYW5vdGhlciBkaXJlZCBidWZmZXIiCiAgKGxldCAoKGJzIChidWZmZXItbGlzdCkpCiAg ICAgICAgKGhlcmUgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAgICB0aGlzKQogICAgKG1hcGMgKGxh bWJkYSAoYikgKHVubGVzcyAoZXF1YWwgYiBoZXJlKQogICAgICAgICAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciBiCiAgICAgICAgICAgICAgKGlmIGRpcmVkLWRpcmVjdG9yeQogICAgICAgICAgICAg ICAgICAoc2V0cSB0aGlzIChjb25zIChidWZmZXItbmFtZSkgZGlyZWQtZGlyZWN0b3J5KSkpKSkp IGJzKQogICAgdGhpcykpCgooZGVmdW4gbXkvc2V0LWRpcmVkLWRpci10by1vdGhlciAoKQogICJD aGFuZ2UgdGhlIGRpcmVkIGRpcmVjdG9yeSB0byB0aGUgb25lIG9mIGFub3RoZXIgZXhpc3Rpbmcg ZGlyZWQgYnVmZmVyIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoZCAobXkvZ2V0LW90aGVyLWRp cmVkLWRpcmVjdG9yeSkpKQogICAgKGlmIGQKICAgICAgICAocHJvZ24KICAgICAgICAgIChzZXRx IGRpcmVkLWRpcmVjdG9yeSAoY2RyIGQpCiAgICAgICAgICAgICAgICBkZWZhdWx0LWRpcmVjdG9y eSAoY2RyIGQpKQogICAgICAgICAgKHJldmVydC1idWZmZXIpCiAgICAgICAgICAocmVuYW1lLWJ1 ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lIChjYXIgZCkpKSkKICAgICAgKG1lc3NhZ2Ug Ik5vIG90aGVyIGRpcmVkIGJ1ZmZlciIpKSkpCiMrRU5EX1NSQwoqKiogUXVpY2tseSBtb3ZlIGEg ZmlsZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICA4ZDA2ZWU4Ni1iMGZkLTRmMzgtOTUyMy05YzI0MjkxNDcyZGIKICAgIDpFTkQ6CgpodHRw Oi8vcHJhZ21hdGljZW1hY3MuY29tL2VtYWNzL3F1aWNrbHktbW92ZS1hLWZpbGUtdG8tdGhlLWN1 cnJlbnQtZGlyZWN0b3J5LwoKT2Z0ZW4gSeKAmWxsIGRvd25sb2FkIGEgZmlsZSBpbiBteSBicm93 c2VyLCBhbmQgdGhlbiB3YW50IHRvIG1vdmUgdGhhdCBmaWxlIHRvIHRoZSBkaXJlY3RvcnkgaW4g d2hpY2ggSSBhbSB3b3JraW5nIGluIGVtYWNzLiBJIHdyb3RlIGEgbGl0dGxlIGhlbHBlciBmdW5j dGlvbiB0byBzdHJlYW1saW5lIHRoaXMsIGNhbGxlZCBiam0vbW92ZS1maWxlLWhlcmUsIGdpdmVu IGJlbG93IG9yIGF0IHRoaXMgZ2l0aHViIGdpc3QuIENhbGwgdGhlIGZ1bmN0aW9uIGFuZCBpdCB3 aWxsIHByb21wdCB5b3Ugd2l0aCBhIGxpc3Qgb2YgZmlsZXMgaW4geW91ciBzdGFydGluZyBkaXJl Y3RvcnkgKGRlZmF1bHRpbmcgdG8gfi9kb3dubG9hZHMsIGJ1dCBjb25maWd1cmFibGUgd2l0aCBi am0vbW92ZS1maWxlLWhlcmUtc3RhcnQtZGlyKSBzb3J0ZWQgdG8gaGF2ZSB0aGUgbW9zdCByZWNl bnQgZmlyc3QuIFRoZSBjaG9zZW4gZmlsZSB3aWxsIHRoZW4gYmUgbW92ZWQgdG8gdGhlIGN1cnJl bnQgZGlyZWN0b3J5IGlmIHlvdSBhcmUgaW4gZGlyZWQsIG9yIGVsc2UgdGhlIGRpcmVjdG9yeSBv ZiB0aGUgY3VycmVudCBidWZmZXIuIAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMg bm9uZQoocmVxdWlyZSAnZGFzaCkKCjs7IHN0YXJ0IGRpcmVjdG9yeQooZGVmdmFyIGJqbS9tb3Zl LWZpbGUtaGVyZS1zdGFydC1kaXIgKGV4cGFuZC1maWxlLW5hbWUgIn4vZG93bmxvYWRzIikpCgoo ZGVmdW4gYmptL21vdmUtZmlsZS1oZXJlICgpCiAgIk1vdmUgZmlsZSBmcm9tIHNvbWV3aGVyZSBl bHNlIHRvIGhlcmUuClRoZSBmaWxlIGlzIHRha2VuIGZyb20gYSBzdGFydCBkaXJlY3Rvcnkgc2V0 IGJ5IGBiam0vbW92ZS1maWxlLWhlcmUtc3RhcnQtZGlyJyBhbmQgbW92ZWQgdG8gdGhlIGN1cnJl bnQgZGlyZWN0b3J5IGlmIGludm9rZWQgaW4gZGlyZWQsIG9yIGVsc2UgdGhlIGRpcmVjdG9yeSBj b250YWluaW5nIGN1cnJlbnQgYnVmZmVyLiBUaGUgdXNlciBpcyBwcmVzZW50ZWQgd2l0aCBhIGxp c3Qgb2YgZmlsZXMgaW4gdGhlIHN0YXJ0IGRpcmVjdG9yeSwgZnJvbSB3aGljaCB0byBzZWxlY3Qg dGhlIGZpbGUgdG8gbW92ZSwgc29ydGVkIGJ5IG1vc3QgcmVjZW50IGZpcnN0LiIKICAoaW50ZXJh Y3RpdmUpCiAgKGxldCAoZmlsZS1saXN0IHRhcmdldC1kaXIgZmlsZS1saXN0LXNvcnRlZCBzdGFy dC1maWxlIHN0YXJ0LWZpbGUtZnVsbCkKICAgIDs7IGNsZWFuIGRpcmVjdG9yaWVzIGZyb20gbGlz dCBidXQga2VlcCB0aW1lcwogICAgKHNldHEgZmlsZS1saXN0CiAgICAgICAgICAoLXJlbW92ZSAo bGFtYmRhICh4KSAobnRoIDEgeCkpCiAgICAgICAgICAgICAgICAgICAoZGlyZWN0b3J5LWZpbGVz LWFuZC1hdHRyaWJ1dGVzIGJqbS9tb3ZlLWZpbGUtaGVyZS1zdGFydC1kaXIpKSkKCiAgICA7OyBn ZXQgdGFyZ2V0IGRpcmVjdG9yeQogICAgOzsgaHR0cDovL2VyZ29lbWFjcy5vcmcvZW1hY3MvZW1h Y3NfY29weV9maWxlX3BhdGguaHRtbAogICAgKHNldHEgdGFyZ2V0LWRpcgogICAgICAgICAgKGlm IChlcXVhbCBtYWpvci1tb2RlICdkaXJlZC1tb2RlKQogICAgICAgICAgICAgIChleHBhbmQtZmls ZS1uYW1lIGRlZmF1bHQtZGlyZWN0b3J5KQogICAgICAgICAgICAoaWYgKG51bGwgKGJ1ZmZlci1m aWxlLW5hbWUpKQogICAgICAgICAgICAgICAgKHVzZXItZXJyb3IgIkVSUk9SOiBjdXJyZW50IGJ1 ZmZlciBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4iKQogICAgICAgICAgICAgIChmaWxl LW5hbWUtZGlyZWN0b3J5IChidWZmZXItZmlsZS1uYW1lKSkpKSkKCiAgOzsgc29ydCBsaXN0IGJ5 IG1vc3QgcmVjZW50CiAgOztodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2NTE0 NDM3L2VtYWNzLXNvcnQtbGlzdC1vZi1kaXJlY3Rvcmllcy1maWxlcy1ieS1tb2RpZmljYXRpb24t ZGF0ZQogIChzZXRxIGZpbGUtbGlzdC1zb3J0ZWQKICAgICAgICAobWFwY2FyICMnY2FyCiAgICAg ICAgICAgICAgICAoc29ydCBmaWxlLWxpc3QKICAgICAgICAgICAgICAgICAgICAgICMnKGxhbWJk YSAoeCB5KSAodGltZS1sZXNzLXAgKG50aCA2IHkpIChudGggNiB4KSkpKSkpCgogIDs7IHVzZSBp dnkgdG8gc2VsZWN0IHN0YXJ0LWZpbGUKICAoc2V0cSBzdGFydC1maWxlIChpdnktcmVhZAogICAg ICAgICAgICAgICAgICAgIChjb25jYXQgIk1vdmUgc2VsZWN0ZWQgZmlsZSB0byAiIHRhcmdldC1k aXIgIjoiKQogICAgICAgICAgICAgICAgICAgIGZpbGUtbGlzdC1zb3J0ZWQKICAgICAgICAgICAg ICAgICAgICA6cmUtYnVpbGRlciAjJ2l2eS0tcmVnZXgKICAgICAgICAgICAgICAgICAgICA6c29y dCBuaWwKICAgICAgICAgICAgICAgICAgICA6aW5pdGlhbC1pbnB1dCBuaWwpKQoKICA7OyBhZGQg ZnVsbCBwYXRoIHRvIHN0YXJ0IGZpbGUgYW5kIGVuZC1maWxlCiAgKHNldHEgc3RhcnQtZmlsZS1m dWxsCiAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgc3RhcnQtZmlsZSBiam0vbW92ZS1maWxlLWhl cmUtc3RhcnQtZGlyKSkKICAoc2V0cSBlbmQtZmlsZQogICAgICAgIChleHBhbmQtZmlsZS1uYW1l IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IHN0YXJ0LWZpbGUpIHRhcmdldC1kaXIpKQogIChyZW5h bWUtZmlsZSBzdGFydC1maWxlLWZ1bGwgZW5kLWZpbGUpCiAgKG1lc3NhZ2UgIm1vdmVkICVzIHRv ICVzIiBzdGFydC1maWxlLWZ1bGwgZW5kLWZpbGUpKSkKCiMrRU5EX1NSQwoqKiogYm9va21hcmsr IGZ1bmN0aW9ucwogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGMxOTEyNTMxLTU4NmUt NDdiNS1iMjNlLTcyODAyMzEwZTY4NAogICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAg OnJlc3VsdHMgbm9uZQogIDs7ICAoZGVmdW4gIHovZGlyZWQtYmstY2hnZC16aF90bXAgKCkKICA7 OyAgICAgICJjaGdkICIKICA7OyAgICAgIChpbnRlcmFjdGl2ZSkKICA7OyAgICAgKGJta3AtZGly ZWQtanVtcCAiZGlyZWQvL3poX3RtcCIgKQogIDs7ICAgICAgKG1lc3NhZ2UgKHByb3BlcnRpemUg ImNoZ2QiICdmYWNlICdmb250LWxvY2std2FybmluZy1mYWNlKSkKICA7OyApCiMrRU5EX1NSQwoq Kiogb3BlbiBhcyByb290CgpodHRwOi8vZ2VyZ2VseS5wb2xvbmthaS5ldS8yMDE2LzExLzEwL2Vk aXQtZmlsZS1hcy1vdGhlci11c2VyLWluLWVtYWNzLwojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCihkZWZ1biB6L29wZW4tdGhpcy1maWxlLWFzLW90aGVyLXVzZXIgKHVzZXIp CiAgIkVkaXQgY3VycmVudCBmaWxlIGFzIFVTRVIsIHVzaW5nIGB0cmFtcCcgYW5kIGBzdWRvJy4g IElmIHRoZSBjdXJyZW50CmJ1ZmZlciBpcyBub3QgdmlzaXRpbmcgYSBmaWxlLCBwcm9tcHQgZm9y IGEgZmlsZSBuYW1lLiIKICAoaW50ZXJhY3RpdmUgInNFZGl0IGFzIHVzZXIgKGRlZmF1bHQ6IHJv b3QpOiAiKQogICh3aGVuIChzdHJpbmc9ICIiIHVzZXIpCiAgICAoc2V0cSB1c2VyICJyb290Iikp CiAgKGxldCogKChmaWxlbmFtZSAob3IgYnVmZmVyLWZpbGUtbmFtZQogICAgICAgICAgICAgICAg ICAgICAgIChyZWFkLWZpbGUtbmFtZSAoZm9ybWF0ICJGaW5kIGZpbGUgKGFzICVzKTogIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIpKSkpCiAgICAg ICAgICh0cmFtcC1wYXRoIChjb25jYXQgKGZvcm1hdCAiL3N1ZG86JXNAbG9jYWxob3N0OiIgdXNl cikgZmlsZW5hbWUpKSkKICAgIChpZiBidWZmZXItZmlsZS1uYW1lCiAgICAgICAgKGZpbmQtYWx0 ZXJuYXRlLWZpbGUgdHJhbXAtcGF0aCkKICAgICAgKGZpbmQtZmlsZSB0cmFtcC1wYXRoKSkpKQoj K0VORF9TUkMKKiogZGlyZWQgbWFjcm8KICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgNjRl YTA2MmYtOGE5NC00YmZiLTgxNTEtMjcxYWVjODBkYWE1CiAgIDpFTkQ6CioqKiBiZWV0IGltcG9y dCAKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICBjNDA2ZWFjNy1jNmUzLTQ5OWEtYTJj Mi1hZjJmOGZiNjA3NTcKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRz IG5vbmUKKGZzZXQgJ3ovZGlyZWQtbWFjcm8tYmVldGltcAogICBbPyYgP2IgP2UgP2UgP3QgPyAg P2kgP20gP3AgP28gP3IgP3QgXSkKIytFTkRfU1JDCioqKiBiZWV0IGltcG9ydCBzaW5nbGUKICAg IDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA3Y2VhNWVhMS00MzA5LTRiODUtOGUwNS0xNmI5 ZjBkM2JiNjMKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUK KGZzZXQgJ3ovZGlyZWQtbWFjcm8tYmVldGltcC1zaW5nbGUKICAgWz8mID9iID9lID9lID90ID8g ID9pID9tID9wID9vID9yID90ID8tID9zIF0pCiMrRU5EX1NSQwoKKiogbG9vayBhbmQgZmVlbAog ICA6UFJPUEVSVElFUzoKICAgOklEOiAgICAgICAwYzRhMDNkOC04ZTRjLTQyYWItOGY4Ni0wNTRh MDMzNWZiNDIKICAgOkVORDoKKioqIGJyZWFkY3J1bWJzIHRvcGJhcgogICAgOlBST1BFUlRJRVM6 CiAgICA6SUQ6ICAgICAgIGVlOTNlYmRmLTU1NTctNDY4Yy04NTUwLTUyYzE4Y2M1YTBlNAogICAg OkVORDoKdGhpcyB3aWxsIGFkZCBpdCBwZXJtYW5lbnRseSBmb3IgZWFjaCBkaXJlZCBidWZmZXIu IEkgY3VycmVudGx5IGRpc2FibGUgaXQKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRz IG5vbmUKOyhhZGQtaG9vayAnZGlyZWQtYmVmb3JlLXJlYWRpbi1ob29rICdkaXJlZHAtYnJlYWRj cnVtYnMtaW4taGVhZGVyLWxpbmUtbW9kZSkKIytFTkRfU1JDIAoqKiogYWRkIGhpZ2hsaWdodCBs aW5lCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAgMDZkMGNkZWQtNTM1My00NzZhLTk1 MDctODUwY2FmZGM1YzZmCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0 cyBub25lCjs7IEFsd2F5cyBoaWxpZ2h0IHRoZSBjdXJyZW50IGFnZW5kYSBsaW5lCihhZGQtaG9v ayAnZGlyZWQtbW9kZS1ob29rCiAgICAgICAgICAnKGxhbWJkYSAoKSAoaGwtbGluZS1tb2RlIDEp KQogICAgICAgICAgJ2FwcGVuZCkKCiMrRU5EX1NSQwoqIFNoZWxsCioqIHNldHRpbmdzICAKICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgM2UwZjFhYTUtNjE5Ny00NTY3LWJiMzEtZTdkM2Ix ZTNlNDcyCiAgIDpFTkQ6CioqKiBUT0RPIG5vIGNvbmZpcm1hdGlvbiBmb3Igc2hlbGwgZXhpdApo dHRwOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzE0NTA5L2tpbGwtcHJvY2Vz cy1idWZmZXItd2l0aG91dC1jb25maXJtYXRpb24Kb3IgCmh0dHA6Ly9lbWFjcy5zdGFja2V4Y2hh bmdlLmNvbS9xdWVzdGlvbnMvMTcwMDUva2lsbGluZy1hbnNpLXRlcm0tc2F5cy1oYXMtYS1ydW5u aW5nLXByb2Nlc3MKCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKICAgKGRl ZnVuIHNldC1uby1wcm9jZXNzLXF1ZXJ5LW9uLWV4aXQgKCkKICAgICAobGV0ICgocHJvYyAoZ2V0 LWJ1ZmZlci1wcm9jZXNzIChjdXJyZW50LWJ1ZmZlcikpKSkKICAgICAgICh3aGVuIChwcm9jZXNz cCBwcm9jKQogICAgICAgICAoc2V0LXByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHByb2Mgbmls KSkpKQogICAoYWRkLWhvb2sgJ3Rlcm0tZXhlYy1ob29rICdzZXQtbm8tcHJvY2Vzcy1xdWVyeS1v bi1leGl0KQo7OyBmb3IgRW1hY3MgKnNoZWxsKiB0aGlzIGlzIGFsc28gbmVlZGVkCihhZGQtaG9v ayAnc2hlbGwtbW9kZS1ob29rICdzZXQtbm8tcHJvY2Vzcy1xdWVyeS1vbi1leGl0KQojK0VORF9T UkMKCioqKiBzZXQgZGVmYXVsdCB0ZXJtIHpzaHJjCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDog ICAgICAgNzQ4MjBkMGEtYjM3ZC00MjBhLWJhMzktMDVkNmIxNTdmODBkCiAgICA6RU5EOgojK0JF R0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEgZXhwbGljaXQtc2hlbGwtZmls ZS1uYW1lICIvYmluL3pzaCIpCiMrRU5EX1NSQwoKKiogc2hlbGwgZnVuY3Rpb25zIAogIDpQUk9Q RVJUSUVTOgogIDpJRDogICAgICAgYjgyZGJkMjItMmE0Ni00NDMwLWIxMmEtNjY4MWMxMDlhODAx CiAgOkVORDoKKioqIHNlYXJjaCBiYXNoIGhpc3RvcnkKICAgIDpQUk9QRVJUSUVTOgogICAgOklE OiAgICAgICBlN2FiN2RlZS0yOGJhLTRiMWItOWVkMy02OGNjYzJkNDA3NTQKICAgIDpFTkQ6CiBj YW4gYmUgZWRpdGVkIGFuZCBjb252ZXJ0ZWQgdG8genNoCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNw ICA6cmVzdWx0cyBub25lCiAoZGVmdW4gei9jb3Vuc2VsLXlhbmstYmFzaC1oaXN0b3J5ICgpCiAg ICJZYW5rIHRoZSBiYXNoIGhpc3RvcnkiCiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoaGlzdC1j bWQgY29sbGVjdGlvbiB2YWwpCiAgICAgKHNoZWxsLWNvbW1hbmQgImhpc3RvcnkgLXIiKSA7IHJl bG9hZCBoaXN0b3J5CiAgICAgKHNldHEgY29sbGVjdGlvbgogICAgICAgICAgIChucmV2ZXJzZQog ICAgICAgICAgICAoc3BsaXQtc3RyaW5nICh3aXRoLXRlbXAtYnVmZmVyIChpbnNlcnQtZmlsZS1j b250ZW50cyAoZmlsZS10cnVlbmFtZSAifi8uYmFzaF9oaXN0b3J5IikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkpCiAgICAg KHdoZW4gKGFuZCBjb2xsZWN0aW9uICg+IChsZW5ndGggY29sbGVjdGlvbikgMCkKCQkoc2V0cSB2 YWwgKGlmICg9IDEgKGxlbmd0aCBjb2xsZWN0aW9uKSkgKGNhciBjb2xsZWN0aW9uKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGl2eS1yZWFkIChmb3JtYXQgIkJhc2ggaGlzdG9yeToiKSBj b2xsZWN0aW9uKSkpKQogICAgICAgICAoa2lsbC1uZXcgdmFsKQogICAgICAgICAobWVzc2FnZSAi JXMgPT4ga2lsbC1yaW5nIiB2YWwpKSkpCiAjK0VORF9TUkMKKioqIHZpc2l0IGFuc2kgdGVybSAK ICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA5ZTYyZDRiNi1mNDAxLTQyOGUtODA3NC00 NDI1MjY3YWFkNzIKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5v bmUKOzsgdGFrZW4gZnJvbSBoZXJlOiBodHRwOi8vd3d3LmVuaWdtYWN1cnJ5LmNvbS8yMDA4LzEy LzI2L2VtYWNzLWFuc2ktdGVybS10cmlja3MvCihkZWZ1biB6L3Zpc2l0LWFuc2ktdGVybSAoKQog ICJJZiB0aGUgY3VycmVudCBidWZmZXIgaXM6CiAgICAgMSkgYSBydW5uaW5nIGFuc2ktdGVybSBu YW1lZCAqYW5zaS10ZXJtKiwgcmVuYW1lIGl0LgogICAgIDIpIGEgc3RvcHBlZCBhbnNpLXRlcm0s IGtpbGwgaXQgYW5kIGNyZWF0ZSBhIG5ldyBvbmUuCiAgICAgMykgYSBub24gYW5zaS10ZXJtLCBn byB0byBhbiBhbHJlYWR5IHJ1bm5pbmcgYW5zaS10ZXJtCiAgICAgICAgb3Igc3RhcnQgYSBuZXcg b25lIHdoaWxlIGtpbGxpbmcgYSBkZWZ1bnQgb25lIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgo aXMtdGVybSAoc3RyaW5nPSAidGVybS1tb2RlIiBtYWpvci1tb2RlKSkKICAgICAgICAoaXMtcnVu bmluZyAodGVybS1jaGVjay1wcm9jIChidWZmZXItbmFtZSkpKQogICAgICAgICh0ZXJtLWNtZCAi L2Jpbi96c2giKQogICAgICAgIChhbm9uLXRlcm0gKGdldC1idWZmZXIgIiphbnNpLXRlcm0qIikp KQogICAgKGlmIGlzLXRlcm0KICAgICAgICAoaWYgaXMtcnVubmluZwogICAgICAgICAgICAoaWYg KHN0cmluZz0gIiphbnNpLXRlcm0qIiAoYnVmZmVyLW5hbWUpKQogICAgICAgICAgICAgICAgOzsg KGNhbGwtaW50ZXJhY3RpdmVseSAncmVuYW1lLWJ1ZmZlcikKICAgICAgICAgICAgICAgIChhbnNp LXRlcm0gdGVybS1jbWQpCiAgICAgICAgICAgICAgKGlmIGFub24tdGVybQogICAgICAgICAgICAg ICAgICAoc3dpdGNoLXRvLWJ1ZmZlciAiKmFuc2ktdGVybSoiKQogICAgICAgICAgICAgICAgKGFu c2ktdGVybSB0ZXJtLWNtZCkpKQogICAgICAgICAgKGtpbGwtYnVmZmVyIChidWZmZXItbmFtZSkp CiAgICAgICAgICAoYW5zaS10ZXJtIHRlcm0tY21kKSkKICAgICAgKGlmIGFub24tdGVybQogICAg ICAgICAgKGlmICh0ZXJtLWNoZWNrLXByb2MgIiphbnNpLXRlcm0qIikKICAgICAgICAgICAgICAo c3dpdGNoLXRvLWJ1ZmZlciAiKmFuc2ktdGVybSoiKQogICAgICAgICAgICAoa2lsbC1idWZmZXIg IiphbnNpLXRlcm0qIikKICAgICAgICAgICAgKGFuc2ktdGVybSB0ZXJtLWNtZCkpCiAgICAgICAg KGFuc2ktdGVybSB0ZXJtLWNtZCkpKSkpCiMrRU5EX1NSQwoqKiogc2VhcmNoIHpzaCBoaXN0b3J5 CgogaHR0cDovL2Jsb2cuYmluY2hlbi5vcmcvcG9zdHMvdXNlLWl2eS1tb2RlLXRvLXNlYXJjaC1i YXNoLWhpc3RvcnkuaHRtbAoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUK KGRlZnVuIHovY291bnNlbC15YW5rLXpzaC1oaXN0b3J5ICgpCiAgIllhbmsgdGhlIHpzaCBoaXN0 b3J5IgogIChpbnRlcmFjdGl2ZSkKICAobGV0IChoaXN0LWNtZCBjb2xsZWN0aW9uIHZhbCkKICAg IChzaGVsbC1jb21tYW5kICJoaXN0b3J5IC1yIikgOyByZWxvYWQgaGlzdG9yeQogICAgKHNldHEg Y29sbGVjdGlvbgogICAgICAgICAgKG5yZXZlcnNlCiAgICAgICAgICAgKHNwbGl0LXN0cmluZyAo d2l0aC10ZW1wLWJ1ZmZlciAoaW5zZXJ0LWZpbGUtY29udGVudHMgKGZpbGUtdHJ1ZW5hbWUgIn4v LnpzaF9oaXN0b3J5IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN0cmluZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCiAgICAgICAg ICAgICAgICAgICAgICAgICB0KSkpCgogICAgKHNldHEgY29sbGVjdGlvbiAobWFwY2FyIChsYW1i ZGEgKGl0KSAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIuKjsiICIiIGl0KSkgY29sbGVjdGlv bikpCiAgICAgICAgICAgICAgICAgICAgICAKICAgICh3aGVuIChhbmQgY29sbGVjdGlvbiAoPiAo bGVuZ3RoIGNvbGxlY3Rpb24pIDApCiAgICAgICAgICAgICAgIChzZXRxIHZhbCAoaWYgKD0gMSAo bGVuZ3RoIGNvbGxlY3Rpb24pKSAoY2FyIGNvbGxlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpdnktcmVhZCAoZm9ybWF0ICJac2ggaGlzdG9yeToiKSBjb2xsZWN0aW9uKSkpKQog ICAgICA7OyAoc2V0cSB2YWwgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXjpbXjtdKjsiICIi IHZhbCkpCiAgICAgIDs7IChzZXRxIHZhbCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIuKjsi ICIiIHZhbCkpCiAgICAgIChraWxsLW5ldyB2YWwpCiAgICAgIChtZXNzYWdlICIlcyA9PiBraWxs LXJpbmciIHZhbCkpKSkKCiMrRU5EX1NSQwoKCiogQWxpYXNlcwogIDpQUk9QRVJUSUVTOgogIDpJ RDogICAgICAgZDJhZWMxYjgtNjZkYy00NGJhLWI4ODItNzg5OTE4ZTM1ODA5CiAgOkVORDoKKiog c2V0dGluZ3MKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgYWFkYWU4YjYtMmJjNS00N2Fl LWJmNDctMDFkNDdmYzdjZmJmCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQooZGVmYWxpYXMgJ3llcy1vci1uby1wICd5LW9yLW4tcCkgOyB5IG9yIG4gaXMgZW5v dWdoCihkZWZhbGlhcyAnbGlzdC1idWZmZXJzICdpYnVmZmVyKSA7IGFsd2F5cyB1c2UgaWJ1ZmZl cgooZGVmYWxpYXMgJ34gJ21ha2UtYmFja3VwKQooZGVmYWxpYXMgJ2xwICdsaXN0LXBhY2thZ2Vz KQooZGVmYWxpYXMgJ2xtICdsaW5pKQooZGVmYWxpYXMgJ3JyICdyZWdleC1yZXBsYWNlKQooZGVm YWxpYXMgJ2VtICdldmlsLW1vZGUpCihkZWZhbGlhcyAnaXNzICdpc3BlbGwpIDtjaGVjayBzcGVs bGluZyBvbiBidWZmZXIgb3IgcmVnaW9uIGlmIG1hcmtlZAooZGVmYWxpYXMgJ2JrcyAnYm1rcC1z YXZlLW1lbnUtbGlzdC1zdGF0ZSkgO2NoZWNrIHNwZWxsaW5nIG9uIGJ1ZmZlciBvciByZWdpb24g aWYgbWFya2VkCgojK0VORF9TUkMKCioqIEVkaXRpbmcKICAgOlBST1BFUlRJRVM6CiAgIDpJRDog ICAgICAgMWE2MGM0OTAtN2VhYS00OWEwLWIwNTItMmQ1MzdkYzExYjQ4CiAgIDpFTkQ6CiMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoKKGRlZmFsaWFzICdzbCAnc29ydC1saW5l cykKKGRlZmFsaWFzICdyciAncmV2ZXJzZS1yZWdpb24pCihkZWZhbGlhcyAncnMgJ3JlcGxhY2Ut c3RyaW5nKQooZGVmYWxpYXMgJ2cgJ2dyZXApCihkZWZhbGlhcyAnZ2YgJ2dyZXAtZmluZCkKKGRl ZmFsaWFzICdmZCAnZmluZC1kaXJlZCkKKGRlZmFsaWFzICdyYiAncmV2ZXJ0LWJ1ZmZlcikKKGRl ZmFsaWFzICdzaCAnc2hlbGwpCihkZWZhbGlhcyAncHMgJ3Bvd2Vyc2hlbGwpCihkZWZhbGlhcyAn ZmIgJ2ZseXNwZWxsLWJ1ZmZlcikKKGRlZmFsaWFzICdzYmMgJ3NldC1iYWNrZ3JvdW5kLWNvbG9y KQooZGVmYWxpYXMgJ3JvZiAncmVjZW50Zi1vcGVuLWZpbGVzKQooZGVmYWxpYXMgJ2xjZCAnbGlz dC1jb2xvcnMtZGlzcGxheSkKCiMrRU5EX1NSQwoKKiogbWFqb3IvbWlub3IgbW9kZXMKICAgOlBS T1BFUlRJRVM6CiAgIDpJRDogICAgICAgODdjNTc1ZDktMzc0YS00YWI2LTk1YjktYjIwYzcyNGQ3 NzUxCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7IG1ham9y IG1vZGVzCihkZWZhbGlhcyAnaG0gJ2h0bWwtbW9kZSkKKGRlZmFsaWFzICd0bSAndGV4dC1tb2Rl KQooZGVmYWxpYXMgJ2VsbSAnZW1hY3MtbGlzcC1tb2RlKQooZGVmYWxpYXMgJ29tICdvcmctbW9k ZSkKKGRlZmFsaWFzICdzc20gJ3NoZWxsLXNjcmlwdC1tb2RlKQooZGVmYWxpYXMgJ2h0bWw2LW1v ZGUgJ3hhaC1odG1sNi1tb2RlKQoKOyBtaW5vciBtb2RlcwooZGVmYWxpYXMgJ3dzbSAnd2hpdGVz cGFjZS1tb2RlKQooZGVmYWxpYXMgJ2d3c20gJ2dsb2JhbC13aGl0ZXNwYWNlLW1vZGUpCihkZWZh bGlhcyAnZHNtICdkZXNrdG9wLXNhdmUtbW9kZSkKKGRlZmFsaWFzICdhY20gJ2F1dG8tY29tcGxl dGUtbW9kZSkKKGRlZmFsaWFzICd2bG0gJ3Zpc3VhbC1saW5lLW1vZGUpCihkZWZhbGlhcyAnZ2xt ICdnbG9iYWwtbGludW0tbW9kZSkKIytFTkRfU1JDCioqIENvZGUKICAgOlBST1BFUlRJRVM6CiAg IDpJRDogICAgICAgZjYxMDBkODgtODFlZS00MmFkLWE1ODAtMDE0ZjNiMjA4NzhiCiAgIDpFTkQ6 CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7IGVsaXNwCihkZWZhbGlhcyAn ZWIgJ2V2YWwtYnVmZmVyKQooZGVmYWxpYXMgJ2VyICdldmFsLXJlZ2lvbikKKGRlZmFsaWFzICdl ZCAnZXZhbC1kZWZ1bikKKGRlZmFsaWFzICdlaXMgJ2VsaXNwLWluZGV4LXNlYXJjaCkKKGRlZmFs aWFzICdsZiAnbG9hZC1maWxlKQoKCjtlc2NhcGVzCihkZWZhbGlhcyAnXFwgJ2VzY2FwZS1xdW90 ZXMtcmVnaW9uKQooZGVmYWxpYXMgJ1xbICdyZW1vdmUtc3F1YXJlLWJyYWNrZXRzKQooZGVmYWxp YXMgJ1wiICdyZXBsYWNlLXN0cmFpZ2h0LXF1b3RlcykKIytFTkRfU1JDCisKKiogbWFpbAogICA6 UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA2N2M0YWFhYi1kZjQ2LTQ5M2EtOTQ4Zi02MjFmYjM4 ZGM2NTcKICAgOkVORDoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCjsgZWxp c3AKKGRlZmFsaWFzICdpayAnaXplbHRha0BnbWFpbC5jb20pCiMrRU5EX1NSQwoKKiBBYmJyZXZp YXRpb25zCiAgOlBST1BFUlRJRVM6CiAgOklEOiAgICAgICA1ZDcwODAzMC01OTI2LTRjNGQtYWU4 MC04NDg1YWUwMDEwNDcKICA6RU5EOgoqKiBnbG9iYWwgYWJicnYgZGVmZW5pdGlvbnMgCiAgIDpQ Uk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGY0ZjZjZWUzLTRjZDItNGQ3My05OWVhLTk3ZmM0MDhh MjA4NwogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOyhzZXRx IHNhdmUtYWJicmV2cyB0KQo7OyBzdG9wIGFza2luZyB3aGV0aGVyIHRvIHNhdmUgbmV3bHkgYWRk ZWQgYWJicmV2IHdoZW4gcXVpdHRpbmcgZW1hY3MKKHNldHEgc2F2ZS1hYmJyZXZzICdzaWxlbnRs eSkKOzsgdHVybiBvbiBhYmJyZXYgbW9kZSBnbG9iYWxseQooc2V0cS1kZWZhdWx0IGFiYnJldi1t b2RlIHQpCiMrRU5EX1NSQwoKKiogcGVyc29uYWwgYWJicml2aWF0aW9ucwogICA6UFJPUEVSVElF UzoKICAgOklEOiAgICAgICBlMDlmYWQxOS05NmM4LTQ2NzAtODc2OS0yOTYxOGU1MGYwZDEKICAg OkVORDoKKioqIG5ldyBjb2xsZWN0ZWQgYWJicnYKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAg ICAgICA4Yjg2Yjg1Ni01OWIyLTQwMmUtYWM5ZC03Y2I3YzAzMGExNDUKICAgIDpFTkQ6CnRvIHF1 aWNrbHkgcGVhayBhdCB0aGUgcGVyc29uYWwgZmlsZSBsb29rIGhlcmU6CgpmaWxlOi9ob21lL3pl bHRhay8uZW1hY3MuZC9hYmJydi9wZXJzb25hbF9hYmJydi50eHQKCnRvIHNldCAKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGFiYnJldi1maWxlLW5hbWUgIi9ob21l L3plbHRhay8uZW1hY3MuZC9hYmJydi9wZXJzb25hbF9hYmJydi50eHQiKQojK0VORF9TUkMKdG8g YXV0b2xvYWQgaXQgCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoobG9hZCAi L2hvbWUvemVsdGFrLy5lbWFjcy5kL2FiYnJ2L3BlcnNvbmFsX2FiYnJ2LnR4dCIpCiMrRU5EX1NS QwoKKioqIGxvYWRzIGEgaHVnZSBjb21tb24gYWJicmV2aWF0aW9ucyBmaWxlCiAgICA6UFJPUEVS VElFUzoKICAgIDpJRDogICAgICAgYTdmMDNiNWMtN2U3NC00YTY2LThmNTYtMjBiYjNiZjJiMWQz CiAgICA6RU5EOgoKZmlsZTovaG9tZS96ZWx0YWsvLmVtYWNzLmQvYWJicnYvY29tbW9uX2FiYnJ2 LnR4dAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKGxvYWQgIi9ob21l L3plbHRhay8uZW1hY3MuZC9hYmJydi9jb21tb25fYWJicnYudHh0IikKIytFTkRfU1JDCgoqKiog bWlzYyBhYmJydiBmaWxlIChnZW5lcmFsIHN0dWZmIHRvIHF1aWNrIGFkZCkKICAgIDpQUk9QRVJU SUVTOgogICAgOklEOiAgICAgICAwMThkMTRlNC1iMTY5LTRjMzEtOGViMi0yNTg4ZDJiMzE2NjEK ICAgIDpFTkQ6CgpmaWxlOi9ob21lL3plbHRhay8uZW1hY3MuZC9hYmJydi9taXNjX2FiYnJ2LnR4 dAoKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAgKGxvYWQgIi9ob21lL3pl bHRhay8uZW1hY3MuZC9hYmJydi9taXNjX2FiYnJ2LnR4dCIpCiMrRU5EX1NSQwoKCiogbWlub3Ig bW9kZXMKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAgICAgIDIyMTU3MmU0LWM4ZjMtNGZlMy04NmMy LWFmM2M4MDVkZjY1MgogIDpFTkQ6CioqIHZpbXJjIG1vZGUKICAgOlBST1BFUlRJRVM6CiAgIDpJ RDogICAgICAgMDI0NGE2MDItNDliYy00NDhjLTkyZDItNzE5Y2FmZGM5MGViCiAgIDpFTkQ6CiMr QkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmaW5lLWdlbmVyaWMtbW9kZSAn dmltcmMtZ2VuZXJpYy1tb2RlCiAgICAnKCkKICAgICcoKQogICAgJygoIl5bXHQgXSo6P1xcKCFc XHxhYlxcfG1hcFxcfHVubWFwXFwpW15cclxuXCJdKlwiW15cclxuXCJdKlxcKFwiW15cclxuXCJd KlwiW15cclxuXCJdKlxcKSokIgogICAgICAgKDAgZm9udC1sb2NrLXdhcm5pbmctZmFjZSkpCiAg ICAgICgiXFwoXlxcfFtcdCBdXFwpXFwoXCIuKlxcKSQiCiAgICAgICgyIGZvbnQtbG9jay1jb21t ZW50LWZhY2UpKQogICAgICAoIlwiXFwoW15cblxyXCJcXF1cXHxcXC5cXCkqXCIiCiAgICAgICAo MCBmb250LWxvY2stc3RyaW5nLWZhY2UpKSkKICAgICcoIi92aW1yY1xcJyIgIlxcLnZpbVxcKHJj XFwpP1xcJyIpCiAgICAnKChsYW1iZGEgKCkKICAgICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/ XCIgIi4iKSkpCiAgICAiR2VuZXJpYyBtb2RlIGZvciBWaW0gY29uZmlndXJhdGlvbiBmaWxlcy4i KQojK0VORF9TUkMKKiBFeHRlbnNpb25zCiAgOlBST1BFUlRJRVM6CiAgOklEOiAgICAgICA0YWFk MjVkYi01NmRjLTRhNjktYTlhNC0wZTJlMmZkMjljYjgKICA6RU5EOgoqKiBYaGEgbWVudSBkaXJz CiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGUxODcyMjBiLTczM2MtNDdhMS1iNjZiLTg1 MmJiZjY4YTU1YgogICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUK KGlmIChzdHJpbmc9IHN5c3RlbS1uYW1lICJ6YmVhc3QiKSAKKHByb2duCgooZGVmdmFyIHhhaC1m aWxlbGlzdCBuaWwgImFsaXN0IGZvciBmaWxlcyBpIG5lZWQgdG8gb3BlbiBmcmVxdWVudGx5LiBL ZXkgaXMgYSBzaG9ydCBhYmJyZXYsIFZhbHVlIGlzIGZpbGUgcGF0aC4iKQooc2V0cSB4YWgtZmls ZWxpc3QKICAgICAgJygKICAgICAgICAoInoiIC4gIn4vWkhfdG1wLyIgKQogICAgICAgICgiayAi IC4gIn4vQksvIiApCiAgICAgICAgKCJsIiAuICJ+L29yZy9maWxlcy9UZWNoL2xpbnV4Lm9yZyIg KQogICAgICAgICgiZiIgLiAifi9vcmcvZmlsZXMvYWdlbmRhL2Zvb2Qub3JnIiApCiAgICAgICAg KCJ2IiAuICJ+L29yZy9maWxlcy9Ib21lL3RyYXZlbC5vcmciICkKICAgICAgICAoImgiIC4gIn4v b3JnL2ZpbGVzL0hvbWUvaG9tZS5vcmciICkKICAgICAgICAoIm0iIC4gIn4vb3JnL2ZpbGVzL2Zy b20tbW9iaWxlLm9yZyIgKQogICAgICAgICgidiIgLiAifi9vcmcvZmlsZXMvZmlsZXMvYWdlbmRh L3RyYXZlbC5vcmciICkKICAgICAgICAoImgiIC4gIn4vb3JnL2ZpbGVzL2ZpbGVzL0hvbWUvaG9t ZS5vcmciICkKICAgICAgICAoInAiIC4gIn4vb3JnL2ZpbGVzL2ZpbGVzL3VuaS9wYXBlcnMvcGFw ZXJzLm9yZyIgKQogICAgICAgICgiRSIgLiAifi8uZW1hY3MuZC9pbml0LmVsIiApCiAgICAgICAg KCJCIiAuICIvaG9tZS96ZWx0YWsvLmNvbmZpZy9iZWV0cy9jb25maWcueWFtbCIgKQogICAgICAg ICgiUyIgLiAifi8uY29uZmlnL3N4aGtkL3N4aGtkcmMiICkKICAgICAgICAoIkkiIC4gIn4vLmkz L2NvbmZpZyIgKQogICAgICAgICgiWCIgLiAifi8ueGluaXRyYyIgKQogICAgICAgICgiQiIgLiAi fi8uaW50ZXJyb2JhbmdyYyIgKQogICAgICAgICgiWiIgLiAifi8uenNocmMiICkKICAgICAgICAo Im8iIC4gIn4vb3JnL2F0dGFjaC8iICkKICAgICAgICApICkKKQoKKHByb2duCgooZGVmdmFyIHhh aC1maWxlbGlzdCBuaWwgImFsaXN0IGZvciBmaWxlcyBpIG5lZWQgdG8gb3BlbiBmcmVxdWVudGx5 LiBLZXkgaXMgYSBzaG9ydCBhYmJyZXYsIFZhbHVlIGlzIGZpbGUgcGF0aC4iKQooc2V0cSB4YWgt ZmlsZWxpc3QKICAgICAgJygKICAgICAgICgieiIgLiAifi9aSF90bXAvIiApCiAgICAgICAgKCJr ICIgLiAifi9CSy8iICkKICAgICAgICAoImwiIC4gIn4vb3JnL2ZpbGVzL1RlY2gvbGludXgub3Jn IiApCiAgICAgICAgKCJmIiAuICJ+L29yZy9maWxlcy9hZ2VuZGEvZm9vZC5vcmciICkKICAgICAg ICAoInYiIC4gIn4vb3JnL2ZpbGVzL0hvbWUvdHJhdmVsLm9yZyIgKQogICAgICAgICgiaCIgLiAi fi9vcmcvZmlsZXMvSG9tZS9ob21lLm9yZyIgKQogICAgICAgICgibSIgLiAifi9vcmcvZmlsZXMv ZnJvbS1tb2JpbGUub3JnIiApCiAgICAgICAgKCJ2IiAuICJ+L29yZy9maWxlcy9maWxlcy9hZ2Vu ZGEvdHJhdmVsLm9yZyIgKQogICAgICAgICgiaCIgLiAifi9vcmcvZmlsZXMvZmlsZXMvSG9tZS9o b21lLm9yZyIgKQogICAgICAgICgicCIgLiAifi9vcmcvZmlsZXMvZmlsZXMvdW5pL3BhcGVycy9w YXBlcnMub3JnIiApCiAgICAgICAgKCJFIiAuICJ+Ly5lbWFjcy5kL2luaXQuZWwiICkKICAgICAg ICAoIkIiIC4gIi9ob21lL3plbHRhay8uY29uZmlnL2JlZXRzL2NvbmZpZy55YW1sIiApCiAgICAg ICAgKCJTIiAuICJ+Ly5jb25maWcvc3hoa2Qvc3hoa2RyYyIgKQogICAgICAgICgiSSIgLiAifi8u aTMvY29uZmlnIiApCiAgICAgICAgKCJYIiAuICJ+Ly54aW5pdHJjIiApCiAgICAgICAgKCJCIiAu ICJ+Ly5pbnRlcnJvYmFuZ3JjIiApCiAgICAgICAgKCJaIiAuICJ+Ly56c2hyYyIgKQogICAgICAg ICgibyIgLiAifi9vcmcvYXR0YWNoLyIgKQogICAgICAgICkgKQopCikKCiMrRU5EX1NSQwoKKiog ei9kaXJlZC1qdW1wLWZvbGRlcnMKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgZTk2YjQ3 MTQtM2RjZS00Njc2LTlhNGMtM2I0OTcyZWY4ZDM2CiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNz LWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4gei9kaXJlZC1qdW1wLWZvbGRlcnMgIChvcGVuQ29k ZSkKICAiUHJvbXB0IHRvIG9wZW4gYSBmaWxlIGZyb20gYSBwcmUtZGVmaW5lZCBzZXQuIgogIChp bnRlcmFjdGl2ZQogICAobGlzdCAoaWRvLWNvbXBsZXRpbmctcmVhZCAiT3BlbjoiIChtYXBjYXIg KGxhbWJkYSAoeCkgKGNhciB4KSkgeGFoLWZpbGVsaXN0KSkpCiAgICkKICAoZmluZC1maWxlIChj ZHIgKGFzc29jIG9wZW5Db2RlIHhhaC1maWxlbGlzdCkpICkgKQojK0VORF9TUkMKCioqIG1lbnUg cGVyIG1hY2hpbmUKICAgOlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMjYwNzExNjQtMTE0ZS00 NTllLTk1OWEtNDhjNDk1YTRmYzY4CiAgIDpFTkQ6CihpZiAoc3RyaW5nPSBzeXN0ZW0tbmFtZSAi dm9pY2VzIikgCihwcm9nbgpDT01NQU5EMQpDT01NQU5EMgopCgoocHJvZ24KQ09NTUFORDEKQ09N TUFORDIKKQopCgoKIytFTkRfRVhBTVBMRQoqKiBlZGl0IHdlYnBhZ2VzIHdpdGggZW1hY3MKICAg OlBST1BFUlRJRVM6CiAgIDpJRDogICAgICAgMmI2Y2U2N2UtMzJmYS00YWNmLWIzNGYtOWNiOGM1 ZjJkNzBiCiAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQo7KGFk ZC10by1saXN0ICdsb2FkLXBhdGggIi9ob21lL3plbHRhay8uZW1hY3MuZy9leHRyYS9lZGl0LXNl cnZlci8iKQo7KHJlcXVpcmUgJ2VkaXQtc2VydmVyKQo7KGVkaXQtc2VydmVyLXN0YXJ0KQojK0VO RF9TUkMKKiBSL0VTUwogIDpQUk9QRVJUSUVTOgogIDpJRDogICAgICAgOTA0MzVmNmMtYTQyYi00 ZDY1LWExOGMtODRiZGFiYzk3OTQyCiAgOkVORDoKKiogb3V0cHV0CiAgIDpQUk9QRVJUSUVTOgog ICA6SUQ6ICAgICAgIGE0NDZjNjAxLTc1MDItNGE4Yy1iNzg0LTI3NjRjMmFmMjZmMgogICA6RU5E OgoqKiogbWFrZSBzY3JvbGxpbmcgYWx3YXlzIGhpdCBib3R0b20KICAgIDpQUk9QRVJUSUVTOgog ICAgOklEOiAgICAgICA0NDlmMDE0ZS0wYmIyLTQ0MzUtOTE3Yi1jNTg1YzRjMWJhMjcKICAgIDpF TkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIChzZXRxIGNvbWludC1z Y3JvbGwtdG8tYm90dG9tLW9uLWlucHV0IHQpCiAgKHNldHEgY29taW50LXNjcm9sbC10by1ib3R0 b20tb24tb3V0cHV0IHQpCiAgKHNldHEgY29taW50LW1vdmUtcG9pbnQtZm9yLW91dHB1dCB0KQoj K0VORF9TUkMKKiogZGVmYXVsdCBkaXJzCiAgIDpQUk9QRVJUSUVTOgogICA6SUQ6ICAgICAgIGJj NDAwMzI2LTViNmQtNDFkZS04MzM1LTE3YzBmY2Q2ODk0NAogICA6RU5EOgoqKiogdHJhbnNmaWxl IGZpbGUKICAgIDpQUk9QRVJUSUVTOgogICAgOklEOiAgICAgICA5YjhjYmVjMi04MmM5LTRjN2Qt YjFjZi0wMWE2M2IzMjQxYzEKICAgIDpFTkQ6CiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3Vs dHMgbm9uZQo7ZG9uJ3QgYXNrIHRvIHNhdmUgZmlsZQo7KHNldHEgZXNzLWFzay1hYm91dC10cmFu c2ZpbGUgbmlsKQooc2V0cSBlc3MtYXNrLWFib3V0LXRyYW5zZmlsZSBuaWwpCiMrRU5EX1NSQwoK KioqIGRlZmF1bHQgZGlyZWN0b3J5IAogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIDZl ZDVmMTBhLWMzMWQtNGQxNC05ZjllLTEzZTRlZWUwNDJlYgogICAgOkVORDoKIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGVzcy1hc2stZm9yLWVzcy1kaXJlY3Rvcnkg bmlsKQo7ZGVmaW5lIGRlYXVsdCBlc3MgZGlyCihzZXRxIGVzcy1kaXJlY3RvcnkgIi9ob21lL3pl bHRhay9aSF90bXAvIikKIytFTkRfU1JDCioqKiBsb2NhbCBwcm9jZXNzIG5hbWUgCiAgICA6UFJP UEVSVElFUzoKICAgIDpJRDogICAgICAgMTUyOWMyMDQtMDAyYy00NjFlLWE0Y2MtMDVjMjYxYzY0 MTRiCiAgICA6RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHNldHEg ZXNzLWxvY2FsLXByb2Nlc3MtbmFtZSAiUnVuaSIpCiMrRU5EX1NSQwoKKioqIGhpc3RvcnkgZmls ZQogICAgOlBST1BFUlRJRVM6CiAgICA6SUQ6ICAgICAgIGUzOGRjZjdjLTQ0MDktNGFhNi1iM2I2 LWE3YWNiZDY2MDA2MwogICAgOkVORDoKZ2xvYmFsIGNvbW1hbmQgaGlzdG9yeSBmaWxlIGFuZCBo YXZlOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKIChzZXRxIGVzcy1oaXN0 b3J5LWRpcmVjdG9yeSAifi8uZXNzcmhpc3QvIikKIytFTkRfU1JDCioqIGZ1bmN0aW9ucwogICA6 UFJPUEVSVElFUzoKICAgOklEOiAgICAgICA5ZTIyMGU5OC1jOWM5LTQyZmMtODYzMi1kMmFkNmZk ODQ5YzgKICAgOkVORDoKKioqIGNsZWFyIHNoZWxsIGZ1bmN0aW9uCiAgICA6UFJPUEVSVElFUzoK ICAgIDpJRDogICAgICAgMmRjNjVhNWQtYTYxNy00NDgzLThhZDYtNDUwOTM1YmQ2M2Y3CiAgICA6 RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGRlZnVuIGNsZWFyLXNo ZWxsICgpCiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoKG9sZC1tYXggY29taW50LWJ1ZmZlci1t YXhpbXVtLXNpemUpKQogICAgIChzZXRxIGNvbWludC1idWZmZXItbWF4aW11bS1zaXplIDApCiAg ICAgKGNvbWludC10cnVuY2F0ZS1idWZmZXIpCiAgICAgKHNldHEgY29taW50LWJ1ZmZlci1tYXhp bXVtLXNpemUgb2xkLW1heCkpKSAKIytFTkRfU1JDIAoqKiogVGhpcyByZWNhbGxzIHRoZSBSIHN0 YXRlbWVudCBmcm9tIHlvdXIgUiBzdGF0ZW1lbnQgaGlzdG9yeSwgYnV0IGl0IHRyaWVzIHRvIG1h dGNoIGl0IHdpdGggdGhlIG9uZSB3aGljaCBpcyBhbHJlYWR5IG9uIHlvdXIgbGluZS4KICAgIDpQ Uk9QRVJUSUVTOgogICAgOklEOiAgICAgICBiNjJhODRlMC0zMjFjLTQ2YzAtOGY0Yi1mYWNlZTQ4 MjM3YmYKICAgIDpFTkQ6CgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKGFk ZC1ob29rICdpbmZlcmlvci1lc3MtbW9kZS1ob29rCiAgICAnKGxhbWJkYSBuaWwKICAgICAgICAg IChkZWZpbmUta2V5IGluZmVyaW9yLWVzcy1tb2RlLW1hcCBbXEMtdXBdCiAgICAgICAgICAgICAg J2NvbWludC1wcmV2aW91cy1tYXRjaGluZy1pbnB1dC1mcm9tLWlucHV0KQogICAgICAgICAgKGRl ZmluZS1rZXkgaW5mZXJpb3ItZXNzLW1vZGUtbWFwIFtcQy1kb3duXQogICAgICAgICAgICAgICdj b21pbnQtbmV4dC1tYXRjaGluZy1pbnB1dC1mcm9tLWlucHV0KQogICAgICAgICAgKGRlZmluZS1r ZXkgaW5mZXJpb3ItZXNzLW1vZGUtbWFwIFtcQy14IFx0XQogICAgICAgICAgICAgICdjb21pbnQt ZHluYW1pYy1jb21wbGV0ZS1maWxlbmFtZSkKICAgICApCiApCiMrRU5EX1NSQwpUaGlzIHJlY2Fs bHMgdGhlIFIgc3RhdGVtZW50IGZyb20geW91ciBSIHN0YXRlbWVudCBoaXN0b3J5LCBidXQgaXQg dHJpZXMgdG8gbWF0Y2ggaXQgd2l0aCB0aGUgb25lIHdoaWNoIGlzIGFscmVhZHkgb24geW91ciBs aW5lLiBTbywgZm9yIGV4YW1wbGUsIHR5cGluZyBwbCBpbiBSIHByb2Nlc3MgYW5kIHByZXNzaW5n IFxDLXVwICh0aGF04oCZcyBjb250cm9sIGFuZCB0aGUgdXAgYXJyb3cpIHdpbGwgY3ljbGUgdGhy b3VnaCBhbGwgdGhlIHN0YXRlbWVudHMgd2hpY2ggc3RhcnQgd2l0aCBwbCwgc28gaXQgd2lsbCBy ZWNhbGwgZm9yIGV4YW1wbGUgYWxsIHRoZSBwbG90KC4uLiBjb21tYW5kcy4KCioqKiBhbGxvdyBl c3MgdG8gcnVuIHByb2NjZXNlcyBpbiBiYWNrZ3JvdW5kCiAgICA6UFJPUEVSVElFUzoKICAgIDpJ RDogICAgICAgNGI0OTMxOTMtZDNlMS00MDYxLTkwZTAtY2YyMDE2NDgxMTJjCiAgICA6RU5EOgoK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihzZXRxIGVzcy1ldmFsLXZpc2li bHkgJ25vd2FpdCkKIytFTkRfU1JDCgoqIEVkaWZmCiAgOlBST1BFUlRJRVM6CiAgOklEOiAgICAg ICA1MDBiZGI1Mi1mYzQ2LTQ3ZDEtODQzNS04NjI0NWZlNWZmODYKICA6RU5EOgoKIytCRUdJTl9T UkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCihkZWZtYWNybyBjc2V0cSAodmFyaWFibGUgdmFs dWUpCiAgYChmdW5jYWxsIChvciAoZ2V0ICcsdmFyaWFibGUgJ2N1c3RvbS1zZXQpCiAgICAgICAg ICAgICAgICAnc2V0LWRlZmF1bHQpCiAgICAgICAgICAgICcsdmFyaWFibGUgLHZhbHVlKSkKCihj c2V0cSBlZGlmZi13aW5kb3ctc2V0dXAtZnVuY3Rpb24gJ2VkaWZmLXNldHVwLXdpbmRvd3MtcGxh aW4pCgooY3NldHEgZWRpZmYtc3BsaXQtd2luZG93LWZ1bmN0aW9uICdzcGxpdC13aW5kb3ctaG9y aXpvbnRhbGx5KQoKKGNzZXRxIGVkaWZmLWRpZmYtb3B0aW9ucyAiLXciKQoKKGRlZnVuIG9yYS1l ZGlmZi1ob29rICgpCiAgKGVkaWZmLXNldHVwLWtleW1hcCkKICAoZGVmaW5lLWtleSBlZGlmZi1t b2RlLW1hcCAiaiIgJ2VkaWZmLW5leHQtZGlmZmVyZW5jZSkKICAoZGVmaW5lLWtleSBlZGlmZi1t b2RlLW1hcCAiayIgJ2VkaWZmLXByZXZpb3VzLWRpZmZlcmVuY2UpKQoKKGFkZC1ob29rICdlZGlm Zi1tb2RlLWhvb2sgJ29yYS1lZGlmZi1ob29rKQoKKHdpbm5lci1tb2RlKQooYWRkLWhvb2sgJ2Vk aWZmLWFmdGVyLXF1aXQtaG9vay1pbnRlcm5hbCAnd2lubmVyLXVuZG8pCiMrRU5EX1NSQwoKCgoK KiBtYWlsIAoqKiBBTEwgbWFpbAoqKiogdXNlciBpbmZvCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3Ag IDpyZXN1bHRzIG5vbmUKKHNldHEgdXNlci1tYWlsLWFkZHJlc3MgIml6ZWx0YWtAZ21haWwiKQoo c2V0cSB1c2VyLWZ1bGwtbmFtZSAiemVsdGFrIikKIytFTkRfU1JDCioqKiBraWxsIG1lc3NhZ2Ug YnVmZmVyIGFmdGVyIGV4aXQgCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25l CiAoc2V0cSBtZXNzYWdlLWtpbGwtYnVmZmVyLW9uLWV4aXQgdCkgOyBraWxsIGJ1ZmZlciBhZnRl ciBzZW5kaW5nIG1haWwpCiAjK0VORF9TUkMKKioqIFNlbmRpbmcgbWFpbAogICAgOlBST1BFUlRJ RVM6CiAgICA6SUQ6ICAgICAgIDMyZDcxZjlkLWIwNWItNDQ5Zi04MjRiLTQzOWFmNjZkZThjOAog ICAgOkVORDoKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQoocmVxdWlyZSAn c210cG1haWwpCjs7IFtzbXRwbWFpbC1hc3luY10gRXhwZXJpbWVudGFsLCB1c2UgYHNtdHBtYWls LXNlbmQtaXQnIG90aGVyd2lzZS4gCjsoc2V0cSBtZXNzYWdlLXNlbmQtbWFpbC1mdW5jdGlvbiAn YXN5bmMtc210cG1haWwtc2VuZC1pdCkKKHNldHEgbWVzc2FnZS1zZW5kLW1haWwtZnVuY3Rpb24g J3NtdHBtYWlsLXNlbmQtaXQpCgogKHNldHEgc3RhcnR0bHMtdXNlLWdudXRscyB0CiAgICBzbXRw bWFpbC1zdGFydHRscy1jcmVkZW50aWFscyAnKCgic210cC5nbWFpbC5jb20iIDU4NyBuaWwgbmls KSkKICAgIHNtdHBtYWlsLWF1dGgtY3JlZGVudGlhbHMKICAgICAgJygoInNtdHAuZ21haWwuY29t IiA1ODcgIml6ZWx0YWtAZ21haWwuY29tIiBuaWwpKQogICAgc210cG1haWwtZGVmYXVsdC1zbXRw LXNlcnZlciAic210cC5nbWFpbC5jb20iCiAgICBzbXRwbWFpbC1zbXRwLXNlcnZlciAic210cC5n bWFpbC5jb20iCiAgICBzbXRwbWFpbC1zbXRwLXNlcnZpY2UgNTg3KQoKCiAjK0VORF9TUkMKCioq KiBmdW5jdGlvbnMgCioqKiogeWFzIGF1dG8gbWFpbCB0byBzZW5kZXIgbmFtZSAKIGh0dHA6Ly9w cmFnbWF0aWNlbWFjcy5jb20vZW1hY3MvZW1haWwtdGVtcGxhdGVzLWluLW11NGUtd2l0aC15YXNu aXBwZXQvCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogOzsgZnVuY3Rp b24gdG8gcmV0dXJuIGZpcnN0IG5hbWUgb2YgZW1haWwgcmVjaXBpZW50cwogOzsgdXNlZCBieSB5 YXNuaXBwZXQKIDs7IGluc3BpcmVkIGJ5CiA7O2h0dHA6Ly9ibG9nLmJpbmNoZW4ub3JnL3Bvc3Rz L2hvdy10by11c2UteWFzbmlwcGV0cy10by1wcm9kdWNlLWVtYWlsLXRlbXBsYXRlcy1pbi1lbWFj cy5odG1sCiAoZGVmdW4gYmptL211NGUtZ2V0LW5hbWVzLWZvci15YXNuaXBwZXQgKCkKICAgIlJl dHVybiBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIG5hbWVzIGZvciBhbiBlbWFpbCIKICAgKGlu dGVyYWN0aXZlKQogICAobGV0ICgoZW1haWwtbmFtZSAiIikgc3RyIGVtYWlsLXN0cmluZyBlbWFp bC1saXN0IGVtYWlsLW5hbWUyIHRtcG5hbWUpCiAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAo Z290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgOzsgZmlyc3QgbGluZSBpbiBlbWFpbCBjb3Vs ZCBiZSBzb21lIGhpZGRlbiBsaW5lIGNvbnRhaW5pbmcgTk8gdG8gZmllbGQKICAgICAgIChzZXRx IHN0ciAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1t YXgpKSkpCiAgICAgOzsgdGFrZSBuYW1lIGZyb20gVE8gZmllbGQgLSBtYXRjaCBzZXJpZXMgb2Yg bmFtZXMKICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJeVG86IFwiP1xcKC4rXFwpIiBzdHIpCiAg ICAgICAoc2V0cSBlbWFpbC1zdHJpbmcgKG1hdGNoLXN0cmluZyAxIHN0cikpKQogICAgIDs7c3Bs aXQgdG8gbGlzdCBieSBjb21tYQogICAgIChzZXRxIGVtYWlsLWxpc3QgKHNwbGl0LXN0cmluZyBl bWFpbC1zdHJpbmcgIiAqLCAqIikpCiAgICAgOztsb29wIG92ZXIgZW1haWxzCiAgICAgKGRvbGlz dCAodG1wc3RyIGVtYWlsLWxpc3QpCiAgICAgICA7O2dldCBmaXJzdCB3b3JkIG9mIGVtYWlsIHN0 cmluZwogICAgICAgKHNldHEgdG1wbmFtZSAoY2FyIChzcGxpdC1zdHJpbmcgdG1wc3RyICIgIikp KQogICAgICAgOztyZW1vdmUgd2hpdGVzcGFjZSBvciAiIgogICAgICAgKHNldHEgdG1wbmFtZSAo cmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJbIFwiXSIgIiIgdG1wbmFtZSkpCiAgICAgICA7O2pv aW4gdG8gc3RyaW5nCiAgICAgICAoc2V0cSBlbWFpbC1uYW1lCiAgICAgICAgICAgICAoY29uY2F0 IGVtYWlsLW5hbWUgIiwgIiB0bXBuYW1lKSkpCiAgICAgOztyZW1vdmUgaW5pdGlhbCBjb21tYQog ICAgIChzZXRxIGVtYWlsLW5hbWUgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXiwgIiAiIiBl bWFpbC1uYW1lKSkKCiAgICAgOztzZWUgaWYgd2Ugd2FudCB0byB1c2UgdGhlIG5hbWUgaW4gdGhl IEZST00gZmllbGQKICAgICA7O2dldCBuYW1lIGluIEZST00gZmllbGQgaWYgYXZhaWxhYmxlLCBi dXQgb25seSBpZiB0aGVyZSBpcyBvbmx5CiAgICAgOztvbmUgbmFtZSBpbiBUTyBmaWVsZAogICAg IChpZiAoPCAobGVuZ3RoIGVtYWlsLWxpc3QpIDIpCiAgICAgICAgICh3aGVuIChzdHJpbmctbWF0 Y2ggIl5cXChbXiAsXG5dK1xcKS4rd3JpdGVzOiQiIHN0cikKICAgICAgICAgICAocHJvZ24gKHNl dHEgZW1haWwtbmFtZTIgKG1hdGNoLXN0cmluZyAxIHN0cikpCiAgICAgICAgICAgICAgICAgIDs7 cHJlZmVyIG5hbWUgaW4gRlJPTSBmaWVsZCBpZiBUTyBmaWVsZCBoYXMgIkAiCiAgICAgICAgICAg ICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIkAiIGVtYWlsLW5hbWUpCiAgICAgICAgICAgICAg ICAgICAgKHNldHEgZW1haWwtbmFtZSBlbWFpbC1uYW1lMikpCiAgICAgICAgICAgICAgICAgICkp KQogICAgIGVtYWlsLW5hbWUpKQoKICMrRU5EX1NSQwoqKiBNdTRlCiAgIDpQUk9QRVJUSUVTOgog ICA6SUQ6ICAgICAgIDhhMDBlNWMwLTI4ZjQtNGU5YS04ZTczLTgzY2ExNzQyMzdlNgogICA6RU5E Ogp0byBzZWUgaG93IHRvIGluaXRpYWxseSBzZXR1cCBtdTRlIHNlZSB0aGlzIGxpbmsgW1tpZDo1 ZGU5NWI3My1iYjNhLTRkYTgtODFkMi0yM2U3OGE2ZGM1Y2ZdW3NldHRpbmcgdXAgTVU0RV1dICAg CioqKiBDb25maWcKKioqKiBCYXNpYyBjb25maWd1cmF0aW9uCiAgICAgOlBST1BFUlRJRVM6CiAg ICAgOklEOiAgICAgICBjY2U4NzlmOC1mNmI5LTRjYzgtOWI5Ni04MjNhMjljM2RhYmIKICAgICA6 RU5EOgojK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKKHJlcXVpcmUgJ211NGUp CihyZXF1aXJlICdtdTRlLWNvbnRyaWIpIAojK0VORF9TUkMKKioqKiogZm9yIHVidW50dSB3b3Jr IG1hY2hpbmUgCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQood2hlbiAoc3Ry aW5nPSBzeXN0ZW0tbmFtZSAienVuaSIpCihhZGQtdG8tbGlzdCAnbG9hZC1wYXRoICJ+L211L211 NGUvIikKICkKIytFTkRfU1JDCgoKKioqKiBGb2xkZXJzIAogICAgIDpQUk9QRVJUSUVTOgogICAg IDpJRDogICAgICAgYTc0NzlhZWUtMTZlNi00Y2ZhLWFkNTYtMWI5ODI0MGFjMDJmCiAgICAgOkVO RDoKCiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOzsgc2V0IHlvdXIgZGVm YXVsdCBtYWlsZGlyIChpZiBub3Qgfi9NYWlsZGlyIAooc2V0cSBtdTRlLW1haWxkaXIgIn4vbWJz eW5jLyIpCgogOztsb2NhdGlvbiBvZiBteSBtYWlsZGlyCihzZXRxIG11NGUtc2VudC1mb2xkZXIg Ii9bR21haWxdLkFsbCBNYWlsIgogICAgICBtdTRlLWRyYWZ0cy1mb2xkZXIgIi9bR21haWxdLkRy YWZ0cyIKICAgICAgbXU0ZS10cmFzaC1mb2xkZXIgIi9bR21haWxdLkJpbiIKICAgICAgbXU0ZS1y ZWZpbGUtZm9sZGVyICIvW0dtYWlsXS5BbGwgTWFpbCIpCiMrRU5EX1NSQwoqKioqIFJldHJpZXZh bCBhbmQgaW5kZXhpbmcKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDYyYjg4MjA5 LTkwYWMtNGZhNC04OTA0LWZjZWQ1OGZiMDgzZgogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFj cy1saXNwIDpyZXN1bHRzIG5vbmUKOyBnZXQgbWFpbCBhdXRvbWF0aWNhbGx5CihzZXRxIG11NGUt Z2V0LW1haWwtY29tbWFuZCAiL3Vzci9iaW4vbWJzeW5jIC1hIikgOwoKOztob3cgb2Z0ZW4gdG8g bGF1bmNoIGl0IAooc2V0cSBtdTRlLXVwZGF0ZS1pbnRlcnZhbCAxMDApCgo7OyBydW4gaW4gdGhl IGJhY2tncm91bmQgCihzZXRxIG11NGUtaW5kZXgtdXBkYXRlLWluLWJhY2tncm91bmQgdCkKCjs7 SWYgdGhlIG1haWwtcmV0cmlldmFsIHByb2Nlc3MgcmV0dXJucyB3aXRoIGEgbm9uLXplcm8gZXhp dCBjb2RlLCBtdTRlIHNob3dzIGEgd2FybmluZwo7KHNldHEgbXU0ZS1pbmRleC11cGRhdGUtZXJy b3Itd2FybmluZyAgdCkKCjs7IHVwZGF0ZSB3aGVuIG5ldyBtYWlsIGFycml2ZXMgdGhlIGhlYWRl cnMgCihzZXRxIG11NGUtaGVhZGVycy1hdXRvLXVwZGF0ZSB0KQoKOztzaG93IHRoZSBpbmRleGlu ZyBwcm9jZXNzICh0byBkaXNhYmxlIHVzZSBuaWwgCjsoc2V0cSBtdTRlLWhpZGUtaW5kZXgtbWVz c2FnZXMgbmlsKQoKCjsoc2V0cSBtdTRlLWluZGV4LXVwZGF0ZS1lcnJvci1jb250aW51ZSAgIHQp CgojK0VORF9TUkMKKioqKiBTZW5kaW5nCioqKioqIGRvbid0IHNhdmUgbWVzc2FnZSB0byBTZW50 IE1lc3NhZ2VzLCBHbWFpbC9JTUFQIHRha2VzIGNhcmUgb2YgdGhpcwojK0JFR0lOX1NSQyBlbWFj cy1saXNwICA6cmVzdWx0cyBub25lCjs7IGRvbid0IHNhdmUgbWVzc2FnZSB0byBTZW50IE1lc3Nh Z2VzLCBHbWFpbC9JTUFQIHRha2VzIGNhcmUgb2YgdGhpcwooc2V0cSBtdTRlLXNlbnQtbWVzc2Fn ZXMtYmVoYXZpb3IgJ2RlbGV0ZSkKIytFTkRfU1JDCioqKiogSGVhZGVycyB2aWV3CioqKioqIFRP RE8gaGVhZGVycy1maWVsZHMKICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUK OzsgdGhlIGhlYWRlcnMgdG8gc2hvdyBpbiB0aGUgaGVhZGVycyBsaXN0IC0tIGEgcGFpciBvZiBh IGZpZWxkCjs7IGFuZCBpdHMgd2lkdGgsIHdpdGggYG5pbCcgbWVhbmluZyAndW5saW1pdGVkJwo7 OyAoYmV0dGVyIG9ubHkgdXNlIHRoYXQgZm9yIHRoZSBsYXN0IGZpZWxkLgogOzsgVGhlc2UgYXJl IHRoZSBkZWZhdWx0czoKKHNldHEgbXU0ZS1oZWFkZXJzLWZpZWxkcwonKCAKKDpmbGFncyAgICAg ICAgIC4gICA2KQooOmRhdGUgICAgICAgICAgLiAgMjUpCig6ZnJvbSAgICAgICAgICAuICAyMikK KDpzdWJqZWN0ICAgICAgIC4gIG5pbCkKCikpCiAjK0VORF9TUkMKCgphbHRlcm5hdG92ZSAKKDpm bGFncyAgICAgICAgIC4gICA2KQooOmZyb20gICAgICAgICAgLiAgMjIpCig6c3ViamVjdCAgICAg ICAuICA1MCkKKDpodW1hbi1kYXRlICAgICAgICAgIC4gbmlsICkKCm9yaWdpbmFsIG9yZGVyCgoo OmRhdGUgICAgICAgICAgLiAgMjUpCig6ZmxhZ3MgICAgICAgICAuICAgNikKKDpmcm9tICAgICAg ICAgIC4gIDIyKQooOnN1YmplY3QgICAgICAgLiAgbmlsKQoKCioqKiogS2V5YmluZHMKICAgICA6 UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIGIxYzAxYWY0LTA2NTUtNDRiNC1hNzM4LWRiZDNi OGU1NmQ3OQogICAgIDpFTkQ6CioqKioqIGV4dHJhIGtleWJpbmRzCiAgICAgIDpQUk9QRVJUSUVT OgogICAgICA6SUQ6ICAgICAgIGY2OTBkYmE1LTNkMmMtNDBkZS05NGQ3LTRlMzExZWExYjU2Ywog ICAgICA6RU5EOgogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmaW5l LWtleSBtdTRlLWhlYWRlcnMtbW9kZS1tYXAgKGtiZCAidyIpICd6L211NGUtZGVsLWV4ZS1mdW5j ICkKKGRlZmluZS1rZXkgbXU0ZS1oZWFkZXJzLW1vZGUtbWFwIChrYmQgIlxcIikgJ2h5ZHJhLWxl YWRlci9ib2R5ICkKKGRlZmluZS1rZXkgbXU0ZS12aWV3LW1vZGUtbWFwIChrYmQgIlxcIikgJ2h5 ZHJhLWxlYWRlci9ib2R5ICkKCihkZWZpbmUta2V5IG11NGUtaGVhZGVycy1tb2RlLW1hcCAoa2Jk ICJjIikgJ29yZy1jYXB0dXJlKQooZGVmaW5lLWtleSBtdTRlLWhlYWRlcnMtbW9kZS1tYXAgKGti ZCAiRiIpICd6L211NGUtdW5mbGFnLWV4ZS1mdW5jICkKCihkZWZpbmUta2V5IG11NGUtaGVhZGVy cy1tb2RlLW1hcCAoa2JkICJDLWMgYyIpICdvcmctbXU0ZS1zdG9yZS1hbmQtY2FwdHVyZSkKKGRl ZmluZS1rZXkgbXU0ZS12aWV3LW1vZGUtbWFwICAgIChrYmQgIkMtYyBjIikgJ29yZy1tdTRlLXN0 b3JlLWFuZC1jYXB0dXJlKQoKCihkZWZpbmUta2V5IG11NGUtdmlldy1tb2RlLW1hcCAgICAoa2Jk ICJDLWMgZCIpICdnbnVzLWRpcmVkLWF0dGFjaCkKICAjK0VORF9TUkMKCioqKiogTWVzc2FnZSB2 aWV3ICAKKioqKiogc2Nyb2xsIHdpdGggc3BhY2UgCllvdSBjYW4gc2Nyb2xsIGRvd24gdGhlIG1l c3NhZ2UgdXNpbmcgU1BDOyBpZiB5b3UgZG8gdGhpcyBhdCB0aGUgZW5kIG9mIGEgbWVzc2FnZSxp dCBhdXRvbWF0aWNhbGx5IHRha2VzIHlvdSB0byB0aGUgbmV4dCBvbmUuIElmIHlvdSB3YW50IHRv IHByZXZlbnQgdGhpcyBiZWhhdmlvciwgc2V0IG11NGUtdmlldy1zY3JvbGwtdG8tbmV4dCB0byBu aWwKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQooc2V0cSBtdTRlLXZpZXct c2Nyb2xsLXRvLW5leHQgbmlsKQojK0VORF9TUkMKKioqKiogQXR0YWNobWVudHMKICAgICAgOlBS T1BFUlRJRVM6CiAgICAgIDpJRDogICAgICAgZWEwMzFjZTctOTQ5MC00YWFmLWEzZjAtZjExODhh MjU3YzhjCiAgICAgIDpFTkQ6CioqKioqKiBkZWZpbmUgYXR0YWNobWVudCBkaXJzCiAgICAgICA6 UFJPUEVSVElFUzoKICAgICAgIDpJRDogICAgICAgZWM5ZjQ2NWEtMGJmZS00NGZiLWE2ODUtYTMy YTk4MmNmNDAwCiAgICAgICA6RU5EOgogICAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRz IG5vbmUKICAgKHNldHEgbXU0ZS1hdHRhY2htZW50LWRpcgogICAgIChsYW1iZGEgKGZuYW1lIG10 eXBlKQogICAgICAgKGNvbmQKCSA7OyBkb2NmaWxlcyBnbyB0byB+L0Rlc2t0b3AKCSAoKGFuZCBm bmFtZSAoc3RyaW5nLW1hdGNoICJcXC5wZGYkIiBmbmFtZSkpICAifi9Eb3dubG9hZHMvIikKCSAo KGFuZCBmbmFtZSAoc3RyaW5nLW1hdGNoICJcXC5kb2MkIiBmbmFtZSkpICAifi9VbmkvIikKCSA7 OyAuLi4gb3RoZXIgY2FzZXMgIC4uLgoJICh0ICJ+L0Rvd25sb2FkcyIpKSkpIDs7IGV2ZXJ5dGhp bmcgZWxzZQogICAjK0VORF9TUkMKKioqKioqIGF0dGFjaCBmaWxlcyBkdXJpbmcgc2VuZCBhdCBl bmQgb2YgZW1haWwKICAgICAgIDpQUk9QRVJUSUVTOgogICAgICAgOklEOiAgICAgICA5N2I1NGZi Ni1jZTMwLTQ5ZjgtOWQzMi0xNzdlMzgwZTBkMmQKICAgICAgIDpFTkQ6CiAgaHR0cDovL21ib3Jr LnBsLzIwMTUtMTEtMjhfRml4aW5nX21tbC1hdHRhY2gtZmlsZV91c2luZ19hZHZpY2UKCiAgJE5v dGUtaWYgeW91IHNlZSBzdGFybmdlIGJlaGl2b3VyIHRoaXMgbWF5YmUgYSBjdWxwcml0JCAgCiAg IytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogICAgOzsgKGRlZnVuIG1tbC1h dHRhY2gtZmlsZS0tZ28tdG8tZW9iIChvcmlnLWZ1biAmcmVzdCBhcmdzKQogICAgOzsgICAiR28g dG8gdGhlIGVuZCBvZiBidWZmZXIgYmVmb3JlIGF0dGFjaGluZyBmaWxlcy4iCiAgICA7OyAgIChz YXZlLWV4Y3Vyc2lvbgogICAgOzsgICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICA7OyAgICAgICAo d2lkZW4pCiAgICA7OyAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgOzsgICAgICAg KGFwcGx5IG9yaWctZnVuIGFyZ3MpKSkpCgogICAgOzsgKGFkdmljZS1hZGQgJ21tbC1hdHRhY2gt ZmlsZSA6YXJvdW5kICMnbW1sLWF0dGFjaC1maWxlLS1nby10by1lb2IpCiAgIytFTkRfU1JDCioq KioqKiBBdHRhY2htZW50IFJlbWluZGVyIGluIEVtYWNzIG1lc3NhZ2UtbW9kZQpodHRwczovL3d3 dy50b3BidWcubmV0L2Jsb2cvMjAxNi8xMi8wOS9hdHRhY2htZW50LXJlbWluZGVyLWluLWVtYWNz LW1lc3NhZ2UtbW9kZS8KCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKKGRl ZnVuIG15LW1lc3NhZ2UtY3VycmVudC1saW5lLWNpdGVkLXAgKCkKICAiSW5kaWNhdGUgd2hldGhl ciB0aGUgbGluZSBhdCBwb2ludCBpcyBhIGNpdGVkIGxpbmUuIgogIChzYXZlLW1hdGNoLWRhdGEK ICAgIChzdHJpbmctbWF0Y2ggKGNvbmNhdCAiXiIgbWVzc2FnZS1jaXRlLXByZWZpeC1yZWdleHAp CiAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nIChsaW5lLWJlZ2lubmluZy1wb3Np dGlvbikgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKSkKCihkZWZ1biBteS1tZXNzYWdlLXNheXMtYXR0 YWNobWVudC1wICgpCiAgIlJldHVybiB0IGlmIHRoZSBtZXNzYWdlIHN1Z2dlc3RzIHRoZXJlIGNh biBiZSBhbiBhdHRhY2htZW50LiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCiAgICAoc2F2ZS1tYXRjaC1kYXRhCiAgICAgIChsZXQgKHNlYXJjaC1yZXN1bHQp CiAgICAgICAgKHdoaWxlCiAgICAgICAgICAgIChhbmQgKHNldHEgc2VhcmNoLXJlc3VsdCAocmUt c2VhcmNoLWZvcndhcmQgIlxcKGF0dGFjaFxcfHBkZlxcfGZpbGVcXCkiIG5pbCB0KSkKICAgICAg ICAgICAgICAgICAobXktbWVzc2FnZS1jdXJyZW50LWxpbmUtY2l0ZWQtcCkpKQogICAgICAgIHNl YXJjaC1yZXN1bHQpKSkpCgooZGVmdW4gbXktbWVzc2FnZS1oYXMtYXR0YWNobWVudC1wICgpCiAg IlJldHVybiB0IGlmIHRoZSBtZXNzYWdlIGhhcyBhbiBhdHRhY2htZW50LiIKICAoc2F2ZS1leGN1 cnNpb24KICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAoc2F2ZS1tYXRjaC1kYXRhCiAg ICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiPCNwYXJ0IiBuaWwgdCkpKSkKCihkZWZ1biBteS1tZXNz YWdlLXByZS1zZW5kLWNoZWNrLWF0dGFjaG1lbnQgKCkKICAod2hlbiAoYW5kIChteS1tZXNzYWdl LXNheXMtYXR0YWNobWVudC1wKQogICAgICAgICAgICAgKG5vdCAobXktbWVzc2FnZS1oYXMtYXR0 YWNobWVudC1wKSkpCiAgICAodW5sZXNzCiAgICAgICAgKHktb3Itbi1wICJUaGUgbWVzc2FnZSBz dWdnZXN0cyB0aGF0IHlvdSBtYXkgd2FudCB0byBhdHRhY2ggc29tZXRoaW5nLCBidXQgbm8gYXR0 YWNobWVudCBpcyBmb3VuZC4gU2VuZCBhbnl3YXk/IikKICAgICAgKGVycm9yICJJdCBzZWVtcyB0 aGF0IGFuIGF0dGFjaG1lbnQgaXMgbmVlZGVkLCBidXQgbm9uZSB3YXMgZm91bmQuIEFib3J0aW5n IHNlbmRpbmcuIikpKSkKKGFkZC1ob29rICdtZXNzYWdlLXNlbmQtaG9vayAnbXktbWVzc2FnZS1w cmUtc2VuZC1jaGVjay1hdHRhY2htZW50KQojK0VORF9TUkMKKioqKioqIGFkZCBhdHRhY2htZW50 IHVzaW5nIGRpcmVkCiBtYXJrIHRoZSBmaWxlKHMpIGluIGRpcmVkIHlvdSB3b3VsZCBsaWtlIHRv IGF0dGFjaCBhbmQgcHJlc3MgQy1jIFJFVCBDLWEsIGFuZCB5b3XigJlsbCBiZSBhc2tlZCB3aGV0 aGVyIHRvIGF0dGFjaCB0aGVtIHRvIGFuIGV4aXN0aW5nIG1lc3NhZ2UsIG9yIGNyZWF0ZSBhIG5l dyBvbmUuCgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogKHJlcXVpcmUg J2dudXMtZGlyZWQpCiA7OyBtYWtlIHRoZSBgZ251cy1kaXJlZC1tYWlsLWJ1ZmZlcnMnIGZ1bmN0 aW9uIGFsc28gd29yayBvbgogOzsgbWVzc2FnZS1tb2RlIGRlcml2ZWQgbW9kZXMsIHN1Y2ggYXMg bXU0ZS1jb21wb3NlLW1vZGUKIChkZWZ1biBnbnVzLWRpcmVkLW1haWwtYnVmZmVycyAoKQogICAi UmV0dXJuIGEgbGlzdCBvZiBhY3RpdmUgbWVzc2FnZSBidWZmZXJzLiIKICAgKGxldCAoYnVmZmVy cykKICAgICAoc2F2ZS1jdXJyZW50LWJ1ZmZlcgogICAgICAgKGRvbGlzdCAoYnVmZmVyIChidWZm ZXItbGlzdCB0KSkKICAgICAgICAgKHNldC1idWZmZXIgYnVmZmVyKQogICAgICAgICAod2hlbiAo YW5kIChkZXJpdmVkLW1vZGUtcCAnbWVzc2FnZS1tb2RlKQogICAgICAgICAgICAgICAgIChudWxs IG1lc3NhZ2Utc2VudC1tZXNzYWdlLXZpYSkpCiAgICAgICAgICAgKHB1c2ggKGJ1ZmZlci1uYW1l IGJ1ZmZlcikgYnVmZmVycykpKSkKICAgICAobnJldmVyc2UgYnVmZmVycykpKQoKIChzZXRxIGdu dXMtZGlyZWQtbWFpbC1tb2RlICdtdTRlLXVzZXItYWdlbnQpCiAoYWRkLWhvb2sgJ2RpcmVkLW1v ZGUtaG9vayAndHVybi1vbi1nbnVzLWRpcmVkLW1vZGUpCiAjK0VORF9TUkMKKioqKiogVmlld2lu ZyBpbWFnZXMgaW5saW5lCiMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgIDpyZXN1bHRzIG5vbmUKOzsg ZW5hYmxlIGlubGluZSBpbWFnZXMKKHNldHEgbXU0ZS12aWV3LXNob3ctaW1hZ2VzIHQpCjs7IHVz ZSBpbWFnZW1hZ2ljaywgaWYgYXZhaWxhYmxlCih3aGVuIChmYm91bmRwICdpbWFnZW1hZ2ljay1y ZWdpc3Rlci10eXBlcykKICAoaW1hZ2VtYWdpY2stcmVnaXN0ZXItdHlwZXMpKQojK0VORF9TUkMK KioqKiogRGlzcGxheWluZyByaWNoLXRleHQgbWVzc2FnZXMKIytCRUdJTl9TUkMgZW1hY3MtbGlz cCAgOnJlc3VsdHMgbm9uZQo7cHJlZmZlciBodG1sICAKKHNldHEgbXU0ZS12aWV3LXByZWZlci1o dG1sIHQpCjs7IHVzZSBuZXcgc2hyIGNvbW1hbmQgCihzZXRxIG11NGUtaHRtbDJ0ZXh0LWNvbW1h bmQgJ211NGUtc2hyMnRleHQpIAojK0VORF9TUkMKKioqKiBDb21wb3NpbmcvRWRpdGluZwoqKioq KiBkb24ndCBzZW5kIG15c2VsZiB3aGVuIHJlcGx5IHRvIGFsbAojK0JFR0lOX1NSQyBlbWFjcy1s aXNwICA6cmVzdWx0cyBub25lCihzZXRxIG11NGUtY29tcG9zZS1kb250LXJlcGx5LXRvLXNlbGYg IHQpCiMrRU5EX1NSQwoqKioqKiBtYWtlIG11NGUgZGVmYXVsdCBtYWlsIHByb2dyYW0KZW1hY3Mg YWxsb3dzIHlvdSB0byBzZWxlY3QgYW4gZS1tYWlsIHByb2dyYW0gYXMgdGhlIGRlZmF1bHQgcHJv Z3JhbSBpdCB1c2VzIHdoZW4geW91IHByZXNzIEMteCBtIChjb21wb3NlLW1haWwpLCBjYWxsIHJl cG9ydC1lbWFjcy1idWcgYW5kIHNvIG9uLiBJZiB5b3Ugd2FudCB0byB1c2UgbXU0ZSBmb3IgdGhp cywgeW91IGNhbiBkbyBzbyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyIGNvbmZpZ3Vy YXRpb246CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6cmVzdWx0cyBub25lCihzZXRxIG1haWwt dXNlci1hZ2VudCAnbXU0ZS11c2VyLWFnZW50KQogIytFTkRfU1JDCioqKiogU2VhcmNoaW5nIChi b29rbWFya3MsIHF1ZXJpZXMgZXRjKQoqKioqKiBUT0RPIEJvb2ttYXJrcwogICAgICA6UFJPUEVS VElFUzoKICAgICAgOklEOiAgICAgICBlNDE3YjU4YS01YjgxLTQ4NDItYWJhOS0yNmRmYTNhZDEw ZTUKICAgICAgOkVORDoKIGFkZCBtb3JlIGJvb2ttYXJrcyBhZnRlciBzdHVkeWluZyB0aGUgcXVl cnkgbWVjaGFuaXNtCgogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogKGFk ZC10by1saXN0ICdtdTRlLWJvb2ttYXJrcwogICAobWFrZS1tdTRlLWJvb2ttYXJrCiAgICAgOm5h bWUgICJmbGFnZ2VkIgogICAgIDpxdWVyeSAiZmxhZzpmbGFnZ2VkIgogICAgIDprZXkgP2YpKQoK IytFTkRfU1JDCgpUaGVyZSBpcyBhbHNvIE0teCBtdTRlLWhlYWRlcnMtc2VhcmNoLWJvb2ttYXJr LWVkaXQgKGtleSBCKSwgd2hpY2ggbGV0cyB5b3UgZWRpdCB0aGUgYm9va21hcmtlZCBxdWVyeSBi ZWZvcmUgaW52b2tpbmcgaXQKKioqKiogbWFpbGRpci1zaG9ydGN1dHMgCgogIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogKHNldHEgbXU0ZS1tYWlsZGlyLXNob3J0Y3V0cwog ICAgICcoKCIvSU5CT1giICAgICAgICAgICAgICAuID9pKQogICAgICAgKCIvW0dtYWlsXS5TZW50 IE1haWwiICAuID9zKQogICAgICAgKCIvW0dtYWlsXS5CaW4iICAgICAgICAuID9iKQogICAgICAg KCIvW0dtYWlsXS5BbGwgTWFpbCIgICAuID9hKSkpCiAjK0VORF9TUkMKCioqKiogbWJzeW5jIChp c3luYykgc3BlY2lmaWMKICAgICA6UFJPUEVSVElFUzoKICAgICA6SUQ6ICAgICAgIDg5ZjNmOTc1 LTZlM2QtNGU2OC1iOThlLTgzYjI0NDg3ODcyNgogICAgIDpFTkQ6CiAjK0JFR0lOX1NSQyBlbWFj cy1saXNwICA6cmVzdWx0cyBub25lCiAgIDs7IDs7cmVuYW1lIGZpbGVzIHdoZW4gbW92aW5nCiAg IDs7IDs7TkVFREVEIEZPUiBNQlNZTkMKICAgOzsgKHNldHEgbXU0ZS1jaGFuZ2UtZmlsZW5hbWVz LXdoZW4tbW92aW5nIHQpCiMrRU5EX1NSQwoqKioqIGhlbG0gbXUKICAgICA6UFJPUEVSVElFUzoK ICAgICA6SUQ6ICAgICAgIDY3OTUzMTlkLTk0MmYtNGM4Yy04ZGQwLTY3N2VjYWFlNWVkNgogICAg IDpFTkQ6CioqKioqIFRPRE8gc2VhcmNoIGZsYWdnZWQKICAgICAgOlBST1BFUlRJRVM6CiAgICAg IDpJRDogICAgICAgMDQ5YmI1NzItZDhiMS00ZjNlLThlNTktMDMzMDIwMWQ1N2M3CiAgICAgIDpF TkQ6CgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQogIChkZWZ1biB6L2hl bG0tbXUtZmxhZ2dlZCAgKCkKICAgICJTZWFyY2ggZmxhZ2dlZCBtYWlsIgogICAgKGludGVyYWN0 aXZlKQogICAgKGhlbG0gOnNvdXJjZXMgJyhoZWxtLXNvdXJjZS1tdSkKICAgIDpmdWxsLWZyYW1l IHQKICAgICAgICAgIDppbnB1dCAibWFpbGRpcjoiL0lOQk9YIiBmbGFnOmZsYWdnZWQgIgogICAg ICAgICAgOmNhbmRpZGF0ZS1udW1iZXItbGltaXQgNTAwKSkKCiAjK0VORF9TUkMKKioqKiBvcmdt b2RlIGludGVncmF0aW9uCiAgICAgOlBST1BFUlRJRVM6CiAgICAgOklEOiAgICAgICAyNzM5Mjli ZC1lZTExLTQ5ZDktYTkzZi00ZDZlNjI1ODA3OTUKICAgICA6RU5EOgogaHR0cDovL3d3dy5kamNi c29mdHdhcmUubmwvY29kZS9tdS9tdTRlL0NyZWF0aW5nLW9yZ18wMDJkbW9kZS1saW5rcy5odG1s CiAjK0JFR0lOX1NSQyBlbWFjcy1saXNwIDpyZXN1bHRzIG5vbmUKOztzdG9yZSBvcmctbW9kZSBs aW5rcyB0byBtZXNzYWdlcwoocmVxdWlyZSAnb3JnLW11NGUpCjs7c3RvcmUgbGluayB0byBtZXNz YWdlIGlmIGluIGhlYWRlciB2aWV3LCBub3QgdG8gaGVhZGVyIHF1ZXJ5CihzZXRxIG9yZy1tdTRl LWxpbmstcXVlcnktaW4taGVhZGVycy1tb2RlIG5pbCkKCjs7IHdoZW4gbWFpbCBpcyBzZW50LCBh dXRvbWF0aWNhbGx5IGNvbnZlcnQgb3JnIGJvZHkgdG8gSFRNTAooc2V0cSBvcmctbXU0ZS1jb252 ZXJ0LXRvLWh0bWwgdCkKCiAjK0VORF9TUkMKKioqKiB2aWV3IHNldHRpbmdzCiAgICAgOlBST1BF UlRJRVM6CiAgICAgOklEOiAgICAgICBhMzEwNmUzOS1lZTQwLTRiNjctOWY3OC1iNDViZDAyNzQ2 MjcKICAgICA6RU5EOgogIytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6cmVzdWx0cyBub25lCiAoc2V0 cSBtdTRlLWRhdGUtZm9ybWF0LWxvbmcgIiVkLyVtLyVZICglSDolTTolUykiKQogKHNldHEgbXU0 ZS1oZWFkZXJzLWRhdGUtZm9ybWF0ICIlZC8lbS8lWSAoJUg6JU06JVMpIikKCiA7Y2FuIGRlZmlu ZSBhIGhvcml6b250YWwgb3IgdmVydGljYWwgc3BsaXQgCiAoc2V0cSBtdTRlLXNwbGl0LXZpZXcg J2hvcml6b250YWwpCgogOzsgdXNlICdmYW5jeScgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gdmFy aW91cyBwbGFjZXMgaW4gbXU0ZQogKHNldHEgbXU0ZS11c2UtZmFuY3ktY2hhcnMgdCkKCjs7IFNp bGx5IG11NGUgb25seSBzaG93cyBuYW1lcyBpbiBGcm9tOiBieSBkZWZhdWx0LiBPZiBjb3Vyc2Ug d2UgYWxzbyAgd2FudCB0aGUgYWRkcmVzc2VzLgooc2V0cSBtdTRlLXZpZXctc2hvdy1hZGRyZXNz ZXMgdCkKCiA7OyBtdTRlLWFjdGlvbi12aWV3LWluLWJyb3dzZXIgaXMgYnVpbHQgaW50byBtdTRl CiA7OyBieSBhZGRpbmcgaXQgdG8gdGhlc2UgbGlzdHMgb2YgY3VzdG9tIGFjdGlvbnMKIDs7IGl0 IGNhbiBiZSBpbnZva2VkIGJ5IGZpcnN0IHByZXNzaW5nIGEsIHRoZW4gc2VsZWN0aW5nCiAoYWRk LXRvLWxpc3QgJ211NGUtaGVhZGVycy1hY3Rpb25zCiAgICAgICAgICAgICAgJygiaW4gYnJvd3Nl ciIgLiBtdTRlLWFjdGlvbi12aWV3LWluLWJyb3dzZXIpIHQpCiAoYWRkLXRvLWxpc3QgJ211NGUt dmlldy1hY3Rpb25zCiAgICAgICAgICAgICAgJygiaW4gYnJvd3NlciIgLiBtdTRlLWFjdGlvbi12 aWV3LWluLWJyb3dzZXIpIHQpCiAjK0VORF9TUkMKKioqKiBtdTRlIGZ1bmN0aW9ucwogICAgIDpQ Uk9QRVJUSUVTOgogICAgIDpJRDogICAgICAgOGIwNDU2NDctODI0ZC00ZmIwLWE2ODctZDE1ZDI0 N2I2ZWEzCiAgICAgOkVORDoKKioqKiogb3BlbiBtdTRlIGluYm94CiAgICAgIDpQUk9QRVJUSUVT OgogICAgICA6SUQ6ICAgICAgIDU4MzlhNWVlLWM4ODUtNDdlMS04MzA1LWEzZjkyZTJiZDg0YQog ICAgICA6RU5EOgogICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQooZGVmdW4g ei9tdTRlLWluYm94ICgpCiJEaXNwbGF5IHRoZSBpbmJveC4iCihpbnRlcmFjdGl2ZSkKOyhtdTRl KQoobXU0ZS1oZWFkZXJzLXNlYXJjaCAibWFpbGRpcjovSU5CT1giKSkKICAjK0VORF9TUkMKCioq KioqIG9wZW4gbXU0ZSBmbGFnZ2VkCiAgICAgIDpQUk9QRVJUSUVTOgogICAgICA6SUQ6ICAgICAg IGUwNmZiNjllLTQ0MjAtNDllMS1hZTkwLWFjOGM3ZTEyZTAzNgogICAgICA6RU5EOgogICMrQkVH SU5fU1JDIGVtYWNzLWxpc3AgOnJlc3VsdHMgbm9uZQogIChkZWZ1biB6L211NGUtZmxhZ2dlZCAo KQogICJEaXNwbGF5IHRoZSBpbmJveC4iCiAgKGludGVyYWN0aXZlKQogIChtdTRlKQogIChtdTRl LWhlYWRlcnMtc2VhcmNoICJtYWlsZGlyOi9JTkJPWCBBTkQgZmxhZzpmbGFnZ2VkICIpKQogICMr RU5EX1NSQwoqKioqIGdtYWlsIGludGVncmF0aW9uCioqKioqIFRPRE8gc3RhcgojK0JFR0lOX1NS QyBlbGlzcAogIDs7IChhZGQtaG9vayAnbXU0ZS1tYXJrLWV4ZWN1dGUtcHJlLWhvb2sgCiAgOzsg ICAgICAgICAgIChsYW1iZGEgKG1hcmsgbXNnKSAKICA7OyAgICAgICAgICAgICAoY29uZCAoKGVx dWFsIG1hcmsgJ3JlZmlsZSkgKG11NGUtYWN0aW9uLXJldGFnLW1lc3NhZ2UgbXNnICItXFxJbmJv eCIpKSAKICA7OyAgICAgICAgICAgICAgICAgICAoKGVxdWFsIG1hcmsgJ3RyYXNoKSAobXU0ZS1h Y3Rpb24tcmV0YWctbWVzc2FnZSBtc2cgIi1cXEluYm94LC1cXFN0YXJyZWQiKSkgCiAgOzsgICAg ICAgICAgICAgICAgICAgKChlcXVhbCBtYXJrICdmbGFnKSAobXU0ZS1hY3Rpb24tcmV0YWctbWVz c2FnZSBtc2cgIi1cXEluYm94LFxcU3RhcnJlZCIpKSAKICA7OyAgICAgICAgICAgICAgICAgICAo KGVxdWFsIG1hcmsgJ3VuZmxhZykgKG11NGUtYWN0aW9uLXJldGFnLW1lc3NhZ2UgbXNnICItXFxT dGFycmVkIikpKSkpIAoKIytFTkRfU1JDCgojK1JFU1VMVFM6CgoKCioqKiogVE9ETyBBY2NvdW50 cwpjdXJlbnQgY29tbWVudGVkIGJlbG93IGNvZGUga2lsbHMgY29tcG9zZS4ubmVlZCB0byBpbnZl c3RpYWdldGUgCioqKioqIFNldHRpbmcgYWNjb3VudHMKaHR0cHM6Ly9naXRodWIuY29tL3hnYXJy aWRvL2VtYWNzLXN0YXJ0ZXIta2l0L2Jsb2IvbWFzdGVyL3N0YXJ0ZXIta2l0Lm9yZwoKICAjK0JF R0lOX1NSQyBlbWFjcy1saXNwCiAgICA7OyAoZGVmdmFyIHNrLW11NGUtYWNjb3VudC1hbGlzdAog ICAgOzsgICAnKCgiQkdVIgogICAgOzsgICAgICAodXNlci1tYWlsLWFkZHJlc3MgICJpemVsdGFr QGJndS5hYy5pbCIpCiAgICA7OyAgICAgICh1c2VyLWZ1bGwtbmFtZSAgICAgIlplbHRhayB6ZWx0 YWsiKQogICAgOzsgICAgICAobXU0ZS1jb21wb3NlLXNpZ25hdHVyZSAoY29uY2F0CiAgICA7OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICA7OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIFByb2YuIFplbHRhayB6ZWx0YWsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCiAgICA7OyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApKSkKICAgIDs7ICAgICAoIkdtYWlsIgogICAgOzsg ICAgICAodXNlci1tYWlsLWFkZHJlc3MgICJpemVsdGFrQGdtYWlsLmNvbSIpCiAgICA7OyAgICAg ICh1c2VyLWZ1bGwtbmFtZSAgICAgIlplbHRhayIpCiAgICA7OyAgICAgIChtdTRlLWNvbXBvc2Ut c2lnbmF0dXJlIChjb25jYXQKICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6 ZWx0YWtcbiIKICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpKSkpKQoK ICAgIDs7IChzZXRxIG11NGUtdXNlci1tYWlsLWFkZHJlc3MtbGlzdAogICAgOzsgICAgICAgKG1h cGNhciAobGFtYmRhIChhY2NvdW50KSAoY2FkciAoYXNzcSAndXNlci1tYWlsLWFkZHJlc3MgYWNj b3VudCkpKQogICAgOzsgICAgICAgICAgICAgICBzay1tdTRlLWFjY291bnQtYWxpc3QpKQogICMr RU5EX1NSQwoKICAjK1JFU1VMVFM6CgoqKioqKiBTZXQgYWNjb3VudCB3aGVuIGNvbXBvc2luZyBt YWlsCiAgIytCRUdJTl9TUkMgZW1hY3MtbGlzcAogICAgOzsgKGRlZnVuIHNrLW11NGUtc2V0LWFj Y291bnQgKCkKICAgIDs7ICAgIlNldCB0aGUgYWNjb3VudCBmb3IgY29tcG9zaW5nIGEgbWVzc2Fn ZS4iCiAgICA7OyAgIChsZXQqICgoYWNjb3VudAogICAgOzsgICAgICAgICAgIChpZiBtdTRlLWNv bXBvc2UtcGFyZW50LW1lc3NhZ2UKICAgIDs7ICAgICAgICAgICAgICAgKGxldCAoKG1haWxkaXIg KG11NGUtbWVzc2FnZS1maWVsZCBtdTRlLWNvbXBvc2UtcGFyZW50LW1lc3NhZ2UgOm1haWxkaXIp KSkKICAgIDs7ICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICIvXFwoLio/XFwpLyIgbWFp bGRpcikKICAgIDs7ICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDEgbWFpbGRpcikpCiAg ICA7OyAJICAgIChjb21wbGV0aW5nLXJlYWQgKGZvcm1hdCAiQ29tcG9zZSB3aXRoIGFjY291bnQ6 ICglcykgIgogICAgOzsgCQkJCSAgICAgKG1hcGNvbmNhdCAjJyhsYW1iZGEgKHZhcikgKGNhciB2 YXIpKQogICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2stbXU0ZS1hY2NvdW50LWFsaXN0ICIvIikpCiAgICA7OyAJCQkgICAgIChtYXBjYXIgIyco bGFtYmRhICh2YXIpIChjYXIgdmFyKSkgc2stbXU0ZS1hY2NvdW50LWFsaXN0KQogICAgOzsgCQkJ ICAgICBuaWwgdCBuaWwgbmlsIChjYWFyIHNrLW11NGUtYWNjb3VudC1hbGlzdCkpKSkKICAgIDs7 ICAgICAgICAgIChhY2NvdW50LXZhcnMgKGNkciAoYXNzb2MgYWNjb3VudCBzay1tdTRlLWFjY291 bnQtYWxpc3QpKSkpCiAgICA7OyAgICAgKGlmIGFjY291bnQtdmFycwogICAgOzsgICAgICAgICAo bWFwYyAjJyhsYW1iZGEgKHZhcikKICAgIDs7ICAgICAgICAgICAgICAgICAgIChzZXQgKGNhciB2 YXIpIChjYWRyIHZhcikpKQogICAgOzsgICAgICAgICAgICAgICBhY2NvdW50LXZhcnMpCiAgICA7 OyAgICAgICAoZXJyb3IgIk5vIGVtYWlsIGFjY291bnQgZm91bmQiKSkpKQoKICAgIDs7IDs7IGFz ayBmb3IgYWNjb3VudCB3aGVuIGNvbXBvc2luZyBtYWlsCiAgICA7OyAoYWRkLWhvb2sgJ211NGUt Y29tcG9zZS1wcmUtaG9vayAnc2stbXU0ZS1zZXQtYWNjb3VudCkKICAjK0VORF9TUkMKCiAgIytS RVNVTFRTOgoqKiogRE9DVQoqKioqIFF1ZXJpZXMKKioqKiogZXhhbXBsZXMKR2V0IGFsbCBtZXNz YWdlcyByZWdhcmRpbmcgYmFuYW5hcyBmcm9tIEpvaG4gd2l0aCBhbiBhdHRhY2htZW50Ogpmcm9t OmpvaG4gZmxhZzphdHRhY2ggYmFuYW5hcwoKR2V0IGFsbCBtZXNzYWdlcyB3aXRoIHN1YmplY3Qg d29tYmF0IGluIEp1bmUgMjAwOQpzdWJqZWN0OndvbWJhdCBkYXRlOjIwMDkwNjAxLi4yMDA5MDYz MAoKR2V0IGFsbCBtZXNzYWdlcyB3aXRoIFBERiBhdHRhY2htZW50cyBpbiB0aGUgL3Byb2plY3Rz IGZvbGRlcgptYWlsZGlyOi9wcm9qZWN0cyBtaW1lOmFwcGxpY2F0aW9uL3BkZgoKR2V0IGFsbCBt ZXNzYWdlcyBhYm91dCBSdXBlcnQgaW4gdGhlIC9TZW50IEl0ZW1zIGZvbGRlci4gTm90ZSB0aGF0 IG1haWxkaXJzIHdpdGggc3BhY2VzIG11c3QgYmUgcXVvdGVkLgptYWlsZGlyOiIvU2VudCBJdGVt cyIgcnVwZXJ0CgpHZXQgYWxsIG1lc3NhZ2VzIGZyb20gSmltIHdpdGhvdXQgYW4gYXR0YWNobWVu dDoKZnJvbTpqaW0gQU5EIE5PVCBmbGFnOmF0dGFjaAoKR2V0IGFsbCBtZXNzYWdlcyB3aXRoIEFs aWNlIGluIG9uZSBvZiB0aGUgY29udGFjdHMtZmllbGRzICh0bywgZnJvbSwgY2MsIGJjYyk6CmNv bnRhY3Q6YWxpY2UKCkdldCBhbGwgdW5yZWFkIG1lc3NhZ2VzIHdoZXJlIHRoZSBzdWJqZWN0IG1l bnRpb25zIMOFbmdzdHLDtm06IApzdWJqZWN0OsOFbmdzdHLDtm0gZmxhZzp1bnJlYWQKCgpHZXQg YWxsIHVucmVhZCBtZXNzYWdlcyBiZXR3ZWVuIE1hci0yMDAyIGFuZCBBdWctMjAwMyBhYm91dCBz b21lIGJpcmQ6CmRhdGU6MjAwMjAzMDEuLjIwMDMwODMxIG5pZ2h0aW5nYWxlIGZsYWc6dW5yZWFk CgpHZXQgdG9kYXnigJlzIG1lc3NhZ2VzOgpkYXRlOnRvZGF5Li5ub3cKCkdldCBhbGwgbWVzc2Fn ZXMgd2UgZ290IGluIHRoZSBsYXN0IHR3byB3ZWVrcyByZWdhcmRpbmcgZW1hY3M6CmRhdGU6Mncu Lm5vdyBlbWFjcwoKR2V0IG1lc3NhZ2VzIGZyb20gdGhlIE11IG1haWxpbmcgbGlzdDoKbGlzdDpt dS1kaXNjdXNzLmdvb2dsZWdyb3Vwcy5jb20KCkdldCBtZXNzYWdlcyB3aXRoIGEgc3ViamVjdCBz b2NjZXIsIFNvY3JhdGVzLCBzb2NpZXR5LCAuLi47IAoKbm90ZSB0aGF0IHRoZSDigJkq4oCZLXdp bGRjYXJkIGNhbiBvbmx5IGFwcGVhciBhcyBhIHRlcm3igJlzIHJpZ2h0bW9zdCBjaGFyYWN0ZXI6 CnN1YmplY3Q6c29jKgoKR2V0IGFsbCBtZXNzYWdlcyBub3Qgc2VudCB0byBhIG1haWxpbmctbGlz dDoKTk9UIGZsYWc6bGlzdAoKR2V0IGFsbCBtYWlscyB3aXRoIGF0dGFjaG1lbnRzIHdpdGggZmls ZW5hbWVzIHN0YXJ0aW5nIHdpdGggcGljOyBub3RlIHRoYXQgdGhlIOKAmSrigJkgd2lsZGNhcmQg Y2FuIG9ubHkgYXBwZWFyIGFzIHRoZSB0ZXJt4oCZcyByaWdodG1vc3QgY2hhcmFjdGVyOgpmaWxl OnBpYyoKCkdldCBhbGwgbWVzc2FnZXMgd2l0aCBQREYtYXR0YWNobWVudHM6Cm1pbWU6YXBwbGlj YXRpb24vcGRmCgpHZXQgYWxsIG1lc3NhZ2VzIHdpdGggaW1hZ2UgYXR0YWNobWVudHMsIGFuZCBu b3RlIHRoYXQgdGhlIOKAmSrigJkgd2lsZGNhcmQgY2FuIG9ubHkgYXBwZWFyIGFzIHRoZSB0ZXJt 4oCZcyByaWdodG1vc3QgY2hhcmFjdGVyOgoKbWltZTppbWFnZS8qCioqKioqIFF1ZSBtYWlsIAoK dG9nZ2xlIFttXWFpbCBzZW5kaW5nIG1vZGUgKGRpcmVjdCkgdG9nZ2xlcyBiZXR3ZWVuIHNlbmRp bmcgbWFpbCBkaXJlY3RseSwgYW5kIHF1ZXVpbmcgaXQgZmlyc3QgKGZvciBleGFtcGxlLCB3aGVu IHlvdSBhcmUgb2ZmbGluZSksIGFuZCBbZl1sdXNoIHF1ZXVlZCBtYWlsIGZsdXNoZXMgYW55IHF1 ZXVlZCBtYWlsLgoqKioqIFRoZSBoZWFkZXJzIHZpZXcKVGhlIGhlYWRlcnMgdmlldyBzaG93cyB0 aGUgcmVzdWx0cyBvZiBhIHF1ZXJ5LiBUaGUgaGVhZGVyLWxpbmUgc2hvd3MgdGhlIG5hbWVzIG9m IHRoZSBmaWVsZHMuIEJlbG93IHRoYXQsIHRoZXJlIGlzIGEgbGluZSB3aXRoIHRob3NlIGZpZWxk cywgZm9yIGVhY2ggbWF0Y2hpbmcgbWVzc2FnZSwgZm9sbG93ZWQgYnkgYSBmb290ZXIgbGluZS4g VGhlIG1ham9yLW1vZGUgZm9yIHRoZSBoZWFkZXJzIHZpZXcgaXMgbXU0ZS1oZWFkZXJzLW1vZGUu CioqKioga2V5YmluZHMgCioqKioqIGltcG9ydGFudCBiaW5kcyAKeS0gc3dhcCBiZXR3ZWVuIGhl YWRlciBhbmQgbWVzc2FnZSAKZS0gYXR0Y2htZW50cwpDLXUgZS0gc2F2ZSBtdWx0aXBsZSBhdHRh Y2htZW50cwpBIHcgLSBvcGVuIGF0dGFjaG1lbnQgd2l0aCBleHRlcm5hbCBhcHAgCmggdG9nZ2xl IGh0bWwvdGV4dCB2aWV3IAoKQy1jIEMtayAgICAgIGtpbGwgdGhlIG1lc3NhZ2UgYnVmZmVyICh0 aGUgbWVzc2FnZSByZW1haW5zIGluIHRoZSBkcmFmdCBmb2xkZXIpCkMtYyBDLWEgICAgICBhdHRh Y2ggYSBmaWxlIChwcm8tdGlwOiBkcmFnICYgZHJvcCB3b3JrcyBhcyB3ZWxsKQoKCioqKioqIGhl YWRlciB2aWV3IGJpbmRzIApVc2luZyB0aGUgYmVsb3cga2V5IGJpbmRpbmdzLCB5b3UgY2FuIGRv IHZhcmlvdXMgdGhpbmdzIHdpdGggdGhlc2UgbWVzc2FnZXM7IHRoZXNlIGFjdGlvbnMgYXJlIGFs c28gbGlzdGVkIGluIHRoZSBIZWFkZXJzIG1lbnUgaW4gdGhlIGVtYWNzIG1lbnUgYmFyLgoKa2V5 ICAgICAgICAgIGRlc2NyaXB0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cm4scCAgICAgICAgICB2aWV3IHRoZSBuZXh0LCBwcmV2 aW91cyBtZXNzYWdlCl0sWyAgICAgICAgICBtb3ZlIHRvIHRoZSBuZXh0LCBwcmV2aW91cyB1bnJl YWQgbWVzc2FnZQp5ICAgICAgICAgICAgc2VsZWN0IHRoZSBtZXNzYWdlIHZpZXcgKGlmIGl0J3Mg dmlzaWJsZSkKUkVUICAgICAgICAgIG9wZW4gdGhlIG1lc3NhZ2UgYXQgcG9pbnQgaW4gdGhlIG1l c3NhZ2UgdmlldwoKc2VhcmNoaW5nCi0tLS0tLS0tLQpzICAgICAgICAgICAgc2VhcmNoClMgICAg ICAgICAgICBlZGl0IGxhc3QgcXVlcnkKLyAgICAgICAgICAgIG5hcnJvdyB0aGUgc2VhcmNoCmIg ICAgICAgICAgICBzZWFyY2ggYm9va21hcmsKQiAgICAgICAgICAgIGVkaXQgYm9va21hcmsgYmVm b3JlIHNlYXJjaApqICAgICAgICAgICAganVtcCB0byBtYWlsZGlyCk0tbGVmdCxcICAgICBwcmV2 aW91cyBxdWVyeQpNLXJpZ2h0ICAgICAgbmV4dCBxdWVyeQoKTyAgICAgICAgICAgIGNoYW5nZSBz b3J0IG9yZGVyClAgICAgICAgICAgICB0b2dnbGUgdGhyZWFkaW5nClEgICAgICAgICAgICB0b2dn bGUgZnVsbC1zZWFyY2gKViAgICAgICAgICAgIHRvZ2dsZSBza2lwLWR1cGxpY2F0ZXMKVyAgICAg ICAgICAgIHRvZ2dsZSBpbmNsdWRlLXJlbGF0ZWQKCm1hcmtpbmcKLS0tLS0tLQpkICAgICAgICAg ICAgbWFyayBmb3IgbW92aW5nIHRvIHRoZSB0cmFzaCBmb2xkZXIKPSAgICAgICAgICAgIG1hcmsg Zm9yIHJlbW92aW5nIHRyYXNoIGZsYWcgKCd1bnRyYXNoJykKREVMLEQgICAgICAgIG1hcmsgZm9y IGNvbXBsZXRlIGRlbGV0aW9uCm0gICAgICAgICAgICBtYXJrIGZvciBtb3ZpbmcgdG8gYW5vdGhl ciBtYWlsZGlyIGZvbGRlcgpyICAgICAgICAgICAgbWFyayBmb3IgcmVmaWxpbmcKKywtICAgICAg ICAgIG1hcmsgZm9yIGZsYWdnaW5nL3VuZmxhZ2dpbmcKPywhICAgICAgICAgIG1hcmsgbWVzc2Fn ZSBhcyB1bnJlYWQsIHJlYWQKCnUgICAgICAgICAgICB1bm1hcmsgbWVzc2FnZSBhdCBwb2ludApV ICAgICAgICAgICAgdW5tYXJrICphbGwqIG1lc3NhZ2VzCgolICAgICAgICAgICAgbWFyayBiYXNl ZCBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpULHQgICAgICAgICAgbWFyayB3aG9sZSB0aHJlYWQs IHN1YnRocmVhZAoKPGluc2VydD4sKiAgIG1hcmsgZm9yICdzb21ldGhpbmcnIChkZWNpZGUgbGF0 ZXIpCiMgICAgICAgICAgICByZXNvbHZlIGRlZmVycmVkICdzb21ldGhpbmcnIG1hcmtzCgp4ICAg ICAgICAgICAgZXhlY3V0ZSBhY3Rpb25zIGZvciB0aGUgbWFya2VkIG1lc3NhZ2VzCgpjb21wb3Np dGlvbgotLS0tLS0tLS0tLQpSLEYsQyAgICAgICAgcmVwbHkvZm9yd2FyZC9jb21wb3NlCkUgICAg ICAgICAgICBlZGl0IChvbmx5IGFsbG93ZWQgZm9yIGRyYWZ0IG1lc3NhZ2VzKQoKCm1pc2MKLS0t LQo7ICAgICAgICAgICAgc3dpdGNoIGZvY3VzCmEgICAgICAgICAgICBleGVjdXRlIHNvbWUgY3Vz dG9tIGFjdGlvbiBvbiBhIGhlYWRlcgp8IHBpcGUgbWVzc2FnZSB0aHJvdWdoIHNoZWxsIGNvbW1h bmQgfApDLSssQy0tICAgICAgaW5jcmVhc2UgLyBkZWNyZWFzZSB0aGUgbnVtYmVyIG9mIGhlYWRl cnMgc2hvd24KSCAgICAgICAgICAgIGdldCBoZWxwCkMtUy11ICAgICAgICB1cGRhdGUgbWFpbCAm IHJlaW5kZXgKcSAgICAgICAgICAgIGxlYXZlIHRoZSBoZWFkZXJzIGJ1ZmZlcgoqKioqKiBtZXNz YWdlIHZpZXcgYmluZHMKa2V5ICAgICAgICAgIGRlc2NyaXB0aW9uCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cm4scCAgICAgICAg ICB2aWV3IHRoZSBuZXh0LCBwcmV2aW91cyBtZXNzYWdlCl0sWyAgICAgICAgICBtb3ZlIHRvIHRo ZSBuZXh0LCBwcmV2aW91cyB1bnJlYWQgbWVzc2FnZQp5ICAgICAgICAgICAgc2VsZWN0IHRoZSBo ZWFkZXJzIHZpZXcgKGlmIGl0J3MgdmlzaWJsZSkKClJFVCAgICAgICAgICBzY3JvbGwgZG93bgpN LVJFVCAgICAgICAgb3BlbiBVUkwgYXQgcG9pbnQgLyBhdHRhY2htZW50IGF0IHBvaW50CgpTUEMg ICAgICAgICAgc2Nyb2xsIGRvd24sIGlmIGF0IGVuZCwgbW92ZSB0byBuZXh0IG1lc3NhZ2UKUy1T UEMgICAgICAgIHNjcm9sbCB1cAoKc2VhcmNoaW5nCi0tLS0tLS0tLQpzICAgICAgICAgICAgc2Vh cmNoCmUgICAgICAgICAgICBlZGl0IGxhc3QgcXVlcnkKLyAgICAgICAgICAgIG5hcnJvdyB0aGUg c2VhcmNoCmIgICAgICAgICAgICBzZWFyY2ggYm9va21hcmsKQiAgICAgICAgICAgIGVkaXQgYm9v a21hcmsgYmVmb3JlIHNlYXJjaApqICAgICAgICAgICAganVtcCB0byBtYWlsZGlyCgpNLWxlZnQg ICAgICAgcHJldmlvdXMgcXVlcnkKTS1yaWdodCAgICAgIG5leHQgcXVlcnkKCm1hcmtpbmcKLS0t LS0tLQpkICAgICAgICAgICAgbWFyayBmb3IgbW92aW5nIHRvIHRoZSB0cmFzaCBmb2xkZXIKPSAg ICAgICAgICAgIG1hcmsgZm9yIHJlbW92aW5nIHRyYXNoIGZsYWcgKCd1bnRyYXNoJykKREVMLEQg ICAgICAgIG1hcmsgZm9yIGNvbXBsZXRlIGRlbGV0aW9uCm0gICAgICAgICAgICBtYXJrIGZvciBt b3ZpbmcgdG8gYW5vdGhlciBtYWlsZGlyIGZvbGRlcgpyICAgICAgICAgICAgbWFyayBmb3IgcmVm aWxpbmcKKywtICAgICAgICAgIG1hcmsgZm9yIGZsYWdnaW5nL3VuZmxhZ2dpbmcKCnUgICAgICAg ICAgICB1bm1hcmsgbWVzc2FnZSBhdCBwb2ludApVICAgICAgICAgICAgdW5tYXJrICphbGwqIG1l c3NhZ2VzCgolICAgICAgICAgICAgbWFyayBiYXNlZCBvbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpU LHQgICAgICAgICAgbWFyayB3aG9sZSB0aHJlYWQsIHN1YnRocmVhZAoKPGluc2VydD4sKiAgIG1h cmsgZm9yICdzb21ldGhpbmcnIChkZWNpZGUgbGF0ZXIpCiMgICAgICAgICAgICByZXNvbHZlIGRl ZmVycmVkICdzb21ldGhpbmcnIG1hcmtzCgp4ICAgICAgICAgICAgZXhlY3V0ZSBhY3Rpb25zIGZv ciB0aGUgbWFya2VkIG1lc3NhZ2VzCgpjb21wb3NpdGlvbgotLS0tLS0tLS0tLQpSLEYsQyAgICAg ICAgcmVwbHkvZm9yd2FyZC9jb21wb3NlCkUgICAgICAgICAgICBlZGl0IChvbmx5IGFsbG93ZWQg Zm9yIGRyYWZ0IG1lc3NhZ2VzKQoKYWN0aW9ucwotLS0tLS0tCmcgICAgICAgICAgICBnbyB0byAo dmlzaXQpIG51bWJlcmVkIFVSTCAodXNpbmcgYGJyb3dzZS11cmwnKQoob3I6IDxtb3VzZS0xPiBv ciBNLVJFVCB3aXRoIHBvaW50IG9uIHVybCkKQy11IGcgdmlzaXRzIG11bHRpcGxlIFVSTHMKZiAg ICAgICAgICAgIGZldGNoIChkb3dubG9hZCApdGhlIG51bWJlcmVkIFVSTC4KQy11IGYgZmV0Y2hl cyBtdWx0aXBsZSBVUkxzCmsgICAgICAgICAgICBzYXZlIHRoZSBudW1iZXJlZCBVUkwgaW4gdGhl IGtpbGwtcmluZy4KQy11IGsgc2F2ZXMgbXVsdGlwbGUgVVJMcwoKZSAgICAgICAgICAgIGV4dHJh Y3QgKHNhdmUpIGF0dGFjaG1lbnQgKGFza3MgZm9yIG51bWJlcikKKG9yOiA8bW91c2UtMj4gb3Ig Uy1SRVQgd2l0aCBwb2ludCBvbiBhdHRhY2htZW50KQpDLXUgZSBleHRyYWN0cyBtdWx0aXBsZSBh dHRhY2htZW50cwpvICAgICAgICAgICAgb3BlbiBhdHRhY2htZW50IChhc2tzIGZvciBudW1iZXIp CihvcjogPG1vdXNlLTE+IG9yIE0tUkVUIHdpdGggcG9pbnQgb24gYXR0YWNobWVudCkKCmEgICAg ICAgICAgICBleGVjdXRlIHNvbWUgY3VzdG9tIGFjdGlvbiBvbiB0aGUgbWVzc2FnZQpBICAgICAg ICAgICAgZXhlY3V0ZSBzb21lIGN1c3RvbSBhY3Rpb24gb24gYW4gYXR0YWNobWVudAoKbWlzYwot LS0tCjsgICAgICAgICAgICBzd2l0Y2ggZm9jdXMKYyAgICAgICAgICAgIGNvcHkgYWRkcmVzcyBh dCBwb2ludCAod2l0aCBDLXUgY29weSBsb25nIHZlcnNpb24pCgpoICAgICAgICAgICAgdG9nZ2xl IGJldHdlZW4gaHRtbC90ZXh0IChpZiBhdmFpbGFibGUpCncgICAgICAgICAgICB0b2dnbGUgbGlu ZSB3cmFwcGluZwojICAgICAgICAgICAgdG9nZ2xlIHNob3cvaGlkZSBjaXRlZCBwYXJ0cwoKdiAg ICAgICAgICAgIHNob3cgZGV0YWlscyBhYm91dCB0aGUgY3J5cHRvZ3JhcGhpYyBzaWduYXR1cmUK Ci4gICAgICAgICAgICBzaG93IHRoZSByYXcgbWVzc2FnZSB2aWV3LiAncScgdGFrZXMgeW91IGJh Y2suCkMtKyxDLS0gICAgICBpbmNyZWFzZSAvIGRlY3JlYXNlIHRoZSBudW1iZXIgb2YgaGVhZGVy cyBzaG93bgpIICAgICAgICAgICAgZ2V0IGhlbHAKQy1TLXUgICAgICAgIHVwZGF0ZSBtYWlsICYg cmVpbmRleApxICAgICAgICAgICAgbGVhdmUgdGhlIG1lc3NhZ2UgdmlldwoqIExhdGV4CioqIEZ1 bmN0aW9ucwoqKiogY2xlYW51cCByZWZlcmVuY2VzIAojK0JFR0lOX1NSQyBlbWFjcy1saXNwICA6 cmVzdWx0cyBub25lCiAgKGRlZnVuIHovY2xlYW51cC1yZWZzICgpCiJEZWxldGUgcG9ydGlvbnMg b2YgcmVmZXJlbmNlIHNlY3Rpb24gd2l0aGluIHJlZ2lvbi4iCihpbnRlcmFjdGl2ZSkKKGxldCAo KHN0YXJ0IChyZWdpb24tYmVnaW5uaW5nKSkpCiAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAi ID8oWzAtOV0rIENpdGF0aW9uc1tcbiAtfl0qPykiIChyZWdpb24tZW5kKSB0KSAocmVwbGFjZS1t YXRjaCAiIikpCiAgKGdvdG8tY2hhciBzdGFydCkKICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJk ICJcXChDXFx8UERcXHxQSVxcKVxcPiIgKHJlZ2lvbi1lbmQpIHQpIChyZXBsYWNlLW1hdGNoICIi KSkKICAoZ290by1jaGFyIChyZWdpb24tZW5kKSkKKSkKCiMrRU5EX1NSQwoqKiBzZXR0aW5ncyAK KioqIGV4cG9ydCB0byBQREYgc2V0dGluZ3MKIytCRUdJTl9TUkMgZW1hY3MtbGlzcCAgOnJlc3Vs dHMgbm9uZQooc2V0cSBvcmctbGF0ZXgtcGRmLXByb2Nlc3MKICAgICAgJygicGRmbGF0ZXggLWlu dGVyYWN0aW9uIG5vbnN0b3Btb2RlIC1vdXRwdXQtZGlyZWN0b3J5ICVvICVmIgoJImJpYnRleCAl YiIKCSJwZGZsYXRleCAtaW50ZXJhY3Rpb24gbm9uc3RvcG1vZGUgLW91dHB1dC1kaXJlY3Rvcnkg JW8gJWYiCgkicGRmbGF0ZXggLWludGVyYWN0aW9uIG5vbnN0b3Btb2RlIC1vdXRwdXQtZGlyZWN0 b3J5ICVvICVmIikKKQojK0VORF9TUkMKKiBFbWFjcyAyNSByZWFkeSBzdHVmZgogIDpQUk9QRVJU SUVTOgogIDpJRDogICAgICAgOGQ4NTBlN2EtNGU4Yy00MmIwLTk5YzAtMWJhOGFiY2Y0YzQxCiAg OkVORDoKKioqIHNhdmUgcG9zaXRpb24KIFlvdSBjYW4gc2F2ZSB0aGUgY3Vyc29yIHBvc2l0aW9u IGZvciBldmVyeSBmaWxlIHlvdSBvcGVuZWQuIFNvLCBuZXh0IHRpbWUgeW91IG9wZW4gdGhlIGZp bGUsIHRoZSBjdXJzb3Igd2lsbCBiZSBhdCB0aGUgcG9zaXRpb24geW91IGxhc3Qgb3BlbmVkIGl0 LgoKIFB1dCB0aGlzIGNvZGUgaW4geW91ciBlbWFjcyBpbml0IGZpbGU6CgogIytCRUdJTl9TUkMg ZW1hY3MtbGlzcCAgOnJlc3VsdHMgbm9uZQo7IHJlbWVtYmVyIGN1cnNvciBwb3NpdGlvbiwgZm9y IGVtYWNzIDI1LjEgb3IgbGF0ZXIKKHNhdmUtcGxhY2UtbW9kZSAxKQogIytFTkRfU1JDCgoqKiog Y29tcHJlc3MgdG8gdGFyIGluIGRpcmVkCiAgICA6UFJPUEVSVElFUzoKICAgIDpJRDogICAgICAg ODA0NWVjNDQtZmI2OC00OTZjLWIwODMtYzc0OWRhYThiOTQ3CiAgICA6RU5EOgogIHRoaXMgd2ls bCBvbmx5IHdvcmsgb24gRW1hY3MgMjUuLmtlZXAgdHJhY2shCiAgaHR0cDovL29yZW1hY3MuY29t LzIwMTUvMTAvMjMvZGlyZWQtY29tcHJlc3MvCgogIFRoaXMgbmV3IGNvbW1hbmQgZGlyZWQtZG8t Y29tcHJlc3MtdG8sIGJvdW5kIHRvIGMsIHdpbGwgcHJvbXB0IG1lIGZvciBhIGZpbGUgbmFtZSBv ZiB0aGUgb3V0cHV0IGFyY2hpdmUuIFNvIG5vdyBpdCdzIGVhc2llciB0byB0eXBlIGluIHRoYXQg ZmlsZSBuYW1lLCBpZiB5b3UgdXNlIGlkby1tb2RlIC8gaXZ5LW1vZGUgLyBoZWxtLW1vZGUuIFdo YXQncyBtb3JlLCB0aGUgY29tbWFuZCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCBm cm9tIHRoZSBhcmNoaXZlIGV4dGVuc2lvbiBhbmQgZXhlY3V0ZWQuIEhlcmUncyB0aGUgY29ycmVz cG9uZGluZyBjdXN0b21pemF0aW9uIHZhcmlhYmxlOgoKICAjK0JFR0lOX1NSQyBlbWFjcy1saXNw IDpyZXN1bHRzIG5vbmUKICAgIDs7IChkZWZpbmUta2V5IGRpcmVkLW1vZGUtbWFwICJjIiAnZGly ZWQtZG8tY29tcHJlc3MtdG8pCgogICAgOzsgKGRlZnZhciBkaXJlZC1jb21wcmVzcy1maWxlcy1h bGlzdAogICAgOzsgICAnKCgiXFwudGFyXFwuZ3pcXCciIC4gInRhciAtYyAlaSB8IGd6aXAgLWM5 ID4gJW8iKQogICAgOzsgICAgICgiXFwuemlwXFwnIiAuICJ6aXAgJW8gLXIgLS1maWxlc3luYyAl aSIpKQogICAgOzsgICAiQ29udHJvbCB0aGUgY29tcHJlc3Npb24gc2hlbGwgY29tbWFuZCBmb3Ig YGRpcmVkLWRvLWNvbXByZXNzLXRvJy4KCiAgICA7OyBFYWNoIGVsZW1lbnQgaXMgKFJFR0VYUCAu IENNRCksIHdoZXJlIFJFR0VYUCBpcyB0aGUgbmFtZSBvZiB0aGUKICAgIDs7IGFyY2hpdmUgdG8g d2hpY2ggeW91IHdhbnQgdG8gY29tcHJlc3MsIGFuZCBDTUQgdGhlIHRoZQogICAgOzsgY29ycmVz cG9uZGluZyBjb21tYW5kLgoKICAgIDs7IFdpdGhpbiBDTUQsICVpIGRlbm90ZXMgdGhlIGlucHV0 IGZpbGUocyksIGFuZCAlbyBkZW5vdGVzIHRoZQogICAgOzsgb3V0cHV0IGZpbGUuICVpIHBhdGgo cykgYXJlIHJlbGF0aXZlLCB3aGlsZSAlbyBpcyBhYnNvbHV0ZS4iKQoKICAjK0VORF9TUkMKCgoq IEVPRiAKICA6UFJPUEVSVElFUzoKICA6SUQ6ICAgICAgIDAzYmFlNzczLWFmZGYtNDhhMS05NGIw LWZmZjM0NzJiN2ZlNwogIDpFTkQ6CnRoaXMgaGFzIHRvIGJlIGF0IHRoZSBlbmQgc2luY2UgdGhp cyBpcyBhIGluaXQgZmlsZSBpdCB3b250IGtub3cgaWYgaXRzIGEgc2FmZSB2YXJpYWJsZSB1bnRp bCBpdCBnb2VzIHRocm91Z2ggdGhlIHdob2xlIGluaXQgCmFsc28gJE5vdGUkIHRoYXQgc2luY2Ug dGhpcyBpcyBhdCB0aGUgZW5kIHRoZSBlbWFjcyBzeW50YXggaXMgZGlmZmVyZW50Cmh0dHBzOi8v d3d3LmdudS5vcmcvc29mdHdhcmUvZW1hY3MvbWFudWFsL2h0bWxfbm9kZS9lbWFjcy9TcGVjaWZ5 aW5nLUZpbGUtVmFyaWFibGVzLmh0bWwKCgoKICAK --94eb2c0358a081210f05434d5be4--