<?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>188417</bug_id>
          
          <creation_ts>2018-08-08 14:02:15 -0700</creation_ts>
          <short_desc>Consolidate data/string API loading paths</short_desc>
          <delta_ts>2018-08-16 13:53:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1448832</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:02:15 -0700</bug_when>
    <thetext>Consolidate data/string API loading paths</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448833</commentid>
    <comment_count>1</comment_count>
      <attachid>346791</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:05:14 -0700</bug_when>
    <thetext>Created attachment 346791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448834</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-08 14:07:30 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448836</commentid>
    <comment_count>3</comment_count>
      <attachid>346792</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:14:21 -0700</bug_when>
    <thetext>Created attachment 346792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448845</commentid>
    <comment_count>4</comment_count>
      <attachid>346796</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:26:46 -0700</bug_when>
    <thetext>Created attachment 346796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448848</commentid>
    <comment_count>5</comment_count>
      <attachid>346797</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:32:33 -0700</bug_when>
    <thetext>Created attachment 346797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448855</commentid>
    <comment_count>6</comment_count>
      <attachid>346800</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-08 14:52:54 -0700</bug_when>
    <thetext>Created attachment 346800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449020</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-09 10:07:13 -0700</bug_when>
    <thetext>Windows failure is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450377</commentid>
    <comment_count>8</comment_count>
      <attachid>347187</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 11:55:13 -0700</bug_when>
    <thetext>Created attachment 347187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450401</commentid>
    <comment_count>9</comment_count>
      <attachid>347187</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-15 12:57:28 -0700</bug_when>
    <thetext>Comment on attachment 347187
Patch

I reviewed this last week and didn&apos;t spot any problems, but didn&apos;t r+ because I figured another pair of eyes couldn&apos;t hurt. Surprised it didn&apos;t receive any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450861</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-16 13:52:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450862</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-16 13:53:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/43394949&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346791</attachid>
            <date>2018-08-08 14:05:14 -0700</date>
            <delta_ts>2018-08-08 14:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180808140514.patch</filename>
            <type>text/plain</type>
            <size>17891</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ3MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA4LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA4
LTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0MzE0LCByMjM0MzIwLCBhbmQgcjIzNDMyMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0
NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsbwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi1SZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6RGF0YSogZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCitSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsbwogCiAgICAgTG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0g
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuZGF0YSA9IGRh
dGEtPmRhdGFSZWZlcmVuY2UoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5kYXRhID0gZGF0YTsKICAg
ICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IE1JTUVUeXBlOwogICAgIGxvYWRQYXJhbWV0ZXJz
LmVuY29kaW5nTmFtZSA9IGVuY29kaW5nOwogICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJp
bmcgPSBiYXNlVVJMOwpAQCAtMTA3OCwzNiArMTA3OCw2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKIH0K
IAotLy8gRklYTUU6IEdldCByaWQgb2YgbG9hZEhUTUxTdHJpbmcgYW5kIGp1c3QgdXNlIGxvYWRE
YXRhIGluc3RlYWQuCi1SZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpOwotCi0gICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotCi0gICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCAhYmFzZVVSTC5pc0VtcHR5KCkgPyBi
YXNlVVJMIDogYmxhbmtVUkwoKS5zdHJpbmcoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKLQotICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7
Ci0gICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSAidGV4dC9odG1sIl9zOwotICAgIGxvYWRQ
YXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOwotICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJM
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwotfQotCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICAvLyBXaGVu
IHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHBy
b3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCkBAIC0xMTQ1LDI4ICsxMTE1LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaQogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwotCi0gICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFn
ZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7Ci0KLSAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmlu
ZyA9IHN0cmluZzsKLSAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9ICJ0ZXh0L3BsYWluIl9z
OwotICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKLSAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotfQotCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NDU2LDEwICs0NTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKExvYWRQYXJhbWV0ZXJzJik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0
cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0
YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0
cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShB
UEk6OkRhdGEqLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIG5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJD
b3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2lu
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDIyICsxOTEsMzcgQEAgdm9pZCBXS1BhZ2VMb2FkRmls
ZVdpdGhVc2VyRGF0YShXS1BhZ2VSZQogCiB2b2lkIFdLUGFnZUxvYWREYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3Ry
aW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJl
ZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVmZXJl
bmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYp
LCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZERhdGFXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBkYXRhUmVmLCBXS1N0cmluZ1Jl
ZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRE
YXRhKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmlu
ZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFS
ZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0
YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29k
aW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwor
fQorCitzdGF0aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQoreworICAgIFN0cmluZyBzdHJpbmcgPSB0b1dURlN0
cmluZyhzdHJpbmdSZWYpOworICAgIFN0cmluZyBlbmNvZGluZzsKKyAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHN0cmluZy5pczhCaXQoKSkg
eworICAgICAgICBlbmNvZGluZyA9ICJsYXRpbjEiX3M7CisgICAgICAgIGRhdGEgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5n
Lmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OworICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29k
aW5nID0gInV0Zi0xNiJfczsKKyAgICAgICAgZGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6
ZW9mKFVDaGFyKSB9OworICAgIH0KKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKGRhdGEs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJp
bmcoYmFzZVVSTFJlZikpOworICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBh
Z2VSZWYsIGh0bWxTdHJpbmdSZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGFSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmlu
ZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0
YVJlZikpOworICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwgInRleHQvaHRt
bCJfcywgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYgdW5yZWFjaGFi
bGVVUkxSZWYpCkBAIC0yMjEsMTIgKzIzNiwxMiBAQCB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aFVzCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRTdHJp
bmdSZWYpKTsgICAgCisgICAgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShw
YWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRT
dHJpbmdSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsgICAgCisgICAgbG9hZFN0cmluZyhwYWdl
UmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmlu
ZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKWxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKUhUTUxTCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRh
ID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWRI
VE1MU3RyaW5nKEhUTUxTdHJpbmcsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbSFRNTFN0cmluZyBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgX3BhZ2UtPmxvYWRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCB9LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRh
QXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
IGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCkBAIC0xNjgsMTcgKzE2
OSwxMSBAQCAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlCiAKIC0gKHZv
aWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
dGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQogewotICAgIFJlZlB0cjxBUEk6OkRhdGE+
IGFwaURhdGE7Ci0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGNvcHkgdGhlIGRhdGEuCi0gICAgICAgIGFwaURhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKGRhdGEpOwotICAgIH0KLQogICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IHdr
VXNlckRhdGE7CiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRhID0gT2JqQ09i
amVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWREYXRhKGFwaURh
dGEuZ2V0KCksIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBfcGFnZS0+bG9hZERhdGEo
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0s
IE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZT
dHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShy
ZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRGF0
YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJF
bmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0YShB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGRhdGEpLnB0cigpLCBNSU1FVHlwZSwgY2hh
cmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05h
bWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtNDIzNyw3ICs0MjM3LDcgQEAgLSAodm9pZClfbG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWREYXRhKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSkucHRy
KCksIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJp
bmcsIFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcsIFdlYktpdDo6T2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKFdl
YktpdFdlYgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnRlbnQpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5sb2FkSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBTdHJpbmc6OmZyb21V
VEY4KGJhc2VVUkkpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGNvbnRlbnQpLCBjb250ZW50ID8gc3RybGVuKGNvbnRlbnQpIDog
MCB9LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkp
OwogfQogCiAvKioKQEAgLTI2MjIsNyArMjYyMiw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xv
YWRfcGxhaW5fdGV4dChXZWIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChwbGFpblRleHQpOwogCi0gICAgZ2V0
UGFnZSh3ZWJWaWV3KS5sb2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZzo6ZnJvbVVURjgocGxhaW5U
ZXh0KSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJsZW4ocGxhaW5UZXh0KSA6IDAg
fSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHJlbGVhc2VHQnl0ZXModW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGJ5
dGVzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFdl
YlBhZ2U6OmxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hCiAgICAgfQogfQogCi12b2lkIFdlYlBh
Z2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQg
V2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAg
ICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKQEAg
LTEzMjcsMTQgKzEzMjcsNiBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJh
bWV0CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgV1RGTW92
ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMu
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQotewotICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQ
YXJhbWV0ZXJzKTsKLQotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0
cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5i
YXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkU3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0
aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJh
c2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7Ci19Ci0KIHZvaWQgV2ViUGFn
ZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJh
bWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2MSw4ICsxMTYxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHRyeUNsb3NlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFy
YW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbG9hZFJlcXVlc3QoTG9h
ZFBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBsb2FkRGF0YShjb25zdCBMb2FkUGFyYW1ldGVycyYp
OwotICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQg
bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRv
Y3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKICAgICB2b2lkIHJl
bG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM0NjYzKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIExvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2
NF90IGZyYW1lSUQpCiAgICAgTG9hZFJlcXVlc3Qoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnMpCiAgICAgTG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnMpCi0gICAgTG9hZFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpMb2Fk
UGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhz
dHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKIAogICAgIE5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBv
aW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346792</attachid>
            <date>2018-08-08 14:14:21 -0700</date>
            <delta_ts>2018-08-08 14:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180808141420.patch</filename>
            <type>text/plain</type>
            <size>19058</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ3MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA4LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA4
LTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0MzE0LCByMjM0MzIwLCBhbmQgcjIzNDMyMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0
NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsbwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi1SZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6RGF0YSogZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCitSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsbwogCiAgICAgTG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0g
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuZGF0YSA9IGRh
dGEtPmRhdGFSZWZlcmVuY2UoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5kYXRhID0gZGF0YTsKICAg
ICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IE1JTUVUeXBlOwogICAgIGxvYWRQYXJhbWV0ZXJz
LmVuY29kaW5nTmFtZSA9IGVuY29kaW5nOwogICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJp
bmcgPSBiYXNlVVJMOwpAQCAtMTA3OCwzNiArMTA3OCw2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKIH0K
IAotLy8gRklYTUU6IEdldCByaWQgb2YgbG9hZEhUTUxTdHJpbmcgYW5kIGp1c3QgdXNlIGxvYWRE
YXRhIGluc3RlYWQuCi1SZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpOwotCi0gICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotCi0gICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCAhYmFzZVVSTC5pc0VtcHR5KCkgPyBi
YXNlVVJMIDogYmxhbmtVUkwoKS5zdHJpbmcoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKLQotICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7
Ci0gICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSAidGV4dC9odG1sIl9zOwotICAgIGxvYWRQ
YXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOwotICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJM
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwotfQotCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICAvLyBXaGVu
IHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHBy
b3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCkBAIC0xMTQ1LDI4ICsxMTE1LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaQogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwotCi0gICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFn
ZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7Ci0KLSAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmlu
ZyA9IHN0cmluZzsKLSAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9ICJ0ZXh0L3BsYWluIl9z
OwotICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKLSAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotfQotCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NDU2LDEwICs0NTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKExvYWRQYXJhbWV0ZXJzJik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0
cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0
YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0
cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShB
UEk6OkRhdGEqLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIG5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJD
b3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2lu
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDIyICsxOTEsMzcgQEAgdm9pZCBXS1BhZ2VMb2FkRmls
ZVdpdGhVc2VyRGF0YShXS1BhZ2VSZQogCiB2b2lkIFdLUGFnZUxvYWREYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3Ry
aW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJl
ZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVmZXJl
bmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYp
LCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZERhdGFXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBkYXRhUmVmLCBXS1N0cmluZ1Jl
ZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRE
YXRhKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmlu
ZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFS
ZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0
YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29k
aW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwor
fQorCitzdGF0aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQoreworICAgIFN0cmluZyBzdHJpbmcgPSB0b1dURlN0
cmluZyhzdHJpbmdSZWYpOworICAgIFN0cmluZyBlbmNvZGluZzsKKyAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHN0cmluZy5pczhCaXQoKSkg
eworICAgICAgICBlbmNvZGluZyA9ICJsYXRpbjEiX3M7CisgICAgICAgIGRhdGEgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5n
Lmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OworICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29k
aW5nID0gInV0Zi0xNiJfczsKKyAgICAgICAgZGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6
ZW9mKFVDaGFyKSB9OworICAgIH0KKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKGRhdGEs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJp
bmcoYmFzZVVSTFJlZikpOworICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBh
Z2VSZWYsIGh0bWxTdHJpbmdSZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGFSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmlu
ZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0
YVJlZikpOworICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwgInRleHQvaHRt
bCJfcywgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYgdW5yZWFjaGFi
bGVVUkxSZWYpCkBAIC0yMjEsMTIgKzIzNiwxMiBAQCB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aFVzCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRTdHJp
bmdSZWYpKTsgICAgCisgICAgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShw
YWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRT
dHJpbmdSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsgICAgCisgICAgbG9hZFN0cmluZyhwYWdl
UmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmlu
ZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKWxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKUhUTUxTCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRh
ID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWRI
VE1MU3RyaW5nKEhUTUxTdHJpbmcsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbSFRNTFN0cmluZyBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgX3BhZ2UtPmxvYWRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCB9LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRh
QXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
IGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCkBAIC0xNjgsMTcgKzE2
OSwxMSBAQCAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlCiAKIC0gKHZv
aWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
dGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQogewotICAgIFJlZlB0cjxBUEk6OkRhdGE+
IGFwaURhdGE7Ci0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGNvcHkgdGhlIGRhdGEuCi0gICAgICAgIGFwaURhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKGRhdGEpOwotICAgIH0KLQogICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IHdr
VXNlckRhdGE7CiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRhID0gT2JqQ09i
amVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWREYXRhKGFwaURh
dGEuZ2V0KCksIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBfcGFnZS0+bG9hZERhdGEo
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0s
IE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZT
dHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShy
ZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRGF0
YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJF
bmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0YShB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGRhdGEpLnB0cigpLCBNSU1FVHlwZSwgY2hh
cmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05h
bWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtNDIzNyw3ICs0MjM3LDcgQEAgLSAodm9pZClfbG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWREYXRhKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSkucHRy
KCksIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJp
bmcsIFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcsIFdlYktpdDo6T2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJBUElO
YXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1
ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5o
IgpAQCAtMjU4Myw3ICsyNTg0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKFdl
YktpdFdlYgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnRlbnQpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5sb2FkSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBTdHJpbmc6OmZyb21V
VEY4KGJhc2VVUkkpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY29udGVudCksIGNvbnRlbnQgPyBzdHJsZW4oY29udGVu
dCkgOiAwIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgU3RyaW5nOjpmcm9tVVRGOChiYXNl
VVJJKSk7CiB9CiAKIC8qKgpAQCAtMjYyMiwxMyArMjYyMyw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X2xvYWRfcGxhaW5fdGV4dChXZWIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChwbGFpblRleHQpOwogCi0g
ICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZzo6ZnJvbVVURjgo
cGxhaW5UZXh0KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbGVhc2VHQnl0ZXModW5zaWduZWQgY2hh
ciosIGNvbnN0IHZvaWQqIGJ5dGVzKQotewotICAgIC8vIEJhbGFuY2VkIGJ5IGdfYnl0ZXNfcmVm
IGluIHdlYmtpdF93ZWJfdmlld19sb2FkX2J5dGVzKCkuCi0gICAgZ19ieXRlc191bnJlZihzdGF0
aWNfY2FzdDxHQnl0ZXMqPihjb25zdF9jYXN0PHZvaWQqPihieXRlcykpKTsKKyAgICBnZXRQYWdl
KHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGxh
aW5UZXh0KSwgcGxhaW5UZXh0ID8gc3RybGVuKHBsYWluVGV4dCkgOiAwIH0sICJ0ZXh0L3BsYWlu
Il9zLCAiVVRGLTgiX3MsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKQEAgLTI2NTYs
MTEgKzI2NTEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2J5dGVzKFdlYktpdFdlCiAg
ICAgZ2NvbnN0cG9pbnRlciBieXRlc0RhdGEgPSBnX2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmYnl0
ZXNEYXRhU2l6ZSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChieXRlc0RhdGFTaXplKTsKIAotICAg
IC8vIEJhbGFuY2VkIGJ5IGdfYnl0ZXNfdW5yZWYgaW4gcmVsZWFzZUdCeXRlcy4KLSAgICBnX2J5
dGVzX3JlZihieXRlcyk7Ci0KLSAgICBSZWY8QVBJOjpEYXRhPiBkYXRhID0gQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZyhzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYnl0
ZXNEYXRhKSwgYnl0ZXNEYXRhU2l6ZSwgcmVsZWFzZUdCeXRlcywgYnl0ZXMpOwotICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoZGF0YS5wdHIoKSwgbWltZVR5cGUgPyBTdHJpbmc6OmZyb21V
VEY4KG1pbWVUeXBlKSA6IFN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpLAorICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgYnl0ZXNEYXRhU2l6ZSB9LCBtaW1lVHlwZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5
cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIiksCiAgICAgICAgIGVuY29kaW5nID8g
U3RyaW5nOjpmcm9tVVRGOChlbmNvZGluZykgOiBTdHJpbmc6OmZyb21VVEY4KCJVVEYtOCIpLCBT
dHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90
IG5hCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0
ZXJzJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRl
cnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1l
dGVycyhsb2FkUGFyYW1ldGVycyk7CiAKQEAgLTEzMjcsMTQgKzEzMjcsNiBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJh
bWV0ZXJzLm5hdmlnYXRpb25JRCwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVy
cy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwg
bG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmco
Y29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQotewotICAgIHBsYXRmb3JtRGlk
UmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKLQotICAgIFVSTCBiYXNlVVJM
ID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
VVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkU3RyaW5n
SW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywg
bG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29u
c3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVj
ZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE2MSw4ICsxMTYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRyeUNsb3NlKCk7CiAgICAgdm9p
ZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYp
OwogICAgIHZvaWQgbG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBsb2Fk
RGF0YShjb25zdCBMb2FkUGFyYW1ldGVycyYpOwotICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBM
b2FkUGFyYW1ldGVycyYpOworICAgIHZvaWQgbG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJik7CiAg
ICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwog
ICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50
IHNjcmVlblBvaW50KTsKICAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIExvYWRVUkxJbkZy
YW1lKFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiAgICAgTG9hZFJlcXVlc3Qo
c3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAgICAgTG9hZERh
dGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCi0gICAgTG9h
ZFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAg
ICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVycykKIAogICAgIE5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KFN0cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6Oklu
dFBvaW50IHNjcmVlblBvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346796</attachid>
            <date>2018-08-08 14:26:46 -0700</date>
            <delta_ts>2018-08-08 14:32:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180808142645.patch</filename>
            <type>text/plain</type>
            <size>20003</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ3MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE4LTA4LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisyMDE4LTA4
LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgRml4IHBvc3NpYmxlIG51bGwgZGVyZWZlcmVuY2UgaW4gV2ViQmFja0ZvcndhcmRMaXN0Ojpy
ZXN0b3JlRnJvbVN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg0MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNTMxNzI2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dDo6cmVzdG9yZUZyb21TdGF0ZSk6CisKIDIwMTgtMDgtMDggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzQzMTQsIHIyMzQzMjAsIGFuZCByMjM0MzIxLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MzMsNiArNDMzLDkgQEAgQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0ZvcndhcmRM
aXN0OgogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9y
d2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdGF0ZSkKIHsKKyAgICBpZiAoIW1fcGFnZSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Pj4gaXRlbXM7CiAgICAgaXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShiYWNrRm9yd2FyZExp
c3RTdGF0ZS5pdGVtcy5zaXplKCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDgsNyArMTA0OCw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RG
TW92ZShuYXZpZ2F0aW9uKTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTEwNjQsNyArMTA2NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG8KIAogICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOwot
ICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRhLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9h
ZFBhcmFtZXRlcnMuZGF0YSA9IGRhdGE7CiAgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBN
SU1FVHlwZTsKICAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKICAg
ICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKQEAgLTEwNzgsMzYgKzEw
NzgsNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0
dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLS8vIEZJWE1FOiBHZXQgcmlkIG9mIGxvYWRI
VE1MU3RyaW5nIGFuZCBqdXN0IHVzZSBsb2FkRGF0YSBpbnN0ZWFkLgotUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewot
ICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24o
KTsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKLQotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2Fj
dGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkp
OwotCi0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7
Ci0KLSAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBsb2FkUGFyYW1ldGVy
cy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKLSAgICBsb2FkUGFy
YW1ldGVycy5zdHJpbmcgPSBodG1sU3RyaW5nOwotICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
ID0gInRleHQvaHRtbCJfczsKLSAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFz
ZVVSTDsKLSAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7Ci0gICAgYWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7Ci0KLSAgICBtX3Byb2Nlc3MtPmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwotICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShuYXZpZ2F0aW9uKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9j
ZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1w
dCB0bwpAQCAtMTE0NSwyOCArMTExNSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJu
YXRlSFRNTFN0cmkKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewotICAgIGlmIChtX2lzQ2xvc2Vk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoKTsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwotCi0gICAgTG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0g
MDsKLSAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcgPSBzdHJpbmc7Ci0gICAgbG9hZFBhcmFtZXRl
cnMuTUlNRVR5cGUgPSAidGV4dC9wbGFpbiJfczsKLSAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
KS5nZXQoKSk7Ci0gICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0
YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAg
ICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NiwxMCArNDU2LDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYpOwogICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoQVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CisgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIGxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRQbGFpblRleHRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAg
ICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwg
V2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSwyMiAr
MTkxLDM3IEBAIHZvaWQgV0tQYWdlTG9hZEZpbGVXaXRoVXNlckRhdGEoV0tQYWdlUmUKIAogdm9p
ZCBXS1BhZ2VMb2FkRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdL
U3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYg
YmFzZVVSTFJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRh
UmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiks
IHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRh
KHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJl
ZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwog
fQogCiB2b2lkIFdLUGFnZUxvYWREYXRhV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVu
Y29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwoZGF0YVJlZiksIHRvV1RGU3Ry
aW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYpLCB0b1dURlN0cmluZyhi
YXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlN
RVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxS
ZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKK30KKworc3RhdGljIHZvaWQgbG9hZFN0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKK3sK
KyAgICBTdHJpbmcgc3RyaW5nID0gdG9XVEZTdHJpbmcoc3RyaW5nUmVmKTsKKyAgICBTdHJpbmcg
ZW5jb2Rpbmc7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKHN0cmluZy5p
c051bGwoKSB8fCBzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgZW5jb2RpbmcgPSAibGF0aW4x
Il9zOworICAgICAgICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuY2hhcmFjdGVyczgoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikgfTsK
KyAgICB9IGVsc2UgeworICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiX3M7CisgICAgICAgIGRh
dGEgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgfTsKKyAgICB9CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5sb2FkRGF0YShkYXRhLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkws
IHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNl
VVJMUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEhUTUxTdHJpbmcodG9XVEZTdHJp
bmcoaHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKKyAgICBXS1BhZ2VM
b2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJM
UmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0
YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYg
YmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZEhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5n
KGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKKyAgICBsb2FkU3RyaW5nKHBhZ2VS
ZWYsIGh0bWxTdHJpbmdSZWYsICJ0ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYp
LCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJh
c2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQpAQCAtMjIxLDEyICsyMzYsMTIg
QEAgdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVcwogCiB2b2lkIFdLUGFn
ZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWlu
VGV4dFN0cmluZ1JlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRQbGFpblRleHRTdHJp
bmcodG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5nUmVmKSk7ICAgIAorICAgIFdLUGFnZUxvYWRQ
bGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCBu
dWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYsIFdLVHlw
ZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRQbGFpblRleHRT
dHJpbmcodG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5nUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVm
KSk7ICAgIAorICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4
dC9wbGFpbiJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSwgdXNlckRhdGFSZWYpOwogfQogCiB2b2lk
IFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHdl
YkFyY2hpdmVEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUz
LDggQEAgLSAodm9pZClsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilIVE1MUwogICAgIGlmICh1
c2VyRGF0YSkKICAgICAgICAgd2tVc2VyRGF0YSA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVz
ZXJEYXRhKTsKIAotICAgIF9wYWdlLT5sb2FkSFRNTFN0cmluZyhIVE1MU3RyaW5nLCBbYmFzZVVS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQoKSk7CisgICAg
TlNEYXRhICpkYXRhID0gW0hUTUxTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOworICAgIF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgInRleHQvaHRtbCJfcywgIlVURi04Il9z
LCBbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQo
KSk7CiB9CiAKIC0gKHZvaWQpbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1
bnJlYWNoYWJsZVVSTApAQCAtMTY4LDE3ICsxNjksMTEgQEAgLSAodm9pZClsb2FkRGF0YTooTlNE
YXRhICopZGF0YSBNSU1FVHlwZQogCiAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1J
TUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICop
ZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyRGF0YTooaWQpdXNlckRh
dGEKIHsKLSAgICBSZWZQdHI8QVBJOjpEYXRhPiBhcGlEYXRhOwotICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjb3B5IHRoZSBkYXRhLgotICAgICAgICBhcGlE
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKLSAgICB9Ci0KICAg
ICBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiB3a1VzZXJEYXRhOwogICAgIGlmICh1c2VyRGF0YSkK
ICAgICAgICAgd2tVc2VyRGF0YSA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKTsK
IAotICAgIF9wYWdlLT5sb2FkRGF0YShhcGlEYXRhLmdldCgpLCBNSU1FVHlwZSwgZW5jb2RpbmdO
YW1lLCBbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5n
ZXQoKSk7CisgICAgX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBbYmFz
ZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQoKSk7CiB9
CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTAzLDcgKzkwMyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmkK
IAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5T
U3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJh
Y3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKLSAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhkYXRhKS5wdHIoKSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5h
YnNvbHV0ZVN0cmluZyk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWREYXRhKHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBN
SU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKTsK
ICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTQyMzcsNyAr
NDIzNyw3IEBAIC0gKHZvaWQpX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihOU1N0cmkKIAogLSAo
V0tOYXZpZ2F0aW9uICopX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJF
bmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0
YQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0YShBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKGRhdGEpLnB0cigpLCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6
Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxv
YWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRl
U3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSk7
CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAko
cmV2aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKQEAgLTI1ODMsNyArMjU4NCw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbChXZWJLaXRXZWIKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250
ZW50KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZEhUTUxTdHJpbmcoU3RyaW5nOjpmcm9t
VVRGOChjb250ZW50KSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJJKSk7CisgICAgZ2V0UGFnZSh3
ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvbnRl
bnQpLCBjb250ZW50ID8gc3RybGVuKGNvbnRlbnQpIDogMCB9LCAidGV4dC9odG1sIl9zLCAiVVRG
LTgiX3MsIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkpOwogfQogCiAvKioKQEAgLTI2MjIsMTMg
KzI2MjMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZFBsYWlu
VGV4dFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHBsYWluVGV4dCkpOwotfQotCi1zdGF0aWMgdm9p
ZCByZWxlYXNlR0J5dGVzKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBieXRlcykKLXsKLSAg
ICAvLyBCYWxhbmNlZCBieSBnX2J5dGVzX3JlZiBpbiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9ieXRl
cygpLgotICAgIGdfYnl0ZXNfdW5yZWYoc3RhdGljX2Nhc3Q8R0J5dGVzKj4oY29uc3RfY2FzdDx2
b2lkKj4oYnl0ZXMpKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihw
bGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBibGFua1VSTCgpLnN0
cmluZygpKTsKIH0KIAogLyoqCkBAIC0yNjU2LDExICsyNjUxLDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF9ieXRlcyhXZWJLaXRXZQogICAgIGdjb25zdHBvaW50ZXIgYnl0ZXNEYXRhID0g
Z19ieXRlc19nZXRfZGF0YShieXRlcywgJmJ5dGVzRGF0YVNpemUpOwogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoYnl0ZXNEYXRhU2l6ZSk7CiAKLSAgICAvLyBCYWxhbmNlZCBieSBnX2J5dGVzX3VucmVm
IGluIHJlbGVhc2VHQnl0ZXMuCi0gICAgZ19ieXRlc19yZWYoYnl0ZXMpOwotCi0gICAgUmVmPEFQ
STo6RGF0YT4gZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGJ5dGVzRGF0YSksIGJ5dGVzRGF0YVNpemUsIHJlbGVh
c2VHQnl0ZXMsIGJ5dGVzKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKGRhdGEucHRy
KCksIG1pbWVUeXBlID8gU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSkgOiBTdHJpbmc6OmZyb21V
VEY4KCJ0ZXh0L2h0bWwiKSwKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXNEYXRhKSwgYnl0ZXNEYXRhU2l6ZSB9LCBt
aW1lVHlwZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgi
dGV4dC9odG1sIiksCiAgICAgICAgIGVuY29kaW5nID8gU3RyaW5nOjpmcm9tVVRGOChlbmNvZGlu
ZykgOiBTdHJpbmc6OmZyb21VVEY4KCJVVEYtOCIpLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkp
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lk
IFdlYlBhZ2U6OmxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3Zv
aWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsK
ICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAK
QEAgLTEzMjcsMTQgKzEzMjcsNiBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQ
YXJhbWV0CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgV1RG
TW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRl
cnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxv
YWRQYXJhbWV0ZXJzKQotewotICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKLQotICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVS
TFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVy
cy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkU3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZp
Z2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUs
IGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7Ci19Ci0KIHZvaWQgV2Vi
UGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQ
YXJhbWV0ZXJzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2MSw4ICsxMTYxLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHRyeUNsb3NlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybURpZFJlY2VpdmVMb2Fk
UGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbG9hZFJlcXVlc3Qo
TG9hZFBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBsb2FkRGF0YShjb25zdCBMb2FkUGFyYW1ldGVy
cyYpOwotICAgIHZvaWQgbG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOworICAgIHZv
aWQgbG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50
IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKICAgICB2b2lk
IHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM0NjYz
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIExvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCB1cmwsIHVp
bnQ2NF90IGZyYW1lSUQpCiAgICAgTG9hZFJlcXVlc3Qoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAgICAgTG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBh
cmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCi0gICAgTG9hZFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpM
b2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
ZyhzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycykKIAogICAgIE5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0cmluZyB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346797</attachid>
            <date>2018-08-08 14:32:33 -0700</date>
            <delta_ts>2018-08-08 14:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180808143231.patch</filename>
            <type>text/plain</type>
            <size>19437</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ3MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE4LTA4LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisyMDE4LTA4
LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgRml4IHBvc3NpYmxlIG51bGwgZGVyZWZlcmVuY2UgaW4gV2ViQmFja0ZvcndhcmRMaXN0Ojpy
ZXN0b3JlRnJvbVN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg0MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyNTMxNzI2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dDo6cmVzdG9yZUZyb21TdGF0ZSk6CisKIDIwMTgtMDgtMDggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzQzMTQsIHIyMzQzMjAsIGFuZCByMjM0MzIxLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ4LDcgKzEwNDgs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0dXJu
IFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKK1JlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvCiAKICAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKICAg
ICBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KTsKLSAgICBsb2FkUGFyYW1ldGVycy5kYXRhID0gZGF0YS0+ZGF0YVJlZmVyZW5jZSgpOworICAg
IGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRhOwogICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
ID0gTUlNRVR5cGU7CiAgICAgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lID0gZW5jb2Rpbmc7
CiAgICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyA9IGJhc2VVUkw7CkBAIC0xMDc4LDM2
ICsxMDc4LDYgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsbwogICAg
IHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi0vLyBGSVhNRTogR2V0IHJpZCBvZiBs
b2FkSFRNTFN0cmluZyBhbmQganVzdCB1c2UgbG9hZERhdGEgaW5zdGVhZC4KLVJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
LXsKLSAgICBpZiAobV9pc0Nsb3NlZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBh
dXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0
aW9uKCk7Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7Ci0KLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJh
bnNhY3Rpb24sICFiYXNlVVJMLmlzRW1wdHkoKSA/IGJhc2VVUkwgOiBibGFua1VSTCgpLnN0cmlu
ZygpKTsKLQotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2Vz
cygpOwotCi0gICAgTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgbG9h
ZFBhcmFtZXRlcnMuc3RyaW5nID0gaHRtbFN0cmluZzsKLSAgICBsb2FkUGFyYW1ldGVycy5NSU1F
VHlwZSA9ICJ0ZXh0L2h0bWwiX3M7Ci0gICAgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyA9
IGJhc2VVUkw7Ci0gICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNz
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwotICAgIGFkZFBs
YXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwotCi0gICAgbV9wcm9jZXNzLT5h
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
LSAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotCi0gICAgcmV0
dXJuIFdURk1vdmUobmF2aWdhdGlvbik7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0
ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUg
cHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0
dGVtcHQgdG8KQEAgLTExNDUsMjggKzExMTUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUxTdHJpCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rh
cnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKLXsKLSAgICBpZiAobV9pc0Ns
b3NlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJl
YXR0YWNoVG9XZWJQcm9jZXNzKCk7Ci0KLSAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9h
ZFN0YXRlLnRyYW5zYWN0aW9uKCk7Ci0gICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElS
ZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBibGFua1VSTCgpLnN0cmluZygpKTsKLQotICAgIExvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RCA9IDA7Ci0gICAgbG9hZFBhcmFtZXRlcnMuc3RyaW5nID0gc3RyaW5nOwotICAgIGxvYWRQYXJh
bWV0ZXJzLk1JTUVUeXBlID0gInRleHQvcGxhaW4iX3M7Ci0gICAgbG9hZFBhcmFtZXRlcnMudXNl
ckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YSkuZ2V0KCkpOwotICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRl
cnMpOwotCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkU3RyaW5n
KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwotICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQog
ewogICAgIGlmIChtX2lzQ2xvc2VkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTYsMTAgKzQ1Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRlcnMmKTsKICAg
ICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVz
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEaXJlY3RvcnlVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwotICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWREYXRhKEFQSTo6RGF0YSosIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gbG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOworICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9p
ZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgdm9pZCBsb2FkUGxhaW5U
ZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIp
OwogICAgIHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSosIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9p
bnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEs
MjIgKzE5MSwzNyBAQCB2b2lkIFdLUGFnZUxvYWRGaWxlV2l0aFVzZXJEYXRhKFdLUGFnZVJlCiAK
IHZvaWQgV0tQYWdlTG9hZERhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBkYXRhUmVm
LCBXS1N0cmluZ1JlZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdSZWYsIFdLVVJM
UmVmIGJhc2VVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwo
ZGF0YVJlZiksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdS
ZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2Fk
RGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlNRVR5
cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYp
KTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkRGF0YVdpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdLU3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1Jl
ZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVm
KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLCB0b1dU
RlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJp
bmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVmZXJlbmNlKCksIHRvV1RGU3RyaW5n
KE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYpLCB0b1dURlN0cmluZyhiYXNl
VVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7Cit9CisKK3N0YXRpYyB2b2lkIGxvYWRTdHJp
bmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYp
Cit7CisgICAgU3RyaW5nIHN0cmluZyA9IHRvV1RGU3RyaW5nKHN0cmluZ1JlZik7CisgICAgU3Ry
aW5nIGVuY29kaW5nOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOworICAgIGlmIChzdHJp
bmcuaXNOdWxsKCkgfHwgc3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgIGVuY29kaW5nID0gImxh
dGluMSJfczsKKyAgICAgICAgZGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIp
IH07CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2Il9zOworICAgICAg
ICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFj
dGVyczE2KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIH07CisgICAgfQorICAg
IHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEoZGF0YSwgbWltZVR5cGUsIGVuY29kaW5nLCBiYXNl
VVJMLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmlu
ZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYg
YmFzZVVSTFJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRIVE1MU3RyaW5nKHRvV1RG
U3RyaW5nKGh0bWxTdHJpbmdSZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CisgICAgV0tQ
YWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwgYmFz
ZVVSTFJlZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRoVXNl
ckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJM
UmVmIGJhc2VVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPmxvYWRIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdSZWYpLCB0b1dURlN0
cmluZyhiYXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CisgICAgbG9hZFN0cmluZyhw
YWdlUmVmLCBodG1sU3RyaW5nUmVmLCAidGV4dC9odG1sIl9zLCB0b1dURlN0cmluZyhiYXNlVVJM
UmVmKSwgdXNlckRhdGFSZWYpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJl
ZiBiYXNlVVJMUmVmLCBXS1VSTFJlZiB1bnJlYWNoYWJsZVVSTFJlZikKQEAgLTIyMSwxMiArMjM2
LDEyIEBAIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoVXMKIAogdm9pZCBX
S1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBw
bGFpblRleHRTdHJpbmdSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUGxhaW5UZXh0
U3RyaW5nKHRvV1RGU3RyaW5nKHBsYWluVGV4dFN0cmluZ1JlZikpOyAgICAKKyAgICBXS1BhZ2VM
b2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1Jl
ZiwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2Vy
RGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUGxhaW5U
ZXh0U3RyaW5nKHRvV1RGU3RyaW5nKHBsYWluVGV4dFN0cmluZ1JlZiksIHRvSW1wbCh1c2VyRGF0
YVJlZikpOyAgICAKKyAgICBsb2FkU3RyaW5nKHBhZ2VSZWYsIHBsYWluVGV4dFN0cmluZ1JlZiwg
InRleHQvcGxhaW4iX3MsIGJsYW5rVVJMKCkuc3RyaW5nKCksIHVzZXJEYXRhUmVmKTsKIH0KIAog
dm9pZCBXS1BhZ2VMb2FkV2ViQXJjaGl2ZURhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJl
ZiB3ZWJBcmNoaXZlRGF0YVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5t
bQkocmV2aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcg
KzE1Myw4IEBAIC0gKHZvaWQpbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopSFRNTFMKICAgICBp
ZiAodXNlckRhdGEpCiAgICAgICAgIHdrVXNlckRhdGEgPSBPYmpDT2JqZWN0R3JhcGg6OmNyZWF0
ZSh1c2VyRGF0YSk7CiAKLSAgICBfcGFnZS0+bG9hZEhUTUxTdHJpbmcoSFRNTFN0cmluZywgW2Jh
c2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIHdrVXNlckRhdGEuZ2V0KCkpOwor
ICAgIE5TRGF0YSAqZGF0YSA9IFtIVE1MU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKKyAgICBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYt
OCJfcywgW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIHdrVXNlckRhdGEu
Z2V0KCkpOwogfQogCiAtICh2b2lkKWxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgZm9yVW5yZWFjaGFibGVVUkw6KE5TVVJM
ICopdW5yZWFjaGFibGVVUkwKQEAgLTE2OCwxNyArMTY5LDExIEBAIC0gKHZvaWQpbG9hZERhdGE6
KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGUKIAogLSAodm9pZClsb2FkRGF0YTooTlNEYXRhICopZGF0
YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVz
ZXJEYXRhCiB7Ci0gICAgUmVmUHRyPEFQSTo6RGF0YT4gYXBpRGF0YTsKLSAgICBpZiAoZGF0YSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY29weSB0aGUgZGF0YS4KLSAgICAgICAg
YXBpRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSk7Ci0gICAgfQot
CiAgICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gd2tVc2VyRGF0YTsKICAgICBpZiAodXNlckRh
dGEpCiAgICAgICAgIHdrVXNlckRhdGEgPSBPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0
YSk7CiAKLSAgICBfcGFnZS0+bG9hZERhdGEoYXBpRGF0YS5nZXQoKSwgTUlNRVR5cGUsIGVuY29k
aW5nTmFtZSwgW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIHdrVXNlckRh
dGEuZ2V0KCkpOworICAgIF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwg
W2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIHdrVXNlckRhdGEuZ2V0KCkp
OwogfQogCiAtICh2b2lkKXN0b3BMb2FkaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTkwMyw3ICs5MDMsNyBAQCAtIChXS05hdmlnYXRpb24gKilsb2FkSFRNTFN0cmluZzooTlNT
dHJpCiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBl
OihOU1N0cmluZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKilj
aGFyYWN0ZXJFbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMCiB7Ci0gICAgYXV0
byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWREYXRhKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoZGF0YSkucHRyKCksIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VV
UkwuYWJzb2x1dGVTdHJpbmcpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0
YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgg
fSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmlu
Zyk7CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC00MjM3
LDcgKzQyMzcsNyBAQCAtICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpCiAK
IC0gKFdLTmF2aWdhdGlvbiAqKV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNT
dHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFj
dGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyRGF0YTooaWQpdXNl
ckRhdGEKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoQVBJOjpEYXRh
OjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKS5wdHIoKSwgTUlNRVR5cGUsIGNoYXJhY3RlckVu
Y29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3Jh
cGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNv
bHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRy
KCkpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAJKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJB
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgi
CiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCkBAIC0yNTgzLDcgKzI1ODQsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwoV2ViS2l0V2ViCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
Y29udGVudCk7CiAKLSAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWRIVE1MU3RyaW5nKFN0cmluZzo6
ZnJvbVVURjgoY29udGVudCksIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkpOworICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihj
b250ZW50KSwgY29udGVudCA/IHN0cmxlbihjb250ZW50KSA6IDAgfSwgInRleHQvaHRtbCJfcywg
IlVURi04Il9zLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpKTsKIH0KIAogLyoqCkBAIC0yNjIy
LDEzICsyNjIzLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9wbGFpbl90ZXh0KFdlYgog
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHBsYWluVGV4dCk7CiAKLSAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWRQ
bGFpblRleHRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOChwbGFpblRleHQpKTsKLX0KLQotc3RhdGlj
IHZvaWQgcmVsZWFzZUdCeXRlcyh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogYnl0ZXMpCi17
Ci0gICAgLy8gQmFsYW5jZWQgYnkgZ19ieXRlc19yZWYgaW4gd2Via2l0X3dlYl92aWV3X2xvYWRf
Ynl0ZXMoKS4KLSAgICBnX2J5dGVzX3VucmVmKHN0YXRpY19jYXN0PEdCeXRlcyo+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGJ5dGVzKSkpOworICAgIGdldFBhZ2Uod2ViVmlldykubG9hZERhdGEoeyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwbGFpblRleHQpLCBwbGFpblRleHQgPyBzdHJs
ZW4ocGxhaW5UZXh0KSA6IDAgfSwgInRleHQvcGxhaW4iX3MsICJVVEYtOCJfcywgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7CiB9CiAKIC8qKgpAQCAtMjY1NiwxMSArMjY1MSw3IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X2xvYWRfYnl0ZXMoV2ViS2l0V2UKICAgICBnY29uc3Rwb2ludGVyIGJ5dGVzRGF0
YSA9IGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMsICZieXRlc0RhdGFTaXplKTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKGJ5dGVzRGF0YVNpemUpOwogCi0gICAgLy8gQmFsYW5jZWQgYnkgZ19ieXRlc191
bnJlZiBpbiByZWxlYXNlR0J5dGVzLgotICAgIGdfYnl0ZXNfcmVmKGJ5dGVzKTsKLQotICAgIFJl
ZjxBUEk6OkRhdGE+IGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihieXRlc0RhdGEpLCBieXRlc0RhdGFTaXplLCBy
ZWxlYXNlR0J5dGVzLCBieXRlcyk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YShkYXRh
LnB0cigpLCBtaW1lVHlwZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpm
cm9tVVRGOCgidGV4dC9odG1sIiksCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5dGVzRGF0YSksIGJ5dGVzRGF0YVNpemUg
fSwgbWltZVR5cGUgPyBTdHJpbmc6OmZyb21VVEY4KG1pbWVUeXBlKSA6IFN0cmluZzo6ZnJvbVVU
RjgoInRleHQvaHRtbCIpLAogICAgICAgICBlbmNvZGluZyA/IFN0cmluZzo6ZnJvbVVURjgoZW5j
b2RpbmcpIDogU3RyaW5nOjpmcm9tVVRGOCgiVVRGLTgiKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNl
VVJJKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nSW1wbCh1aW50NjRfdCBuYQogICAgIH0KIH0KIAotdm9p
ZCBXZWJQYWdlOjpsb2FkRGF0YShjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMp
Cit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMp
CiB7CiAgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OwogCkBAIC0xMzI3LDE0ICsxMzI3LDYgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShjb25zdCBM
b2FkUGFyYW1ldAogICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJh
bWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJE
YXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJz
JiBsb2FkUGFyYW1ldGVycykKLXsKLSAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVy
cyhsb2FkUGFyYW1ldGVycyk7Ci0KLSAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJh
c2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZFN0cmluZ0ltcGwobG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zdHJpbmcsIGxvYWRQYXJhbWV0ZXJzLk1JTUVU
eXBlLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwotfQotCiB2b2lk
IFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBs
b2FkUGFyYW1ldGVycykKIHsKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhs
b2FkUGFyYW1ldGVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNjEsOCArMTE2MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0cnlDbG9zZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EaWRSZWNlaXZl
TG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGxvYWRSZXF1
ZXN0KExvYWRQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGEoY29uc3QgTG9hZFBhcmFt
ZXRlcnMmKTsKLSAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKKyAg
ICB2b2lkIGxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIG5hdmlnYXRlVG9Q
REZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQ
b2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7CiAgICAg
dm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRPcHRpb25z
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIz
NDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6OkxvYWRQ
YXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6Okxv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQotICAgIExvYWRTdHJpbmcoc3RydWN0IFdlYktp
dDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAgICAgTG9hZEFsdGVybmF0ZUhUTUxT
dHJpbmcoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAKICAg
ICBOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3Jl
OjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346800</attachid>
            <date>2018-08-08 14:52:54 -0700</date>
            <delta_ts>2018-08-15 11:55:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180808145254.patch</filename>
            <type>text/plain</type>
            <size>21780</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ3MTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA4LTA4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA4
LTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0MzE0LCByMjM0MzIwLCBhbmQgcjIzNDMyMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0
NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsbwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCi1SZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6RGF0YSogZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCitSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsbwogCiAgICAgTG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0g
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMuZGF0YSA9IGRh
dGEtPmRhdGFSZWZlcmVuY2UoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5kYXRhID0gZGF0YTsKICAg
ICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9IE1JTUVUeXBlOwogICAgIGxvYWRQYXJhbWV0ZXJz
LmVuY29kaW5nTmFtZSA9IGVuY29kaW5nOwogICAgIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJp
bmcgPSBiYXNlVVJMOwpAQCAtMTA3OCwzNiArMTA3OCw2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKIH0K
IAotLy8gRklYTUU6IEdldCByaWQgb2YgbG9hZEhUTUxTdHJpbmcgYW5kIGp1c3QgdXNlIGxvYWRE
YXRhIGluc3RlYWQuCi1SZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbigpOwotCi0gICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotCi0gICAgbV9wYWdlTG9hZFN0YXRlLnNl
dFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCAhYmFzZVVSTC5pc0VtcHR5KCkgPyBi
YXNlVVJMIDogYmxhbmtVUkwoKS5zdHJpbmcoKSk7Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKLQotICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmluZyA9IGh0bWxTdHJpbmc7
Ci0gICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSAidGV4dC9odG1sIl9zOwotICAgIGxvYWRQ
YXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcgPSBiYXNlVVJMOwotICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJM
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKLQotICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwotfQotCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBo
dG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICAvLyBXaGVu
IHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHBy
b3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCkBAIC0xMTQ1LDI4ICsxMTE1LDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaQogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCi17Ci0gICAgaWYgKG1faXNDbG9zZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghaXNWYWxpZCgpKQotICAgICAgICByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwotCi0gICAgYXV0
byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotICAgIG1fcGFn
ZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwgYmxhbmtVUkwo
KS5zdHJpbmcoKSk7Ci0KLSAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQgPSAwOwotICAgIGxvYWRQYXJhbWV0ZXJzLnN0cmlu
ZyA9IHN0cmluZzsKLSAgICBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSA9ICJ0ZXh0L3BsYWluIl9z
OwotICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKLSAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKLQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFN0cmluZyhsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKLSAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotfQotCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAobV9pc0Nsb3NlZCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NDU2LDEwICs0NTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKExvYWRQYXJhbWV0ZXJzJik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0
cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0
YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0
cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyKTsKKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxw
dHIpOwotICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIGxvYWRXZWJBcmNoaXZlRGF0YShB
UEk6OkRhdGEqLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIG5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJD
b3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2lu
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gMjM0NjYzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDIyICsxOTEsMzcgQEAgdm9pZCBXS1BhZ2VMb2FkRmls
ZVdpdGhVc2VyRGF0YShXS1BhZ2VSZQogCiB2b2lkIFdLUGFnZUxvYWREYXRhKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3Ry
aW5nUmVmIGVuY29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJl
ZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZERhdGEodG9JbXBsKGRhdGFSZWYpLT5kYXRhUmVmZXJl
bmNlKCksIHRvV1RGU3RyaW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYp
LCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSk7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZERhdGFXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBkYXRhUmVmLCBXS1N0cmluZ1Jl
ZiBNSU1FVHlwZVJlZiwgV0tTdHJpbmdSZWYgZW5jb2RpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRE
YXRhKHRvSW1wbChkYXRhUmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmlu
ZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFS
ZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRhUmVmKS0+ZGF0
YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJlZiksIHRvV1RGU3RyaW5nKGVuY29k
aW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwor
fQorCitzdGF0aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzdHJpbmdSZWYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQoreworICAgIFN0cmluZyBzdHJpbmcgPSB0b1dURlN0
cmluZyhzdHJpbmdSZWYpOworICAgIFN0cmluZyBlbmNvZGluZzsKKyAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YTsKKyAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHN0cmluZy5pczhCaXQoKSkg
eworICAgICAgICBlbmNvZGluZyA9ICJsYXRpbjEiX3M7CisgICAgICAgIGRhdGEgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5n
Lmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OworICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29k
aW5nID0gInV0Zi0xNiJfczsKKyAgICAgICAgZGF0YSA9IHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6
ZW9mKFVDaGFyKSB9OworICAgIH0KKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKGRhdGEs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CiB9CiAK
IHZvaWQgV0tQYWdlTG9hZEhUTUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVm
IGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmluZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJp
bmcoYmFzZVVSTFJlZikpOworICAgIFdLUGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKHBh
Z2VSZWYsIGh0bWxTdHJpbmdSZWYsIGJhc2VVUkxSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmlu
Z1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGFSZWYpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkSFRNTFN0cmluZyh0b1dURlN0cmlu
ZyhodG1sU3RyaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0
YVJlZikpOworICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgaHRtbFN0cmluZ1JlZiwgInRleHQvaHRt
bCJfcywgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZiksIHVzZXJEYXRhUmVmKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdS
ZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxSZWYgdW5yZWFjaGFi
bGVVUkxSZWYpCkBAIC0yMjEsMTIgKzIzNiwxMiBAQCB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aFVzCiAKIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nUmVmKQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRTdHJp
bmdSZWYpKTsgICAgCisgICAgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZ1dpdGhVc2VyRGF0YShw
YWdlUmVmLCBwbGFpblRleHRTdHJpbmdSZWYsIG51bGxwdHIpOwogfQogCiB2b2lkIFdLUGFnZUxv
YWRQbGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5n
UmVmIHBsYWluVGV4dFN0cmluZ1JlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZFBsYWluVGV4dFN0cmluZyh0b1dURlN0cmluZyhwbGFpblRleHRT
dHJpbmdSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsgICAgCisgICAgbG9hZFN0cmluZyhwYWdl
UmVmLCBwbGFpblRleHRTdHJpbmdSZWYsICJ0ZXh0L3BsYWluIl9zLCBibGFua1VSTCgpLnN0cmlu
ZygpLCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZFdlYkFyY2hpdmVEYXRhKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS0RhdGFSZWYgd2ViQXJjaGl2ZURhdGFSZWYpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIzNDY2MykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKWxvYWRIVE1MU3RyaW5n
OihOU1N0cmluZyAqKUhUTUxTCiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRh
ID0gT2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWRI
VE1MU3RyaW5nKEhUTUxTdHJpbmcsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBOU0RhdGEgKmRhdGEgPSBbSFRNTFN0cmluZyBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgX3BhZ2UtPmxvYWRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0
aCB9LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRh
QXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
IGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCkBAIC0xNjgsMTcgKzE2
OSwxMSBAQCAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlCiAKIC0gKHZv
aWQpbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
dGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQogewotICAgIFJlZlB0cjxBUEk6OkRhdGE+
IGFwaURhdGE7Ci0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGNvcHkgdGhlIGRhdGEuCi0gICAgICAgIGFwaURhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKGRhdGEpOwotICAgIH0KLQogICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IHdr
VXNlckRhdGE7CiAgICAgaWYgKHVzZXJEYXRhKQogICAgICAgICB3a1VzZXJEYXRhID0gT2JqQ09i
amVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpOwogCi0gICAgX3BhZ2UtPmxvYWREYXRhKGFwaURh
dGEuZ2V0KCksIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxE
YXRhQXNXVEZTdHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKKyAgICBfcGFnZS0+bG9hZERhdGEo
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0s
IE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZT
dHJpbmddLCB3a1VzZXJEYXRhLmdldCgpKTsKIH0KIAogLSAodm9pZClzdG9wTG9hZGluZwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShy
ZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MDMsNyArOTAzLDcgQEAgLSAoV0tOYXZpZ2F0
aW9uICopbG9hZEhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkRGF0
YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBjaGFyYWN0ZXJF
bmNvZGluZ05hbWU6KE5TU3RyaW5nICopY2hhcmFjdGVyRW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0YShB
UEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGRhdGEpLnB0cigpLCBNSU1FVHlwZSwgY2hh
cmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05h
bWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghbmF2aWdhdGlvbikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApAQCAtNDIzNyw3ICs0MjM3LDcgQEAgLSAodm9pZClfbG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmc6KE5TU3RyaQogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWREYXRhKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoZGF0YSkucHRy
KCksIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJp
bmcsIFdlYktpdDo6T2JqQ09iamVjdEdyYXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcsIFdlYktpdDo6T2JqQ09iamVjdEdy
YXBoOjpjcmVhdGUodXNlckRhdGEpLnB0cigpKTsKICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCShyZXZpc2lvbiAyMzQ2NjMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJBUElO
YXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1
ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5o
IgpAQCAtMjU4Myw3ICsyNTg0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKFdl
YktpdFdlYgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
KTsKICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnRlbnQpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3
KS5sb2FkSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBTdHJpbmc6OmZyb21V
VEY4KGJhc2VVUkkpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY29udGVudCksIGNvbnRlbnQgPyBzdHJsZW4oY29udGVu
dCkgOiAwIH0sICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgU3RyaW5nOjpmcm9tVVRGOChiYXNl
VVJJKSk7CiB9CiAKIC8qKgpAQCAtMjYyMiwxMyArMjYyMyw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X2xvYWRfcGxhaW5fdGV4dChXZWIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChwbGFpblRleHQpOwogCi0g
ICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkUGxhaW5UZXh0U3RyaW5nKFN0cmluZzo6ZnJvbVVURjgo
cGxhaW5UZXh0KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbGVhc2VHQnl0ZXModW5zaWduZWQgY2hh
ciosIGNvbnN0IHZvaWQqIGJ5dGVzKQotewotICAgIC8vIEJhbGFuY2VkIGJ5IGdfYnl0ZXNfcmVm
IGluIHdlYmtpdF93ZWJfdmlld19sb2FkX2J5dGVzKCkuCi0gICAgZ19ieXRlc191bnJlZihzdGF0
aWNfY2FzdDxHQnl0ZXMqPihjb25zdF9jYXN0PHZvaWQqPihieXRlcykpKTsKKyAgICBnZXRQYWdl
KHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGxh
aW5UZXh0KSwgcGxhaW5UZXh0ID8gc3RybGVuKHBsYWluVGV4dCkgOiAwIH0sICJ0ZXh0L3BsYWlu
Il9zLCAiVVRGLTgiX3MsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwogfQogCiAvKioKQEAgLTI2NTYs
MTEgKzI2NTEsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2J5dGVzKFdlYktpdFdlCiAg
ICAgZ2NvbnN0cG9pbnRlciBieXRlc0RhdGEgPSBnX2J5dGVzX2dldF9kYXRhKGJ5dGVzLCAmYnl0
ZXNEYXRhU2l6ZSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChieXRlc0RhdGFTaXplKTsKIAotICAg
IC8vIEJhbGFuY2VkIGJ5IGdfYnl0ZXNfdW5yZWYgaW4gcmVsZWFzZUdCeXRlcy4KLSAgICBnX2J5
dGVzX3JlZihieXRlcyk7Ci0KLSAgICBSZWY8QVBJOjpEYXRhPiBkYXRhID0gQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZyhzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYnl0
ZXNEYXRhKSwgYnl0ZXNEYXRhU2l6ZSwgcmVsZWFzZUdCeXRlcywgYnl0ZXMpOwotICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoZGF0YS5wdHIoKSwgbWltZVR5cGUgPyBTdHJpbmc6OmZyb21V
VEY4KG1pbWVUeXBlKSA6IFN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpLAorICAgIGdldFBh
Z2Uod2ViVmlldykubG9hZERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
eXRlc0RhdGEpLCBieXRlc0RhdGFTaXplIH0sIG1pbWVUeXBlID8gU3RyaW5nOjpmcm9tVVRGOCht
aW1lVHlwZSkgOiBTdHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSwKICAgICAgICAgZW5jb2Rp
bmcgPyBTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04
IiksIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjM0NjYzKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMDcsMTggKzEzMDcsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50
NjRfdCBuYXZpCiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZy
YW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIHN1YnN0aXR1dGVEYXRhKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZ0ltcGwodWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQotewotICAgIGlmICghaHRtbFN0cmluZy5pc051bGwoKSAmJiBodG1sU3RyaW5n
LmlzOEJpdCgpKSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJz
OCgpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikpOwotICAgICAgICBsb2Fk
RGF0YUltcGwobmF2aWdhdGlvbklELCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIE1JTUVUeXBlLCAi
bGF0aW4xIl9zLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgdXNlckRhdGEpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGh0
bWxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgbG9hZERhdGFJbXBs
KG5hdmlnYXRpb25JRCwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBNSU1FVHlwZSwgInV0Zi0xNiJf
cywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIHVzZXJEYXRhKTsKLSAgICB9Ci19Ci0KLXZvaWQg
V2ViUGFnZTo6bG9hZERhdGEoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQor
dm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQog
ewogICAgIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsK
IApAQCAtMTMyNywxNCArMTMxNiw2IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoY29uc3QgTG9h
ZFBhcmFtZXQKICAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBX
VEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1l
dGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYg
bG9hZFBhcmFtZXRlcnMpCi17Ci0gICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOwotCi0gICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0
ZXJzLmJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWRTdHJpbmdJbXBsKGxvYWRQYXJhbWV0ZXJzLm5h
dmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc3RyaW5nLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlw
ZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKLX0KLQogdm9pZCBX
ZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9h
ZFBhcmFtZXRlcnMpCiB7CiAgICAgcGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMobG9h
ZFBhcmFtZXRlcnMpOwpAQCAtMTM0Myw3ICsxMzI0LDE1IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY28KICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBsb2FkUGFyYW1l
dGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwg
bG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAgIFVSTCBwcm92aXNpb25h
bExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNp
b25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChwcm92aXNpb25h
bExvYWRFcnJvclVSTCk7Ci0gICAgbG9hZFN0cmluZ0ltcGwoMCwgbG9hZFBhcmFtZXRlcnMuc3Ry
aW5nLCAidGV4dC9odG1sIl9zLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRl
cnMudXNlckRhdGEpOworICAgIAorICAgIGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZyA9IGxvYWRQ
YXJhbWV0ZXJzLnN0cmluZzsKKyAgICBpZiAoIWh0bWxTdHJpbmcuaXNOdWxsKCkgJiYgaHRtbFN0
cmluZy5pczhCaXQoKSkgeworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFj
dGVyczgoKSksIGh0bWxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAg
bG9hZERhdGFJbXBsKDAsIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgInRleHQvaHRtbCJfcywgImxh
dGluMSJfcywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFj
dGVyczE2KCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAg
IGxvYWREYXRhSW1wbCgwLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksICJ0ZXh0L2h0bWwiX3MsICJ1
dGYtMTYiX3MsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSk7CisgICAgfQogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJv
dmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoeyB9KTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjM0NjYzKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTU1LDE0ICsxMTU1LDEyIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHNvdXJjZUZv
ckZyYW1lKFdlYkZyYW1lKik7CiAKICAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJM
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAg
ICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwogICAgIHZvaWQgcGxhdGZvcm1EaWRS
ZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGxv
YWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGEoY29uc3QgTG9h
ZFBhcmFtZXRlcnMmKTsKLSAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMm
KTsKKyAgICB2b2lkIGxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIG5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsLCBXZWJDb3Jl
OjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCk7
CiAgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCByZWxvYWRP
cHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIzNDY2MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpV
UkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6
OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJL
aXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQotICAgIExvYWRTdHJpbmcoc3RydWN0
IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCiAgICAgTG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmcoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMp
CiAKICAgICBOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBX
ZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Q
b2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347187</attachid>
            <date>2018-08-15 11:55:13 -0700</date>
            <delta_ts>2018-08-15 12:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188417-20180815115513.patch</filename>
            <type>text/plain</type>
            <size>21808</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTA4LTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uc29saWRhdGUg
ZGF0YS9zdHJpbmcgQVBJIGxvYWRpbmcgcGF0aHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGxvYWRIVE1MU3RyaW5nIGFuZCBsb2FkRGF0YSBhcmUgYmFz
aWNhbGx5IGR1cGxpY2F0ZSBjb2RlLgorICAgICAgICBsb2FkUGxhaW5UZXh0U3RyaW5nIHdhcyBh
bHNvIGJhc2ljYWxseSB0aGUgc2FtZSBleGNlcHQgaXQgZGlkbid0IHNldCB1cCBhIG5hdmlnYXRp
b24sIHdoaWNoCisgICAgICAgIHdhcyBhbG1vc3QgY2VydGFpbmx5IGEgYnVnLCBidXQgbm9ib2R5
IHVzZXMgaXQgaW4gYWxsIG9mIEFwcGxlIGFuZCBEZWJpYW4uICBXZSBzaG91bGQgcHJvYmFibHkg
ZGVwcmVjYXRlCisgICAgICAgIGFuZCByZW1vdmUgaXQsIGJ1dCBmb3Igbm93IEkgbWFrZSBpdCB1
c2UgdGhlIHNhbWUgZGF0YSBsb2FkaW5nIHBhdGguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWREYXRhKToKKyAgICAgICAgKFdLUGFn
ZUxvYWREYXRhV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKGxvYWRTdHJpbmcpOgorICAgICAgICAo
V0tQYWdlTG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEhUTUxTdHJpbmdXaXRo
VXNlckRhdGEpOgorICAgICAgICAoV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAg
IChXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmJhc2VVUkw6dXNl
ckRhdGE6XSk6CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRGF0
YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dXNlckRhdGE6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBsb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05h
bWU6YmFzZVVSTDp1c2VyRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxv
YWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkU3RyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE4LTA4
LTE1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXVtHVEtdIFdheWxhbmRDb21wb3NpdG9yIGZhaWxzIHRvIHByb3Blcmx5IHJlbW92ZSBz
dXJmYWNlIGZyb20gaXRzIHBhZ2UgbWFwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksNyArMTA0OSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG8KICAgICByZXR1cm4gV1RG
TW92ZShuYXZpZ2F0aW9uKTsKIH0KIAotUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTEwNjUsNyArMTA2NSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG8KIAogICAgIExvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOwot
ICAgIGxvYWRQYXJhbWV0ZXJzLmRhdGEgPSBkYXRhLT5kYXRhUmVmZXJlbmNlKCk7CisgICAgbG9h
ZFBhcmFtZXRlcnMuZGF0YSA9IGRhdGE7CiAgICAgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUgPSBN
SU1FVHlwZTsKICAgICBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUgPSBlbmNvZGluZzsKICAg
ICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFzZVVSTDsKQEAgLTEwNzksMzYgKzEw
NzksNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0
dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKLS8vIEZJWE1FOiBHZXQgcmlkIG9mIGxvYWRI
VE1MU3RyaW5nIGFuZCBqdXN0IHVzZSBsb2FkRGF0YSBpbnN0ZWFkLgotUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewot
ICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8g
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24o
KTsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKLQotICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2Fj
dGlvbiwgIWJhc2VVUkwuaXNFbXB0eSgpID8gYmFzZVVSTCA6IGJsYW5rVVJMKCkuc3RyaW5nKCkp
OwotCi0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7
Ci0KLSAgICBMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBsb2FkUGFyYW1ldGVy
cy5uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKLSAgICBsb2FkUGFy
YW1ldGVycy5zdHJpbmcgPSBodG1sU3RyaW5nOwotICAgIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
ID0gInRleHQvaHRtbCJfczsKLSAgICBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nID0gYmFz
ZVVSTDsKLSAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7Ci0gICAgYWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7Ci0KLSAgICBtX3Byb2Nlc3MtPmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkU3RyaW5nKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwotICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci0KLSAgICByZXR1cm4g
V1RGTW92ZShuYXZpZ2F0aW9uKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9j
ZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1w
dCB0bwpAQCAtMTE0NiwyOCArMTExNiw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJu
YXRlSFRNTFN0cmkKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQotewotICAgIGlmIChtX2lzQ2xvc2Vk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoKTsKLQotICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3Rh
dGUudHJhbnNhY3Rpb24oKTsKLSAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVl
c3RVUkwodHJhbnNhY3Rpb24sIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwotCi0gICAgTG9hZFBhcmFt
ZXRlcnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEID0g
MDsKLSAgICBsb2FkUGFyYW1ldGVycy5zdHJpbmcgPSBzdHJpbmc7Ci0gICAgbG9hZFBhcmFtZXRl
cnMuTUlNRVR5cGUgPSAidGV4dC9wbGFpbiJfczsKLSAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
KS5nZXQoKSk7Ci0gICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRTdHJpbmcobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0
YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAg
ICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NiwxMCArNDU2LDggQEAgcHVibGljOgogICAg
IHZvaWQgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYpOwogICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IGxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURpcmVjdG9yeVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoQVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CisgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gbG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2b2lkIGxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRQbGFpblRleHRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAg
ICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRD
bGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwg
V2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSwyMiAr
MTkxLDM3IEBAIHZvaWQgV0tQYWdlTG9hZEZpbGVXaXRoVXNlckRhdGEoV0tQYWdlUmUKIAogdm9p
ZCBXS1BhZ2VMb2FkRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIGRhdGFSZWYsIFdL
U3RyaW5nUmVmIE1JTUVUeXBlUmVmLCBXS1N0cmluZ1JlZiBlbmNvZGluZ1JlZiwgV0tVUkxSZWYg
YmFzZVVSTFJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRhKHRvSW1wbChkYXRh
UmVmKSwgdG9XVEZTdHJpbmcoTUlNRVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiks
IHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWREYXRh
KHRvSW1wbChkYXRhUmVmKS0+ZGF0YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhNSU1FVHlwZVJl
ZiksIHRvV1RGU3RyaW5nKGVuY29kaW5nUmVmKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpOwog
fQogCiB2b2lkIFdLUGFnZUxvYWREYXRhV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S0RhdGFSZWYgZGF0YVJlZiwgV0tTdHJpbmdSZWYgTUlNRVR5cGVSZWYsIFdLU3RyaW5nUmVmIGVu
Y29kaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkRGF0YSh0b0ltcGwoZGF0YVJlZiksIHRvV1RGU3Ry
aW5nKE1JTUVUeXBlUmVmKSwgdG9XVEZTdHJpbmcoZW5jb2RpbmdSZWYpLCB0b1dURlN0cmluZyhi
YXNlVVJMUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVmKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5s
b2FkRGF0YSh0b0ltcGwoZGF0YVJlZiktPmRhdGFSZWZlcmVuY2UoKSwgdG9XVEZTdHJpbmcoTUlN
RVR5cGVSZWYpLCB0b1dURlN0cmluZyhlbmNvZGluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxS
ZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKK30KKworc3RhdGljIHZvaWQgbG9hZFN0cmluZyhX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKK3sK
KyAgICBTdHJpbmcgc3RyaW5nID0gdG9XVEZTdHJpbmcoc3RyaW5nUmVmKTsKKyAgICBTdHJpbmcg
ZW5jb2Rpbmc7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKHN0cmluZy5p
c051bGwoKSB8fCBzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgZW5jb2RpbmcgPSAibGF0aW4x
Il9zOworICAgICAgICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuY2hhcmFjdGVyczgoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikgfTsK
KyAgICB9IGVsc2UgeworICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiX3M7CisgICAgICAgIGRh
dGEgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgfTsKKyAgICB9CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5sb2FkRGF0YShkYXRhLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkws
IHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNl
VVJMUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEhUTUxTdHJpbmcodG9XVEZTdHJp
bmcoaHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsKKyAgICBXS1BhZ2VM
b2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShwYWdlUmVmLCBodG1sU3RyaW5nUmVmLCBiYXNlVVJM
UmVmLCBudWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkSFRNTFN0cmluZ1dpdGhVc2VyRGF0
YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYg
YmFzZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZEhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5n
KGJhc2VVUkxSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKKyAgICBsb2FkU3RyaW5nKHBhZ2VS
ZWYsIGh0bWxTdHJpbmdSZWYsICJ0ZXh0L2h0bWwiX3MsIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYp
LCB1c2VyRGF0YVJlZik7CiB9CiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
V0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJh
c2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQpAQCAtMjIxLDEyICsyMzYsMTIg
QEAgdm9pZCBXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVcwogCiB2b2lkIFdLUGFn
ZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWlu
VGV4dFN0cmluZ1JlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRQbGFpblRleHRTdHJp
bmcodG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5nUmVmKSk7ICAgIAorICAgIFdLUGFnZUxvYWRQ
bGFpblRleHRTdHJpbmdXaXRoVXNlckRhdGEocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCBu
dWxscHRyKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2FkUGxhaW5UZXh0U3RyaW5nV2l0aFVzZXJEYXRh
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRTdHJpbmdSZWYsIFdLVHlw
ZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRQbGFpblRleHRT
dHJpbmcodG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5nUmVmKSwgdG9JbXBsKHVzZXJEYXRhUmVm
KSk7ICAgIAorICAgIGxvYWRTdHJpbmcocGFnZVJlZiwgcGxhaW5UZXh0U3RyaW5nUmVmLCAidGV4
dC9wbGFpbiJfcywgYmxhbmtVUkwoKS5zdHJpbmcoKSwgdXNlckRhdGFSZWYpOwogfQogCiB2b2lk
IFdLUGFnZUxvYWRXZWJBcmNoaXZlRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tEYXRhUmVmIHdl
YkFyY2hpdmVEYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShy
ZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUz
LDggQEAgLSAodm9pZClsb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilIVE1MUwogICAgIGlmICh1
c2VyRGF0YSkKICAgICAgICAgd2tVc2VyRGF0YSA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVz
ZXJEYXRhKTsKIAotICAgIF9wYWdlLT5sb2FkSFRNTFN0cmluZyhIVE1MU3RyaW5nLCBbYmFzZVVS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQoKSk7CisgICAg
TlNEYXRhICpkYXRhID0gW0hUTUxTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOworICAgIF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgInRleHQvaHRtbCJfcywgIlVURi04Il9z
LCBbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQo
KSk7CiB9CiAKIC0gKHZvaWQpbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1
bnJlYWNoYWJsZVVSTApAQCAtMTY4LDE3ICsxNjksMTEgQEAgLSAodm9pZClsb2FkRGF0YTooTlNE
YXRhICopZGF0YSBNSU1FVHlwZQogCiAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRhIE1J
TUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICop
ZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1c2VyRGF0YTooaWQpdXNlckRh
dGEKIHsKLSAgICBSZWZQdHI8QVBJOjpEYXRhPiBhcGlEYXRhOwotICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjb3B5IHRoZSBkYXRhLgotICAgICAgICBhcGlE
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhkYXRhKTsKLSAgICB9Ci0KICAg
ICBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiB3a1VzZXJEYXRhOwogICAgIGlmICh1c2VyRGF0YSkK
ICAgICAgICAgd2tVc2VyRGF0YSA9IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKTsK
IAotICAgIF9wYWdlLT5sb2FkRGF0YShhcGlEYXRhLmdldCgpLCBNSU1FVHlwZSwgZW5jb2RpbmdO
YW1lLCBbYmFzZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5n
ZXQoKSk7CisgICAgX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBbYmFz
ZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSwgd2tVc2VyRGF0YS5nZXQoKSk7CiB9
CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTAzLDcgKzkwMyw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmkK
IAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5T
U3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJh
Y3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKIHsKLSAgICBhdXRvIG5h
dmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhkYXRhKS5wdHIoKSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5h
YnNvbHV0ZVN0cmluZyk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWREYXRhKHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBN
SU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKTsK
ICAgICBpZiAoIW5hdmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTQyMzcsNyAr
NDIzNyw3IEBAIC0gKHZvaWQpX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihOU1N0cmkKIAogLSAo
V0tOYXZpZ2F0aW9uICopX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUVUeXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJF
bmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0
YQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5sb2FkRGF0YShBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKGRhdGEpLnB0cigpLCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6
Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxv
YWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRl
U3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRhKS5wdHIoKSk7
CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAko
cmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKQEAgLTI1ODMsNyArMjU4NCw3IEBAIHZvaWQg
d2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbChXZWJLaXRXZWIKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250
ZW50KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZEhUTUxTdHJpbmcoU3RyaW5nOjpmcm9t
VVRGOChjb250ZW50KSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJJKSk7CisgICAgZ2V0UGFnZSh3
ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvbnRl
bnQpLCBjb250ZW50ID8gc3RybGVuKGNvbnRlbnQpIDogMCB9LCAidGV4dC9odG1sIl9zLCAiVVRG
LTgiX3MsIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkpOwogfQogCiAvKioKQEAgLTI2MjIsMTMg
KzI2MjMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX3BsYWluX3RleHQoV2ViCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0
dXJuX2lmX2ZhaWwocGxhaW5UZXh0KTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZFBsYWlu
VGV4dFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHBsYWluVGV4dCkpOwotfQotCi1zdGF0aWMgdm9p
ZCByZWxlYXNlR0J5dGVzKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBieXRlcykKLXsKLSAg
ICAvLyBCYWxhbmNlZCBieSBnX2J5dGVzX3JlZiBpbiB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9ieXRl
cygpLgotICAgIGdfYnl0ZXNfdW5yZWYoc3RhdGljX2Nhc3Q8R0J5dGVzKj4oY29uc3RfY2FzdDx2
b2lkKj4oYnl0ZXMpKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkRGF0YSh7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBsYWluVGV4dCksIHBsYWluVGV4dCA/IHN0cmxlbihw
bGFpblRleHQpIDogMCB9LCAidGV4dC9wbGFpbiJfcywgIlVURi04Il9zLCBibGFua1VSTCgpLnN0
cmluZygpKTsKIH0KIAogLyoqCkBAIC0yNjU2LDExICsyNjUxLDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF9ieXRlcyhXZWJLaXRXZQogICAgIGdjb25zdHBvaW50ZXIgYnl0ZXNEYXRhID0g
Z19ieXRlc19nZXRfZGF0YShieXRlcywgJmJ5dGVzRGF0YVNpemUpOwogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoYnl0ZXNEYXRhU2l6ZSk7CiAKLSAgICAvLyBCYWxhbmNlZCBieSBnX2J5dGVzX3VucmVm
IGluIHJlbGVhc2VHQnl0ZXMuCi0gICAgZ19ieXRlc19yZWYoYnl0ZXMpOwotCi0gICAgUmVmPEFQ
STo6RGF0YT4gZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGJ5dGVzRGF0YSksIGJ5dGVzRGF0YVNpemUsIHJlbGVh
c2VHQnl0ZXMsIGJ5dGVzKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKGRhdGEucHRy
KCksIG1pbWVUeXBlID8gU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSkgOiBTdHJpbmc6OmZyb21V
VEY4KCJ0ZXh0L2h0bWwiKSwKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWREYXRhKHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZXNEYXRhKSwgYnl0ZXNEYXRhU2l6ZSB9LCBt
aW1lVHlwZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgi
dGV4dC9odG1sIiksCiAgICAgICAgIGVuY29kaW5nID8gU3RyaW5nOjpmcm9tVVRGOChlbmNvZGlu
ZykgOiBTdHJpbmc6OmZyb21VVEY4KCJVVEYtOCIpLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkp
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDE4ICsxMzA3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aQogICAgIG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+
Y29yZUZyYW1lKCksIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRTdHJp
bmdJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKLXsKLSAgICBpZiAoIWh0bWxT
dHJpbmcuaXNOdWxsKCkgJiYgaHRtbFN0cmluZy5pczhCaXQoKSkgewotICAgICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVyczgoKSksIGh0bWxTdHJpbmcubGVuZ3RoKCkgKiBz
aXplb2YoTENoYXIpKTsKLSAgICAgICAgbG9hZERhdGFJbXBsKG5hdmlnYXRpb25JRCwgV1RGTW92
ZShzaGFyZWRCdWZmZXIpLCBNSU1FVHlwZSwgImxhdGluMSJfcywgYmFzZVVSTCwgdW5yZWFjaGFi
bGVVUkwsIHVzZXJEYXRhKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0
bWxTdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7Ci0gICAgICAgIGxvYWREYXRhSW1wbChuYXZpZ2F0aW9uSUQsIFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgTUlNRVR5cGUsICJ1dGYtMTYiX3MsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCB1
c2VyRGF0YSk7Ci0gICAgfQotfQotCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAgICBwbGF0Zm9ybURpZFJlY2VpdmVMb2Fk
UGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKQEAgLTEzMjcsMTQgKzEzMTYsNiBAQCB2b2lk
IFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0CiAgICAgbG9hZERhdGFJbXBsKGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFy
YW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBV
UkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRT
dHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQotewotICAgIHBsYXRm
b3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKLQotICAgIFVSTCBi
YXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VS
TCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2Fk
U3RyaW5nSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnN0
cmluZywgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmcoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3Jt
RGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTEzNDMsNyArMTMy
NCwxNSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvCiAgICAgVVJM
IHVucmVhY2hhYmxlVVJMID0gbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcuaXNF
bXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVucmVhY2hhYmxlVVJM
U3RyaW5nKTsKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVy
cy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChV
UkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpOwogICAg
IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJy
b3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOwotICAgIGxvYWRTdHJp
bmdJbXBsKDAsIGxvYWRQYXJhbWV0ZXJzLnN0cmluZywgInRleHQvaHRtbCJfcywgYmFzZVVSTCwg
dW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhKTsKKyAgICAKKyAgICBjb25z
dCBTdHJpbmcmIGh0bWxTdHJpbmcgPSBsb2FkUGFyYW1ldGVycy5zdHJpbmc7CisgICAgaWYgKCFo
dG1sU3RyaW5nLmlzTnVsbCgpICYmIGh0bWxTdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihodG1sU3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBodG1sU3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgIGxvYWREYXRhSW1wbCgwLCBXVEZNb3ZlKHNoYXJl
ZEJ1ZmZlciksICJ0ZXh0L2h0bWwiX3MsICJsYXRpbjEiX3MsIGJhc2VVUkwsIHVucmVhY2hhYmxl
VVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihodG1sU3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgaHRtbFN0cmluZy5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBsb2FkRGF0YUltcGwoMCwgV1RGTW92ZShzaGFy
ZWRCdWZmZXIpLCAidGV4dC9odG1sIl9zLCAidXRmLTE2Il9zLCBiYXNlVVJMLCB1bnJlYWNoYWJs
ZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOworICAgIH0KICAgICBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVk
VVJMKHsgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1NSwxNCArMTE1NSwxMiBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFtZSopOwogCiAgICAgdm9p
ZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBsb2FkU3RyaW5nSW1wbCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xv
c2UoKTsKICAgICB2b2lkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExv
YWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmKTsK
LSAgICB2b2lkIGxvYWREYXRhKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7Ci0gICAgdm9pZCBsb2Fk
U3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CisgICAgdm9pZCBsb2FkRGF0YShMb2FkUGFy
YW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQ
YXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
ayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2Vi
Q29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDYsNyArMTQ2LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJRCkKICAg
ICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVy
cykKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1l
dGVycykKLSAgICBMb2FkU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKQogICAgIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cnVjdCBXZWJLaXQ6Okxv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogCiAgICAgTmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2soU3RyaW5nIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2lu
dCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpCg==
</data>
<flag name="review"
          id="364992"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>