<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>59247</bug_id>
          
          <creation_ts>2011-04-22 15:25:33 -0700</creation_ts>
          <short_desc>We have an autogenerator, so use it</short_desc>
          <delta_ts>2011-04-22 16:04:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391141</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-22 15:25:33 -0700</bug_when>
    <thetext>We have an autogenerator, so use it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391144</commentid>
    <comment_count>1</comment_count>
      <attachid>90780</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-22 15:27:37 -0700</bug_when>
    <thetext>Created attachment 90780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391148</commentid>
    <comment_count>2</comment_count>
      <attachid>90781</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-22 15:29:58 -0700</bug_when>
    <thetext>Created attachment 90781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391180</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-22 16:04:17 -0700</bug_when>
    <thetext>Committed r84699: &lt;http://trac.webkit.org/changeset/84699&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90780</attachid>
            <date>2011-04-22 15:27:37 -0700</date>
            <delta_ts>2011-04-22 15:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59247-20110422152736.patch</filename>
            <type>text/plain</type>
            <size>34073</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NjkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMjIgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIGFuIGF1dG9nZW5lcmF0b3IsIHNvIHVzZSBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNDcKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVt
ZW50YXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNo
ZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcDogUmVtb3ZlZCByZXBldGl0aXZlIGhhbmQtd3JpdHRlbiBjb2RlLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEF1Z21lbnRlZCBhdXRvZ2Vu
ZXJhdG9yIHRvIGRvIHRoZSBqb2IuCisKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5pZGw6CisgICAg
ICAgICogY3NzL0NTU1J1bGVMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5pZGw6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDoKKyAgICAgICAgKiBjc3MvTWVk
aWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5pZGw6CisgICAgICAgICogY3Nz
L1N0eWxlU2hlZXRMaXN0LmlkbDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
OgorICAgICAgICAqIGRvbS9ET01TdHJpbmdNYXAuaWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5v
ZGVNYXAuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUxp
c3QuaWRsOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmlkbDogVXBkYXRlZCBhdHRyaWJ1dGVzIHRvIHBsdWcgaW50bworICAgICAgICB0
aGUgYXV0b2dlbmVyYXRvci4KKwogMjAxMS0wNC0yMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCShyZXZp
c2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNDU1NSdWxlT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNDU1NSdWxlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NSdWxlKiBqc0NT
U1J1bGUgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpA
QCAtNjEsMjQgKzU2LDYgQEAgYm9vbCBKU0NTU1J1bGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cQogICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanNDU1NSdWxl
LT5pbXBsKCkpKTsKIH0KIAotdm9pZCBKU0NTU1J1bGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNDU1NSdWxl
KiBqc0NTU1J1bGUgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNDU1NSdWxlLT5p
bXBsKCksIGpzQ1NTUnVsZSk7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIENTU1J1bGUqKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoSlNDU1NSdWxlT3duZXIsIGpzQ1NTUnVsZU93bmVyLCAoKSk7Ci0gICAgcmV0dXJu
ICZqc0NTU1J1bGVPd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIENTU1J1bGUqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQog
dm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA4NDY2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTQ1NTUnVsZUxpc3RPd25lciA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpT
Qzo6TWFya1N0YWNrJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQogYm9vbCBKU0NTU1J1bGVMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NSdWxlTGlz
dCoganNDU1NSdWxlTGlzdCA9IHN0YXRpY19jYXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuZ2V0
KCkuYXNDZWxsKCkpOwpAQCAtNTIsMjcgKzQ3LDQgQEAgYm9vbCBKU0NTU1J1bGVMaXN0T3duZXI6
OmlzUmVhY2hhYmxlRnJvbQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0NTU1J1bGVM
aXN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxpc3QgPSBzdGF0aWNf
Y2FzdDxKU0NTU1J1bGVMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFw
cGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzQ1NTUnVsZUxpc3QtPmltcGwoKSwganNDU1NS
dWxlTGlzdCk7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCosIENTU1J1bGVMaXN0KikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEpTQ1NTUnVsZUxpc3RPd25lciwganNDU1NSdWxlTGlzdE93bmVyLCAoKSk7Ci0gICAgcmV0
dXJuICZqc0NTU1J1bGVMaXN0T3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4
dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBDU1NSdWxlTGlzdCopCi17Ci0gICAgcmV0dXJuIHdv
cmxkOwotfQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDU1NSdWxlTGlzdCogaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcDxK
U0NTU1J1bGVMaXN0PihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMzUgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtT
dGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uKiBqc0NTU1N0eWxlRGVjbGFyYXRpb24gPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxl
RGVjbGFyYXRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIHJldHVybiBtYXJrU3Rh
Y2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanNDU1NTdHlsZURlY2xhcmF0aW9uLT5pbXBsKCkp
KTsKIH0KIAotdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNDU1NT
dHlsZURlY2xhcmF0aW9uKiBqc0NTU1N0eWxlRGVjbGFyYXRpb24gPSBzdGF0aWNfY2FzdDxKU0NT
U1N0eWxlRGVjbGFyYXRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNDU1NTdHlsZURlY2xhcmF0aW9uLT5pbXBsKCks
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbik7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIENTU1N0eWxlRGVjbGFyYXRpb24qKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXIsIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbk93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0NTU1N0eWxlRGVj
bGFyYXRpb25Pd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIENTU1N0eWxlRGVjbGFyYXRpb24qKQotewotICAgIHJldHVybiB3b3Js
ZDsKLX0KLQogdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKQEAg
LTIyNCw5ICsyMDEsNCBAQCBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNzc1Zh
bHVlKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcGwpCi17Ci0gICAgcmV0
dXJuIHdyYXA8SlNDU1NTdHlsZURlY2xhcmF0aW9uPihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTEgKzUyLDYgQEAgSGFzaE1hcDxDU1NWYWx1ZSosIHZvaWQqPiYgY3NzVmFs
dWVSb290cwogICAgIHJldHVybiBjc3NWYWx1ZVJvb3RzOwogfQogCi1jbGFzcyBKU0NTU1ZhbHVl
T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlND
U1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpT
Q1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBzdGF0aWNfY2FzdDxKU0NTU1ZhbHVlKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKQEAgLTc2LDE3ICs3MSw2IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmQKICAgICBjc3NWYWx1ZVJvb3RzKCkucmVtb3ZlKGpzQ1NTVmFsdWUt
PmltcGwoKSk7CiB9CiAKLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCosIENTU1ZhbHVlKikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEpTQ1NTVmFsdWVPd25lciwganNDU1NWYWx1ZU93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0NT
U1ZhbHVlT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBDU1NWYWx1ZSopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMSArMzksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dE93bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpNYXJr
U3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCiBib29sIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCoganNDYW52YXNSZW5kZXJpbmdDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTUy
LDI0ICs0Nyw2IEBAIGJvb2wgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0T3duZXI6OmlzUmUKICAg
ICByZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC0+aW1wbCgpLT5jYW52YXMoKSkpOwogfQogCi12b2lkIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGpzQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9
IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCBqc0NhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmltcGwoKSwganNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRPd25lciwganNDYW52
YXNSZW5kZXJpbmdDb250ZXh0T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzQ2FudmFzUmVuZGVy
aW5nQ29udGV4dE93bmVyOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCi17Ci0gICAgcmV0dXJu
IHdvcmxkOwotfQotCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDExICsyOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNET01JbXBsZW1lbnRhdGlvbk93bmVyIDogcHVibGljIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNET01JbXBsZW1lbnRhdGlv
bk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTRE9NSW1w
bGVtZW50YXRpb24qIGpzRE9NSW1wbGVtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxKU0RPTUltcGxl
bWVudGF0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTQyLDI3ICszNyw0IEBAIGJv
b2wgSlNET01JbXBsZW1lbnRhdGlvbk93bmVyOjppc1JlYWNoYWIKICAgICByZXR1cm4gdmlzaXRv
ci5jb250YWluc09wYXF1ZVJvb3QoanNET01JbXBsZW1lbnRhdGlvbi0+aW1wbCgpLT5kb2N1bWVu
dCgpKTsKIH0KIAotdm9pZCBKU0RPTUltcGxlbWVudGF0aW9uT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIEpTRE9N
SW1wbGVtZW50YXRpb24qIGpzRE9NSW1wbGVtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxKU0RPTUlt
cGxlbWVudGF0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsIGpzRE9NSW1wbGVtZW50YXRpb24tPmltcGwoKSwganNET01J
bXBsZW1lbnRhdGlvbik7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCosIERPTUltcGxlbWVudGF0aW9uKikKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEpTRE9NSW1wbGVtZW50YXRpb25Pd25lciwganNET01JbXBsZW1lbnRh
dGlvbk93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0RPTUltcGxlbWVudGF0aW9uT3duZXI7Ci19
Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBE
T01JbXBsZW1lbnRhdGlvbiopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCi1KU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRE9NSW1wbGVtZW50YXRpb24qIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXA8SlNET01J
bXBsZW1lbnRhdGlvbj4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcAkocmV2aXNpb24gODQ2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNET01T
dHJpbmdNYXBPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVh
bCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19Owot
CiBib29sIEpTRE9NU3RyaW5nTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIGpzRE9NU3RyaW5nTWFwID0gc3RhdGljX2Nhc3Q8
SlNET01TdHJpbmdNYXAqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtNDgsMjQgKzQzLDYg
QEAgYm9vbCBKU0RPTVN0cmluZ01hcE93bmVyOjppc1JlYWNoYWJsZUZybwogICAgIHJldHVybiB2
aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzRE9NU3RyaW5nTWFwLT5pbXBsKCktPmVs
ZW1lbnQoKSkpOwogfQogCi12b2lkIEpTRE9NU3RyaW5nTWFwT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIEpTRE9N
U3RyaW5nTWFwKiBqc0RPTVN0cmluZ01hcCA9IHN0YXRpY19jYXN0PEpTRE9NU3RyaW5nTWFwKj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsIGpzRE9NU3RyaW5nTWFwLT5pbXBsKCksIGpzRE9NU3RyaW5nTWFwKTsKLX0KLQotaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwg
RE9NU3RyaW5nTWFwKikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTRE9NU3RyaW5nTWFw
T3duZXIsIGpzRE9NU3RyaW5nTWFwT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzRE9NU3RyaW5n
TWFwT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBET01TdHJpbmdNYXAqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQogYm9v
bCBKU0RPTVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVN0cmlu
Z01hcCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVy
biBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CkBAIC0xMzIsOSArMTA5LDQgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YQogICAgIHJldHVybiB0cnVlOwogfQogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NU3RyaW5nTWFw
KiBpbXBsKQotewotICAgIHJldHVybiB3cmFwPEpTRE9NU3RyaW5nTWFwPihleGVjLCBnbG9iYWxP
YmplY3QsIGltcGwpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDYgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU0hUTUxD
b2xsZWN0aW9uT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0K
IGJvb2wgSlNIVE1MQ29sbGVjdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0
YWNrKQogewogICAgIEpTSFRNTENvbGxlY3Rpb24qIGpzSFRNTENvbGxlY3Rpb24gPSBzdGF0aWNf
Y2FzdDxKU0hUTUxDb2xsZWN0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTUwLDI0
ICs0NSw2IEBAIGJvb2wgSlNIVE1MQ29sbGVjdGlvbk93bmVyOjppc1JlYWNoYWJsZUYKICAgICBy
ZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzSFRNTENvbGxlY3Rpb24t
PmltcGwoKS0+YmFzZSgpKSk7CiB9CiAKLXZvaWQgSlNIVE1MQ29sbGVjdGlvbk93bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsK
LSAgICBKU0hUTUxDb2xsZWN0aW9uKiBqc0hUTUxDb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SlNI
VE1MQ29sbGVjdGlvbio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCBqc0hUTUxDb2xsZWN0aW9uLT5pbXBsKCksIGpzSFRNTENv
bGxlY3Rpb24pOwotfQotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25l
cihET01XcmFwcGVyV29ybGQqLCBIVE1MQ29sbGVjdGlvbiopCi17Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChKU0hUTUxDb2xsZWN0aW9uT3duZXIsIGpzSFRNTENvbGxlY3Rpb25Pd25lciwgKCkp
OwotICAgIHJldHVybiAmanNIVE1MQ29sbGVjdGlvbk93bmVyOwotfQotCi1pbmxpbmUgdm9pZCog
d3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgSFRNTENvbGxlY3Rpb24qKQot
ewotICAgIHJldHVybiB3b3JsZDsKLX0KLQogc3RhdGljIEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
MSArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEpTTmFtZWROb2RlTWFwT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIg
ewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNv
bnRleHQpOwotfTsKLQogYm9vbCBKU05hbWVkTm9kZU1hcE93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTmFtZWROb2RlTWFwKiBqc05hbWVkTm9kZU1hcCA9
IHN0YXRpY19jYXN0PEpTTmFtZWROb2RlTWFwKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAg
LTUxLDI0ICs0Niw2IEBAIGJvb2wgSlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFjaGFibGVGcm8K
ICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9
CiAKLXZvaWQgSlNOYW1lZE5vZGVNYXBPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNOYW1lZE5vZGVNYXAqIGpz
TmFtZWROb2RlTWFwID0gc3RhdGljX2Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNOYW1l
ZE5vZGVNYXAtPmltcGwoKSwganNOYW1lZE5vZGVNYXApOwotfQotCi1pbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqLCBOYW1lZE5vZGVNYXAq
KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNOYW1lZE5vZGVNYXBPd25lciwganNOYW1l
ZE5vZGVNYXBPd25lciwgKCkpOwotICAgIHJldHVybiAmanNOYW1lZE5vZGVNYXBPd25lcjsKLX0K
LQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5h
bWVkTm9kZU1hcCopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCiBib29sIEpTTmFtZWROb2Rl
TWFwOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgTmFtZWROb2RlTWFwKiBpbXBsLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIGltcGwtPmdldE5h
bWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC05NCw5ICs3MSw0
IEBAIHZvaWQgSlNOYW1lZE5vZGVNYXA6OnZpc2l0Q2hpbGRyZW4oU2xvdFYKICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdChlbGVtZW50KSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOYW1l
ZE5vZGVNYXAqIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXA8SlNOYW1lZE5vZGVNYXA+KGV4ZWMs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCShyZXZpc2lvbiA4NDY2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwyMiArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENT
U1ZhbHVlOwogCi1jbGFzcyBKU05vZGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCk7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25l
cihET01XcmFwcGVyV29ybGQqLCBOb2RlKikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpT
Tm9kZU93bmVyLCBqc05vZGVPd25lciwgKCkpOwotICAgIHJldHVybiAmanNOb2RlT3duZXI7Ci19
Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBO
b2RlKikKLXsKLSAgICByZXR1cm4gd29ybGQ7Ci19Ci0KIGlubGluZSBKU0RPTVdyYXBwZXIqIGdl
dElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSogbm9kZSkK
IHsKICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDExICszNiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNOb2RlTGlzdE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRv
ciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3QgPSBz
dGF0aWNfY2FzdDxKU05vZGVMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTUxLDI5
ICs0Niw2IEBAIGJvb2wgSlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGEKICAgICBy
ZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxEeW5hbWlj
Tm9kZUxpc3QqPihqc05vZGVMaXN0LT5pbXBsKCkpLT5yb290Tm9kZSgpKSk7CiB9CiAKLXZvaWQg
SlNOb2RlTGlzdE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBKU05vZGVMaXN0KiBqc05vZGVMaXN0ID0gc3RhdGlj
X2Nhc3Q8SlNOb2RlTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCBqc05vZGVMaXN0LT5pbXBsKCksIGpzTm9kZUxpc3Qp
OwotfQotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQqLCBOb2RlTGlzdCopCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU05vZGVM
aXN0T3duZXIsIGpzTm9kZUxpc3RPd25lciwgKCkpOwotICAgIHJldHVybiAmanNOb2RlTGlzdE93
bmVyOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCwgTm9kZUxpc3QqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vZGVMaXN0KiBpbXBsKQotewotICAgIHJldHVybiB3cmFwPEpTTm9kZUxpc3Q+KGV4ZWMs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KIC8vIE5lZWQgdG8gc3VwcG9ydCBjYWxsIHNvIHRo
YXQgbGlzdCgwKSB3b3Jrcy4KIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxOb2RlTGlzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1N0eWxlU2hlZXRPd25lciA6IHB1YmxpYyBKU0M6
OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6TWFy
a1N0YWNrJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQogYm9vbCBKU1N0eWxlU2hlZXRPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqLCBNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU1N0eWxlU2hlZXQqIGpzU3R5
bGVTaGVldCA9IHN0YXRpY19jYXN0PEpTU3R5bGVTaGVldCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7CkBAIC00OCwyNCArNDMsNiBAQCBib29sIEpTU3R5bGVTaGVldE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PCiAgICAgcmV0dXJuIG1hcmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChqc1N0
eWxlU2hlZXQtPmltcGwoKSkpOwogfQogCi12b2lkIEpTU3R5bGVTaGVldE93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAg
ICBKU1N0eWxlU2hlZXQqIGpzU3R5bGVTaGVldCA9IHN0YXRpY19jYXN0PEpTU3R5bGVTaGVldCo+
KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCBqc1N0eWxlU2hlZXQtPmltcGwoKSwganNTdHlsZVNoZWV0KTsKLX0KLQotaW5saW5l
IEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgU3R5
bGVTaGVldCopCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU1N0eWxlU2hlZXRPd25lciwg
anNTdHlsZVNoZWV0T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzU3R5bGVTaGVldE93bmVyOwot
fQotCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwg
U3R5bGVTaGVldCopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCiB2b2lkIEpTU3R5bGVTaGVl
dDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHZpc2l0b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDExICszNSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNTdHlsZVNoZWV0TGlzdE93bmVyIDogcHVibGlj
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlND
OjpNYXJrU3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCiBib29sIEpTU3R5bGVTaGVldExpc3RP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBKU1N0eWxlU2hl
ZXRMaXN0KiBqc1N0eWxlU2hlZXRMaXN0ID0gc3RhdGljX2Nhc3Q8SlNTdHlsZVNoZWV0TGlzdCo+
KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CkBAIC01MSwyNCArNDYsNiBAQCBib29sIEpTU3R5bGVT
aGVldExpc3RPd25lcjo6aXNSZWFjaGFibGVGCiAgICAgcmV0dXJuIG1hcmtTdGFjay5jb250YWlu
c09wYXF1ZVJvb3QoZG9jdW1lbnQpOwogfQogCi12b2lkIEpTU3R5bGVTaGVldExpc3RPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
Ci17Ci0gICAgSlNTdHlsZVNoZWV0TGlzdCoganNTdHlsZVNoZWV0TGlzdCA9IHN0YXRpY19jYXN0
PEpTU3R5bGVTaGVldExpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNTdHlsZVNoZWV0TGlzdC0+aW1wbCgpLCBqc1N0
eWxlU2hlZXRMaXN0KTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgU3R5bGVTaGVldExpc3QqKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSlNTdHlsZVNoZWV0TGlzdE93bmVyLCBqc1N0eWxlU2hlZXRMaXN0T3duZXIs
ICgpKTsKLSAgICByZXR1cm4gJmpzU3R5bGVTaGVldExpc3RPd25lcjsKLX0KLQotaW5saW5lIHZv
aWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIFN0eWxlU2hlZXRMaXN0
KikKLXsKLSAgICByZXR1cm4gd29ybGQ7Ci19Ci0KIGJvb2wgSlNTdHlsZVNoZWV0TGlzdDo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0TGlz
dCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVybiBzdHlsZVNo
ZWV0TGlzdC0+Z2V0TmFtZWRJdGVtKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
QEAgLTgyLDkgKzU5LDQgQEAgSlNWYWx1ZSBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4
ZQogICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBlbGVtZW50
LT5zaGVldCgpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0eWxlU2hlZXRMaXN0KiBpbXBsKQot
ewotICAgIHJldHVybiB3cmFwPEpTU3R5bGVTaGVldExpc3Q+KGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW1wbCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA4
NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC05MTQsMTIgKzkxNCwyNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCisgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUlzUmVhY2hhYmxlIn0g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRmluYWxpemUifSkgewor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgSlMke2ltcGxUeXBlfU93bmVyIDog
cHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7
XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn07XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJpbmxpbmUgSlND
OjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqLCAkaW1wbFR5
cGUqKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTJHtpbXBsVHlw
ZX1Pd25lciwganMke2ltcGxUeXBlfU93bmVyLCAoKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICByZXR1cm4gJmpzJHtpbXBsVHlwZX1Pd25lcjtcbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAifVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIHZvaWQqIHdy
YXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsICRpbXBsVHlwZSopXG4iKTsKKyAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHJldHVybiB3b3JsZDtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAifVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOworICAgIH0K
KwogICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJHZW5lcmF0ZVRvSlMifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Ub0pTIn0pIHsKLSAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgJGltcGxUeXBlKik7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgJGltcGxUeXBlKik7XG4iKTsKLSAgICAg
ICAgfQorICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosICRpbXBsVHlwZSopO1xuIik7CiAgICAg
fQogICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciJ9KSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiTm9kZUZpbHRlciIpIHsKQEAgLTIxMTEsMTIgKzIxMjYsMTcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Jc1JlYWNoYWJsZSJ9ICYmICEkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21GaW5hbGl6ZSJ9KSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCBKUyR7aW1wbFR5cGV9T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KVxuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpT
JHtpbXBsVHlwZX0qIGpzJHtpbXBsVHlwZX0gPSBzdGF0aWNfY2FzdDxKUyR7aW1wbFR5cGV9Kj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxk
Kj4oY29udGV4dCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsIGpzJHtpbXBsVHlwZX0tPmltcGwoKSwganMke2ltcGxUeXBlfSk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAgICB9CisKICAgICBpZiAo
KCEkaGFzUGFyZW50IG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdlbmVyYXRl
VG9KUyJ9KSBhbmQgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVRvSlMi
fSkgewotICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxUeXBlKiBpbXBsKVxuIik7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCAkaW1wbFR5cGUqIGltcGwpXG4iKTsKLSAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAkaW1wbFR5cGUqIGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUp
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB3cmFwPCRjbGFz
c05hbWUsICRpbXBsVHlwZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSdWxlLmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUnVsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAgbW9kdWxlIGNz
cyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwog
ICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAog
ICAgICAgICBDdXN0b21Ub0pTLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0gQ1NTUnVsZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5pZGwJKHJldmlzaW9uIDg0NjY0KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGVMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQCBtb2R1bGUgY3NzIHsKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVs
IDI6CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tVG9KUywKKyAgICAgICAgQ3VzdG9t
SXNSZWFjaGFibGUsCiAgICAgICAgIEhhc0luZGV4R2V0dGVyCiAgICAgXSBDU1NSdWxlTGlzdCB7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgIGxlbmd0aDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9u
IDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBAIG1vZHVsZSBjc3MgewogICAgIC8vIEludHJv
ZHVjZWQgaW4gRE9NIExldmVsIDI6CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tTWFy
a0Z1bmN0aW9uLAotICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJs
ZSwKICAgICAgICAgRGVsZWdhdGluZ1B1dEZ1bmN0aW9uLAogICAgICAgICBIYXNOYW1lR2V0dGVy
LAogICAgICAgICBIYXNJbmRleEdldHRlcgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCShy
ZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDYgKzIyLDggQEAgbW9kdWxlIGNzcyB7CiAKICAgICBpbnRlcmZhY2Ug
WwogICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICAg
ICAgQ3VzdG9tRmluYWxpemUsCiAgICAgICAgIFBvbHltb3JwaGljCiAgICAgXSBDU1NWYWx1ZSB7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiA4NDY2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBAIG1vZHVsZSBzdHlsZXNoZWV0cyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBM
ZXZlbCAyOgogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbVRvSlMsCisgICAgICAgIEN1
c3RvbUlzUmVhY2hhYmxlLAogICAgICAgICBIYXNJbmRleEdldHRlcgogICAgIF0gTWVkaWFMaXN0
IHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAkocmV2aXNpb24gODQ2NjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAgbW9kdWxlIHN0eWxlc2hlZXRzIHsKICAgICAvLyBJbnRyb2R1Y2VkIGluIERP
TSBMZXZlbCAyOgogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwK
LSAgICAgICAgQ3VzdG9tVG9KUywKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgICAg
IFBvbHltb3JwaGljCiAgICAgXSBTdHlsZVNoZWV0IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyAgICAgICAgdHlwZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbAkocmV2aXNpb24gODQ2NjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBAIG1vZHVsZSBzdHlsZXNoZWV0cyB7CiAKICAgICAvLyBJbnRyb2R1Y2Vk
IGluIERPTSBMZXZlbCAyOgogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbVRvSlMsCisg
ICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgICAgICBIYXNJbmRleEdldHRlciwKICAgICAg
ICAgSGFzTmFtZUdldHRlcgogICAgIF0gU3R5bGVTaGVldExpc3QgewpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCShyZXZpc2lvbiA4NDY2NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDcgQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1
c3RvbVRvSlMKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUKICAgICBdIERPTUltcGxlbWVudGF0
aW9uIHsKIAogICAgICAgICAvLyBET00gTGV2ZWwgMQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RPTVN0cmluZ01hcC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0
cmluZ01hcC5pZGwJKHJldmlzaW9uIDg0NjY1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0
cmluZ01hcC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIG1vZHVsZSBjb3Jl
IHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbVRvSlMsCisgICAgICAgIEN1c3Rv
bUlzUmVhY2hhYmxlLAogICAgICAgICBIYXNOYW1lR2V0dGVyLAogICAgICAgICBDdXN0b21EZWxl
dGVQcm9wZXJ0eSwKICAgICAgICAgQ3VzdG9tR2V0UHJvcGVydHlOYW1lcywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBA
CiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Ub0pTLAor
ICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAog
ICAgICAgICBIYXNJbmRleEdldHRlciwKICAgICAgICAgSGFzTmFtZUdldHRlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICBDdXN0b21IZWFkZXIsCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKICAgICAgICAgQ3Vz
dG9tUHVzaEV2ZW50SGFuZGxlclNjb3BlLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAg
ICAgICAgQ3VzdG9tRmluYWxpemUsCiAgICAgICAgIEN1c3RvbVRvSlMsCiAgICAgICAgIEV2ZW50
VGFyZ2V0LAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGVMaXN0LmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiBtb2R1bGUgY29yZSB7
CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21J
c1JlYWNoYWJsZSwKICAgICAgICAgSGFzSW5kZXhHZXR0ZXIsCiAgICAgICAgIEhhc05hbWVHZXR0
ZXIsCiAgICAgICAgIEN1c3RvbUNhbGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9r
ZW5MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5pZGwJKHJldmlzaW9uIDg0NjY1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxp
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiBtb2R1bGUgY29yZSB7CiAK
ICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1Jl
YWNoYWJsZSwKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvciwKICAgICAgICAgSGFzSW5kZXhH
ZXR0ZXIKICAgICBdIERPTVRva2VuTGlzdCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQCBtb2R1bGUg
aHRtbCB7CiAgICAgICAgIEhhc05hbWVHZXR0ZXIsCiAgICAgICAgIEN1c3RvbUNhbGwsCiAgICAg
ICAgIEN1c3RvbVRvSlMsCisgICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgICAgICBQb2x5
bW9ycGhpYwogICAgIF0gSFRNTENvbGxlY3Rpb24gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gODQ2NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEN1c3RvbUlz
UmVhY2hhYmxlLAogICAgICAgICBDdXN0b21Ub0pTLAogICAgICAgICBJbnRlcmZhY2VVVUlEPTk4
ZmI0OGFlLTcyMTYtNDg5Yy04NjJiLThlMTIxN2ZjNDQ0MywKICAgICAgICAgSW1wbGVtZW50YXRp
b25VVUlEPWFiNGYwNzgxLTE1MmYtNDUwZS05NTQ2LTViMzk4NzQ5MWE1NAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90781</attachid>
            <date>2011-04-22 15:29:58 -0700</date>
            <delta_ts>2011-04-22 15:38:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59247-20110422152957.patch</filename>
            <type>text/plain</type>
            <size>37338</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NjkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMjIgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIGFuIGF1dG9nZW5lcmF0b3IsIHNvIHVzZSBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNDcKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NTU1ZhbHVlQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSW1wbGVt
ZW50YXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdHlsZVNo
ZWV0Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcDogUmVtb3ZlZCByZXBldGl0aXZlIGhhbmQtd3JpdHRlbiBjb2RlLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEF1Z21lbnRlZCBhdXRvZ2Vu
ZXJhdG9yIHRvIGRvIHRoZSBqb2IuCisKKyAgICAgICAgKiBjc3MvQ1NTUnVsZS5pZGw6CisgICAg
ICAgICogY3NzL0NTU1J1bGVMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5pZGw6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDoKKyAgICAgICAgKiBjc3MvTWVk
aWFMaXN0LmlkbDoKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5pZGw6CisgICAgICAgICogY3Nz
L1N0eWxlU2hlZXRMaXN0LmlkbDoKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaWRs
OgorICAgICAgICAqIGRvbS9ET01TdHJpbmdNYXAuaWRsOgorICAgICAgICAqIGRvbS9OYW1lZE5v
ZGVNYXAuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUxp
c3QuaWRsOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmlkbDoKKyAgICAgICAgKiBodG1s
L0hUTUxDb2xsZWN0aW9uLmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmlkbDogVXBkYXRlZCBhdHRyaWJ1dGVzIHRvIHBsdWcgaW50bworICAgICAgICB0
aGUgYXV0b2dlbmVyYXRvci4KKwogMjAxMS0wNC0yMiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCShyZXZp
c2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNDU1NSdWxlT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNDU1NSdWxlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NSdWxlKiBqc0NT
U1J1bGUgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpA
QCAtNjEsMjQgKzU2LDYgQEAgYm9vbCBKU0NTU1J1bGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cQogICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanNDU1NSdWxl
LT5pbXBsKCkpKTsKIH0KIAotdm9pZCBKU0NTU1J1bGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNDU1NSdWxl
KiBqc0NTU1J1bGUgPSBzdGF0aWNfY2FzdDxKU0NTU1J1bGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNDU1NSdWxlLT5p
bXBsKCksIGpzQ1NTUnVsZSk7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIENTU1J1bGUqKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoSlNDU1NSdWxlT3duZXIsIGpzQ1NTUnVsZU93bmVyLCAoKSk7Ci0gICAgcmV0dXJu
ICZqc0NTU1J1bGVPd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIENTU1J1bGUqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQog
dm9pZCBKU0NTU1J1bGU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA4NDY2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEpTQ1NTUnVsZUxpc3RPd25lciA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpT
Qzo6TWFya1N0YWNrJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQogYm9vbCBKU0NTU1J1bGVMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NSdWxlTGlz
dCoganNDU1NSdWxlTGlzdCA9IHN0YXRpY19jYXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuZ2V0
KCkuYXNDZWxsKCkpOwpAQCAtNTIsMjcgKzQ3LDQgQEAgYm9vbCBKU0NTU1J1bGVMaXN0T3duZXI6
OmlzUmVhY2hhYmxlRnJvbQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU0NTU1J1bGVM
aXN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIEpTQ1NTUnVsZUxpc3QqIGpzQ1NTUnVsZUxpc3QgPSBzdGF0aWNf
Y2FzdDxKU0NTU1J1bGVMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFw
cGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzQ1NTUnVsZUxpc3QtPmltcGwoKSwganNDU1NS
dWxlTGlzdCk7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCosIENTU1J1bGVMaXN0KikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEpTQ1NTUnVsZUxpc3RPd25lciwganNDU1NSdWxlTGlzdE93bmVyLCAoKSk7Ci0gICAgcmV0
dXJuICZqc0NTU1J1bGVMaXN0T3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4
dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBDU1NSdWxlTGlzdCopCi17Ci0gICAgcmV0dXJuIHdv
cmxkOwotfQotCi1KU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDU1NSdWxlTGlzdCogaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcDxK
U0NTU1J1bGVMaXN0PihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQsMzUgKzQ0LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtT
dGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uKiBqc0NTU1N0eWxlRGVjbGFyYXRpb24gPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxl
RGVjbGFyYXRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwogICAgIHJldHVybiBtYXJrU3Rh
Y2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanNDU1NTdHlsZURlY2xhcmF0aW9uLT5pbXBsKCkp
KTsKIH0KIAotdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNDU1NT
dHlsZURlY2xhcmF0aW9uKiBqc0NTU1N0eWxlRGVjbGFyYXRpb24gPSBzdGF0aWNfY2FzdDxKU0NT
U1N0eWxlRGVjbGFyYXRpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBw
ZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNDU1NTdHlsZURlY2xhcmF0aW9uLT5pbXBsKCks
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbik7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIENTU1N0eWxlRGVjbGFyYXRpb24qKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNDU1NTdHlsZURlY2xhcmF0aW9uT3duZXIsIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbk93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0NTU1N0eWxlRGVj
bGFyYXRpb25Pd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIENTU1N0eWxlRGVjbGFyYXRpb24qKQotewotICAgIHJldHVybiB3b3Js
ZDsKLX0KLQogdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKQEAg
LTIyNCw5ICsyMDEsNCBAQCBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGNzc1Zh
bHVlKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENTU1N0eWxlRGVjbGFyYXRpb24qIGltcGwpCi17Ci0gICAgcmV0
dXJuIHdyYXA8SlNDU1NTdHlsZURlY2xhcmF0aW9uPihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsMTEgKzUyLDYgQEAgSGFzaE1hcDxDU1NWYWx1ZSosIHZvaWQqPiYgY3NzVmFs
dWVSb290cwogICAgIHJldHVybiBjc3NWYWx1ZVJvb3RzOwogfQogCi1jbGFzcyBKU0NTU1ZhbHVl
T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlND
U1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpT
Q1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBzdGF0aWNfY2FzdDxKU0NTU1ZhbHVlKj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKQEAgLTc2LDE3ICs3MSw2IEBAIHZvaWQgSlNDU1NWYWx1ZU93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmQKICAgICBjc3NWYWx1ZVJvb3RzKCkucmVtb3ZlKGpzQ1NTVmFsdWUt
PmltcGwoKSk7CiB9CiAKLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCosIENTU1ZhbHVlKikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEpTQ1NTVmFsdWVPd25lciwganNDU1NWYWx1ZU93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0NT
U1ZhbHVlT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBDU1NWYWx1ZSopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCiBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMSArMzksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dE93bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpNYXJr
U3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCiBib29sIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCoganNDYW52YXNSZW5kZXJpbmdDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTUy
LDI0ICs0Nyw2IEBAIGJvb2wgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0T3duZXI6OmlzUmUKICAg
ICByZXR1cm4gbWFya1N0YWNrLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC0+aW1wbCgpLT5jYW52YXMoKSkpOwogfQogCi12b2lkIEpTQ2FudmFzUmVuZGVy
aW5nQ29udGV4dE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGpzQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9
IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCBqc0NhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmltcGwoKSwganNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCi17Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRPd25lciwganNDYW52
YXNSZW5kZXJpbmdDb250ZXh0T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzQ2FudmFzUmVuZGVy
aW5nQ29udGV4dE93bmVyOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCopCi17Ci0gICAgcmV0dXJu
IHdvcmxkOwotfQotCiB2b2lkIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHZpc2l0
b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDg0NjY1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01JbXBsZW1lbnRhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDExICsyOSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNET01JbXBsZW1lbnRhdGlvbk93bmVyIDogcHVibGljIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wgSlNET01JbXBsZW1lbnRhdGlv
bk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTRE9NSW1w
bGVtZW50YXRpb24qIGpzRE9NSW1wbGVtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxKU0RPTUltcGxl
bWVudGF0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKQEAgLTQyLDI3ICszNyw0IEBAIGJv
b2wgSlNET01JbXBsZW1lbnRhdGlvbk93bmVyOjppc1JlYWNoYWIKICAgICByZXR1cm4gdmlzaXRv
ci5jb250YWluc09wYXF1ZVJvb3QoanNET01JbXBsZW1lbnRhdGlvbi0+aW1wbCgpLT5kb2N1bWVu
dCgpKTsKIH0KIAotdm9pZCBKU0RPTUltcGxlbWVudGF0aW9uT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIEpTRE9N
SW1wbGVtZW50YXRpb24qIGpzRE9NSW1wbGVtZW50YXRpb24gPSBzdGF0aWNfY2FzdDxKU0RPTUlt
cGxlbWVudGF0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsIGpzRE9NSW1wbGVtZW50YXRpb24tPmltcGwoKSwganNET01J
bXBsZW1lbnRhdGlvbik7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBl
ck93bmVyKERPTVdyYXBwZXJXb3JsZCosIERPTUltcGxlbWVudGF0aW9uKikKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEpTRE9NSW1wbGVtZW50YXRpb25Pd25lciwganNET01JbXBsZW1lbnRh
dGlvbk93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZqc0RPTUltcGxlbWVudGF0aW9uT3duZXI7Ci19
Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBE
T01JbXBsZW1lbnRhdGlvbiopCi17Ci0gICAgcmV0dXJuIHdvcmxkOwotfQotCi1KU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRE9NSW1wbGVtZW50YXRpb24qIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXA8SlNET01J
bXBsZW1lbnRhdGlvbj4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcAkocmV2aXNpb24gODQ2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ01hcEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNET01T
dHJpbmdNYXBPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmlydHVh
bCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19Owot
CiBib29sIEpTRE9NU3RyaW5nTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgSlNET01TdHJpbmdNYXAqIGpzRE9NU3RyaW5nTWFwID0gc3RhdGljX2Nhc3Q8
SlNET01TdHJpbmdNYXAqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtNDgsMjQgKzQzLDYg
QEAgYm9vbCBKU0RPTVN0cmluZ01hcE93bmVyOjppc1JlYWNoYWJsZUZybwogICAgIHJldHVybiB2
aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KGpzRE9NU3RyaW5nTWFwLT5pbXBsKCktPmVs
ZW1lbnQoKSkpOwogfQogCi12b2lkIEpTRE9NU3RyaW5nTWFwT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIEpTRE9N
U3RyaW5nTWFwKiBqc0RPTVN0cmluZ01hcCA9IHN0YXRpY19jYXN0PEpTRE9NU3RyaW5nTWFwKj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsIGpzRE9NU3RyaW5nTWFwLT5pbXBsKCksIGpzRE9NU3RyaW5nTWFwKTsKLX0KLQotaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwg
RE9NU3RyaW5nTWFwKikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTRE9NU3RyaW5nTWFw
T3duZXIsIGpzRE9NU3RyaW5nTWFwT3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzRE9NU3RyaW5n
TWFwT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBET01TdHJpbmdNYXAqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQogYm9v
bCBKU0RPTVN0cmluZ01hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVN0cmlu
Z01hcCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHJldHVy
biBpbXBsLT5jb250YWlucyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
CkBAIC0xMzIsOSArMTA5LDQgQEAgYm9vbCBKU0RPTVN0cmluZ01hcDo6cHV0RGVsZWdhdGUoRXhl
Y1N0YQogICAgIHJldHVybiB0cnVlOwogfQogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRE9NU3RyaW5nTWFw
KiBpbXBsKQotewotICAgIHJldHVybiB3cmFwPEpTRE9NU3RyaW5nTWFwPihleGVjLCBnbG9iYWxP
YmplY3QsIGltcGwpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCShy
ZXZpc2lvbiA4NDY2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5M
aXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDYgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU0RPTVRva2VuTGlz
dE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wg
SlNET01Ub2tlbkxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU0RPTVRva2VuTGlzdCoganNET01Ub2tlbkxpc3QgPSBzdGF0aWNfY2FzdDxKU0RPTVRv
a2VuTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CkBAIC01MCwyNyArNDUsNCBAQCBib29s
IEpTRE9NVG9rZW5MaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvCiAgICAgcmV0dXJuIHZpc2l0b3Iu
Y29udGFpbnNPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCi12b2lkIEpTRE9NVG9rZW5M
aXN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIEpTRE9NVG9rZW5MaXN0KiBqc0RPTVRva2VuTGlzdCA9IHN0YXRp
Y19jYXN0PEpTRE9NVG9rZW5MaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4
dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzRE9NVG9rZW5MaXN0LT5pbXBsKCksIGpz
RE9NVG9rZW5MaXN0KTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgRE9NVG9rZW5MaXN0KikKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEpTRE9NVG9rZW5MaXN0T3duZXIsIGpzRE9NVG9rZW5MaXN0T3duZXIsICgpKTsK
LSAgICByZXR1cm4gJmpzRE9NVG9rZW5MaXN0T3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFw
cGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBET01Ub2tlbkxpc3QqKQotewotICAg
IHJldHVybiB3b3JsZDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTVRva2VuTGlzdCogaW1wbCkK
LXsKLSAgICByZXR1cm4gd3JhcDxKU0RPTVRva2VuTGlzdD4oZXhlYywgZ2xvYmFsT2JqZWN0LCBp
bXBsKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNyw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSlNIVE1MQ29sbGVjdGlv
bk93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCwgSlNDOjpNYXJrU3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCiBib29sIEpT
SFRNTENvbGxlY3Rpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsK
ICAgICBKU0hUTUxDb2xsZWN0aW9uKiBqc0hUTUxDb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SlNI
VE1MQ29sbGVjdGlvbio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CkBAIC01MCwyNCArNDUsNiBA
QCBib29sIEpTSFRNTENvbGxlY3Rpb25Pd25lcjo6aXNSZWFjaGFibGVGCiAgICAgcmV0dXJuIG1h
cmtTdGFjay5jb250YWluc09wYXF1ZVJvb3Qocm9vdChqc0hUTUxDb2xsZWN0aW9uLT5pbXBsKCkt
PmJhc2UoKSkpOwogfQogCi12b2lkIEpTSFRNTENvbGxlY3Rpb25Pd25lcjo6ZmluYWxpemUoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNI
VE1MQ29sbGVjdGlvbioganNIVE1MQ29sbGVjdGlvbiA9IHN0YXRpY19jYXN0PEpTSFRNTENvbGxl
Y3Rpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwganNIVE1MQ29sbGVjdGlvbi0+aW1wbCgpLCBqc0hUTUxDb2xsZWN0aW9u
KTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3Jh
cHBlcldvcmxkKiwgSFRNTENvbGxlY3Rpb24qKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SlNIVE1MQ29sbGVjdGlvbk93bmVyLCBqc0hUTUxDb2xsZWN0aW9uT3duZXIsICgpKTsKLSAgICBy
ZXR1cm4gJmpzSFRNTENvbGxlY3Rpb25Pd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJD
b250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIEhUTUxDb2xsZWN0aW9uKikKLXsKLSAgICBy
ZXR1cm4gd29ybGQ7Ci19Ci0KIHN0YXRpYyBKU1ZhbHVlIGdldE5hbWVkSXRlbXMoRXhlY1N0YXRl
KiBleGVjLCBKU0hUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhTGlzdEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYUxpc3RDdXN0b20u
Y3BwCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFMaXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDYgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU01lZGlhTGlz
dE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCwgSlNDOjpNYXJrU3RhY2smKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCiBib29sIEpT
TWVkaWFMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAg
SlNNZWRpYUxpc3QqIGpzTWVkaWFMaXN0ID0gc3RhdGljX2Nhc3Q8SlNNZWRpYUxpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtNDYsMjcgKzQxLDQgQEAgYm9vbCBKU01lZGlhTGlzdE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcAogICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFx
dWVSb290KHJvb3QoanNNZWRpYUxpc3QtPmltcGwoKSkpOwogfQogCi12b2lkIEpTTWVkaWFMaXN0
T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBj
b250ZXh0KQotewotICAgIEpTTWVkaWFMaXN0KiBqc01lZGlhTGlzdCA9IHN0YXRpY19jYXN0PEpT
TWVkaWFMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQq
IHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5j
YWNoZVdyYXBwZXIod29ybGQsIGpzTWVkaWFMaXN0LT5pbXBsKCksIGpzTWVkaWFMaXN0KTsKLX0K
LQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldv
cmxkKiwgTWVkaWFMaXN0KikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTTWVkaWFMaXN0
T3duZXIsIGpzTWVkaWFMaXN0T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTWVkaWFMaXN0T3du
ZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdv
cmxkLCBNZWRpYUxpc3QqKQotewotICAgIHJldHVybiB3b3JsZDsKLX0KLQotSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVkaWFM
aXN0KiBydWxlKQotewotICAgIHJldHVybiB3cmFwPEpTTWVkaWFMaXN0PihleGVjLCBnbG9iYWxP
YmplY3QsIHJ1bGUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCShy
ZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rl
TWFwQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDYgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU05hbWVkTm9kZU1h
cE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKLX07Ci0KIGJvb2wg
SlNOYW1lZE5vZGVNYXBPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU05hbWVkTm9kZU1hcCoganNOYW1lZE5vZGVNYXAgPSBzdGF0aWNfY2FzdDxKU05hbWVk
Tm9kZU1hcCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CkBAIC01MSwyNCArNDYsNiBAQCBib29s
IEpTTmFtZWROb2RlTWFwT3duZXI6OmlzUmVhY2hhYmxlRnJvCiAgICAgcmV0dXJuIHZpc2l0b3Iu
Y29udGFpbnNPcGFxdWVSb290KHJvb3QoZWxlbWVudCkpOwogfQogCi12b2lkIEpTTmFtZWROb2Rl
TWFwT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQotewotICAgIEpTTmFtZWROb2RlTWFwKiBqc05hbWVkTm9kZU1hcCA9IHN0YXRp
Y19jYXN0PEpTTmFtZWROb2RlTWFwKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4
dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzTmFtZWROb2RlTWFwLT5pbXBsKCksIGpz
TmFtZWROb2RlTWFwKTsKLX0KLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkKiwgTmFtZWROb2RlTWFwKikKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEpTTmFtZWROb2RlTWFwT3duZXIsIGpzTmFtZWROb2RlTWFwT3duZXIsICgpKTsK
LSAgICByZXR1cm4gJmpzTmFtZWROb2RlTWFwT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFw
cGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBOYW1lZE5vZGVNYXAqKQotewotICAg
IHJldHVybiB3b3JsZDsKLX0KLQogYm9vbCBKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JO
YW1lKEV4ZWNTdGF0ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBpbXBsLT5nZXROYW1lZEl0ZW0oaWRlbnRpZmllclRv
U3RyaW5nKHByb3BlcnR5TmFtZSkpOwpAQCAtOTQsOSArNzEsNCBAQCB2b2lkIEpTTmFtZWROb2Rl
TWFwOjp2aXNpdENoaWxkcmVuKFNsb3RWCiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3Qo
ZWxlbWVudCkpOwogfQogCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTmFtZWROb2RlTWFwKiBpbXBsKQotewot
ICAgIHJldHVybiB3cmFwPEpTTmFtZWROb2RlTWFwPihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjIgKzM0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NWYWx1ZTsKIAotY2xhc3MgSlNO
b2RlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotICAgIHZpcnR1YWwgYm9v
bCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwg
Tm9kZSopCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU05vZGVPd25lciwganNOb2RlT3du
ZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTm9kZU93bmVyOwotfQotCi1pbmxpbmUgdm9pZCogd3Jh
cHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgTm9kZSopCi17Ci0gICAgcmV0dXJu
IHdvcmxkOwotfQotCiBpbmxpbmUgSlNET01XcmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVy
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCF3b3JsZC0+
aXNOb3JtYWwoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEpTTm9kZUxpc3RPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci0gICAgdmly
dHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19
OwotCiBib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKICAgICBKU05vZGVMaXN0KiBqc05vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8SlNOb2RlTGlz
dCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CkBAIC01MSwyOSArNDYsNiBAQCBib29sIEpTTm9k
ZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhCiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFp
bnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RHluYW1pY05vZGVMaXN0Kj4oanNOb2RlTGlz
dC0+aW1wbCgpKS0+cm9vdE5vZGUoKSkpOwogfQogCi12b2lkIEpTTm9kZUxpc3RPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17
Ci0gICAgSlNOb2RlTGlzdCoganNOb2RlTGlzdCA9IHN0YXRpY19jYXN0PEpTTm9kZUxpc3QqPiho
YW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwganNOb2RlTGlzdC0+aW1wbCgpLCBqc05vZGVMaXN0KTsKLX0KLQotaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgTm9kZUxpc3Qq
KQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNOb2RlTGlzdE93bmVyLCBqc05vZGVMaXN0
T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpzTm9kZUxpc3RPd25lcjsKLX0KLQotaW5saW5lIHZv
aWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5vZGVMaXN0KikKLXsK
LSAgICByZXR1cm4gd29ybGQ7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlTGlzdCogaW1wbCkK
LXsKLSAgICByZXR1cm4gd3JhcDxKU05vZGVMaXN0PihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwp
OwotfQotCiAvLyBOZWVkIHRvIHN1cHBvcnQgY2FsbCBzbyB0aGF0IGxpc3QoMCkgd29ya3MuCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTm9kZUxpc3QoRXhlY1N0YXRl
KiBleGVjKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRDdXN0b20uY3BwCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEx
ICszNSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSlNTdHlsZVNoZWV0T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6Ok1hcmtTdGFjayYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
KTsKLX07Ci0KIGJvb2wgSlNTdHlsZVNoZWV0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFya1N0YWNrJiBt
YXJrU3RhY2spCiB7CiAgICAgSlNTdHlsZVNoZWV0KiBqc1N0eWxlU2hlZXQgPSBzdGF0aWNfY2Fz
dDxKU1N0eWxlU2hlZXQqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwpAQCAtNDgsMjQgKzQzLDYg
QEAgYm9vbCBKU1N0eWxlU2hlZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tTwogICAgIHJldHVybiBt
YXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KHJvb3QoanNTdHlsZVNoZWV0LT5pbXBsKCkpKTsK
IH0KIAotdm9pZCBKU1N0eWxlU2hlZXRPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgSlNTdHlsZVNoZWV0KiBqc1N0
eWxlU2hlZXQgPSBzdGF0aWNfY2FzdDxKU1N0eWxlU2hlZXQqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNTdHlsZVNoZWV0
LT5pbXBsKCksIGpzU3R5bGVTaGVldCk7Ci19Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFN0eWxlU2hlZXQqKQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSlNTdHlsZVNoZWV0T3duZXIsIGpzU3R5bGVTaGVldE93bmVyLCAo
KSk7Ci0gICAgcmV0dXJuICZqc1N0eWxlU2hlZXRPd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdy
YXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIFN0eWxlU2hlZXQqKQotewotICAg
IHJldHVybiB3b3JsZDsKLX0KLQogdm9pZCBKU1N0eWxlU2hlZXQ6OnZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVl
dExpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
MSArMzUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEpTU3R5bGVTaGVldExpc3RPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6TWFya1N0YWNrJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNv
bnRleHQpOwotfTsKLQogYm9vbCBKU1N0eWxlU2hlZXRMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgSlNTdHlsZVNoZWV0TGlzdCoganNTdHlsZVNoZWV0
TGlzdCA9IHN0YXRpY19jYXN0PEpTU3R5bGVTaGVldExpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxs
KCkpOwpAQCAtNTEsMjQgKzQ2LDYgQEAgYm9vbCBKU1N0eWxlU2hlZXRMaXN0T3duZXI6OmlzUmVh
Y2hhYmxlRgogICAgIHJldHVybiBtYXJrU3RhY2suY29udGFpbnNPcGFxdWVSb290KGRvY3VtZW50
KTsKIH0KIAotdm9pZCBKU1N0eWxlU2hlZXRMaXN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIEpTU3R5bGVTaGVl
dExpc3QqIGpzU3R5bGVTaGVldExpc3QgPSBzdGF0aWNfY2FzdDxKU1N0eWxlU2hlZXRMaXN0Kj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsIGpzU3R5bGVTaGVldExpc3QtPmltcGwoKSwganNTdHlsZVNoZWV0TGlzdCk7Ci19Ci0K
LWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3Js
ZCosIFN0eWxlU2hlZXRMaXN0KikKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTU3R5bGVT
aGVldExpc3RPd25lciwganNTdHlsZVNoZWV0TGlzdE93bmVyLCAoKSk7Ci0gICAgcmV0dXJuICZq
c1N0eWxlU2hlZXRMaXN0T3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBTdHlsZVNoZWV0TGlzdCopCi17Ci0gICAgcmV0dXJuIHdv
cmxkOwotfQotCiBib29sIEpTU3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqLCBTdHlsZVNoZWV0TGlzdCogc3R5bGVTaGVldExpc3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRl
bShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7CkBAIC04Miw5ICs1OSw0IEBAIEpT
VmFsdWUgSlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcihFeGUKICAgICByZXR1cm4gdG9KUyhl
eGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgZWxlbWVudC0+c2hlZXQoKSk7CiB9CiAKLUpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHlsZVNoZWV0TGlzdCogaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcDxK
U1N0eWxlU2hlZXRMaXN0PihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtOTE0LDEyICs5MTQsMjcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAorICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Jc1JlYWNoYWJsZSJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUZpbmFsaXplIn0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgImNsYXNzIEpTJHtpbXBsVHlwZX1Pd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpO1xuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJ9O1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgJGltcGxUeXBlKilcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKUyR7aW1wbFR5cGV9T3duZXIsIGpzJHtpbXBsVHlw
ZX1Pd25lciwgKCkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgcmV0
dXJuICZqcyR7aW1wbFR5cGV9T3duZXI7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIn1cbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFw
cGVyV29ybGQqIHdvcmxkLCAkaW1wbFR5cGUqKVxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICByZXR1cm4g
d29ybGQ7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKKyAgICB9CisKICAgICBpZiAoISRoYXNQYXJl
bnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVUb0pTIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tVG9KUyJ9KSB7Ci0gICAgICAg
IGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
ICRpbXBsVHlwZSopO1xuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosICRpbXBsVHlwZSopO1xuIik7Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCAkaW1wbFR5cGUqKTtcbiIpOwogICAgIH0KICAgICBpZiAoISRoYXNQYXJl
bnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVOYXRpdmVDb252
ZXJ0ZXIifSkgewogICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGVGaWx0ZXIiKSB7
CkBAIC0yMTExLDEyICsyMTI2LDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tSXNSZWFjaGFibGUifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tRmluYWxpemUifSkgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgSlMk
e2ltcGxUeXBlfU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udGV4dClcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW1wbFR5cGV9KiBqcyR7aW1w
bFR5cGV9ID0gc3RhdGljX2Nhc3Q8SlMke2ltcGxUeXBlfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwo
KSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCBqcyR7
aW1wbFR5cGV9LT5pbXBsKCksIGpzJHtpbXBsVHlwZX0pO1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuIik7CisgICAgfQorCiAgICAgaWYgKCghJGhhc1BhcmVudCBvciAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZVRvSlMifSkgYW5kICEkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Ub0pTIn0pIHsKLSAgICAgICAgaWYgKCRz
dmdQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsICRpbXBsVHlwZSogaW1wbClcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxUeXBlKiBpbXBs
KVxuIik7Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgJGltcGxUeXBlKiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gd3JhcDwkY2xhc3NOYW1lLCAkaW1wbFR5cGU+KGV4
ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NSdWxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwJ
KHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBAIG1vZHVsZSBjc3MgewogICAgIC8vIEludHJvZHVj
ZWQgaW4gRE9NIExldmVsIDI6CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICAgICAgQ3VzdG9tVG9KUywK
ICAgICAgICAgUG9seW1vcnBoaWMKICAgICBdIENTU1J1bGUgewpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1J1bGVMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZUxpc3QuaWRsCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NSdWxlTGlzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAgbW9kdWxlIGNz
cyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgogICAgIGludGVyZmFjZSBb
Ci0gICAgICAgIEN1c3RvbVRvSlMsCisgICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgICAg
ICBIYXNJbmRleEdldHRlcgogICAgIF0gQ1NTUnVsZUxpc3QgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgICBsZW5ndGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCShyZXZpc2lvbiA4NDY2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQCBtb2R1bGUgY3NzIHsKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAy
OgogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICAgICAg
Q3VzdG9tVG9KUywKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgICAgIERlbGVnYXRp
bmdQdXRGdW5jdGlvbiwKICAgICAgICAgSGFzTmFtZUdldHRlciwKICAgICAgICAgSGFzSW5kZXhH
ZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsy
Miw4IEBAIG1vZHVsZSBjc3MgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tVG9K
UywKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgICAgIEN1c3RvbUZpbmFsaXplLAog
ICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0gQ1NTVmFsdWUgewogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFMaXN0LmlkbAkocmV2aXNpb24gODQ2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQCBtb2R1bGUgc3R5bGVz
aGVldHMgewogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZh
Y2UgWwotICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAg
ICAgICAgSGFzSW5kZXhHZXR0ZXIKICAgICBdIE1lZGlhTGlzdCB7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldC5pZGwJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBAIG1vZHVsZSBz
dHlsZXNoZWV0cyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEN1c3RvbUlzUmVh
Y2hhYmxlLAogICAgICAgICBDdXN0b21Ub0pTLAogICAgICAgICBQb2x5bW9ycGhpYwogICAgIF0g
U3R5bGVTaGVldCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwJKHJl
dmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQCBtb2R1bGUgc3R5bGVzaGVldHMgewogCiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBpbnRlcmZhY2UgWwotICAgICAg
ICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICAgICAgSGFzSW5k
ZXhHZXR0ZXIsCiAgICAgICAgIEhhc05hbWVHZXR0ZXIKICAgICBdIFN0eWxlU2hlZXRMaXN0IHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmlkbAkocmV2aXNpb24g
ODQ2NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZh
Y2UgWwotICAgICAgICBDdXN0b21Ub0pTCisgICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlCiAgICAg
XSBET01JbXBsZW1lbnRhdGlvbiB7CiAKICAgICAgICAgLy8gRE9NIExldmVsIDEKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsCShyZXZpc2lvbiA4NDY2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Ub0pT
LAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICAgICAgSGFzTmFtZUdldHRlciwKICAg
ICAgICAgQ3VzdG9tRGVsZXRlUHJvcGVydHksCiAgICAgICAgIEN1c3RvbUdldFByb3BlcnR5TmFt
ZXMsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAkocmV2aXNpb24gODQ2NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNyArMjEsNyBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAg
ICAgQ3VzdG9tVG9KUywKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgICAgIEN1c3Rv
bU1hcmtGdW5jdGlvbiwKICAgICAgICAgSGFzSW5kZXhHZXR0ZXIsCiAgICAgICAgIEhhc05hbWVH
ZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgQ3VzdG9tSGVhZGVyLAogICAgICAgICBDdXN0b21NYXJrRnVuY3Rp
b24sCiAgICAgICAgIEN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSwKKyAgICAgICAgQ3VzdG9t
SXNSZWFjaGFibGUsCisgICAgICAgIEN1c3RvbUZpbmFsaXplLAogICAgICAgICBDdXN0b21Ub0pT
LAogICAgICAgICBFdmVudFRhcmdldCwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUxpc3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlTGlzdC5pZGwJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGVMaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBA
QAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tVG9KUywK
KyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgICAgIEhhc0luZGV4R2V0dGVyLAogICAg
ICAgICBIYXNOYW1lR2V0dGVyLAogICAgICAgICBDdXN0b21DYWxsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9ET01Ub2tlbkxpc3QuaWRsCShyZXZpc2lvbiA4NDY2NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAog
bW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tVG9KUywKKyAg
ICAgICAgQ3VzdG9tSXNSZWFjaGFibGUsCiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IsCiAg
ICAgICAgIEhhc0luZGV4R2V0dGVyCiAgICAgXSBET01Ub2tlbkxpc3QgewpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDg0NjY0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBIYXNOYW1lR2V0dGVyLAogICAgICAgICBD
dXN0b21DYWxsLAogICAgICAgICBDdXN0b21Ub0pTLAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJs
ZSwKICAgICAgICAgUG9seW1vcnBoaWMKICAgICBdIEhUTUxDb2xsZWN0aW9uIHsKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwJ
KHJldmlzaW9uIDg0NjY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAgbW9kdWxl
IGh0bWwgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAor
ICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICAgICAgQ3VzdG9tVG9KUywKICAgICAgICAg
SW50ZXJmYWNlVVVJRD05OGZiNDhhZS03MjE2LTQ4OWMtODYyYi04ZTEyMTdmYzQ0NDMsCiAgICAg
ICAgIEltcGxlbWVudGF0aW9uVVVJRD1hYjRmMDc4MS0xNTJmLTQ1MGUtOTU0Ni01YjM5ODc0OTFh
NTQK
</data>
<flag name="review"
          id="83555"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>