<?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>150733</bug_id>
          
          <creation_ts>2015-10-30 13:45:22 -0700</creation_ts>
          <short_desc>Modern IDB: IDBObjectStore.clear() support</short_desc>
          <delta_ts>2015-10-30 16:21:26 -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>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137949</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 13:45:22 -0700</bug_when>
    <thetext>Modern IDB: IDBObjectStore.clear() support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137960</commentid>
    <comment_count>1</comment_count>
      <attachid>264417</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 14:06:33 -0700</bug_when>
    <thetext>Created attachment 264417
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137964</commentid>
    <comment_count>2</comment_count>
      <attachid>264418</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 14:26:48 -0700</bug_when>
    <thetext>Created attachment 264418
Patch v2 - release build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137974</commentid>
    <comment_count>3</comment_count>
      <attachid>264421</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 14:43:21 -0700</bug_when>
    <thetext>Created attachment 264421
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137985</commentid>
    <comment_count>4</comment_count>
      <attachid>264421</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-30 14:57:17 -0700</bug_when>
    <thetext>Comment on attachment 264421
Patch v3

Just for fun: clear an object store twice.  Also, delete something you put in an object store after clearing it (once delete is implemented).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138022</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 16:21:26 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/191826</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264417</attachid>
            <date>2015-10-30 14:06:33 -0700</date>
            <delta_ts>2015-10-30 14:26:48 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59838</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZmUzM2IyLi45Njk1N2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTAt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElEQk9iamVjdFN0b3JlLmNsZWFyKCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDczMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNsZWFyLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXIt
Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUt
MTAtMzAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFy
a2luZyBqcy9yZWdyZXNzL2Z0bC1vYmplY3Qtc3ViLmh0bWwgYXMgYSBmbGFreSB0aW1lb3V0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0
c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0Y2E3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24K
K0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjEKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJh
cjIKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjMKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2Fz
IGJhcjQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjUKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4g
d2FzIGJhcjYKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjcKK0FMRVJUOiBWYWx1ZSBnb3R0
ZW4gd2FzIGJhcjgKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjkKK0FMRVJUOiBPYmplY3Qg
c3RvcmUgY2xlYXJlZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDog
VmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVm
aW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290
dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1
bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVz
IGFuIG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdC4KK0l0IHRoZW4gY2xlYXJzIGl0IGFu
ZCBtYWtlcyBzdXJlIGl0IGhhcyBub3RoaW5nIGxlZnQgaW4gaXQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3Rv
cmUtY2xlYXItMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNWVm
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sCkBAIC0wLDAgKzEsMTExIEBACitUaGlzIHRl
c3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUgdGhlbiBwb3B1bGF0ZXMgaXQuPGJyPgorSXQgdGhl
biBjbGVhcnMgaXQgYW5kIG1ha2VzIHN1cmUgaXQgaGFzIG5vdGhpbmcgbGVmdCBpbiBpdC48YnI+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rp
b24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgY3JlYXRlUmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDbGVhckRhdGFiYXNl
IiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsg
ZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7
CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlv
bjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiLCB7
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjEiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOwor
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgiYmFyNSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2
Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjciKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyOCIpOworICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXI5Iik7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICAgICAg
ZGF0YWJhc2UuY2xvc2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0Q2hlY2tlcihldmVudCkgeworICAg
IGFsZXJ0KCJWYWx1ZSBnb3R0ZW4gd2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0KTsKK30KKwor
ZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFyRGF0YWJhc2UiLCAxKTsKKworICAg
IG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgi
UmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgdXBncmFk
ZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICBvcGVu
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiU3Vj
Y2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJh
bnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIAorICAgICAgICB2YXIg
cmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7CisgICAgICAg
ICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3RvcmUgY2xlYXJlZCIpOwor
ICAgICAgICAgICAgdmFyIG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9y
ZS5nZXQoaSk7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hl
Y2tlcjsKKyAgICAgICAgICAgIH0gICAgCisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1jbGVhci0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNjAwYzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzkgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2Ug
Y29ubmVjdGlvbiAtIFN0YXJ0aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbgorQUxFUlQ6IFZhbHVl
IGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgorQUxFUlQ6IFZh
bHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNAorQUxFUlQ6
IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOAor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IE9iamVjdCBzdG9yZSBjbGVhcmVk
LCBtYWtpbmcgc3VyZSBpdHMgYWxsIGdvbmUuCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRl
ZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdv
dHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FM
RVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
dW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1
ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVk
CitBTEVSVDogUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0CitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyBmaW5hbCB0cmFuc2FjdGlvbgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFy
NAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
YmFyNgorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3
YXMgYmFyOAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IFJlYWR3cml0ZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVzIGFuIG9i
amVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdCwgdGhlbiBjb21taXRzIHRoYXQgdHJhbnNhY3Rp
b24uCitJdCB0aGVuIGNsZWFycyBpdCwgYnV0IGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLgorRmlu
YWxseSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3Rp
bGwgaW4gdGhlcmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzY2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5o
dG1sCkBAIC0wLDAgKzEsMTY0IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUg
dGhlbiBwb3B1bGF0ZXMgaXQsIHRoZW4gY29tbWl0cyB0aGF0IHRyYW5zYWN0aW9uLjxicj4KK0l0
IHRoZW4gY2xlYXJzIGl0LCBidXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uPGJyPgorRmluYWxs
eSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3RpbGwg
aW4gdGhlcmUuPGJyPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwor
dmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3Jl
Q2xlYXIyRGF0YWJhc2UiLCAxKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyMSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXIyIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOworICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjYiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
NyIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI4Iik7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjkiKTsKKworICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0
MSgpOworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsg
ZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRDaGVja2Vy
KGV2ZW50KSB7CisgICAgYWxlcnQoIlZhbHVlIGdvdHRlbiB3YXMgIiArIGV2ZW50LnRhcmdldC5y
ZXN1bHQpOworfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgb3BlblJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ2xlYXIyRGF0YWJh
c2UiLCAxKTsKKworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVu
ZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGlu
ZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNh
Y3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
IAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsg
KytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3Rv
cmUgY2xlYXJlZCwgbWFraW5nIHN1cmUgaXRzIGFsbCBnb25lLiIpOworICAgICAgICAgICAgdmFy
IG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7
CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9yZS5nZXQoaSk7CisgICAg
ICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UnbGwgYmUgb24gdGhlIGxhc3Qg
cmVxdWVzdCBoZXJlLCBjYW4ganVzdCBvdmVycmlkZSBpdC4KKyAgICAgICAgICAgIG5ld1JlcXVl
c3RzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZ2V0Q2hl
Y2tlcihldmVudCk7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24uYWJvcnQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFuc2FjdGlvbiBh
Ym9ydCIpOworICAgICAgICAgICAgY29udGludWVUZXN0MigpOworICAgICAgICB9CisKKyAgICAg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MigpCit7Cisg
ICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUNsZWFyMkRhdGFiYXNlIiwgMSk7CisKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25ibG9j
a2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3Rl
ZCBibG9ja2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVu
UmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVy
dCgiUmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0
aW9uIC0gU3RhcnRpbmcgZmluYWwgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNl
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJh
c2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkp
OworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAi
ICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1j
bGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2Y2OGZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEZhaWxlZCB0byBwdXQgcmVj
b3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQg
dG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQKK0FM
RVJUOiBGYWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZAor
QUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24KK0FMRVJUOiBGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB3aXRo
IGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9y
ZSB3aXRoIGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogcmVhZHdyaXRlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMg
dGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElE
Qk9iamVjdFN0b3JlLmNsZWFyKCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1
dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZGY1ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApA
QCAtMCwwICsxLDExOSBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBj
YW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElEQk9iamVj
dFN0b3JlLmNsZWFyKCkuCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
Cit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3Rv
cmVQdXRBbmRDbGVhckZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKKworY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0
KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2
ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5w
dXQoImJhciIsIE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQo
IkZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBr
ZXkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBz
dG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSB0aGF0IGhh
cyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICAvLyBSZWNyZWF0ZSB0aGUg
b2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNlIDIuCisgICAgICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7ICAgIAorICAgIH0K
KyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2
ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0
MSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RP
YmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICB0cnkgeworICAg
ICAgICBvYmplY3RTdG9yZS5jbGVhcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhbGVy
dCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNhY3Rpb24i
KTsKKyAgICB9CisgICAgCisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rp
b24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAvLyBR
dWV1ZSB1cCBhIHdob2xlIGJ1bmNoIG9mIGdldHMgdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gYWxp
dmUgZm9yIGF3aGlsZQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAg
b2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKKworICAgIHZhciB0ZXN0V2hpbGVJbmFjdGl2ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJi
YXIiLCAiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZh
aWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggaW5hY3RpdmUgdHJhbnNh
Y3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
YWxlcnQoIkZhaWxlZCB0byBjbGVhciBvYmplY3Qgc3RvcmUgd2l0aCBpbmFjdGl2ZSB0cmFuc2Fj
dGlvbiIpOworICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KHRlc3RXaGls
ZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQo
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgwZmYwYy4u
N2NhZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE1LTEwLTMwICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBJREJPYmpl
Y3RTdG9yZS5jbGVhcigpIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNsZWFyLTEuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbklt
cGwuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3Rv
cmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFib3J0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmlzQWJvcnRpbmcpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnJl
cGxhY2VLZXlWYWx1ZVN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1D
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNz
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisKIDIwMTUtMTAtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFRhcHBpbmcgYW5kIGhvbGRpbmcgYSBsaW5rIHNob3VsZCBoYXZlIGEgc2hhcmUg
b3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IGQwNThmNDEuLmIx
ZWQ2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0xMjQsNiArMTI0
LDIxIEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhCiAgICAgY29tcGxldGVPcGVyYXRpb24ocmVz
dWx0RGF0YSk7CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVy
OjpjbGVhck9iamVjdFN0b3JlIik7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CisK
KyAgICBtX2RlbGVnYXRlLT5jbGVhck9iamVjdFN0b3JlKElEQlJlcXVlc3REYXRhKG9wZXJhdGlv
biksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZSIpOworICAgIGNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOworfQorCiB2
b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgUmVmUHRyPElEQktleT4mIGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggNTI5MTFl
Ny4uZjJjY2JiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTY3LDYgKzY3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVy
YXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxl
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
Jik7CisKICAgICB2b2lkIHB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgUmVmUHRyPElE
QktleT4mLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdh
dGUuaAppbmRleCBlYWRhNzM2Li44OTcxYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElEQlJlc291cmNlSWRlbnRpZmllciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIElEQktleSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCBjY2UyYjFkLi4z
NjViYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjYwLDkgKzI2MCwyNyBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y2xlYXIi
KTsKKworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMg
PSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpSZWFkT25seUVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkludmFs
aWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSgqY29udGV4dCwgKnRoaXMpOworICAgIHJldHVybiBhZG9wdFJlZihyZXF1ZXN0LmxlYWtS
ZWYoKSk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cAppbmRleCBlNGMyY2Q0Li5jYjI5NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRE9N
UmVxdWVzdFN0YXRlLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkJp
bmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTE5
MSw2ICsxOTIsMTcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9u
ZShjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXQKICAgICBtX3Jlc3VsdCA9IElE
QkFueTo6Y3JlYXRlKFdURjo6bW92ZSh2YWx1ZSkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBE
T01SZXF1ZXN0U3RhdGUgc3RhdGUoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIGV4ZWNTdGF0ZSA9
IHN0YXRlLmV4ZWMoKSkKKyAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZShleGVjU3RhdGUtPnZtKCksIEpTQzo6anNVbmRlZmluZWQoKSkpOwor
fQorCiB2b2lkIElEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBtX2lkYkVycm9yID0gcmVzdWx0RGF0YS5lcnJvcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJl
cXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
UmVxdWVzdEltcGwuaAppbmRleCAxZGZmYjEyLi4wYTdmODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBJREJL
ZXlEYXRhKik7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIAog
cHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCBiYmFm
NjZiLi5hNTQ3MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDE0LDYgKzQx
NCwzNSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBs
ZXRlZChyZXN1bHREYXRhKTsKIH0KIAorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisKKyAgICB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIGF1dG8g
b3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0
KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyLCAmSURCVHJh
bnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisKKyAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgc2Vy
dmVyQ29ubmVjdGlvbigpLmNsZWFyT2JqZWN0U3RvcmUob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENsZWFyT2Jq
ZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgp
OworICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKK30KKwogUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJLZXkqIGtl
eSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4
IGIzM2I2NTQuLjRlZjUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRPckFkZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IElEQk9iamVjdFN0b3JlJiwgSURCS2V5Jik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RD
bGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYp
OwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSk7CiAKQEAgLTEyMSw2ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25z
dCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIHB1dE9yQWRkT25TZXJ2ZXIoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBSZWZQdHI8SURCS2V5PiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlJik7CiAgICAgdm9p
ZCBkaWRQdXRPckFkZE9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaAppbmRleCA3ZWM1OGYyLi4wOGZhNjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdT
dG9yZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURCRXJyb3Ig
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgSURCRXJyb3IgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBr
ZXlFeGlzdHMpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGRlbGV0ZVJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJikgPSAwOwogICAgIHZpcnR1YWwg
SURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggZDY4ZDQ4Ni4uYjEwYzQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTczLDYgKzczLDExIEBAIHZvaWQgSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0KTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQoreworICAgIG1fZGVsZWdhdGUtPmRpZENsZWFyT2Jq
ZWN0U3RvcmUocmVzdWx0KTsKK30KKwogdm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1
dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKIHsKICAgICBtX2RlbGVnYXRlLT5k
aWRQdXRPckFkZChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDM1
NWNiZDEuLjI0NGQ5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
Jik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7
CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7Cisg
ICAgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2
b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZEdldFJl
Y29yZChjb25zdCBJREJSZXN1bHREYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmgKaW5kZXggNjYyMzgzYS4uMzFkMGE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc3VsdERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHV0T3JBZGQo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggMDJiZGViZC4uOWZm
Mjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTE4MCw2ICsxODAsMTcgQEAgdm9pZCBJREJTZXJ2ZXI6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
U3RyaW4KICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlTmFtZSk7CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3Rv
cmUiKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHRyYW5zYWN0aW9uLT5jbGVhck9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworfQorCiB2b2lkIElEQlNlcnZlcjo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJTZXJ2ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMzFkODczYi4uZGEw
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKICAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJik7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcAppbmRleCBmZWFhZmEzLi5mODdlMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTkwLDYgKzkwLDI3IEBAIHZvaWQgTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5T2JqCiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEY6Om1v
dmUob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBzdGQ6
OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+JiYga2V5VmFsdWVNYXApCit7CisgICAgQVNTRVJUKG1f
b2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOworCisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2NsZWFyZWRLZXlWYWx1ZU1hcHMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CisK
KyAgICAvLyBJZiB0aGlzIG9iamVjdCBzdG9yZSBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoaXMgdHJhbnNhY3Rpb24sIHdlIGRvbid0IG5lZWQgdG8gcmVtZW1iZXIgdGhpcyBjbGVh
cmluZy4KKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBJZiB2YWx1ZXMgaGFkIHByZXZpb3VzbHkgYmVlbiBjaGFuZ2VkIGR1cmluZyB0aGlz
IHRyYW5zYWN0aW9uLCBmb2xkIHRob3NlIGNoYW5nZXMgYmFjayBpbnRvIHRoZQorICAgIC8vIGNs
ZWFyZWQga2V5LXZhbHVlIG1hcCBub3csIHNvIHdlIGhhdmUgZXhhY3RseSB0aGUgbWFwIHRoYXQg
d2lsbCBuZWVkIHRvIGJlIHJlc3RvcmVkIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLgor
ICAgIGF1dG8gb3JpZ2luYWxWYWx1ZXMgPSBtX29yaWdpbmFsVmFsdWVzLnRha2UoJm9iamVjdFN0
b3JlKTsKKyAgICBpZiAob3JpZ2luYWxWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJh
dG9yIDogKm9yaWdpbmFsVmFsdWVzKQorICAgICAgICAgICAga2V5VmFsdWVNYXAtPnNldChpdGVy
YXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlKTsKKyAgICB9CisKKyAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gV1RGOjptb3ZlKGtleVZhbHVlTWFwKTsKK30KKwogdm9pZCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3Jl
JiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIEFTU0VSVChtX29i
amVjdFN0b3Jlcy5jb250YWlucygmb2JqZWN0U3RvcmUpKTsKQEAgLTk3LDYgKzExOCwxMSBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogICAgIGlmIChtX2lzQWJvcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIElmIHRoaXMgb2JqZWN0IHN0b3JlIGhhZCBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoZSB0cmFuc2FjdGlvbiwgbm8gcG9pbnQgaW4gcmVjb3JkaW5nIHRoaXMKKyAgICAvLyBp
bmRpdmlkdWFsIGtleS92YWx1ZSBjaGFuZ2UgYXMgaXRzIGVudGlyZSBrZXkvdmFsdWUgbWFwIHdp
bGwgYmUgcmVzdG9yZWQgdXBvbiBhYm9ydC4KKyAgICBpZiAobV9jbGVhcmVkS2V5VmFsdWVNYXBz
LmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gb3Jp
Z2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUsIG51bGxw
dHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBvcmln
aW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVl
TWFwPigpOwpAQCAtMTM4LDcgKzE2NCwxMyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjphYm9ydCgpCiAgICAgICAgIEFTU0VSVChtX29yaWdpbmFsS2V5R2VuZXJhdG9ycy5j
b250YWlucyhvYmplY3RTdG9yZSkpOwogICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJh
dG9yVmFsdWUobV9vcmlnaW5hbEtleUdlbmVyYXRvcnMuZ2V0KG9iamVjdFN0b3JlKSk7CiAKLSAg
ICAgICAgYXV0byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMuZ2V0KG9iamVjdFN0b3Jl
KTsKKyAgICAgICAgYXV0byBjbGVhcmVkS2V5VmFsdWVNYXAgPSBtX2NsZWFyZWRLZXlWYWx1ZU1h
cHMudGFrZShvYmplY3RTdG9yZSk7CisgICAgICAgIGlmIChjbGVhcmVkS2V5VmFsdWVNYXApIHsK
KyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXBsYWNlS2V5VmFsdWVTdG9yZShXVEY6Om1vdmUo
Y2xlYXJlZEtleVZhbHVlTWFwKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8ga2V5VmFsdWVNYXAgPSBtX29yaWdpbmFsVmFsdWVzLnRha2Uob2JqZWN0
U3RvcmUpOwogICAgICAgICBpZiAoIWtleVZhbHVlTWFwKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTE0Niw4ICsxNzgsNiBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjphYm9ydCgpCiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+ZGVsZXRlUmVjb3JkKGVudHJ5Lmtl
eSk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5VmFsdWUoZW50cnkua2V5LCBlbnRy
eS52YWx1ZSk7CiAgICAgICAgIH0KLQotICAgICAgICBtX29yaWdpbmFsVmFsdWVzLnJlbW92ZShv
YmplY3RTdG9yZSk7CiAgICAgfQogCiAgICAgZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oCmluZGV4IDU4Y2E1ZGUuLjI5MDIxNWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2U7
IH0KICAgICBib29sIGlzV3JpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5tb2RlKCkgIT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJlYWRPbmx5OyB9CisgICAgYm9vbCBpc0Fib3J0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fib3J0aW5nOyB9CiAKICAgICBjb25zdCBJREJEYXRh
YmFzZUluZm8mIG9yaWdpbmFsRGF0YWJhc2VJbmZvKCkgY29uc3Q7CiAKQEAgLTU5LDYgKzYwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlPYmplY3RT
dG9yZSYpOwogICAgIHZvaWQgcmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiwg
Y29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgb2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5p
cXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4pOworICAgIHZvaWQgb2JqZWN0U3RvcmVDbGVhcmVk
KE1lbW9yeU9iamVjdFN0b3JlJiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPiYmKTsKIAog
ICAgIHZvaWQgYWJvcnQoKTsKICAgICB2b2lkIGNvbW1pdCgpOwpAQCAtODIsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCB1aW50NjRfdD4gbV9vcmln
aW5hbEtleUdlbmVyYXRvcnM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlPYmplY3RTdG9yZT4+IG1fZGVsZXRlZE9iamVjdFN0b3JlczsKICAgICBIYXNoTWFwPE1l
bW9yeU9iamVjdFN0b3JlKiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPj4gbV9vcmlnaW5h
bFZhbHVlczsKLQorICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCBzdGQ6OnVuaXF1ZV9w
dHI8S2V5VmFsdWVNYXA+PiBtX2NsZWFyZWRLZXlWYWx1ZU1hcHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjA3
ZWFmYy4uNGNkOTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE2
MSw2ICsxNjEsMjQgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICByZXR1cm4gSURCRXJy
b3IoKTsKIH0KIAorSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpOworCisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7
CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pc1dyaXRpbmcoKSk7CisKKyAgICBhdXRvIG9iamVj
dFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRp
Zmllcik7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElE
QkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcik7CisKKyAgICBvYmplY3RTdG9yZS0+Y2xl
YXIoKTsKKworICAgIHJldHVybiBJREJFcnJvcigpOworfQorCiB2b2lkIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlKQogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJC
YWNraW5nU3RvcmU6OnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0Iik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggZWVlODM5Ny4uNzdiYmUzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBJREJFcnJvciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCBJREJFcnJvciBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBvYmplY3RTdG9yZU5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgSURCRXJyb3Ig
Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5h
bDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgSURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpIG92ZXJy
aWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggMTQ1Yzg5ZS4uMjQwOWFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC03Myw2ICs3MywyMiBAQCBib29sIE1l
bW9yeU9iamVjdFN0b3JlOjpjb250YWluc1JlY29yZChjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Y29udGFpbnMoa2V5KTsKIH0KIAordm9pZCBNZW1v
cnlPYmplY3RTdG9yZTo6Y2xlYXIoKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmpl
Y3RTdG9yZTo6Y2xlYXIiKTsKKyAgICBBU1NFUlQobV93cml0ZVRyYW5zYWN0aW9uKTsKKworICAg
IG1fd3JpdGVUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVDbGVhcmVkKCp0aGlzLCBXVEY6Om1vdmUo
bV9rZXlWYWx1ZVN0b3JlKSk7Cit9CisKK3ZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OnJlcGxhY2VL
ZXlWYWx1ZVN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxLZXlWYWx1ZU1hcD4mJiBzdG9yZSkKK3sKKyAg
ICBBU1NFUlQobV93cml0ZVRyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQobV93cml0ZVRyYW5zYWN0
aW9uLT5pc0Fib3J0aW5nKCkpOworCisgICAgbV9rZXlWYWx1ZVN0b3JlID0gV1RGOjptb3ZlKHN0
b3JlKTsKK30KKwogdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElE
QktleURhdGEmIGtleSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6
OmRlbGV0ZVJlY29yZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA2YmUxOTZlLi5kMDQ3
YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6CiAg
ICAgdWludDY0X3QgY3VycmVudEtleUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlHZW5lcmF0b3JWYWx1ZTsgfQogICAgIHZvaWQgc2V0S2V5R2VuZXJhdG9yVmFsdWUodWludDY0
X3QgdmFsdWUpIHsgbV9rZXlHZW5lcmF0b3JWYWx1ZSA9IHZhbHVlOyB9CiAKKyAgICB2b2lkIGNs
ZWFyKCk7CisgICAgdm9pZCByZXBsYWNlS2V5VmFsdWVTdG9yZShzdGQ6OnVuaXF1ZV9wdHI8S2V5
VmFsdWVNYXA+JiYpOworCiAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVGb3JLZXkoY29u
c3QgSURCS2V5RGF0YSYpIGNvbnN0OwogCiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBp
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApp
bmRleCBkNDFiYTAyLi4zMGIzZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTI5
Niw2ICsyOTYsMzUgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybURlbGV0ZU9i
amVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICBwZXJmb3JtRXJyb3JD
YWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yKTsKIH0KIAordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNr
IGNhbGxiYWNrKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4
ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSIpOworCisg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2FsbGJhY2soY2FsbGJhY2spOworICAgIG1f
c2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKK30K
Kwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQoreworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ2xlYXJPYmplY3RTdG9yZSIpOworCisgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFu
c2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisKKyAgICBJREJFcnJv
ciBlcnJvcjsKKyAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVhck9iamVj
dFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yKSk7Cit9CisKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUiKTsKKworICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNh
bGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
dXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURh
dGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxs
YmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaAppbmRleCA2ZDNmMDcyLi4yY2I2M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
LCBFcnJvckNhbGxiYWNrKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXJyb3JD
YWxsYmFjayk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2sp
OwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7CiAgICAgdm9pZCBnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgVmFsdWVEYXRh
Q2FsbGJhY2spOwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwpAQCAtMTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBiZWdpblRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJik7CiAgICAgdm9pZCBwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAgICAgdm9pZCBwZXJm
b3JtRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBvYmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgcGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAg
ICB2b2lkIHBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CiAgICAgdm9pZCBwZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZv
aWQgcGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwpAQCAtMTA4LDYgKzEx
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpOworICAgIHZvaWQgZGlkUGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkUGVy
Zm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3Im
LCBjb25zdCBJREJLZXlEYXRhJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDQ0MzliZDIuLjM3MmIzYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0xNDYsNiArMTQ2LDEz
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1CiAgICAgbV9jb25uZWN0aW9uVG9DbGllbnQuZGlk
RGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSIpOworCisgICAgbV9jb25uZWN0aW9uVG9DbGllbnQu
ZGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURC
U2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uaAppbmRleCA0YjU2NzZhLi44ZjExZjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
LCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzdWx0RGF0YSYpOworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1
bHREYXRhJik7CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlJiwgSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggNTc4MmNhOC4uZWE2YjY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMTMw
LDYgKzEzMCwyMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZQogICAgIH0pOwogfQogCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNs
ZWFyT2JqZWN0U3RvcmUiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlm
aWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworCisgICAgUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7CisgICAgbV9kYXRh
YmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuY2xlYXJPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9y
JiBlcnJvcikgeworICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSAoY2FsbGJhY2spIik7CisgICAgICAgIGlmIChlcnJv
ci5pc051bGwoKSkKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRDbGVhck9i
amVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3RE
YXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9k
YXRhYmFzZUNvbm5lY3Rpb24tPmRpZENsZWFyT2JqZWN0U3RvcmUoSURCUmVzdWx0RGF0YTo6ZXJy
b3IocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30K
IAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpwdXRPckFkZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0
IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVP
dmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uaAppbmRleCA4MGE4ZmFlLi45YzY2ODc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CisgICAgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURh
dGEsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3Vs
dERhdGEuY3BwCmluZGV4IDVhNWM3YzEuLjJjZjVjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAg
LTk4LDYgKzk4LDExIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlT2JqZWN0
U3RvcmVTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllCiAgICAgcmV0dXJuIHsgSURC
UmVzdWx0VHlwZTo6RGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9
OwogfQogCitJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNj
ZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIHsgSURCUmVzdWx0VHlwZTo6Q2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MsIHJlcXVl
c3RJZGVudGlmaWVyIH07Cit9CisKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cHV0T3JB
ZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3Vs
dChJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1
bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
dWx0RGF0YS5oCmluZGV4IGI4MDU0YWQuLjlkNjUzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtNDYs
NiArNDYsNyBAQCBlbnVtIGNsYXNzIElEQlJlc3VsdFR5cGUgewogICAgIE9wZW5EYXRhYmFzZVVw
Z3JhZGVOZWVkZWQsCiAgICAgQ3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNzLAogICAgIERlbGV0ZU9i
amVjdFN0b3JlU3VjY2VzcywKKyAgICBDbGVhck9iamVjdFN0b3JlU3VjY2VzcywKICAgICBQdXRP
ckFkZFN1Y2Nlc3MsCiAgICAgR2V0UmVjb3JkU3VjY2VzcywKIH07CkBAIC02Miw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSURCUmVzdWx0RGF0YSBvcGVuRGF0YWJhc2VVcGdyYWRlTmVl
ZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIElEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYpOwogICAgIHN0YXRpYyBJREJSZXN1bHREYXRhIGNyZWF0ZU9iamVj
dFN0b3JlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKICAgICBzdGF0aWMg
SURCUmVzdWx0RGF0YSBkZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJik7CisgICAgc3RhdGljIElEQlJlc3VsdERhdGEgY2xlYXJPYmplY3RTdG9yZVN1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIElEQlJlc3Vs
dERhdGEgcHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0
IElEQktleURhdGEmKTsKICAgICBzdGF0aWMgSURCUmVzdWx0RGF0YSBnZXRSZWNvcmRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVy
JiB2YWx1ZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGRjMDlhMDku
LmFmYWRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0xMzUsNiArMTM1LDE0
IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIH0pOwogfQogCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7Cisg
ICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVhck9iamVjdFN0b3JlKHJlc3VsdERh
dGEpOworICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOwpAQCAtMTgzLDYgKzE5MSwxNCBAQCB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjbwogICAgIH0pOwogfQogCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBz
ZWxmKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwg
cmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0geworICAgICAgICBtX3NlcnZlci0+
Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAg
ICB9KTsKK30KKwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgSURCS2V5KiBrZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3
cml0ZU1vZGUpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCBiNmFjNDI5Li5kYjU2MzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0VHJhbnNhY3Rpb24oSURCUmVzb3VyY2VJZGVudGlmaWVyJikgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcHV0T3JB
ZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJREJLZXkqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUm
LCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSkgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElE
QktleSopIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hUcmFuc2Fj
dGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFu
c2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBvdmVycmlk
ZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmly
dHVhbCB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHRE
YXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChjb25z
dCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBvdmVycmlkZSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264418</attachid>
            <date>2015-10-30 14:26:48 -0700</date>
            <delta_ts>2015-10-30 14:43:21 -0700</delta_ts>
            <desc>Patch v2 - release build fix</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59862</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZmUzM2IyLi45Njk1N2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTAt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElEQk9iamVjdFN0b3JlLmNsZWFyKCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDczMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNsZWFyLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXIt
Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUt
MTAtMzAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFy
a2luZyBqcy9yZWdyZXNzL2Z0bC1vYmplY3Qtc3ViLmh0bWwgYXMgYSBmbGFreSB0aW1lb3V0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0
c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0Y2E3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24K
K0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjEKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJh
cjIKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjMKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2Fz
IGJhcjQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjUKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4g
d2FzIGJhcjYKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjcKK0FMRVJUOiBWYWx1ZSBnb3R0
ZW4gd2FzIGJhcjgKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjkKK0FMRVJUOiBPYmplY3Qg
c3RvcmUgY2xlYXJlZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDog
VmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVm
aW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290
dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1
bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVz
IGFuIG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdC4KK0l0IHRoZW4gY2xlYXJzIGl0IGFu
ZCBtYWtlcyBzdXJlIGl0IGhhcyBub3RoaW5nIGxlZnQgaW4gaXQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3Rv
cmUtY2xlYXItMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNWVm
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sCkBAIC0wLDAgKzEsMTExIEBACitUaGlzIHRl
c3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUgdGhlbiBwb3B1bGF0ZXMgaXQuPGJyPgorSXQgdGhl
biBjbGVhcnMgaXQgYW5kIG1ha2VzIHN1cmUgaXQgaGFzIG5vdGhpbmcgbGVmdCBpbiBpdC48YnI+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rp
b24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgY3JlYXRlUmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDbGVhckRhdGFiYXNl
IiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsg
ZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7
CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlv
bjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiLCB7
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjEiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOwor
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgiYmFyNSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2
Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjciKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyOCIpOworICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXI5Iik7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICAgICAg
ZGF0YWJhc2UuY2xvc2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0Q2hlY2tlcihldmVudCkgeworICAg
IGFsZXJ0KCJWYWx1ZSBnb3R0ZW4gd2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0KTsKK30KKwor
ZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFyRGF0YWJhc2UiLCAxKTsKKworICAg
IG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgi
UmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgdXBncmFk
ZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICBvcGVu
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiU3Vj
Y2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJh
bnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIAorICAgICAgICB2YXIg
cmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7CisgICAgICAg
ICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3RvcmUgY2xlYXJlZCIpOwor
ICAgICAgICAgICAgdmFyIG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9y
ZS5nZXQoaSk7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hl
Y2tlcjsKKyAgICAgICAgICAgIH0gICAgCisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1jbGVhci0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNjAwYzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzkgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2Ug
Y29ubmVjdGlvbiAtIFN0YXJ0aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbgorQUxFUlQ6IFZhbHVl
IGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgorQUxFUlQ6IFZh
bHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNAorQUxFUlQ6
IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOAor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IE9iamVjdCBzdG9yZSBjbGVhcmVk
LCBtYWtpbmcgc3VyZSBpdHMgYWxsIGdvbmUuCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRl
ZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdv
dHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FM
RVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
dW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1
ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVk
CitBTEVSVDogUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0CitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyBmaW5hbCB0cmFuc2FjdGlvbgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFy
NAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
YmFyNgorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3
YXMgYmFyOAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IFJlYWR3cml0ZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVzIGFuIG9i
amVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdCwgdGhlbiBjb21taXRzIHRoYXQgdHJhbnNhY3Rp
b24uCitJdCB0aGVuIGNsZWFycyBpdCwgYnV0IGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLgorRmlu
YWxseSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3Rp
bGwgaW4gdGhlcmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzY2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5o
dG1sCkBAIC0wLDAgKzEsMTY0IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUg
dGhlbiBwb3B1bGF0ZXMgaXQsIHRoZW4gY29tbWl0cyB0aGF0IHRyYW5zYWN0aW9uLjxicj4KK0l0
IHRoZW4gY2xlYXJzIGl0LCBidXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uPGJyPgorRmluYWxs
eSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3RpbGwg
aW4gdGhlcmUuPGJyPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwor
dmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3Jl
Q2xlYXIyRGF0YWJhc2UiLCAxKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyMSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXIyIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOworICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjYiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
NyIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI4Iik7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjkiKTsKKworICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0
MSgpOworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsg
ZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRDaGVja2Vy
KGV2ZW50KSB7CisgICAgYWxlcnQoIlZhbHVlIGdvdHRlbiB3YXMgIiArIGV2ZW50LnRhcmdldC5y
ZXN1bHQpOworfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgb3BlblJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ2xlYXIyRGF0YWJh
c2UiLCAxKTsKKworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVu
ZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGlu
ZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNh
Y3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
IAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsg
KytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3Rv
cmUgY2xlYXJlZCwgbWFraW5nIHN1cmUgaXRzIGFsbCBnb25lLiIpOworICAgICAgICAgICAgdmFy
IG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7
CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9yZS5nZXQoaSk7CisgICAg
ICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UnbGwgYmUgb24gdGhlIGxhc3Qg
cmVxdWVzdCBoZXJlLCBjYW4ganVzdCBvdmVycmlkZSBpdC4KKyAgICAgICAgICAgIG5ld1JlcXVl
c3RzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZ2V0Q2hl
Y2tlcihldmVudCk7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24uYWJvcnQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFuc2FjdGlvbiBh
Ym9ydCIpOworICAgICAgICAgICAgY29udGludWVUZXN0MigpOworICAgICAgICB9CisKKyAgICAg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MigpCit7Cisg
ICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUNsZWFyMkRhdGFiYXNlIiwgMSk7CisKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25ibG9j
a2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3Rl
ZCBibG9ja2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVu
UmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVy
dCgiUmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0
aW9uIC0gU3RhcnRpbmcgZmluYWwgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNl
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJh
c2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkp
OworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAi
ICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1j
bGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2Y2OGZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEZhaWxlZCB0byBwdXQgcmVj
b3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQg
dG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQKK0FM
RVJUOiBGYWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZAor
QUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24KK0FMRVJUOiBGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB3aXRo
IGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9y
ZSB3aXRoIGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogcmVhZHdyaXRlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMg
dGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElE
Qk9iamVjdFN0b3JlLmNsZWFyKCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1
dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZGY1ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApA
QCAtMCwwICsxLDExOSBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBj
YW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElEQk9iamVj
dFN0b3JlLmNsZWFyKCkuCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
Cit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3Rv
cmVQdXRBbmRDbGVhckZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKKworY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0
KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2
ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5w
dXQoImJhciIsIE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQo
IkZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBr
ZXkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBz
dG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSB0aGF0IGhh
cyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICAvLyBSZWNyZWF0ZSB0aGUg
b2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNlIDIuCisgICAgICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7ICAgIAorICAgIH0K
KyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2
ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0
MSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RP
YmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICB0cnkgeworICAg
ICAgICBvYmplY3RTdG9yZS5jbGVhcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhbGVy
dCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNhY3Rpb24i
KTsKKyAgICB9CisgICAgCisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rp
b24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAvLyBR
dWV1ZSB1cCBhIHdob2xlIGJ1bmNoIG9mIGdldHMgdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gYWxp
dmUgZm9yIGF3aGlsZQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAg
b2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKKworICAgIHZhciB0ZXN0V2hpbGVJbmFjdGl2ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJi
YXIiLCAiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZh
aWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggaW5hY3RpdmUgdHJhbnNh
Y3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
YWxlcnQoIkZhaWxlZCB0byBjbGVhciBvYmplY3Qgc3RvcmUgd2l0aCBpbmFjdGl2ZSB0cmFuc2Fj
dGlvbiIpOworICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KHRlc3RXaGls
ZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQo
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgwZmYwYy4u
N2NhZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE1LTEwLTMwICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBJREJPYmpl
Y3RTdG9yZS5jbGVhcigpIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNsZWFyLTEuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbklt
cGwuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3Rv
cmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFib3J0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmlzQWJvcnRpbmcpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnJl
cGxhY2VLZXlWYWx1ZVN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1D
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNz
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisKIDIwMTUtMTAtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFRhcHBpbmcgYW5kIGhvbGRpbmcgYSBsaW5rIHNob3VsZCBoYXZlIGEgc2hhcmUg
b3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IGQwNThmNDEuLmIx
ZWQ2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0xMjQsNiArMTI0
LDIxIEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhCiAgICAgY29tcGxldGVPcGVyYXRpb24ocmVz
dWx0RGF0YSk7CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVy
OjpjbGVhck9iamVjdFN0b3JlIik7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CisK
KyAgICBtX2RlbGVnYXRlLT5jbGVhck9iamVjdFN0b3JlKElEQlJlcXVlc3REYXRhKG9wZXJhdGlv
biksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZSIpOworICAgIGNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOworfQorCiB2
b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgUmVmUHRyPElEQktleT4mIGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggNTI5MTFl
Ny4uZjJjY2JiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTY3LDYgKzY3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVy
YXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxl
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
Jik7CisKICAgICB2b2lkIHB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgUmVmUHRyPElE
QktleT4mLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdh
dGUuaAppbmRleCBlYWRhNzM2Li44OTcxYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElEQlJlc291cmNlSWRlbnRpZmllciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIElEQktleSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCBjY2UyYjFkLi4z
NjViYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjYwLDkgKzI2MCwyNyBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y2xlYXIi
KTsKKworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMg
PSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpSZWFkT25seUVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkludmFs
aWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSgqY29udGV4dCwgKnRoaXMpOworICAgIHJldHVybiBhZG9wdFJlZihyZXF1ZXN0LmxlYWtS
ZWYoKSk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cAppbmRleCBlNGMyY2Q0Li5jYjI5NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRE9N
UmVxdWVzdFN0YXRlLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkJp
bmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTE5
MSw2ICsxOTIsMTcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9u
ZShjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXQKICAgICBtX3Jlc3VsdCA9IElE
QkFueTo6Y3JlYXRlKFdURjo6bW92ZSh2YWx1ZSkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBE
T01SZXF1ZXN0U3RhdGUgc3RhdGUoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIGV4ZWNTdGF0ZSA9
IHN0YXRlLmV4ZWMoKSkKKyAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZShleGVjU3RhdGUtPnZtKCksIEpTQzo6anNVbmRlZmluZWQoKSkpOwor
fQorCiB2b2lkIElEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBtX2lkYkVycm9yID0gcmVzdWx0RGF0YS5lcnJvcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJl
cXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
UmVxdWVzdEltcGwuaAppbmRleCAxZGZmYjEyLi4wYTdmODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBJREJL
ZXlEYXRhKik7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIAog
cHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCBiYmFm
NjZiLi5hNTQ3MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDE0LDYgKzQx
NCwzNSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBs
ZXRlZChyZXN1bHREYXRhKTsKIH0KIAorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisKKyAgICB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIGF1dG8g
b3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0
KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyLCAmSURCVHJh
bnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisKKyAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgc2Vy
dmVyQ29ubmVjdGlvbigpLmNsZWFyT2JqZWN0U3RvcmUob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENsZWFyT2Jq
ZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgp
OworICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKK30KKwogUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJLZXkqIGtl
eSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4
IGIzM2I2NTQuLjRlZjUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRPckFkZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IElEQk9iamVjdFN0b3JlJiwgSURCS2V5Jik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RD
bGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYp
OwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSk7CiAKQEAgLTEyMSw2ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25z
dCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIHB1dE9yQWRkT25TZXJ2ZXIoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBSZWZQdHI8SURCS2V5PiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlJik7CiAgICAgdm9p
ZCBkaWRQdXRPckFkZE9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaAppbmRleCA3ZWM1OGYyLi4wOGZhNjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdT
dG9yZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURCRXJyb3Ig
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgSURCRXJyb3IgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBr
ZXlFeGlzdHMpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGRlbGV0ZVJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJikgPSAwOwogICAgIHZpcnR1YWwg
SURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggZDY4ZDQ4Ni4uYjEwYzQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTczLDYgKzczLDExIEBAIHZvaWQgSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0KTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQoreworICAgIG1fZGVsZWdhdGUtPmRpZENsZWFyT2Jq
ZWN0U3RvcmUocmVzdWx0KTsKK30KKwogdm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1
dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKIHsKICAgICBtX2RlbGVnYXRlLT5k
aWRQdXRPckFkZChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDM1
NWNiZDEuLjI0NGQ5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
Jik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7
CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7Cisg
ICAgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2
b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZEdldFJl
Y29yZChjb25zdCBJREJSZXN1bHREYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmgKaW5kZXggNjYyMzgzYS4uMzFkMGE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc3VsdERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHV0T3JBZGQo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggMDJiZGViZC4uOWZm
Mjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTE4MCw2ICsxODAsMTcgQEAgdm9pZCBJREJTZXJ2ZXI6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
U3RyaW4KICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlTmFtZSk7CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3Rv
cmUiKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHRyYW5zYWN0aW9uLT5jbGVhck9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworfQorCiB2b2lkIElEQlNlcnZlcjo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJTZXJ2ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMzFkODczYi4uZGEw
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKICAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJik7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcAppbmRleCBmZWFhZmEzLi5mODdlMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTkwLDYgKzkwLDI3IEBAIHZvaWQgTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5T2JqCiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEY6Om1v
dmUob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBzdGQ6
OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+JiYga2V5VmFsdWVNYXApCit7CisgICAgQVNTRVJUKG1f
b2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOworCisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2NsZWFyZWRLZXlWYWx1ZU1hcHMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CisK
KyAgICAvLyBJZiB0aGlzIG9iamVjdCBzdG9yZSBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoaXMgdHJhbnNhY3Rpb24sIHdlIGRvbid0IG5lZWQgdG8gcmVtZW1iZXIgdGhpcyBjbGVh
cmluZy4KKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBJZiB2YWx1ZXMgaGFkIHByZXZpb3VzbHkgYmVlbiBjaGFuZ2VkIGR1cmluZyB0aGlz
IHRyYW5zYWN0aW9uLCBmb2xkIHRob3NlIGNoYW5nZXMgYmFjayBpbnRvIHRoZQorICAgIC8vIGNs
ZWFyZWQga2V5LXZhbHVlIG1hcCBub3csIHNvIHdlIGhhdmUgZXhhY3RseSB0aGUgbWFwIHRoYXQg
d2lsbCBuZWVkIHRvIGJlIHJlc3RvcmVkIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLgor
ICAgIGF1dG8gb3JpZ2luYWxWYWx1ZXMgPSBtX29yaWdpbmFsVmFsdWVzLnRha2UoJm9iamVjdFN0
b3JlKTsKKyAgICBpZiAob3JpZ2luYWxWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJh
dG9yIDogKm9yaWdpbmFsVmFsdWVzKQorICAgICAgICAgICAga2V5VmFsdWVNYXAtPnNldChpdGVy
YXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlKTsKKyAgICB9CisKKyAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gV1RGOjptb3ZlKGtleVZhbHVlTWFwKTsKK30KKwogdm9pZCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3Jl
JiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIEFTU0VSVChtX29i
amVjdFN0b3Jlcy5jb250YWlucygmb2JqZWN0U3RvcmUpKTsKQEAgLTk3LDYgKzExOCwxMSBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogICAgIGlmIChtX2lzQWJvcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIElmIHRoaXMgb2JqZWN0IHN0b3JlIGhhZCBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoZSB0cmFuc2FjdGlvbiwgbm8gcG9pbnQgaW4gcmVjb3JkaW5nIHRoaXMKKyAgICAvLyBp
bmRpdmlkdWFsIGtleS92YWx1ZSBjaGFuZ2UgYXMgaXRzIGVudGlyZSBrZXkvdmFsdWUgbWFwIHdp
bGwgYmUgcmVzdG9yZWQgdXBvbiBhYm9ydC4KKyAgICBpZiAobV9jbGVhcmVkS2V5VmFsdWVNYXBz
LmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gb3Jp
Z2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUsIG51bGxw
dHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBvcmln
aW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVl
TWFwPigpOwpAQCAtMTM4LDcgKzE2NCwxMyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjphYm9ydCgpCiAgICAgICAgIEFTU0VSVChtX29yaWdpbmFsS2V5R2VuZXJhdG9ycy5j
b250YWlucyhvYmplY3RTdG9yZSkpOwogICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJh
dG9yVmFsdWUobV9vcmlnaW5hbEtleUdlbmVyYXRvcnMuZ2V0KG9iamVjdFN0b3JlKSk7CiAKLSAg
ICAgICAgYXV0byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMuZ2V0KG9iamVjdFN0b3Jl
KTsKKyAgICAgICAgYXV0byBjbGVhcmVkS2V5VmFsdWVNYXAgPSBtX2NsZWFyZWRLZXlWYWx1ZU1h
cHMudGFrZShvYmplY3RTdG9yZSk7CisgICAgICAgIGlmIChjbGVhcmVkS2V5VmFsdWVNYXApIHsK
KyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXBsYWNlS2V5VmFsdWVTdG9yZShXVEY6Om1vdmUo
Y2xlYXJlZEtleVZhbHVlTWFwKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8ga2V5VmFsdWVNYXAgPSBtX29yaWdpbmFsVmFsdWVzLnRha2Uob2JqZWN0
U3RvcmUpOwogICAgICAgICBpZiAoIWtleVZhbHVlTWFwKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTE0Niw4ICsxNzgsNiBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjphYm9ydCgpCiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+ZGVsZXRlUmVjb3JkKGVudHJ5Lmtl
eSk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5VmFsdWUoZW50cnkua2V5LCBlbnRy
eS52YWx1ZSk7CiAgICAgICAgIH0KLQotICAgICAgICBtX29yaWdpbmFsVmFsdWVzLnJlbW92ZShv
YmplY3RTdG9yZSk7CiAgICAgfQogCiAgICAgZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oCmluZGV4IDU4Y2E1ZGUuLjI5MDIxNWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2U7
IH0KICAgICBib29sIGlzV3JpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5tb2RlKCkgIT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJlYWRPbmx5OyB9CisgICAgYm9vbCBpc0Fib3J0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fib3J0aW5nOyB9CiAKICAgICBjb25zdCBJREJEYXRh
YmFzZUluZm8mIG9yaWdpbmFsRGF0YWJhc2VJbmZvKCkgY29uc3Q7CiAKQEAgLTU5LDYgKzYwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlPYmplY3RT
dG9yZSYpOwogICAgIHZvaWQgcmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiwg
Y29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgb2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5p
cXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4pOworICAgIHZvaWQgb2JqZWN0U3RvcmVDbGVhcmVk
KE1lbW9yeU9iamVjdFN0b3JlJiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPiYmKTsKIAog
ICAgIHZvaWQgYWJvcnQoKTsKICAgICB2b2lkIGNvbW1pdCgpOwpAQCAtODIsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCB1aW50NjRfdD4gbV9vcmln
aW5hbEtleUdlbmVyYXRvcnM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlPYmplY3RTdG9yZT4+IG1fZGVsZXRlZE9iamVjdFN0b3JlczsKICAgICBIYXNoTWFwPE1l
bW9yeU9iamVjdFN0b3JlKiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPj4gbV9vcmlnaW5h
bFZhbHVlczsKLQorICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCBzdGQ6OnVuaXF1ZV9w
dHI8S2V5VmFsdWVNYXA+PiBtX2NsZWFyZWRLZXlWYWx1ZU1hcHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjA3
ZWFmYy4uNzFmOTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE2
MSw2ICsxNjEsMjYgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICByZXR1cm4gSURCRXJy
b3IoKTsKIH0KIAorSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpOworCisjaWZuZGVmIE5ERUJVRworICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBBU1NF
UlQodHJhbnNhY3Rpb24pOworICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aXNXcml0aW5nKCkpOwor
I2VuZGlmCisKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZp
ZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAg
ICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcik7
CisKKyAgICBvYmplY3RTdG9yZS0+Y2xlYXIoKTsKKworICAgIHJldHVybiBJREJFcnJvcigpOwor
fQorCiB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJz
aW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlKQogewogICAgIExP
RyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlbW92ZU9iamVjdFN0b3JlRm9y
VmVyc2lvbkNoYW5nZUFib3J0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXgg
ZWVlODM5Ny4uNzdiYmUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtNTQs
NiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBjb21taXRUcmFuc2FjdGlv
bihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgSURCRXJyb3IgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGtleUV4aXN0
c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYsIGJvb2wmIGtleUV4aXN0cykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJv
ciBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYgdmFsdWUpIG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAKaW5kZXggMTQ1Yzg5ZS4uMjQwOWFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBA
IC03Myw2ICs3MywyMiBAQCBib29sIE1lbW9yeU9iamVjdFN0b3JlOjpjb250YWluc1JlY29yZChj
b25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Y29udGFp
bnMoa2V5KTsKIH0KIAordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6Y2xlYXIoKQoreworICAgIExP
RyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6Y2xlYXIiKTsKKyAgICBBU1NFUlQobV93
cml0ZVRyYW5zYWN0aW9uKTsKKworICAgIG1fd3JpdGVUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVD
bGVhcmVkKCp0aGlzLCBXVEY6Om1vdmUobV9rZXlWYWx1ZVN0b3JlKSk7Cit9CisKK3ZvaWQgTWVt
b3J5T2JqZWN0U3RvcmU6OnJlcGxhY2VLZXlWYWx1ZVN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxLZXlW
YWx1ZU1hcD4mJiBzdG9yZSkKK3sKKyAgICBBU1NFUlQobV93cml0ZVRyYW5zYWN0aW9uKTsKKyAg
ICBBU1NFUlQobV93cml0ZVRyYW5zYWN0aW9uLT5pc0Fib3J0aW5nKCkpOworCisgICAgbV9rZXlW
YWx1ZVN0b3JlID0gV1RGOjptb3ZlKHN0b3JlKTsKK30KKwogdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmRlbGV0ZVJlY29yZCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuaAppbmRleCA2YmUxOTZlLi5kMDQ3YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAt
NjMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgY3VycmVudEtleUdlbmVyYXRvclZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlHZW5lcmF0b3JWYWx1ZTsgfQogICAgIHZvaWQgc2V0
S2V5R2VuZXJhdG9yVmFsdWUodWludDY0X3QgdmFsdWUpIHsgbV9rZXlHZW5lcmF0b3JWYWx1ZSA9
IHZhbHVlOyB9CiAKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCByZXBsYWNlS2V5VmFsdWVT
dG9yZShzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+JiYpOworCiAgICAgVGhyZWFkU2FmZURh
dGFCdWZmZXIgdmFsdWVGb3JLZXkoY29uc3QgSURCS2V5RGF0YSYpIGNvbnN0OwogCiAgICAgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBkNDFiYTAyLi4zMGIzZmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKQEAgLTI5Niw2ICsyOTYsMzUgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybURlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwKICAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9y
KTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZShVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6
Y2xlYXJPYmplY3RTdG9yZSIpOworCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0b3JlQ2Fs
bGJhY2soY2FsbGJhY2spOworICAgIG1fc2VydmVyLnBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVj
dFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIExP
RyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ2xlYXJPYmplY3RT
dG9yZSIpOworCisgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9y
ZS0+Y2xlYXJPYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CisKKyAgICBJREJFcnJvciBlcnJvcjsKKyAgICBtX3NlcnZlci5wb3N0RGF0YWJh
c2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFBlcmZvcm1DbGVhck9iamVjdFN0b3JlLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9y
KSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVhck9iamVjdFN0
b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWlu
KSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUiKTsKKworICAg
IHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworfQorCiB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRh
QnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92
ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCA2ZDNmMDcyLi4yY2I2M2Zm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBFcnJvckNhbGxiYWNrKTsKICAgICB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFD
YWxsYmFjayk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlEYXRhJiwgVmFsdWVEYXRhQ2FsbGJhY2spOwogICAgIHZvaWQgY29tbWl0VHJhbnNh
Y3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwpAQCAt
MTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpblRyYW5zYWN0aW9uSW5CYWNr
aW5nU3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgdm9pZCBwZXJmb3JtQ3Jl
YXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJik7CiAgICAgdm9pZCBwZXJmb3JtRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgcGVy
Zm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB2b2lkIHBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6
Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAgdm9pZCBwZXJmb3JtR2V0UmVjb3JkKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgcGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rpb25JbkJh
Y2tpbmdTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSW5mbyYpOwpAQCAtMTA4LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRPcGVu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOwogICAgIHZvaWQgZGlkUGVyZm9y
bUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKICAgICB2b2lkIGRpZFBlcmZvcm1E
ZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVy
cm9yJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgZGlkUGVyZm9y
bUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJF
cnJvciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik7CiAgICAgdm9pZCBk
aWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgZGlkUGVyZm9y
bUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCmluZGV4IDQ0
MzliZDIuLjM3MmIzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCkBAIC0xNDYsNiArMTQ2LDEzIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1CiAgICAg
bV9jb25uZWN0aW9uVG9DbGllbnQuZGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiB9
CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3Jl
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwg
IlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSIpOworCisg
ICAgbV9jb25uZWN0aW9uVG9DbGllbnQuZGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaAppbmRleCA0YjU2NzZhLi44
ZjExZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCkBAIC02
OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlk
Q3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkRGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgZGlkQ2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CiAKIHByaXZhdGU6CiAgICAgVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgSURCQ29ubmVjdGlvblRv
Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAK
aW5kZXggNTc4MmNhOC4uZWE2YjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcApAQCAtMTMwLDYgKzEzMCwyMSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZQogICAgIH0pOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUiKTsKKworICAgIEFTU0VSVCht
X3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCkpOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+
IHNlbGYodGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuY2xlYXJP
YmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgc2VsZiwgcmVx
dWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgICAgICBMT0coSW5kZXhlZERC
LCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSAoY2FsbGJh
Y2spIik7CisgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIG1fZGF0YWJh
c2VDb25uZWN0aW9uLT5kaWRDbGVhck9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNsZWFyT2Jq
ZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENsZWFyT2JqZWN0
U3RvcmUoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIo
KSwgZXJyb3IpKTsKKyAgICB9KTsKK30KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEs
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA4MGE4ZmFlLi45
YzY2ODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKQEAg
LTY0LDYgKzY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwogICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSk7CisgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB2b2lkIHB1dE9y
QWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVh
ZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKTsKICAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQktleURhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IDVhNWM3YzEuLjJjZjVjM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTk4LDYgKzk4LDExIEBAIElEQlJlc3VsdERhdGEgSURC
UmVzdWx0RGF0YTo6ZGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllCiAgICAgcmV0dXJuIHsgSURCUmVzdWx0VHlwZTo6RGVsZXRlT2JqZWN0U3RvcmVTdWNj
ZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwogfQogCitJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIHsgSURCUmVzdWx0VHlwZTo6Q2xlYXJP
YmplY3RTdG9yZVN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Cit9CisKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdChJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IGI4MDU0YWQuLjlkNjUzMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc3VsdERhdGEuaApAQCAtNDYsNiArNDYsNyBAQCBlbnVtIGNsYXNzIElEQlJlc3VsdFR5
cGUgewogICAgIE9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQsCiAgICAgQ3JlYXRlT2JqZWN0U3Rv
cmVTdWNjZXNzLAogICAgIERlbGV0ZU9iamVjdFN0b3JlU3VjY2VzcywKKyAgICBDbGVhck9iamVj
dFN0b3JlU3VjY2VzcywKICAgICBQdXRPckFkZFN1Y2Nlc3MsCiAgICAgR2V0UmVjb3JkU3VjY2Vz
cywKIH07CkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSURCUmVzdWx0RGF0
YSBvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogICAgIHN0YXRpYyBJ
REJSZXN1bHREYXRhIGNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImKTsKICAgICBzdGF0aWMgSURCUmVzdWx0RGF0YSBkZWxldGVPYmplY3RTdG9yZVN1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CisgICAgc3RhdGljIElEQlJlc3Vs
dERhdGEgY2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
Jik7CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgcHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQktleURhdGEmKTsKICAgICBzdGF0aWMgSURCUmVz
dWx0RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNv
bnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCmluZGV4IGRjMDlhMDkuLmFmYWRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC0xMzUsNiArMTM1LDE0IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRE
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIH0p
OwogfQogCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRD
bGVhck9iamVjdFN0b3JlKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
IHsKICAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwpAQCAtMTgzLDYg
KzE5MSwxNCBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjbwogICAgIH0pOwogfQogCit2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmll
cl0geworICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgSURCS2V5KiBr
ZXksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCBiNmFj
NDI5Li5kYjU2MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCkBAIC02MCw2ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikg
b3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJREJLZXkq
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSopIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKQEAg
LTczLDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRUcmFuc2Fj
dGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQ
dXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdmlydHVhbCB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBvdmVy
cmlkZSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264421</attachid>
            <date>2015-10-30 14:43:21 -0700</date>
            <delta_ts>2015-10-30 14:57:17 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59929</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZmUzM2IyLi45Njk1N2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTAt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElEQk9iamVjdFN0b3JlLmNsZWFyKCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDczMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNsZWFyLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXIt
Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUt
MTAtMzAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgTWFy
a2luZyBqcy9yZWdyZXNzL2Z0bC1vYmplY3Qtc3ViLmh0bWwgYXMgYSBmbGFreSB0aW1lb3V0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0
c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0Y2E3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0xLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEluaXRpYWwgdXBncmFk
ZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24K
K0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjEKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJh
cjIKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjMKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2Fz
IGJhcjQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjUKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4g
d2FzIGJhcjYKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjcKK0FMRVJUOiBWYWx1ZSBnb3R0
ZW4gd2FzIGJhcjgKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIGJhcjkKK0FMRVJUOiBPYmplY3Qg
c3RvcmUgY2xlYXJlZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDog
VmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVm
aW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290
dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1
bmRlZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVz
IGFuIG9iamVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdC4KK0l0IHRoZW4gY2xlYXJzIGl0IGFu
ZCBtYWtlcyBzdXJlIGl0IGhhcyBub3RoaW5nIGxlZnQgaW4gaXQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3Rv
cmUtY2xlYXItMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNWVm
YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS5odG1sCkBAIC0wLDAgKzEsMTExIEBACitUaGlzIHRl
c3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUgdGhlbiBwb3B1bGF0ZXMgaXQuPGJyPgorSXQgdGhl
biBjbGVhcnMgaXQgYW5kIG1ha2VzIHN1cmUgaXQgaGFzIG5vdGhpbmcgbGVmdCBpbiBpdC48YnI+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rp
b24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgY3JlYXRlUmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDbGVhckRhdGFiYXNl
IiwgMSk7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsg
ZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7
CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlv
bjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmpl
Y3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiLCB7
IGF1dG9JbmNyZW1lbnQ6IHRydWUgfSk7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjEiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOwor
ICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLnB1dCgiYmFyNSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2
Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjciKTsKKyAgICB2YXIg
cmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyOCIpOworICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXI5Iik7CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgp
OworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICAgICAg
ZGF0YWJhc2UuY2xvc2UoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0Q2hlY2tlcihldmVudCkgeworICAg
IGFsZXJ0KCJWYWx1ZSBnb3R0ZW4gd2FzICIgKyBldmVudC50YXJnZXQucmVzdWx0KTsKK30KKwor
ZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93
LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9yZUNsZWFyRGF0YWJhc2UiLCAxKTsKKworICAg
IG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgi
UmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVuZXhwZWN0ZWQgdXBncmFk
ZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICBvcGVu
UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiU3Vj
Y2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyByZWFkd3JpdGUgdHJh
bnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIAorICAgICAgICB2YXIg
cmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7CisgICAgICAg
ICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3RvcmUgY2xlYXJlZCIpOwor
ICAgICAgICAgICAgdmFyIG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9y
ZS5nZXQoaSk7CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hl
Y2tlcjsKKyAgICAgICAgICAgIH0gICAgCisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJSZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAtICIgKyBldmVudCk7CisgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1jbGVhci0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNjAwYzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzkgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFu
Z2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBTdWNjZXNzIG9wZW5pbmcgZGF0YWJhc2Ug
Y29ubmVjdGlvbiAtIFN0YXJ0aW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbgorQUxFUlQ6IFZhbHVl
IGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgorQUxFUlQ6IFZh
bHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNAorQUxFUlQ6
IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOAor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IE9iamVjdCBzdG9yZSBjbGVhcmVk
LCBtYWtpbmcgc3VyZSBpdHMgYWxsIGdvbmUuCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRl
ZmluZWQKK0FMRVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdv
dHRlbiB3YXMgdW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FM
RVJUOiBWYWx1ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
dW5kZWZpbmVkCitBTEVSVDogVmFsdWUgZ290dGVuIHdhcyB1bmRlZmluZWQKK0FMRVJUOiBWYWx1
ZSBnb3R0ZW4gd2FzIHVuZGVmaW5lZAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgdW5kZWZpbmVk
CitBTEVSVDogUmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0CitBTEVSVDogU3VjY2VzcyBvcGVu
aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGluZyBmaW5hbCB0cmFuc2FjdGlvbgorQUxF
UlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMgor
QUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyMworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFy
NAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNQorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMg
YmFyNgorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyNworQUxFUlQ6IFZhbHVlIGdvdHRlbiB3
YXMgYmFyOAorQUxFUlQ6IFZhbHVlIGdvdHRlbiB3YXMgYmFyOQorQUxFUlQ6IFJlYWR3cml0ZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVzdCBjcmVhdGVzIGFuIG9i
amVjdCBzdG9yZSB0aGVuIHBvcHVsYXRlcyBpdCwgdGhlbiBjb21taXRzIHRoYXQgdHJhbnNhY3Rp
b24uCitJdCB0aGVuIGNsZWFycyBpdCwgYnV0IGFib3J0cyB0aGF0IHRyYW5zYWN0aW9uLgorRmlu
YWxseSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3Rp
bGwgaW4gdGhlcmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1jbGVhci0yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzY2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMi5o
dG1sCkBAIC0wLDAgKzEsMTY0IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhbiBvYmplY3Qgc3RvcmUg
dGhlbiBwb3B1bGF0ZXMgaXQsIHRoZW4gY29tbWl0cyB0aGF0IHRyYW5zYWN0aW9uLjxicj4KK0l0
IHRoZW4gY2xlYXJzIGl0LCBidXQgYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uPGJyPgorRmluYWxs
eSBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgZnJvbSBzdGVwIDEgaXMgc3RpbGwg
aW4gdGhlcmUuPGJyPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwor
dmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3Jl
Q2xlYXIyRGF0YWJhc2UiLCAxKTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBm
dW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVu
dC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1
ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7
CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIsIHsgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyMSIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXIyIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNCIpOworICAgIHZhciByZXF1
ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjYiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
NyIpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI4Iik7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjkiKTsKKworICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0
MSgpOworICAgICAgICBkYXRhYmFzZS5jbG9zZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFu
c2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRp
YWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsg
ZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRDaGVja2Vy
KGV2ZW50KSB7CisgICAgYWxlcnQoIlZhbHVlIGdvdHRlbiB3YXMgIiArIGV2ZW50LnRhcmdldC5y
ZXN1bHQpOworfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB2YXIgb3BlblJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ2xlYXIyRGF0YWJh
c2UiLCAxKTsKKworICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVuUmVxdWVzdC5vbmJsb2NrZWQgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBhbGVydCgiUmVxdWVzdCB1bmV4cGVjdGVkIGJsb2NrZWQgLSAi
ICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJSZXF1ZXN0IHVu
ZXhwZWN0ZWQgdXBncmFkZW5lZWRlZCAtICIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBhbGVydCgiU3VjY2VzcyBvcGVuaW5nIGRhdGFiYXNlIGNvbm5lY3Rpb24gLSBTdGFydGlu
ZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNh
Y3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgdmFyIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
IAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsg
KytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkpOworICAgICAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJPYmplY3Qgc3Rv
cmUgY2xlYXJlZCwgbWFraW5nIHN1cmUgaXRzIGFsbCBnb25lLiIpOworICAgICAgICAgICAgdmFy
IG5ld1JlcXVlc3RzOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gOTsgKytpKSB7
CisgICAgICAgICAgICAgICAgbmV3UmVxdWVzdHMgPSBvYmplY3RTdG9yZS5nZXQoaSk7CisgICAg
ICAgICAgICAgICAgbmV3UmVxdWVzdHMub25zdWNjZXNzID0gZ2V0Q2hlY2tlcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UnbGwgYmUgb24gdGhlIGxhc3Qg
cmVxdWVzdCBoZXJlLCBjYW4ganVzdCBvdmVycmlkZSBpdC4KKyAgICAgICAgICAgIG5ld1JlcXVl
c3RzLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgZ2V0Q2hl
Y2tlcihldmVudCk7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24uYWJvcnQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFuc2FjdGlvbiBh
Ym9ydCIpOworICAgICAgICAgICAgY29udGludWVUZXN0MigpOworICAgICAgICB9CisKKyAgICAg
ICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29tcGxldGUiKTsKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0ZSB0cmFu
c2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIC0gIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MigpCit7Cisg
ICAgdmFyIG9wZW5SZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUNsZWFyMkRhdGFiYXNlIiwgMSk7CisKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3RlZCBlcnJvciAtICIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25ibG9j
a2VkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlJlcXVlc3QgdW5leHBlY3Rl
ZCBibG9ja2VkIC0gIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKyAgICBvcGVu
UmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVy
dCgiUmVxdWVzdCB1bmV4cGVjdGVkIHVwZ3JhZGVuZWVkZWQgLSAiICsgZXZlbnQpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIlN1Y2Nlc3Mgb3BlbmluZyBkYXRhYmFzZSBjb25uZWN0
aW9uIC0gU3RhcnRpbmcgZmluYWwgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgdmFyIGRhdGFiYXNl
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJh
c2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAg
dmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9y
ZSIpOworICAgIAorICAgICAgICB2YXIgcmVxdWVzdDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDE7
IGkgPD0gOTsgKytpKSB7CisgICAgICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGkp
OworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBnZXRDaGVja2VyOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsK
KyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLm9u
Y29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgYWxlcnQoIlJlYWR3cml0
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
CisKKyAgICAgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBhbGVydCgiUmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IgLSAi
ICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9CisgICAgfQorfQorPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1j
bGVhci1mYWlsdXJlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2Y2OGZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDExIEBACitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDog
T2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorQUxFUlQ6IEZhaWxlZCB0byBwdXQgcmVj
b3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQg
dG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQKK0FM
RVJUOiBGYWlsZWQgdG8gY2xlYXIgb2JqZWN0IHN0b3JlIHRoYXQgaGFzIGJlZW4gZGVsZXRlZAor
QUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
CitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24KK0FMRVJUOiBGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBzdG9yZSB3aXRo
IGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9y
ZSB3aXRoIGluYWN0aXZlIHRyYW5zYWN0aW9uCitBTEVSVDogcmVhZHdyaXRlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMg
dGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElE
Qk9iamVjdFN0b3JlLmNsZWFyKCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtcHV0LWFuZC1jbGVhci1mYWlsdXJlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1
dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZGY1ODEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMuaHRtbApA
QCAtMCwwICsxLDExOSBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBj
YW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0U3RvcmUucHV0KCkgYW5kIElEQk9iamVj
dFN0b3JlLmNsZWFyKCkuCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
Cit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3Rv
cmVQdXRBbmRDbGVhckZhaWx1cmVzRGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKKworY3Jl
YXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0
KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJz
aW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2
ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFi
YXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBkYXRhYmFz
ZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5w
dXQoImJhciIsIE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQo
IkZhaWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBr
ZXkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gcHV0IHJlY29yZCBpbnRvIG9iamVjdCBz
dG9yZSB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY2xlYXIoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSB0aGF0IGhh
cyBiZWVuIGRlbGV0ZWQiKTsKKyAgICAgICAgfSAKKworICAgICAgICAvLyBSZWNyZWF0ZSB0aGUg
b2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNlIDIuCisgICAgICAgIHZh
ciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3Rv
cmUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7ICAgIAorICAgIH0K
KyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
Iik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNh
Y3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJJbml0aWFs
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2
ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVUZXN0
MSgpCit7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RP
YmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICB0cnkgeworICAg
ICAgICBvYmplY3RTdG9yZS5jbGVhcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhbGVy
dCgiRmFpbGVkIHRvIGNsZWFyIG9iamVjdCBzdG9yZSBpbiByZWFkLW9ubHkgdHJhbnNhY3Rpb24i
KTsKKyAgICB9CisgICAgCisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rp
b24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUg
PSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAvLyBR
dWV1ZSB1cCBhIHdob2xlIGJ1bmNoIG9mIGdldHMgdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gYWxp
dmUgZm9yIGF3aGlsZQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAg
b2JqZWN0U3RvcmUuZ2V0KCJmb28iKTsKKworICAgIHZhciB0ZXN0V2hpbGVJbmFjdGl2ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJi
YXIiLCAiZm9vIik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZh
aWxlZCB0byBwdXQgcmVjb3JkIGludG8gb2JqZWN0IHN0b3JlIHdpdGggaW5hY3RpdmUgdHJhbnNh
Y3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IG9iamVjdFN0b3JlLmNsZWFyKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
YWxlcnQoIkZhaWxlZCB0byBjbGVhciBvYmplY3Qgc3RvcmUgd2l0aCBpbmFjdGl2ZSB0cmFuc2Fj
dGlvbiIpOworICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KHRlc3RXaGls
ZUluYWN0aXZlLCAwKTsKKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAg
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQo
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgwZmYwYy4u
N2NhZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE1LTEwLTMwICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBJREJPYmpl
Y3RTdG9yZS5jbGVhcigpIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNsZWFyLTEuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbklt
cGwuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3Rv
cmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaDoKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFib3J0
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmlzQWJvcnRpbmcpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OnJl
cGxhY2VLZXlWYWx1ZVN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1D
bGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNz
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVj
dFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmg6CisKIDIwMTUtMTAtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFRhcHBpbmcgYW5kIGhvbGRpbmcgYSBsaW5rIHNob3VsZCBoYXZlIGEgc2hhcmUg
b3B0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IGQwNThmNDEuLmIx
ZWQ2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC0xMjQsNiArMTI0
LDIxIEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhCiAgICAgY29tcGxldGVPcGVyYXRpb24ocmVz
dWx0RGF0YSk7CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVy
OjpjbGVhck9iamVjdFN0b3JlIik7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CisK
KyAgICBtX2RlbGVnYXRlLT5jbGVhck9iamVjdFN0b3JlKElEQlJlcXVlc3REYXRhKG9wZXJhdGlv
biksIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZSIpOworICAgIGNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOworfQorCiB2
b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgUmVmUHRyPElEQktleT4mIGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mIHZhbHVlLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBv
dmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggNTI5MTFl
Ny4uZjJjY2JiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTY3LDYgKzY3
LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVy
YXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxl
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
Jik7CisKICAgICB2b2lkIHB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgUmVmUHRyPElE
QktleT4mLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdh
dGUuaAppbmRleCBlYWRhNzM2Li44OTcxYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElEQlJlc291cmNlSWRlbnRpZmllciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIElEQktleSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCBjY2UyYjFkLi4z
NjViYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMjYwLDkgKzI2MCwyNyBA
QCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xl
YXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y2xlYXIi
KTsKKworICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKKyAgICAgICAgZWMg
PSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpSZWFkT25seUVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFtX3RyYW5z
YWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhjZXB0aW9u
Q29kZT4oSURCRXhjZXB0aW9uQ29kZTo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkludmFs
aWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSgqY29udGV4dCwgKnRoaXMpOworICAgIHJldHVybiBhZG9wdFJlZihyZXF1ZXN0LmxlYWtS
ZWYoKSk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cAppbmRleCBlNGMyY2Q0Li5jYjI5NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRE9N
UmVxdWVzdFN0YXRlLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklEQkJp
bmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTE5
MSw2ICsxOTIsMTcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9u
ZShjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXQKICAgICBtX3Jlc3VsdCA9IElE
QkFueTo6Y3JlYXRlKFdURjo6bW92ZSh2YWx1ZSkpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBE
T01SZXF1ZXN0U3RhdGUgc3RhdGUoY29udGV4dCk7CisgICAgaWYgKGF1dG8qIGV4ZWNTdGF0ZSA9
IHN0YXRlLmV4ZWMoKSkKKyAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZShleGVjU3RhdGUtPnZtKCksIEpTQzo6anNVbmRlZmluZWQoKSkpOwor
fQorCiB2b2lkIElEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBtX2lkYkVycm9yID0gcmVzdWx0RGF0YS5lcnJvcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJl
cXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
UmVxdWVzdEltcGwuaAppbmRleCAxZGZmYjEyLi4wYTdmODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBJREJL
ZXlEYXRhKik7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIAog
cHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCBiYmFm
NjZiLi5hNTQ3MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDE0LDYgKzQx
NCwzNSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBs
ZXRlZChyZXN1bHREYXRhKTsKIH0KIAorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisKKyAgICB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIGF1dG8g
b3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0
KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyLCAmSURCVHJh
bnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisKKyAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgc2Vy
dmVyQ29ubmVjdGlvbigpLmNsZWFyT2JqZWN0U3RvcmUob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENsZWFyT2Jq
ZWN0U3RvcmVPblNlcnZlciIpOworCisgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgp
OworICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKK30KKwogUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJLZXkqIGtl
eSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4
IGIzM2I2NTQuLjRlZjUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRPckFkZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IElEQk9iamVjdFN0b3JlJiwgSURCS2V5Jik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RD
bGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYp
OwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSk7CiAKQEAgLTEyMSw2ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpOwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihUcmFu
c2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25z
dCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIHB1dE9yQWRkT25TZXJ2ZXIoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBSZWZQdHI8SURCS2V5PiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlJik7CiAgICAgdm9p
ZCBkaWRQdXRPckFkZE9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaAppbmRleCA3ZWM1OGYyLi4wOGZhNjQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdT
dG9yZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURCRXJyb3Ig
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpID0gMDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkgPSAw
OworICAgIHZpcnR1YWwgSURCRXJyb3IgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBr
ZXlFeGlzdHMpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGRlbGV0ZVJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJikgPSAwOwogICAgIHZpcnR1YWwg
SURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggZDY4ZDQ4Ni4uYjEwYzQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTczLDYgKzczLDExIEBAIHZvaWQgSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRlT2JqZWN0U3RvcmUocmVzdWx0KTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQoreworICAgIG1fZGVsZWdhdGUtPmRpZENsZWFyT2Jq
ZWN0U3RvcmUocmVzdWx0KTsKK30KKwogdm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZFB1
dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKIHsKICAgICBtX2RlbGVnYXRlLT5k
aWRQdXRPckFkZChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDM1
NWNiZDEuLjI0NGQ5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTU0LDYg
KzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
Jik7CiAgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7
CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7Cisg
ICAgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2
b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZEdldFJl
Y29yZChjb25zdCBJREJSZXN1bHREYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmgKaW5kZXggNjYyMzgzYS4uMzFkMGE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc3VsdERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHV0T3JBZGQo
Y29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggMDJiZGViZC4uOWZm
Mjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKQEAgLTE4MCw2ICsxODAsMTcgQEAgdm9pZCBJREJTZXJ2ZXI6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3Qg
U3RyaW4KICAgICB0cmFuc2FjdGlvbi0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlTmFtZSk7CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3Rv
cmUiKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHRyYW5zYWN0aW9uLT5jbGVhck9iamVjdFN0b3JlKHJlcXVl
c3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOworfQorCiB2b2lkIElEQlNlcnZlcjo6cHV0
T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJTZXJ2ZXI6OnB1dE9yQWRkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMzFkODczYi4uZGEw
MGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKICAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJ
bmZvJik7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcAppbmRleCBmZWFhZmEzLi5mODdlMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTkwLDYgKzkwLDI3IEBAIHZvaWQgTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5T2JqCiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEY6Om1v
dmUob2JqZWN0U3RvcmUpOwogfQogCit2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZUNsZWFyZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBzdGQ6
OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+JiYga2V5VmFsdWVNYXApCit7CisgICAgQVNTRVJUKG1f
b2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOworCisgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2NsZWFyZWRLZXlWYWx1ZU1hcHMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CisK
KyAgICAvLyBJZiB0aGlzIG9iamVjdCBzdG9yZSBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoaXMgdHJhbnNhY3Rpb24sIHdlIGRvbid0IG5lZWQgdG8gcmVtZW1iZXIgdGhpcyBjbGVh
cmluZy4KKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBJZiB2YWx1ZXMgaGFkIHByZXZpb3VzbHkgYmVlbiBjaGFuZ2VkIGR1cmluZyB0aGlz
IHRyYW5zYWN0aW9uLCBmb2xkIHRob3NlIGNoYW5nZXMgYmFjayBpbnRvIHRoZQorICAgIC8vIGNs
ZWFyZWQga2V5LXZhbHVlIG1hcCBub3csIHNvIHdlIGhhdmUgZXhhY3RseSB0aGUgbWFwIHRoYXQg
d2lsbCBuZWVkIHRvIGJlIHJlc3RvcmVkIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLgor
ICAgIGF1dG8gb3JpZ2luYWxWYWx1ZXMgPSBtX29yaWdpbmFsVmFsdWVzLnRha2UoJm9iamVjdFN0
b3JlKTsKKyAgICBpZiAob3JpZ2luYWxWYWx1ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXJh
dG9yIDogKm9yaWdpbmFsVmFsdWVzKQorICAgICAgICAgICAga2V5VmFsdWVNYXAtPnNldChpdGVy
YXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlKTsKKyAgICB9CisKKyAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gV1RGOjptb3ZlKGtleVZhbHVlTWFwKTsKK30KKwogdm9pZCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3Jl
JiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIEFTU0VSVChtX29i
amVjdFN0b3Jlcy5jb250YWlucygmb2JqZWN0U3RvcmUpKTsKQEAgLTk3LDYgKzExOCwxMSBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogICAgIGlmIChtX2lzQWJvcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIElmIHRoaXMgb2JqZWN0IHN0b3JlIGhhZCBiZWVuIGNsZWFyZWQgZHVy
aW5nIHRoZSB0cmFuc2FjdGlvbiwgbm8gcG9pbnQgaW4gcmVjb3JkaW5nIHRoaXMKKyAgICAvLyBp
bmRpdmlkdWFsIGtleS92YWx1ZSBjaGFuZ2UgYXMgaXRzIGVudGlyZSBrZXkvdmFsdWUgbWFwIHdp
bGwgYmUgcmVzdG9yZWQgdXBvbiBhYm9ydC4KKyAgICBpZiAobV9jbGVhcmVkS2V5VmFsdWVNYXBz
LmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gb3Jp
Z2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUsIG51bGxw
dHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBvcmln
aW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVl
TWFwPigpOwpAQCAtMTM4LDcgKzE2NCwxMyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjphYm9ydCgpCiAgICAgICAgIEFTU0VSVChtX29yaWdpbmFsS2V5R2VuZXJhdG9ycy5j
b250YWlucyhvYmplY3RTdG9yZSkpOwogICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJh
dG9yVmFsdWUobV9vcmlnaW5hbEtleUdlbmVyYXRvcnMuZ2V0KG9iamVjdFN0b3JlKSk7CiAKLSAg
ICAgICAgYXV0byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMuZ2V0KG9iamVjdFN0b3Jl
KTsKKyAgICAgICAgYXV0byBjbGVhcmVkS2V5VmFsdWVNYXAgPSBtX2NsZWFyZWRLZXlWYWx1ZU1h
cHMudGFrZShvYmplY3RTdG9yZSk7CisgICAgICAgIGlmIChjbGVhcmVkS2V5VmFsdWVNYXApIHsK
KyAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXBsYWNlS2V5VmFsdWVTdG9yZShXVEY6Om1vdmUo
Y2xlYXJlZEtleVZhbHVlTWFwKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8ga2V5VmFsdWVNYXAgPSBtX29yaWdpbmFsVmFsdWVzLnRha2Uob2JqZWN0
U3RvcmUpOwogICAgICAgICBpZiAoIWtleVZhbHVlTWFwKQogICAgICAgICAgICAgY29udGludWU7
CiAKQEAgLTE0Niw4ICsxNzgsNiBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjphYm9ydCgpCiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+ZGVsZXRlUmVjb3JkKGVudHJ5Lmtl
eSk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS0+c2V0S2V5VmFsdWUoZW50cnkua2V5LCBlbnRy
eS52YWx1ZSk7CiAgICAgICAgIH0KLQotICAgICAgICBtX29yaWdpbmFsVmFsdWVzLnJlbW92ZShv
YmplY3RTdG9yZSk7CiAgICAgfQogCiAgICAgZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oCmluZGV4IDU4Y2E1ZGUuLjI5MDIxNWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2U7
IH0KICAgICBib29sIGlzV3JpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5tb2RlKCkgIT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJlYWRPbmx5OyB9CisgICAgYm9vbCBpc0Fib3J0
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fib3J0aW5nOyB9CiAKICAgICBjb25zdCBJREJEYXRh
YmFzZUluZm8mIG9yaWdpbmFsRGF0YWJhc2VJbmZvKCkgY29uc3Q7CiAKQEAgLTU5LDYgKzYwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlPYmplY3RT
dG9yZSYpOwogICAgIHZvaWQgcmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiwg
Y29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgb2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5p
cXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4pOworICAgIHZvaWQgb2JqZWN0U3RvcmVDbGVhcmVk
KE1lbW9yeU9iamVjdFN0b3JlJiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPiYmKTsKIAog
ICAgIHZvaWQgYWJvcnQoKTsKICAgICB2b2lkIGNvbW1pdCgpOwpAQCAtODIsNyArODQsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCB1aW50NjRfdD4gbV9vcmln
aW5hbEtleUdlbmVyYXRvcnM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlPYmplY3RTdG9yZT4+IG1fZGVsZXRlZE9iamVjdFN0b3JlczsKICAgICBIYXNoTWFwPE1l
bW9yeU9iamVjdFN0b3JlKiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPj4gbV9vcmlnaW5h
bFZhbHVlczsKLQorICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCBzdGQ6OnVuaXF1ZV9w
dHI8S2V5VmFsdWVNYXA+PiBtX2NsZWFyZWRLZXlWYWx1ZU1hcHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjA3
ZWFmYy4uYzg0NjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE2
MSw2ICsxNjEsMjcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICByZXR1cm4gSURCRXJy
b3IoKTsKIH0KIAorSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZSIpOworICAgIEFTU0VSVChvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpOworCisgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50
aWZpZXIsIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwor
CisjaWZuZGVmIE5ERUJVRworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5n
ZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPmlzV3Jp
dGluZygpKTsKKyNlbmRpZgorCisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVz
QnlJZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIGlmICghb2JqZWN0
U3RvcmUpCisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpDb25zdHJh
aW50RXJyb3IpOworCisgICAgb2JqZWN0U3RvcmUtPmNsZWFyKCk7CisKKyAgICByZXR1cm4gSURC
RXJyb3IoKTsKK30KKwogdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlbW92ZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW1vdmVPYmpl
Y3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IGVlZTgzOTcuLjc3YmJlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgY29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
SURCRXJyb3IgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIElEQkVycm9yIGNsZWFyT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJv
ciBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmLCBib29sJiBrZXlFeGlzdHMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1dFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
VGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwCmluZGV4IDE0NWM4OWUuLjI0MDlhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcApAQCAtNzMsNiArNzMsMjIgQEAgYm9vbCBNZW1vcnlPYmplY3RTdG9yZTo6Y29udGFp
bnNSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIHJldHVybiBtX2tleVZhbHVlU3Rv
cmUtPmNvbnRhaW5zKGtleSk7CiB9CiAKK3ZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OmNsZWFyKCkK
K3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmNsZWFyIik7CisgICAg
QVNTRVJUKG1fd3JpdGVUcmFuc2FjdGlvbik7CisKKyAgICBtX3dyaXRlVHJhbnNhY3Rpb24tPm9i
amVjdFN0b3JlQ2xlYXJlZCgqdGhpcywgV1RGOjptb3ZlKG1fa2V5VmFsdWVTdG9yZSkpOworfQor
Cit2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpyZXBsYWNlS2V5VmFsdWVTdG9yZShzdGQ6OnVuaXF1
ZV9wdHI8S2V5VmFsdWVNYXA+JiYgc3RvcmUpCit7CisgICAgQVNTRVJUKG1fd3JpdGVUcmFuc2Fj
dGlvbik7CisgICAgQVNTRVJUKG1fd3JpdGVUcmFuc2FjdGlvbi0+aXNBYm9ydGluZygpKTsKKwor
ICAgIG1fa2V5VmFsdWVTdG9yZSA9IFdURjo6bW92ZShzdG9yZSk7Cit9CisKIHZvaWQgTWVtb3J5
T2JqZWN0U3RvcmU6OmRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIk1lbW9yeU9iamVjdFN0b3JlOjpkZWxldGVSZWNvcmQiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmgKaW5kZXggNmJlMTk2ZS4uZDA0N2E3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmgKQEAgLTYzLDYgKzYzLDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGN1cnJlbnRLZXlH
ZW5lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5R2VuZXJhdG9yVmFsdWU7IH0KICAg
ICB2b2lkIHNldEtleUdlbmVyYXRvclZhbHVlKHVpbnQ2NF90IHZhbHVlKSB7IG1fa2V5R2VuZXJh
dG9yVmFsdWUgPSB2YWx1ZTsgfQogCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgcmVwbGFj
ZUtleVZhbHVlU3RvcmUoc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPiYmKTsKKwogICAgIFRo
cmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlRm9yS2V5KGNvbnN0IElEQktleURhdGEmKSBjb25zdDsK
IAogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggZDQxYmEwMi4uMzBiM2ZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0yOTYsNiArMjk2LDM1IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1EZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsCiAgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvcik7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURC
RGF0YWJhc2U6OmNsZWFyT2JqZWN0U3RvcmUiKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNr
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
Q2xlYXJPYmplY3RTdG9yZSwgY2FsbGJhY2tJRCwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKyAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNs
ZWFyT2JqZWN0U3RvcmUiKTsKKworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgbV9i
YWNraW5nU3RvcmUtPmNsZWFyT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIpOworCisgICAgSURCRXJyb3IgZXJyb3I7CisgICAgbV9zZXJ2ZXIu
cG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ2xlYXJPYmplY3RTdG9yZSwgY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvcikpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ2xl
YXJPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9y
JiBlcnJvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVk
REIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1DbGVhck9iamVjdFN0b3Jl
Iik7CisKKyAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9y
KTsKK30KKwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlLCBLZXlEYXRhQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggNmQzZjA3
Mi4uMmNiNjNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgRXJyb3JDYWxsYmFjayk7CiAgICAg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29u
c3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIEVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBFcnJvckNhbGxiYWNrKTsKICAgICB2b2lkIHB1dE9yQWRkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZURhdGEsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
LCBLZXlEYXRhQ2FsbGJhY2spOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFZhbHVlRGF0YUNhbGxiYWNrKTsKICAgICB2b2lkIGNv
bW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxi
YWNrKTsKQEAgLTEwMCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5UcmFuc2Fj
dGlvbkluQmFja2luZ1N0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHZvaWQg
cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYpOwogICAgIHZvaWQgcGVyZm9ybURlbGV0ZU9iamVjdFN0b3JlKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAg
ICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwg
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgcGVyZm9ybUdl
dFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmKTsKICAgICB2b2lkIHBlcmZvcm1BY3RpdmF0ZVRyYW5z
YWN0aW9uSW5CYWNraW5nU3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mKTsKQEAgLTEwOCw2ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8mKTsKICAgICB2b2lk
IGRpZFBlcmZvcm1DcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAgICAgdm9pZCBk
aWRQZXJmb3JtRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJFcnJvciYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICB2b2lk
IGRpZFBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImKTsKICAgICB2b2lkIGRpZFBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCS2V5RGF0YSYpOwog
ICAgIHZvaWQgZGlkUGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImKTsKICAgICB2b2lk
IGRpZFBlcmZvcm1Db21taXRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNw
cAppbmRleCA0NDM5YmQyLi4zNzJiM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcApAQCAtMTQ2LDYgKzE0NiwxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdQogICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmRpZENsZWFyT2JqZWN0U3Rv
cmUiKTsKKworICAgIG1fY29ubmVjdGlvblRvQ2xpZW50LmRpZENsZWFyT2JqZWN0U3RvcmUocmVz
dWx0RGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKaW5kZXgg
NGI1Njc2YS4uOGYxMWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21taXRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgY29uc3QgSURCRXJyb3ImKTsKICAg
ICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2
b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lk
IGRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCiBwcml2YXRlOgog
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYsIElEQkNv
bm5lY3Rpb25Ub0NsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDU3ODJjYTguLmVhNmI2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTEzMCw2ICsxMzAsMjEgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWUKICAgICB9KTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQoreworICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlIik7CisKKyAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbkluZm8uaWRlbnRpZmllcigpID09IHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpKTsKKworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiBzZWxmKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFz
ZSgpLmNsZWFyT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgW3RoaXMs
IHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3Rv
cmUgKGNhbGxiYWNrKSIpOworICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAg
ICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGlkQ2xlYXJPYmplY3RTdG9yZShJREJSZXN1bHREYXRh
OjpjbGVhck9iamVjdFN0b3JlU3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigp
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRD
bGVhck9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmVycm9yKHJlcXVlc3REYXRhLnJlcXVlc3RJ
ZGVudGlmaWVyKCksIGVycm9yKSk7CisgICAgfSk7Cit9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYg
dmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVN
b2RlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXgg
ODBhOGZhZS4uOWM2Njg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsK
ICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0
b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERh
dGEmLCBjb25zdCBJREJLZXlEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCA1YTVjN2Mx
Li4yY2Y1YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC05OCw2ICs5OCwxMSBAQCBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZU9iamVjdFN0b3JlU3VjY2Vzcyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZQogICAgIHJldHVybiB7IElEQlJlc3VsdFR5cGU6OkRlbGV0ZU9iamVj
dFN0b3JlU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKIH0KIAorSURCUmVzdWx0RGF0YSBJ
REJSZXN1bHREYXRhOjpjbGVhck9iamVjdFN0b3JlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIHJldHVybiB7IElEQlJlc3VsdFR5
cGU6OkNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OworfQorCiBJ
REJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1
bHRLZXkpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlwZTo6UHV0T3JB
ZGRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCBiODA1NGFk
Li45ZDY1MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBJ
REJSZXN1bHRUeXBlIHsKICAgICBPcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkLAogICAgIENyZWF0
ZU9iamVjdFN0b3JlU3VjY2VzcywKICAgICBEZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MsCisgICAg
Q2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MsCiAgICAgUHV0T3JBZGRTdWNjZXNzLAogICAgIEdldFJl
Y29yZFN1Y2Nlc3MsCiB9OwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElE
QlJlc3VsdERhdGEgb3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKICAg
ICBzdGF0aWMgSURCUmVzdWx0RGF0YSBjcmVhdGVPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgZGVsZXRlT2Jq
ZWN0U3RvcmVTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpOworICAgIHN0YXRp
YyBJREJSZXN1bHREYXRhIGNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYpOwogICAgIHN0YXRpYyBJREJSZXN1bHREYXRhIHB1dE9yQWRkU3VjY2Vzcyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJLZXlEYXRhJik7CiAgICAgc3Rh
dGljIElEQlJlc3VsdERhdGEgZ2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Q
cm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBkYzA5YTA5Li5hZmFkYjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcApAQCAtMTM1LDYgKzEzNSwxNCBAQCB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKICAgICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkQ2xlYXJPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
QEAgLTE4Myw2ICsxOTEsMTQgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY28KICAgICB9KTsKIH0K
IAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCit7
CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXJdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVz
dERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IElEQktleSoga2V5LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgK
aW5kZXggYjZhYzQyOS4uZGI1NjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtNjAs
NiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElE
QlJlc291cmNlSWRlbnRpZmllciYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1l
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmpl
Y3RTdG9yZU92ZXJ3cml0ZU1vZGUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJREJLZXkqKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgb3ZlcnJpZGUg
ZmluYWw7CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBm
aW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
dWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVy
c2lvbikgb3ZlcnJpZGUgZmluYWw7Cg==
</data>
<flag name="review"
          id="289554"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>