<?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>138799</bug_id>
          
          <creation_ts>2014-11-17 11:01:24 -0800</creation_ts>
          <short_desc>Simple line layout: Rename FlowContentIterator and move implementation to SimpleLineLayoutFlowContents.cpp</short_desc>
          <delta_ts>2014-11-17 15:17:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1049252</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-11-17 11:01:24 -0800</bug_when>
    <thetext>This is in preparation to support multiple renderers. The FlowContents class will be used not just when we create runs, but also when we resolve them at painting time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049256</commentid>
    <comment_count>1</comment_count>
      <attachid>241726</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-11-17 11:08:42 -0800</bug_when>
    <thetext>Created attachment 241726
Patch

This does not compile as it has source code dependency on bug 138796.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049296</commentid>
    <comment_count>2</comment_count>
      <attachid>241738</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-11-17 13:39:32 -0800</bug_when>
    <thetext>Created attachment 241738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049326</commentid>
    <comment_count>3</comment_count>
      <attachid>241738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-17 15:17:45 -0800</bug_when>
    <thetext>Comment on attachment 241738
Patch

Clearing flags on attachment: 241738

Committed r176235: &lt;http://trac.webkit.org/changeset/176235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049327</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-17 15:17:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241726</attachid>
            <date>2014-11-17 11:08:42 -0800</date>
            <delta_ts>2014-11-17 13:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>31054</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWVmYTNmZC4uYmY1NDY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIzNTAsNiArMjM1MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5k
ZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuY3BwCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2
aW9yLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorICAgIHJlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuY3BwCiAgICAgcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2E3M2NiYy4uZjMyMzk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE0LTExLTE3
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUg
bGF5b3V0OiBSZW5hbWUgRmxvd0NvbnRlbnRJdGVyYXRvciBhbmQgbW92ZSBpbXBsZW1lbnRhdGlv
biB0byBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4Nzk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiB0byBz
dXBwb3J0IG11bHRpcGxlIHJlbmRlcmVycy4KKyAgICAgICAgVGhlIEZsb3dDb250ZW50cyBjbGFz
cyB3aWxsIGJlIHVzZWQgbm90IGp1c3Qgd2hlbiB3ZSBjcmVhdGUgcnVucywgYnV0IGFsc28gd2hl
biB3ZSByZXNvbHZlIHRoZW0gYXQgcGFpbnRpbmcgdGltZS4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpyZW1vdmVUcmFpbGluZ1do
aXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6aW5pdGlhbGl6
ZU5ld0xpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6c3BsaXRGcmFn
bWVudFRvRml0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpuZXh0
RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlTGlu
ZVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2xvc2VMaW5lRW5k
aW5nQW5kQWRqdXN0UnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
cmVhdGVUZXh0UnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93
Q29udGVudEl0ZXJhdG9yOjpGbG93Q29udGVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50SXRlcmF0b3I6OmZpbmROZXh0
QnJlYWthYmxlUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Rmxvd0NvbnRlbnRJdGVyYXRvcjo6ZmluZE5leHROb25XaGl0ZXNwYWNlUG9zaXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0Nv
bnRlbnRJdGVyYXRvcjo6dGV4dFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50SXRlcmF0b3I6OmlzTmV3bGluZUNoYXJhY3Rlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVu
dEl0ZXJhdG9yOjppc0VuZE9mQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudEl0ZXJhdG9yOjpzdHlsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlTGluZUxlZnQpOiBEZWxl
dGVkLgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVu
dHM6OkZsb3dDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpG
bG93Q29udGVudHM6OmZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzOjpmaW5kTmV4dE5vbldoaXRlc3BhY2VQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVu
dHM6OnRleHRXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93
Q29udGVudHMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpG
bG93Q29udGVudHM6OlN0eWxlOjpTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpGbG93Q29udGVudHM6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZsb3dDb250ZW50czo6aXNOZXdsaW5lQ2hhcmFjdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50czo6aXNFbmRPZkNvbnRlbnQpOgor
CisyMDE0LTExLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAg
U2ltcGxlIGxpbmUgbGF5b3V0OiBEcm9wIDE2Yml0IHN1cHBvcnQgdGVtcG9yYXJpbHkuCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg3OTYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggNWEw
ZGRkNi4uNTY1ZDU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCkBAIC0xMTUxMCw2ICsxMTUxMCw3IEBACiAgICAgPC9DbENvbXBpbGU+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcU2VsZWN0aW9uU3VidHJlZVJvb3Qu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNpbXBsZUxpbmVM
YXlvdXQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcVGV4dFBhaW50U3R5bGUu
Y3BwIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGQyYzhkMTEuLmI3OGY0NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
QEAgLTY5MzQsNiArNjkzNCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcU2ltcGxlTGluZUxheW91dC5jcHAiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRl
cmluZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIj4KICAgICAgIDxGaWx0
ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjA4ZmMwYS4uZWRk
MDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjA2Miw2ICsyMDYyLDggQEAKIAkJNTdDRjQ5NzQxNEVFMzZENzAwRUNGRjE0
IC8qIEluc2VydGlvblBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3Q0Y0OTcyMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5j
cHAgKi87IH07CiAJCTU3Q0Y0OTc1MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdDRjQ5NzMx
NEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmggKi87IH07CiAJCTU4NUQ2REZDMUEx
NTM1NTYwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg1RDZERkIxQTE1MzU1NjAwRkE0
RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAgKi87IH07CisJCTU4NUQ2RTAzMUEx
QTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2RTAxMUExQTc5MkUw
MEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCAqLzsgfTsKKwkJNTg1
RDZFMDQxQTFBNzkyRTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2RTAyMUEx
QTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi87IH07CiAJ
CTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODk1NTZFQzE4RDRBNDQwMDA3NjRCMDMg
LyogQm9yZGVyRWRnZS5oICovOyB9OwogCQk1OEFFRTJGNDE4RDRCQ0NGMDAyMkU3RkUgLyogQm9y
ZGVyRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OEFFRTJGMzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgKi87IH07CiAJCTU4
Q0QzNUNCMThFQjRDMzkwMEI5RjNBQyAvKiBGbG9hdFNpemVIYXNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OENEMzVDQTE4RUI0QzM5MDBCOUYzQUMg
LyogRmxvYXRTaXplSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MTgyLDYgKzkxODQsOCBAQAogCQk1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zZXJ0aW9uUG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0NGNDk3MzE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zZXJ0aW9uUG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTg1RDZERkIxQTE1MzU1NjAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRS
ZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVM
aW5lTGF5b3V0UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1ODVE
NkUwMTFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW1wbGVMaW5lTGF5b3V0Rmxv
d0NvbnRlbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTg1RDZFMDIxQTFB
NzkyRTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODk1NTZFQzE4RDRBNDQwMDA3NjRCMDMgLyog
Qm9yZGVyRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3JkZXJFZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4QUVFMkYzMThENEJDQ0YwMDIyRTdG
RSAvKiBCb3JkZXJFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJvcmRlckVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OENEMzVDQTE4
RUI0QzM5MDBCOUYzQUMgLyogRmxvYXRTaXplSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGbG9hdFNpemVIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMjQ5Nyw2ICsyMjUwMSw4IEBACiAJCQkJQ0RDRkFCQkIxOEMwQUUzMTAwNkY4NDUwIC8qIFNl
bGVjdGlvblN1YnRyZWVSb290LmggKi8sCiAJCQkJRTQ4OTQ0QTAxODBCNTdEODAwRjE2NUQ4IC8q
IFNpbXBsZUxpbmVMYXlvdXQuY3BwICovLAogCQkJCUU0ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAv
KiBTaW1wbGVMaW5lTGF5b3V0LmggKi8sCisJCQkJNTg1RDZFMDExQTFBNzkyRTAwRkE0RjEyIC8q
IFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwICovLAorCQkJCTU4NUQ2RTAyMUExQTc5
MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi8sCiAJCQkJRTRF
OUIxMUExODE0NTY5MjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwICov
LAogCQkJCUU0RTlCMTFDMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmggKi8sCiAJCQkJNTg1RDZERkIxQTE1MzU1NjAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHAgKi8sCkBAIC0yNTM1MSw2ICsyNTM1Nyw3IEBACiAJCQkJRDNBOTRBM0Ix
MjJEQUJBQzAwQTM3QkJDIC8qIE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUQzQUExMEY0MTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRpYVF1ZXJ5TWF0Y2hlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU4NUQ2RTA0MUExQTc5MkUwMEZBNEYxMiAv
KiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREJF
QUVBRDE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBNZWRpYVNlc3Npb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NzcyLDYgKzI5Nzc5LDcgQEAKIAkJ
CQlGNTVCM0REQjEyNTFGMTJEMDAzRUYyNjkgLyogVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3NTUzQ0ZFOTEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBU
aW1lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1ODVENkUwMzFBMUE3OTJFMDBGQTRGMTIgLyog
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2
MTNBRjBDRDYzMzEwMDBGQURBNzUgLyogVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBMURFNzEzMjE4NjEzMjIyMDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTFERTcxMkQxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuY3BwCmluZGV4IGFiMTBmMjkuLmJiN2Q0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTQyLDEwICs0MiwxMCBAQAogI2luY2x1
ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5o
IgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5bGUuaCIKLSNpbmNsdWRlICJicmVha19saW5lcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU2ltcGxlTGluZUxheW91dCB7CkBA
IC0yMTMsNzQgKzIxMyw2IEBAIHN0cnVjdCBTdHlsZSB7CiAgICAgdW5zaWduZWQgdGFiV2lkdGg7
CiB9OwogCi1jbGFzcyBGbG93Q29udGVudEl0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBGbG93Q29u
dGVudEl0ZXJhdG9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKLSAgICAgICAgOiBtX2Zs
b3coZmxvdykKLSAgICAgICAgLCBtX3N0eWxlKGZsb3cuc3R5bGUoKSkKLSAgICAgICAgLCBtX2xp
bmVCcmVha0l0ZXJhdG9yKGRvd25jYXN0PFJlbmRlclRleHQ+KCpmbG93LmZpcnN0Q2hpbGQoKSku
dGV4dCgpLCBmbG93LnN0eWxlKCkubG9jYWxlKCkpCi0gICAgewotICAgIH0KLQotICAgIHVuc2ln
bmVkIGZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pCi0gICAgewot
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9saW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAg
ICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbjxMQ2hhciwgZmFsc2U+KG1fbGluZUJy
ZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHBvc2l0
aW9uKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bih1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQmIHNwYWNlQ291bnQpIGNvbnN0Ci0gICAgewot
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9saW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBjb25zdCBM
Q2hhciogdGV4dCA9IHN0cmluZy5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBzcGFjZUNvdW50ID0g
MDsKLSAgICAgICAgZm9yICg7IHBvc2l0aW9uIDwgbGVuZ3RoOyArK3Bvc2l0aW9uKSB7Ci0gICAg
ICAgICAgICBib29sIGlzU3BhY2UgPSB0ZXh0W3Bvc2l0aW9uXSA9PSAnICc7Ci0gICAgICAgICAg
ICBpZiAoIShpc1NwYWNlIHx8IHRleHRbcG9zaXRpb25dID09ICdcdCcgfHwgKCFtX3N0eWxlLnBy
ZXNlcnZlTmV3bGluZSAmJiB0ZXh0W3Bvc2l0aW9uXSA9PSAnXG4nKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOwotICAgICAgICAgICAgaWYgKGlzU3BhY2UpCi0gICAgICAgICAg
ICAgICAgKytzcGFjZUNvdW50OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0g
ICAgfQotCi0gICAgZmxvYXQgdGV4dFdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBm
bG9hdCB4UG9zaXRpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBTdHJpbmcgc3RyaW5nID0gbV9s
aW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOwotICAgICAgICBpZiAobV9zdHlsZS5mb250LmlzRml4ZWRQaXRjaCgpIHx8
ICghZnJvbSAmJiB0byA9PSBsZW5ndGgpKSB7Ci0gICAgICAgICAgICBjb25zdCBSZW5kZXJUZXh0
JiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX2Zsb3cuZmlyc3RDaGlsZCgpKTsK
LSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci53aWR0aChmcm9tLCB0byAtIGZyb20sIG1fc3R5
bGUuZm9udCwgeFBvc2l0aW9uLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFRleHRSdW4gcnVuKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgZnJvbSwgdG8gLSBmcm9tKTsK
LSAgICAgICAgcnVuLnNldFhQb3MoeFBvc2l0aW9uKTsKLSAgICAgICAgcnVuLnNldENoYXJhY3Rl
cnNMZW5ndGgobGVuZ3RoIC0gZnJvbSk7Ci0gICAgICAgIHJ1bi5zZXRUYWJTaXplKCEhbV9zdHls
ZS50YWJXaWR0aCwgbV9zdHlsZS50YWJXaWR0aCk7Ci0gICAgICAgIEFTU0VSVChydW4uY2hhcmFj
dGVyc0xlbmd0aCgpID49IHJ1bi5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBtX3N0eWxlLmZv
bnQud2lkdGgocnVuKTsKLSAgICB9Ci0KLSAgICBib29sIGlzTmV3bGluZUNoYXJhY3Rlcih1bnNp
Z25lZCBwb3NpdGlvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xpbmVCcmVha0l0
ZXJhdG9yLnN0cmluZygpLmxlbmd0aCgpID4gcG9zaXRpb24pOwotICAgICAgICByZXR1cm4gbV9s
aW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKS5hdChwb3NpdGlvbikgPT0gJ1xuJzsKLSAgICB9Ci0K
LSAgICBib29sIGlzRW5kT2ZDb250ZW50KHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHBvc2l0aW9uID49IG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCku
bGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgY29uc3QgU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZTsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9m
bG93OwotICAgIFN0eWxlIG1fc3R5bGU7Ci0gICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIG1fbGlu
ZUJyZWFrSXRlcmF0b3I7Ci19OwotCi0KIHN0YXRpYyBmbG9hdCBjb21wdXRlTGluZUxlZnQoRVRl
eHRBbGlnbiB0ZXh0QWxpZ24sIGZsb2F0IGF2YWlsYWJsZVdpZHRoLCBmbG9hdCBjb21taXR0ZWRX
aWR0aCwgZmxvYXQgbG9naWNhbExlZnRPZmZzZXQpCiB7CiAgICAgZmxvYXQgcmVtYWluaW5nV2lk
dGggPSBhdmFpbGFibGVXaWR0aCAtIGNvbW1pdHRlZFdpZHRoOwpAQCAtNDM3LDkgKzM2OSw5IEBA
IHN0cnVjdCBMaW5lU3RhdGUgewogICAgIFRleHRGcmFnbWVudCBvdmVmbG93ZWRGcmFnbWVudDsK
IH07CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMaW5lU3RhdGUmIGxp
bmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCBjb25zdCBGbG93Q29udGVudEl0
ZXJhdG9yJiBjb250ZW50SXRlcmF0b3IpCitzdGF0aWMgdm9pZCByZW1vdmVUcmFpbGluZ1doaXRl
c3BhY2UoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywg
Y29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMpCiB7Ci0gICAgY29uc3QgYXV0byYgc3R5
bGUgPSBjb250ZW50SXRlcmF0b3Iuc3R5bGUoKTsKKyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGZs
b3dDb250ZW50cy5zdHlsZSgpOwogICAgIGJvb2wgcHJlV3JhcCA9IHN0eWxlLndyYXBMaW5lcyAm
JiAhc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlOwogICAgIC8vIFRyYWlsaW5nIHdoaXRlc3BhY2Ug
Z2V0cyByZW1vdmVkIHdoZW4gd2UgZWl0aGVyIGNvbGxhcHNlIHdoaXRlc3BhY2Ugb3IgcHJlLXdy
YXAgaXMgcHJlc2VudC4KICAgICBpZiAoIShzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgfHwgcHJl
V3JhcCkpIHsKQEAgLTQ3NCwxNCArNDA2LDE0IEBAIHN0YXRpYyB2b2lkIHJlbW92ZVRyYWlsaW5n
V2hpdGVzcGFjZShMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpCiAg
ICAgICAgIGxpbmVTdGF0ZS5yZW1vdmVDb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2UoKTsKICAg
ICB9CiAKLSAgICBpZiAoY29udGVudEl0ZXJhdG9yLmlzRW5kT2ZDb250ZW50KGxpbmVTdGF0ZS5w
b3NpdGlvbikpCisgICAgaWYgKGZsb3dDb250ZW50cy5pc0VuZE9mQ29udGVudChsaW5lU3RhdGUu
cG9zaXRpb24pKQogICAgICAgICByZXR1cm47CiAgICAgLy8gSWYgd2Ugc2tpcHBlZCBhbnkgd2hp
dGVzcGFjZSBhbmQgbm93IHRoZSBsaW5lIGVuZCBpcyBhICJwcmVzZXJ2ZWQiIG5ld2xpbmUsIHNr
aXAgdGhlIG5ld2xpbmUgdG9vIGFzIHdlIGFyZSB3cmFwcGluZyB0aGUgbGluZSBoZXJlIGFscmVh
ZHkuCi0gICAgaWYgKGxhc3RQb3NpdGlvbiAhPSBsaW5lU3RhdGUucG9zaXRpb24gJiYgc3R5bGUu
cHJlc2VydmVOZXdsaW5lICYmIGNvbnRlbnRJdGVyYXRvci5pc05ld2xpbmVDaGFyYWN0ZXIobGlu
ZVN0YXRlLnBvc2l0aW9uKSkKKyAgICBpZiAobGFzdFBvc2l0aW9uICE9IGxpbmVTdGF0ZS5wb3Np
dGlvbiAmJiBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUgJiYgZmxvd0NvbnRlbnRzLmlzTmV3bGluZUNo
YXJhY3RlcihsaW5lU3RhdGUucG9zaXRpb24pKQogICAgICAgICArK2xpbmVTdGF0ZS5wb3NpdGlv
bjsKIH0KIAotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ld0xpbmUoTGluZVN0YXRlJiBsaW5lU3Rh
dGUsIGNvbnN0IEZsb3dDb250ZW50SXRlcmF0b3ImIGNvbnRlbnRJdGVyYXRvciwgdW5zaWduZWQg
bGluZVN0YXJ0UnVuSW5kZXgpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV3TGluZShMaW5lU3Rh
dGUmIGxpbmVTdGF0ZSwgY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMsIHVuc2lnbmVk
IGxpbmVTdGFydFJ1bkluZGV4KQogewogICAgIGxpbmVTdGF0ZS5saW5lU3RhcnRSdW5JbmRleCA9
IGxpbmVTdGFydFJ1bkluZGV4OwogICAgIC8vIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlIGlmIGNv
bGxhcHNpbmcgd2hpdGVzcGFjZSwgdW5sZXNzIHRoZXJlJ3MgYW4gdW5jb21taXR0ZWQgZnJhZ21l
bnQgcHVzaGVkIGZyb20gdGhlIHByZXZpb3VzIGxpbmUuCkBAIC00OTMsMTIgKzQyNSwxMiBAQCBz
dGF0aWMgdm9pZCBpbml0aWFsaXplTmV3TGluZShMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgY29uc3Qg
Rmxvd0NvbnRlbnRJdGVyYXRvciYgYwogICAgICAgICAgICAgbGluZVN0YXRlLmp1bXBUbyhsaW5l
U3RhdGUub3ZlZmxvd2VkRnJhZ21lbnQuc3RhcnQsIDApOyAvLyBTdGFydCBvdmVyIHdpdGggdGhp
cyBmcmFnbWVudC4KICAgICB9IGVsc2UgewogICAgICAgICB1bnNpZ25lZCBzcGFjZUNvdW50ID0g
MDsKLSAgICAgICAgbGluZVN0YXRlLmp1bXBUbyhjb250ZW50SXRlcmF0b3Iuc3R5bGUoKS5jb2xs
YXBzZVdoaXRlc3BhY2UgPyBjb250ZW50SXRlcmF0b3IuZmluZE5leHROb25XaGl0ZXNwYWNlUG9z
aXRpb24obGluZVN0YXRlLnBvc2l0aW9uLCBzcGFjZUNvdW50KSA6IGxpbmVTdGF0ZS5wb3NpdGlv
biwgMCk7CisgICAgICAgIGxpbmVTdGF0ZS5qdW1wVG8oZmxvd0NvbnRlbnRzLnN0eWxlKCkuY29s
bGFwc2VXaGl0ZXNwYWNlID8gZmxvd0NvbnRlbnRzLmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0
aW9uKGxpbmVTdGF0ZS5wb3NpdGlvbiwgc3BhY2VDb3VudCkgOiBsaW5lU3RhdGUucG9zaXRpb24s
IDApOwogICAgIH0KICAgICBsaW5lU3RhdGUub3ZlZmxvd2VkRnJhZ21lbnQgPSBUZXh0RnJhZ21l
bnQoKTsKIH0KIAotc3RhdGljIFRleHRGcmFnbWVudCBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKFRl
eHRGcmFnbWVudCYgZnJhZ21lbnRUb1NwbGl0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBr
ZWVwQXRMZWFzdE9uZUNoYXJhY3RlciwgY29uc3QgRmxvd0NvbnRlbnRJdGVyYXRvciYgY29udGVu
dEl0ZXJhdG9yKQorc3RhdGljIFRleHRGcmFnbWVudCBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKFRl
eHRGcmFnbWVudCYgZnJhZ21lbnRUb1NwbGl0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBr
ZWVwQXRMZWFzdE9uZUNoYXJhY3RlciwgY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMp
CiB7CiAgICAgLy8gRmFzdCBwYXRoIGZvciBzaW5nbGUgY2hhciBmcmFnbWVudHMuCiAgICAgaWYg
KGZyYWdtZW50VG9TcGxpdC5zdGFydCArIDEgPT0gZnJhZ21lbnRUb1NwbGl0LmVuZCkgewpAQCAt
NTE3LDcgKzQ0OSw3IEBAIHN0YXRpYyBUZXh0RnJhZ21lbnQgc3BsaXRGcmFnbWVudFRvRml0TGlu
ZShUZXh0RnJhZ21lbnQmIGZyYWdtZW50VG9TcGxpdCwgZmxvYXQKICAgICBmbG9hdCB3aWR0aCA9
IDA7CiAgICAgd2hpbGUgKGxlZnQgPCByaWdodCkgewogICAgICAgICB1bnNpZ25lZCBtaWRkbGUg
PSAobGVmdCArIHJpZ2h0KSAvIDI7Ci0gICAgICAgIHdpZHRoID0gY29udGVudEl0ZXJhdG9yLnRl
eHRXaWR0aChmcmFnbWVudFRvU3BsaXQuc3RhcnQsIG1pZGRsZSArIDEsIDApOworICAgICAgICB3
aWR0aCA9IGZsb3dDb250ZW50cy50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0LCBtaWRk
bGUgKyAxLCAwKTsKICAgICAgICAgaWYgKGF2YWlsYWJsZVdpZHRoID4gd2lkdGgpCiAgICAgICAg
ICAgICBsZWZ0ID0gbWlkZGxlICsgMTsKICAgICAgICAgZWxzZSBpZiAoYXZhaWxhYmxlV2lkdGgg
PCB3aWR0aCkKQEAgLTUzMiwyNiArNDY0LDI2IEBAIHN0YXRpYyBUZXh0RnJhZ21lbnQgc3BsaXRG
cmFnbWVudFRvRml0TGluZShUZXh0RnJhZ21lbnQmIGZyYWdtZW50VG9TcGxpdCwgZmxvYXQKICAg
ICAgICAgKytyaWdodDsKICAgICBUZXh0RnJhZ21lbnQgZnJhZ21lbnRGb3JOZXh0TGluZShmcmFn
bWVudFRvU3BsaXQpOwogICAgIGZyYWdtZW50VG9TcGxpdC5lbmQgPSByaWdodDsKLSAgICBmcmFn
bWVudFRvU3BsaXQud2lkdGggPSBmcmFnbWVudFRvU3BsaXQuaXNFbXB0eSgpID8gMCA6IGNvbnRl
bnRJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0LCByaWdodCwgMCk7Cisg
ICAgZnJhZ21lbnRUb1NwbGl0LndpZHRoID0gZnJhZ21lbnRUb1NwbGl0LmlzRW1wdHkoKSA/IDAg
OiBmbG93Q29udGVudHMudGV4dFdpZHRoKGZyYWdtZW50VG9TcGxpdC5zdGFydCwgcmlnaHQsIDAp
OwogCiAgICAgZnJhZ21lbnRGb3JOZXh0TGluZS5zdGFydCA9IGZyYWdtZW50VG9TcGxpdC5lbmQ7
CiAgICAgZnJhZ21lbnRGb3JOZXh0TGluZS53aWR0aCAtPSBmcmFnbWVudFRvU3BsaXQud2lkdGg7
CiAgICAgcmV0dXJuIGZyYWdtZW50Rm9yTmV4dExpbmU7CiB9CiAKLXN0YXRpYyBUZXh0RnJhZ21l
bnQgbmV4dEZyYWdtZW50KHVuc2lnbmVkIHByZXZpb3VzRnJhZ21lbnRFbmQsIEZsb3dDb250ZW50
SXRlcmF0b3ImIGNvbnRlbnRJdGVyYXRvciwgZmxvYXQgeFBvc2l0aW9uKQorc3RhdGljIFRleHRG
cmFnbWVudCBuZXh0RnJhZ21lbnQodW5zaWduZWQgcHJldmlvdXNGcmFnbWVudEVuZCwgRmxvd0Nv
bnRlbnRzJiBmbG93Q29udGVudHMsIGZsb2F0IHhQb3NpdGlvbikKIHsKICAgICAvLyBBIGZyYWdt
ZW50IGNhbiBoYXZlCiAgICAgLy8gMS4gbmV3IGxpbmUgY2hhcmFjdGVyIHdoZW4gcHJlc2VydmVO
ZXdsaW5lIGlzIG9uIChub3QgY29uc2lkZXJlZCBhcyB3aGl0ZXNwYWNlKSBvcgogICAgIC8vIDIu
IHdoaXRlc3BhY2UgKGNvbGxhc3BlZCwgbm9uLWNvbGxhcHNlZCBtdWx0aSBvciBzaW5nbGUpIG9y
CiAgICAgLy8gMy4gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KLSAgICBjb25zdCBhdXRvJiBz
dHlsZSA9IGNvbnRlbnRJdGVyYXRvci5zdHlsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0g
Zmxvd0NvbnRlbnRzLnN0eWxlKCk7CiAgICAgVGV4dEZyYWdtZW50IGZyYWdtZW50OwotICAgIGZy
YWdtZW50Lm11c3RCcmVhayA9IHN0eWxlLnByZXNlcnZlTmV3bGluZSAmJiBjb250ZW50SXRlcmF0
b3IuaXNOZXdsaW5lQ2hhcmFjdGVyKHByZXZpb3VzRnJhZ21lbnRFbmQpOworICAgIGZyYWdtZW50
Lm11c3RCcmVhayA9IHN0eWxlLnByZXNlcnZlTmV3bGluZSAmJiBmbG93Q29udGVudHMuaXNOZXds
aW5lQ2hhcmFjdGVyKHByZXZpb3VzRnJhZ21lbnRFbmQpOwogICAgIHVuc2lnbmVkIHNwYWNlQ291
bnQgPSAwOwogICAgIHVuc2lnbmVkIHdoaXRlc3BhY2VFbmQgPSBwcmV2aW91c0ZyYWdtZW50RW5k
OwogICAgIGlmICghZnJhZ21lbnQubXVzdEJyZWFrKQotICAgICAgICB3aGl0ZXNwYWNlRW5kID0g
Y29udGVudEl0ZXJhdG9yLmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHByZXZpb3VzRnJh
Z21lbnRFbmQsIHNwYWNlQ291bnQpOworICAgICAgICB3aGl0ZXNwYWNlRW5kID0gZmxvd0NvbnRl
bnRzLmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHByZXZpb3VzRnJhZ21lbnRFbmQsIHNw
YWNlQ291bnQpOwogICAgIGZyYWdtZW50LmlzV2hpdGVzcGFjZU9ubHkgPSBwcmV2aW91c0ZyYWdt
ZW50RW5kIDwgd2hpdGVzcGFjZUVuZDsKICAgICBmcmFnbWVudC5zdGFydCA9IHByZXZpb3VzRnJh
Z21lbnRFbmQ7CiAgICAgaWYgKGZyYWdtZW50LmlzV2hpdGVzcGFjZU9ubHkpCkBAIC01NTksNyAr
NDkxLDcgQEAgc3RhdGljIFRleHRGcmFnbWVudCBuZXh0RnJhZ21lbnQodW5zaWduZWQgcHJldmlv
dXNGcmFnbWVudEVuZCwgRmxvd0NvbnRlbnRJdGVyYXQKICAgICBlbHNlIGlmIChmcmFnbWVudC5t
dXN0QnJlYWspCiAgICAgICAgIGZyYWdtZW50LmVuZCA9IGZyYWdtZW50LnN0YXJ0ICsgMTsKICAg
ICBlbHNlCi0gICAgICAgIGZyYWdtZW50LmVuZCA9IGNvbnRlbnRJdGVyYXRvci5maW5kTmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKHByZXZpb3VzRnJhZ21lbnRFbmQgKyAxKTsKKyAgICAgICAgZnJhZ21l
bnQuZW5kID0gZmxvd0NvbnRlbnRzLmZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24ocHJldmlvdXNG
cmFnbWVudEVuZCArIDEpOwogICAgIGJvb2wgbXVsdGlwbGUgPSBmcmFnbWVudC5zdGFydCArIDEg
PCBmcmFnbWVudC5lbmQ7CiAgICAgZnJhZ21lbnQuaXNDb2xsYXBzZWRXaGl0ZXNwYWNlID0gbXVs
dGlwbGUgJiYgZnJhZ21lbnQuaXNXaGl0ZXNwYWNlT25seSAmJiBzdHlsZS5jb2xsYXBzZVdoaXRl
c3BhY2U7CiAgICAgLy8gTm9uLWNvbGxhcHNlZCB3aGl0ZXNwYWNlIG9yIGp1c3QgcGxhaW4gd29y
ZHMgd2hlbiAiYnJlYWsgd29yZCBvbiBvdmVyZmxvdyIgaXMgb24gY2FuIHdyYXAuCkBAIC01NzQs
MTcgKzUwNiwxNyBAQCBzdGF0aWMgVGV4dEZyYWdtZW50IG5leHRGcmFnbWVudCh1bnNpZ25lZCBw
cmV2aW91c0ZyYWdtZW50RW5kLCBGbG93Q29udGVudEl0ZXJhdAogICAgIGVsc2UgaWYgKGZyYWdt
ZW50TGVuZ3RoID09IHNwYWNlQ291bnQpIC8vIFNwYWNlIG9ubHkuCiAgICAgICAgIGZyYWdtZW50
LndpZHRoID0gc3R5bGUuc3BhY2VXaWR0aCAqIHNwYWNlQ291bnQ7CiAgICAgZWxzZQotICAgICAg
ICBmcmFnbWVudC53aWR0aCA9IGNvbnRlbnRJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnQuc3Rh
cnQsIGZyYWdtZW50LmVuZCwgeFBvc2l0aW9uKTsKKyAgICAgICAgZnJhZ21lbnQud2lkdGggPSBm
bG93Q29udGVudHMudGV4dFdpZHRoKGZyYWdtZW50LnN0YXJ0LCBmcmFnbWVudC5lbmQsIHhQb3Np
dGlvbik7CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1zdGF0aWMgYm9vbCBjcmVhdGVMaW5l
UnVucyhMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCBG
bG93Q29udGVudEl0ZXJhdG9yJiBjb250ZW50SXRlcmF0b3IpCitzdGF0aWMgYm9vbCBjcmVhdGVM
aW5lUnVucyhMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5z
LCBGbG93Q29udGVudHMmIGZsb3dDb250ZW50cykKIHsKLSAgICBjb25zdCBhdXRvJiBzdHlsZSA9
IGNvbnRlbnRJdGVyYXRvci5zdHlsZSgpOworICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gZmxvd0Nv
bnRlbnRzLnN0eWxlKCk7CiAgICAgYm9vbCBsaW5lQ2FuQmVXcmFwcGVkID0gc3R5bGUud3JhcExp
bmVzIHx8IHN0eWxlLmJyZWFrV29yZE9uT3ZlcmZsb3c7Ci0gICAgd2hpbGUgKCFjb250ZW50SXRl
cmF0b3IuaXNFbmRPZkNvbnRlbnQobGluZVN0YXRlLnBvc2l0aW9uKSkgeworICAgIHdoaWxlICgh
Zmxvd0NvbnRlbnRzLmlzRW5kT2ZDb250ZW50KGxpbmVTdGF0ZS5wb3NpdGlvbikpIHsKICAgICAg
ICAgLy8gRmluZCB0aGUgbmV4dCB0ZXh0IGZyYWdtZW50LiBTdGFydCBmcm9tIHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGZyYWdtZW50IC1jdXJyZW50IGxpbmUgZW5kLgotICAgICAgICBUZXh0RnJh
Z21lbnQgZnJhZ21lbnQgPSBuZXh0RnJhZ21lbnQobGluZVN0YXRlLnBvc2l0aW9uLCBjb250ZW50
SXRlcmF0b3IsIGxpbmVTdGF0ZS53aWR0aCgpKTsKKyAgICAgICAgVGV4dEZyYWdtZW50IGZyYWdt
ZW50ID0gbmV4dEZyYWdtZW50KGxpbmVTdGF0ZS5wb3NpdGlvbiwgZmxvd0NvbnRlbnRzLCBsaW5l
U3RhdGUud2lkdGgoKSk7CiAgICAgICAgIGlmICgobGluZUNhbkJlV3JhcHBlZCAmJiAhbGluZVN0
YXRlLmZpdHMoZnJhZ21lbnQud2lkdGgpKSB8fCBmcmFnbWVudC5tdXN0QnJlYWspIHsKICAgICAg
ICAgICAgIC8vIE92ZXJmbG93IHdyYXBwaW5nIGJlaGF2aW91cjoKICAgICAgICAgICAgIC8vIDEu
IE5ld2xpbmUgY2hhcmFjdGVyOiB3cmFwcyB0aGUgbGluZSB1bmxlc3MgaXQncyB0cmVhdGVkIGFz
IHdoaXRlc3BhY2UuCkBAIC02MDYsNyArNTM4LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1
bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgRmwK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJhZ21lbnQuaXNXaGl0ZXNwYWNlT25seSB8fCAoKGlz
Rmlyc3RGcmFnbWVudCAmJiBzdHlsZS5icmVha1dvcmRPbk92ZXJmbG93KSB8fCAhc3R5bGUud3Jh
cExpbmVzKSkgeyAvLyAhc3R5bGUud3JhcExpbmVzOiBidWcxMzgxMDIocHJlc2VydmUgZXhpc3Rp
bmcgYmVoYXZpb3IpCiAgICAgICAgICAgICAgICAgLy8gV2hpdGVzcGFjZSBjb2xsYXBzZSBpcyBv
ZmYgb3Igbm9uLXdoaXRlc3BhY2UgY29udGVudC4gc3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZp
ZWQpZnJhZ21lbnQgLT4gdGhpcyBsaW5lU3RhdGUsIG92ZWZsb3dlZEZyYWdtZW50IC0+IG5leHQg
bGluZS4KICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoaXMgaXMgdGhlIG9ubHkgKGZpcnN0KSBm
cmFnbWVudCwgdGhlIGZpcnN0IGNoYXJhY3RlciBzdGF5cyBvbiB0aGUgbGluZSwgZXZlbiBpZiBp
dCBkb2VzIG5vdCBmaXQuCi0gICAgICAgICAgICAgICAgbGluZVN0YXRlLm92ZWZsb3dlZEZyYWdt
ZW50ID0gc3BsaXRGcmFnbWVudFRvRml0TGluZShmcmFnbWVudCwgbGluZVN0YXRlLmF2YWlsYWJs
ZVdpZHRoIC0gbGluZVN0YXRlLndpZHRoKCksIGlzRmlyc3RGcmFnbWVudCwgY29udGVudEl0ZXJh
dG9yKTsKKyAgICAgICAgICAgICAgICBsaW5lU3RhdGUub3ZlZmxvd2VkRnJhZ21lbnQgPSBzcGxp
dEZyYWdtZW50VG9GaXRMaW5lKGZyYWdtZW50LCBsaW5lU3RhdGUuYXZhaWxhYmxlV2lkdGggLSBs
aW5lU3RhdGUud2lkdGgoKSwgaXNGaXJzdEZyYWdtZW50LCBmbG93Q29udGVudHMpOwogICAgICAg
ICAgICAgICAgIGlmICghZnJhZ21lbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFdoaXRlc3BhY2UgZnJhZ21lbnRzIGNhbiBnZXQgcHVzaGVkIGVudGlyZWx5IHRvIHRoZSBu
ZXh0IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgIGxpbmVTdGF0ZS5hZGRVbmNvbW1pdHRlZChm
cmFnbWVudCk7CkBAIC02MzEsMTggKzU2MywxOCBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVu
cyhMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCBGbAog
ICAgICAgICAgICAgbGluZVN0YXRlLmFkZFVuY29tbWl0dGVkKGZyYWdtZW50KTsKICAgICB9CiAg
ICAgbGluZVN0YXRlLmNvbW1pdEFuZENyZWF0ZVJ1bihsaW5lUnVucyk7Ci0gICAgcmV0dXJuIGNv
bnRlbnRJdGVyYXRvci5pc0VuZE9mQ29udGVudChsaW5lU3RhdGUucG9zaXRpb24pICYmIGxpbmVT
dGF0ZS5vdmVmbG93ZWRGcmFnbWVudC5pc0VtcHR5KCk7CisgICAgcmV0dXJuIGZsb3dDb250ZW50
cy5pc0VuZE9mQ29udGVudChsaW5lU3RhdGUucG9zaXRpb24pICYmIGxpbmVTdGF0ZS5vdmVmbG93
ZWRGcmFnbWVudC5pc0VtcHR5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0Fu
ZEFkanVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9yJiBsaW5l
UnVucywgdW5zaWduZWQmIGxpbmVDb3VudCwgY29uc3QgRmxvd0NvbnRlbnRJdGVyYXRvciYgY29u
dGVudEl0ZXJhdG9yKQorc3RhdGljIHZvaWQgY2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhM
aW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCB1bnNpZ25l
ZCYgbGluZUNvdW50LCBjb25zdCBGbG93Q29udGVudHMmIGZsb3dDb250ZW50cykKIHsKICAgICBp
ZiAobGluZVN0YXRlLmxpbmVTdGFydFJ1bkluZGV4ID09IGxpbmVSdW5zLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGxpbmVSdW5zLnNpemUoKSk7Ci0gICAgcmVtb3ZlVHJh
aWxpbmdXaGl0ZXNwYWNlKGxpbmVTdGF0ZSwgbGluZVJ1bnMsIGNvbnRlbnRJdGVyYXRvcik7Cisg
ICAgcmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKGxpbmVTdGF0ZSwgbGluZVJ1bnMsIGZsb3dDb250
ZW50cyk7CiAgICAgLy8gQWRqdXN0IHJ1bnMnIHBvc2l0aW9uIGJ5IHRha2luZyBsaW5lJ3MgYWxp
Z25tZW50IGludG8gYWNjb3VudC4KLSAgICBpZiAoZmxvYXQgbGluZUxvZ2ljYWxMZWZ0ID0gY29t
cHV0ZUxpbmVMZWZ0KGNvbnRlbnRJdGVyYXRvci5zdHlsZSgpLnRleHRBbGlnbiwgbGluZVN0YXRl
LmF2YWlsYWJsZVdpZHRoLCBsaW5lU3RhdGUuY29tbWl0dGVkV2lkdGgsIGxpbmVTdGF0ZS5sb2dp
Y2FsTGVmdE9mZnNldCkpIHsKKyAgICBpZiAoZmxvYXQgbGluZUxvZ2ljYWxMZWZ0ID0gY29tcHV0
ZUxpbmVMZWZ0KGZsb3dDb250ZW50cy5zdHlsZSgpLnRleHRBbGlnbiwgbGluZVN0YXRlLmF2YWls
YWJsZVdpZHRoLCBsaW5lU3RhdGUuY29tbWl0dGVkV2lkdGgsIGxpbmVTdGF0ZS5sb2dpY2FsTGVm
dE9mZnNldCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbGluZVN0YXRlLmxpbmVTdGFy
dFJ1bkluZGV4OyBpIDwgbGluZVJ1bnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGxpbmVS
dW5zW2ldLmxvZ2ljYWxMZWZ0ICs9IGxpbmVMb2dpY2FsTGVmdDsKICAgICAgICAgICAgIGxpbmVS
dW5zW2ldLmxvZ2ljYWxSaWdodCArPSBsaW5lTG9naWNhbExlZnQ7CkBAIC02NjksMTQgKzYwMSwx
NCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywg
UmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCA9
IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KTsKICAgICBMaW5lU3RhdGUgbGluZVN0YXRlOwogICAg
IGJvb2wgaXNFbmRPZkNvbnRlbnQgPSBmYWxzZTsKLSAgICBGbG93Q29udGVudEl0ZXJhdG9yIGNv
bnRlbnRJdGVyYXRvciA9IEZsb3dDb250ZW50SXRlcmF0b3IoZmxvdyk7CisgICAgRmxvd0NvbnRl
bnRzIGZsb3dDb250ZW50cyA9IEZsb3dDb250ZW50cyhmbG93KTsKIAogICAgIGRvIHsKICAgICAg
ICAgZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVIZWlnaHQgKiBsaW5lQ291bnQgKyBib3JkZXJB
bmRQYWRkaW5nQmVmb3JlKTsKICAgICAgICAgdXBkYXRlTGluZUNvbnN0cmFpbnMoZmxvdywgbGlu
ZVN0YXRlLmF2YWlsYWJsZVdpZHRoLCBsaW5lU3RhdGUubG9naWNhbExlZnRPZmZzZXQpOwotICAg
ICAgICBpbml0aWFsaXplTmV3TGluZShsaW5lU3RhdGUsIGNvbnRlbnRJdGVyYXRvciwgcnVucy5z
aXplKCkpOwotICAgICAgICBpc0VuZE9mQ29udGVudCA9IGNyZWF0ZUxpbmVSdW5zKGxpbmVTdGF0
ZSwgcnVucywgY29udGVudEl0ZXJhdG9yKTsKLSAgICAgICAgY2xvc2VMaW5lRW5kaW5nQW5kQWRq
dXN0UnVucyhsaW5lU3RhdGUsIHJ1bnMsIGxpbmVDb3VudCwgY29udGVudEl0ZXJhdG9yKTsKKyAg
ICAgICAgaW5pdGlhbGl6ZU5ld0xpbmUobGluZVN0YXRlLCBmbG93Q29udGVudHMsIHJ1bnMuc2l6
ZSgpKTsKKyAgICAgICAgaXNFbmRPZkNvbnRlbnQgPSBjcmVhdGVMaW5lUnVucyhsaW5lU3RhdGUs
IHJ1bnMsIGZsb3dDb250ZW50cyk7CisgICAgICAgIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1
bnMobGluZVN0YXRlLCBydW5zLCBsaW5lQ291bnQsIGZsb3dDb250ZW50cyk7CiAgICAgfSB3aGls
ZSAoIWlzRW5kT2ZDb250ZW50KTsKICAgICBBU1NFUlQoIWxpbmVTdGF0ZS51bmNvbW1pdHRlZFdp
ZHRoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40NDYzOWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50cy5oIgorCisjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKKworRmxvd0NvbnRlbnRz
OjpGbG93Q29udGVudHMoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQorICAgIDogbV9mbG93
KGZsb3cpCisgICAgLCBtX3N0eWxlKGZsb3cuc3R5bGUoKSkKKyAgICAsIG1fbGluZUJyZWFrSXRl
cmF0b3IoZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmZsb3cuZmlyc3RDaGlsZCgpKS50ZXh0KCksIGZs
b3cuc3R5bGUoKS5sb2NhbGUoKSkKK3sKK30KKwordW5zaWduZWQgRmxvd0NvbnRlbnRzOjpmaW5k
TmV4dEJyZWFrYWJsZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKQoreworICAgIFN0cmluZyBz
dHJpbmcgPSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAgIHJldHVybiBuZXh0QnJl
YWthYmxlUG9zaXRpb248TENoYXIsIGZhbHNlPihtX2xpbmVCcmVha0l0ZXJhdG9yLCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwb3NpdGlvbik7Cit9CisKK3Vuc2lnbmVk
IEZsb3dDb250ZW50czo6ZmluZE5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkJiBzcGFjZUNvdW50KSBjb25zdAoreworICAgIFN0cmluZyBzdHJpbmcg
PSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmluZy5sZW5ndGgoKTsKKyAgICBjb25zdCBMQ2hhciogdGV4dCA9IHN0cmluZy5jaGFyYWN0ZXJz
OCgpOworICAgIHNwYWNlQ291bnQgPSAwOworICAgIGZvciAoOyBwb3NpdGlvbiA8IGxlbmd0aDsg
Kytwb3NpdGlvbikgeworICAgICAgICBib29sIGlzU3BhY2UgPSB0ZXh0W3Bvc2l0aW9uXSA9PSAn
ICc7CisgICAgICAgIGlmICghKGlzU3BhY2UgfHwgdGV4dFtwb3NpdGlvbl0gPT0gJ1x0JyB8fCAo
IW1fc3R5bGUucHJlc2VydmVOZXdsaW5lICYmIHRleHRbcG9zaXRpb25dID09ICdcbicpKSkKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgaWYgKGlzU3BhY2UpCisgICAgICAg
ICAgICArK3NwYWNlQ291bnQ7CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7Cit9CisKK2Zsb2F0
IEZsb3dDb250ZW50czo6dGV4dFdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9h
dCB4UG9zaXRpb24pIGNvbnN0Cit7CisgICAgU3RyaW5nIHN0cmluZyA9IG1fbGluZUJyZWFrSXRl
cmF0b3Iuc3RyaW5nKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwor
ICAgIGlmIChtX3N0eWxlLmZvbnQuaXNGaXhlZFBpdGNoKCkgfHwgKCFmcm9tICYmIHRvID09IGxl
bmd0aCkpIHsKKyAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PigqbV9mbG93LmZpcnN0Q2hpbGQoKSk7CisgICAgICAgIHJldHVybiByZW5kZXJl
ci53aWR0aChmcm9tLCB0byAtIGZyb20sIG1fc3R5bGUuZm9udCwgeFBvc2l0aW9uLCBudWxscHRy
LCBudWxscHRyKTsKKyAgICB9CisKKyAgICBUZXh0UnVuIHJ1bihzdHJpbmcuY2hhcmFjdGVyczgo
KSArIGZyb20sIHRvIC0gZnJvbSk7CisgICAgcnVuLnNldFhQb3MoeFBvc2l0aW9uKTsKKyAgICBy
dW4uc2V0Q2hhcmFjdGVyc0xlbmd0aChsZW5ndGggLSBmcm9tKTsKKyAgICBydW4uc2V0VGFiU2l6
ZSghIW1fc3R5bGUudGFiV2lkdGgsIG1fc3R5bGUudGFiV2lkdGgpOworICAgIEFTU0VSVChydW4u
Y2hhcmFjdGVyc0xlbmd0aCgpID49IHJ1bi5sZW5ndGgoKSk7CisgICAgcmV0dXJuIG1fc3R5bGUu
Zm9udC53aWR0aChydW4pOworfQorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iNTZmYzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaApAQCAtMCwwICsx
LDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRz
X2gKKyNkZWZpbmUgU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c19oCisKKyNpbmNsdWRlICJG
b250LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgorI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlbmRlckJsb2NrRmxvdzsKKworbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewor
CitjbGFzcyBGbG93Q29udGVudHMgeworcHVibGljOgorICAgIEZsb3dDb250ZW50cyhjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmKTsKKworICAgIHVuc2lnbmVkIGZpbmROZXh0QnJlYWthYmxlUG9zaXRp
b24odW5zaWduZWQgcG9zaXRpb24pOworICAgIHVuc2lnbmVkIGZpbmROZXh0Tm9uV2hpdGVzcGFj
ZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCYgc3BhY2VDb3VudCkgY29uc3Q7
CisKKyAgICBmbG9hdCB0ZXh0V2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0
IHhQb3NpdGlvbikgY29uc3Q7CisKKyAgICBib29sIGlzTmV3bGluZUNoYXJhY3Rlcih1bnNpZ25l
ZCBwb3NpdGlvbikgY29uc3Q7CisgICAgYm9vbCBpc0VuZE9mQ29udGVudCh1bnNpZ25lZCBwb3Np
dGlvbikgY29uc3Q7CisKKyAgICBjbGFzcyBTdHlsZSB7CisgICAgcHVibGljOgorICAgICAgICBT
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCisgICAgICAgICAgICA6IGZvbnQoc3R5bGUu
Zm9udCgpKQorICAgICAgICAgICAgLCB0ZXh0QWxpZ24oc3R5bGUudGV4dEFsaWduKCkpCisgICAg
ICAgICAgICAsIGNvbGxhcHNlV2hpdGVzcGFjZShzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkK
KyAgICAgICAgICAgICwgcHJlc2VydmVOZXdsaW5lKHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKQor
ICAgICAgICAgICAgLCB3cmFwTGluZXMoc3R5bGUuYXV0b1dyYXAoKSkKKyAgICAgICAgICAgICwg
YnJlYWtXb3JkT25PdmVyZmxvdyhzdHlsZS5vdmVyZmxvd1dyYXAoKSA9PSBCcmVha092ZXJmbG93
V3JhcCAmJiAod3JhcExpbmVzIHx8IHByZXNlcnZlTmV3bGluZSkpCisgICAgICAgICAgICAsIHNw
YWNlV2lkdGgoZm9udC53aWR0aChUZXh0UnVuKCZzcGFjZSwgMSkpKQorICAgICAgICAgICAgLCB0
YWJXaWR0aChjb2xsYXBzZVdoaXRlc3BhY2UgPyAwIDogc3R5bGUudGFiU2l6ZSgpKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBGb250JiBmb250OworICAgICAgICBFVGV4
dEFsaWduIHRleHRBbGlnbjsKKyAgICAgICAgYm9vbCBjb2xsYXBzZVdoaXRlc3BhY2U7CisgICAg
ICAgIGJvb2wgcHJlc2VydmVOZXdsaW5lOworICAgICAgICBib29sIHdyYXBMaW5lczsKKyAgICAg
ICAgYm9vbCBicmVha1dvcmRPbk92ZXJmbG93OworICAgICAgICBmbG9hdCBzcGFjZVdpZHRoOwor
ICAgICAgICB1bnNpZ25lZCB0YWJXaWR0aDsKKyAgICB9OworICAgIGNvbnN0IFN0eWxlJiBzdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBu
ZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCYgc3Bh
Y2VDb3VudCkgY29uc3Q7CisgICAgZmxvYXQgcnVuV2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8sIGZsb2F0IHhQb3NpdGlvbikgY29uc3Q7CisKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmIG1fZmxvdzsKKyAgICBTdHlsZSBtX3N0eWxlOworICAgIExhenlMaW5lQnJlYWtJdGVyYXRv
ciBtX2xpbmVCcmVha0l0ZXJhdG9yOworfTsKKworaW5saW5lIGJvb2wgRmxvd0NvbnRlbnRzOjpp
c05ld2xpbmVDaGFyYWN0ZXIodW5zaWduZWQgcG9zaXRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCkubGVuZ3RoKCkgPiBwb3NpdGlvbik7CisgICAg
cmV0dXJuIG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCkuYXQocG9zaXRpb24pID09ICdcbic7
Cit9CisKK2lubGluZSBib29sIEZsb3dDb250ZW50czo6aXNFbmRPZkNvbnRlbnQodW5zaWduZWQg
cG9zaXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHBvc2l0aW9uID49IG1fbGluZUJyZWFrSXRl
cmF0b3Iuc3RyaW5nKCkubGVuZ3RoKCk7Cit9CisKK30KK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241738</attachid>
            <date>2014-11-17 13:39:32 -0800</date>
            <delta_ts>2014-11-17 15:17:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138799-20141117133944.patch</filename>
            <type>text/plain</type>
            <size>31610</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA0ZjFkMDg0Y2VmOWQ2
YTkyMzU0ZGNjZThhYzhlZTgwOTNhOTU2Yi4uYWE4Nzg2MjE4ZjM2Y2I0ZjNlZmY4MGU5YTU0Y2Vk
ODQyMWYzOTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE0LTExLTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBSZW5hbWUgRmxvd0NvbnRlbnRJdGVyYXRvciBhbmQgbW92ZSBpbXBsZW1lbnRhdGlvbiB0byBT
aW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4Nzk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50
dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiB0byBzdXBwb3J0
IG11bHRpcGxlIHJlbmRlcmVycy4KKyAgICAgICAgVGhlIEZsb3dDb250ZW50cyBjbGFzcyB3aWxs
IGJlIHVzZWQgbm90IGp1c3Qgd2hlbiB3ZSBjcmVhdGUgcnVucywgYnV0IGFsc28gd2hlbiB3ZSBy
ZXNvbHZlIHRoZW0gYXQgcGFpbnRpbmcgdGltZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gZnVu
Y3Rpb25hbGl0eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpyZW1vdmVUcmFpbGluZ1doaXRlc3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6aW5pdGlhbGl6ZU5ld0xp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6c3BsaXRGcmFnbWVudFRv
Rml0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpuZXh0RnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlTGluZVJ1bnMp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2xvc2VMaW5lRW5kaW5nQW5k
QWRqdXN0UnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVU
ZXh0UnVucyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVu
dEl0ZXJhdG9yOjpGbG93Q29udGVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50SXRlcmF0b3I6OmZpbmROZXh0QnJlYWth
YmxlUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91
dDo6Rmxvd0NvbnRlbnRJdGVyYXRvcjo6ZmluZE5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRJ
dGVyYXRvcjo6dGV4dFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OkZsb3dDb250ZW50SXRlcmF0b3I6OmlzTmV3bGluZUNoYXJhY3Rlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudEl0ZXJh
dG9yOjppc0VuZE9mQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpGbG93Q29udGVudEl0ZXJhdG9yOjpzdHlsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlTGluZUxlZnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHM6OkZs
b3dDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29u
dGVudHM6OmZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6Rmxvd0NvbnRlbnRzOjpmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29udGVudHM6OnRl
eHRXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpGbG93Q29u
dGVudHM6OlN0eWxlOjpTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpGbG93Q29udGVudHM6OnN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OkZsb3dDb250ZW50czo6aXNOZXdsaW5lQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OkZsb3dDb250ZW50czo6aXNFbmRPZkNvbnRlbnQpOgorCisyMDE0
LTExLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKICAgICAgICAgU2ltcGxl
IGxpbmUgbGF5b3V0OiBEcm9wIDE2Yml0IHN1cHBvcnQgdGVtcG9yYXJpbHkuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg3OTYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA1ZWZhM2ZkMmM3YTllYzNjNzgxODkyZjA4ODk2OTk2ZDUxZmQ2OWRjLi5i
ZjU0NjZiZTUwZjE0MDlhNGZlNjZjNDAyZDMxMWJjNDBhNzQ2ZDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjM1MCw2ICsyMzUwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRl
cmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZp
b3IuY3BwCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5jcHAKICAgICByZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDVhMGRkZDYyNmFiOTc4
M2MyOGQ4MzIyNTRlMDQzODZiYjA0MzhjY2QuLjU2NWQ1OWI5Mjg2M2NjZWY4MzRjZjMxYmRiYmQ5
ODY4OTBhZDNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagpAQCAtMTE1MTAsNiArMTE1MTAsNyBAQAogICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFNlbGVjdGlvblN1YnRyZWVSb290LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xTaW1wbGVMaW5lTGF5
b3V0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xTaW1wbGVM
aW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRleHRQYWludFN0eWxlLmNw
cCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwppbmRleCBkMmM4ZDExNzk3N2JhMmQ0NjRkMzQ3ZGJkYWYyYzIwYzJm
NTU5ZjYyLi5iNzhmNDZmNmIzZjUwMDQ4NGZmMWE4M2JhM2JiNzRhNDUwNzY5NGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCkBAIC02OTM0LDYgKzY5MzQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXFNpbXBsZUxpbmVMYXlvdXQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5n
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAiPgorICAgICAgPEZpbHRl
cj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJlbmRlcmluZ1xTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCI+CiAgICAg
ICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwOGZj
MGE1NWJkOWMxZDJiMWZhYzUwNDRiMzQwNzJkOTExYmJhMmUuLmVkZDA2MmMzOGJlMDM5NTMyNjg0
MjUzODc3YTg1MjAzMjI4MDk0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNjIsNiArMjA2Miw4IEBACiAJCTU3Q0Y0OTc0
MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZGMTQgLyog
SW5zZXJ0aW9uUG9pbnQuY3BwICovOyB9OwogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZGMTQgLyog
SW5zZXJ0aW9uUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovOyB9
OwogCQk1ODVENkRGQzFBMTUzNTU2MDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2
REZCMUExNTM1NTYwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwICovOyB9
OworCQk1ODVENkUwMzFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODVENkUwMTFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5j
cHAgKi87IH07CisJCTU4NUQ2RTA0MUExQTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0
Rmxvd0NvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1ODVENkUwMjFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250
ZW50cy5oICovOyB9OwogCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg5NTU2RUMx
OEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLzsgfTsKIAkJNThBRUUyRjQxOEQ0QkND
RjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNThBRUUyRjMxOEQ0QkNDRjAwMjJFN0ZFIC8qIEJvcmRlckVkZ2Uu
Y3BwICovOyB9OwogCQk1OENEMzVDQjE4RUI0QzM5MDBCOUYzQUMgLyogRmxvYXRTaXplSGFzaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThDRDM1Q0Ex
OEVCNEMzOTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTE4Miw2ICs5MTg0LDggQEAKIAkJNTdDRjQ5
NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzMxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydGlvblBvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4NUQ2REZCMUExNTM1NTYwMEZBNEYxMiAvKiBT
aW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTg1RDZFMDExQTFBNzkyRTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRG
bG93Q29udGVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lt
cGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU4NUQ2RTAyMUExQTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRG
bG93Q29udGVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTg5NTU2RUMxOEQ0
QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQm9yZGVyRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OEFFRTJG
MzE4RDRCQ0NGMDAyMkU3RkUgLyogQm9yZGVyRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCb3JkZXJFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNThDRDM1Q0ExOEVCNEMzOTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRTaXplSGFzaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjI0OTcsNiArMjI1MDEsOCBAQAogCQkJCUNEQ0ZBQkJCMThDMEFF
MzEwMDZGODQ1MCAvKiBTZWxlY3Rpb25TdWJ0cmVlUm9vdC5oICovLAogCQkJCUU0ODk0NEEwMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmNwcCAqLywKIAkJCQlFNDg5NDRBMTE4
MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oICovLAorCQkJCTU4NUQ2RTAxMUEx
QTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmNwcCAqLywKKwkJ
CQk1ODVENkUwMjFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50
cy5oICovLAogCQkJCUU0RTlCMTFBMTgxNDU2OTIwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcCAqLywKIAkJCQlFNEU5QjExQzE4MTQ1NjlDMDAzQUNDREYgLyogU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5oICovLAogCQkJCTU4NUQ2REZCMUExNTM1NTYwMEZBNEYxMiAv
KiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwICovLApAQCAtMjUzNTEsNiArMjUzNTcsNyBA
QAogCQkJCUQzQTk0QTNCMTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlEM0FBMTBGNDEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFR
dWVyeU1hdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRUZDRDdBMTlEQjMxRjcwMDM4NzZE
NyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1ODVENkUwNDFB
MUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RCRUFFQUQxOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzBFMDkxOTE4NzVFRUZDMDAzQTFEM0Mg
LyogTWVkaWFTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1
RDMxQ0IgLyogTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTc3Miw2
ICsyOTc3OSw3IEBACiAJCQkJRjU1QjNEREIxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU1M0NGRTkxMDhGNDczRjAwRUEyODFFIC8qIFRp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUVBNDA5OUVC
NzhDMDA1NkU1ODEgLyogVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTg1RDZFMDMxQTFB
NzkyRTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQ0NjEzQUYwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTFERTcxMzIxODYxMzIyMjAwNzM0MTkyIC8qIFRvdWNoQ29uc3Ry
dWN0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExREU3MTJEMTg2MTJBQzEwMDczNDE5MiAv
KiBUb3VjaEV2ZW50cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBhYjEwZjI5MzNjNzcxMmZjMmQzNWJiYTYw
ZjQyZDE4M2Q4ZmVmYmU3Li5iYjdkNDc0ZDcyNGFiMTY5MTMzZjRlODM0YWNlZDkxOWRlODVkZWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBA
IC00MiwxMCArNDIsMTAgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRQYWludFN0eWxlLmgi
Ci0jaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIFNpbXBsZUxpbmVMYXlvdXQgewpAQCAtMjEzLDc0ICsyMTMsNiBAQCBzdHJ1Y3QgU3R5bGUg
ewogICAgIHVuc2lnbmVkIHRhYldpZHRoOwogfTsKIAotY2xhc3MgRmxvd0NvbnRlbnRJdGVyYXRv
ciB7Ci1wdWJsaWM6Ci0gICAgRmxvd0NvbnRlbnRJdGVyYXRvcihjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmIGZsb3cpCi0gICAgICAgIDogbV9mbG93KGZsb3cpCi0gICAgICAgICwgbV9zdHlsZShmbG93
LnN0eWxlKCkpCi0gICAgICAgICwgbV9saW5lQnJlYWtJdGVyYXRvcihkb3duY2FzdDxSZW5kZXJU
ZXh0PigqZmxvdy5maXJzdENoaWxkKCkpLnRleHQoKSwgZmxvdy5zdHlsZSgpLmxvY2FsZSgpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBmaW5kTmV4dEJyZWFrYWJsZVBvc2l0aW9uKHVu
c2lnbmVkIHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fbGluZUJy
ZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRp
b248TENoYXIsIGZhbHNlPihtX2xpbmVCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFjdGVyczgo
KSwgc3RyaW5nLmxlbmd0aCgpLCBwb3NpdGlvbik7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgZmlu
ZE5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkJiBz
cGFjZUNvdW50KSBjb25zdAotICAgIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fbGluZUJy
ZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLSAgICAgICAgY29uc3QgTENoYXIqIHRleHQgPSBzdHJpbmcuY2hhcmFjdGVyczgo
KTsKLSAgICAgICAgc3BhY2VDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoOyBwb3NpdGlvbiA8IGxl
bmd0aDsgKytwb3NpdGlvbikgewotICAgICAgICAgICAgYm9vbCBpc1NwYWNlID0gdGV4dFtwb3Np
dGlvbl0gPT0gJyAnOwotICAgICAgICAgICAgaWYgKCEoaXNTcGFjZSB8fCB0ZXh0W3Bvc2l0aW9u
XSA9PSAnXHQnIHx8ICghbV9zdHlsZS5wcmVzZXJ2ZU5ld2xpbmUgJiYgdGV4dFtwb3NpdGlvbl0g
PT0gJ1xuJykpKQotICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKLSAgICAgICAgICAg
IGlmIChpc1NwYWNlKQotICAgICAgICAgICAgICAgICsrc3BhY2VDb3VudDsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KLQotICAgIGZsb2F0IHRleHRXaWR0aCh1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdAotICAgIHsKLSAg
ICAgICAgU3RyaW5nIHN0cmluZyA9IG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCk7Ci0gICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICAgICAgaWYgKG1fc3R5
bGUuZm9udC5pc0ZpeGVkUGl0Y2goKSB8fCAoIWZyb20gJiYgdG8gPT0gbGVuZ3RoKSkgewotICAg
ICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0
PigqbV9mbG93LmZpcnN0Q2hpbGQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIud2lk
dGgoZnJvbSwgdG8gLSBmcm9tLCBtX3N0eWxlLmZvbnQsIHhQb3NpdGlvbiwgbnVsbHB0ciwgbnVs
bHB0cik7Ci0gICAgICAgIH0KLQotICAgICAgICBUZXh0UnVuIHJ1bihzdHJpbmcuY2hhcmFjdGVy
czgoKSArIGZyb20sIHRvIC0gZnJvbSk7Ci0gICAgICAgIHJ1bi5zZXRYUG9zKHhQb3NpdGlvbik7
Ci0gICAgICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKGxlbmd0aCAtIGZyb20pOwotICAgICAg
ICBydW4uc2V0VGFiU2l6ZSghIW1fc3R5bGUudGFiV2lkdGgsIG1fc3R5bGUudGFiV2lkdGgpOwot
ICAgICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBydW4ubGVuZ3RoKCkpOwot
ICAgICAgICByZXR1cm4gbV9zdHlsZS5mb250LndpZHRoKHJ1bik7Ci0gICAgfQotCi0gICAgYm9v
bCBpc05ld2xpbmVDaGFyYWN0ZXIodW5zaWduZWQgcG9zaXRpb24pIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV9saW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKS5sZW5ndGgoKSA+IHBvc2l0
aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nKCkuYXQocG9z
aXRpb24pID09ICdcbic7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VuZE9mQ29udGVudCh1bnNpZ25l
ZCBwb3NpdGlvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwb3NpdGlvbiA+PSBtX2xp
bmVCcmVha0l0ZXJhdG9yLnN0cmluZygpLmxlbmd0aCgpOwotICAgIH0KLQotICAgIGNvbnN0IFN0
eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KLQotcHJpdmF0ZToKLSAgICBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fZmxvdzsKLSAgICBTdHlsZSBtX3N0eWxlOwotICAgIExh
enlMaW5lQnJlYWtJdGVyYXRvciBtX2xpbmVCcmVha0l0ZXJhdG9yOwotfTsKLQotCiBzdGF0aWMg
ZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVUZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFi
bGVXaWR0aCwgZmxvYXQgY29tbWl0dGVkV2lkdGgsIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0KQog
ewogICAgIGZsb2F0IHJlbWFpbmluZ1dpZHRoID0gYXZhaWxhYmxlV2lkdGggLSBjb21taXR0ZWRX
aWR0aDsKQEAgLTQzNyw5ICszNjksOSBAQCBzdHJ1Y3QgTGluZVN0YXRlIHsKICAgICBUZXh0RnJh
Z21lbnQgb3ZlZmxvd2VkRnJhZ21lbnQ7CiB9OwogCi1zdGF0aWMgdm9pZCByZW1vdmVUcmFpbGlu
Z1doaXRlc3BhY2UoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9yJiBsaW5l
UnVucywgY29uc3QgRmxvd0NvbnRlbnRJdGVyYXRvciYgY29udGVudEl0ZXJhdG9yKQorc3RhdGlj
IHZvaWQgcmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKExpbmVTdGF0ZSYgbGluZVN0YXRlLCBMYXlv
dXQ6OlJ1blZlY3RvciYgbGluZVJ1bnMsIGNvbnN0IEZsb3dDb250ZW50cyYgZmxvd0NvbnRlbnRz
KQogewotICAgIGNvbnN0IGF1dG8mIHN0eWxlID0gY29udGVudEl0ZXJhdG9yLnN0eWxlKCk7Cisg
ICAgY29uc3QgYXV0byYgc3R5bGUgPSBmbG93Q29udGVudHMuc3R5bGUoKTsKICAgICBib29sIHBy
ZVdyYXAgPSBzdHlsZS53cmFwTGluZXMgJiYgIXN0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKICAg
ICAvLyBUcmFpbGluZyB3aGl0ZXNwYWNlIGdldHMgcmVtb3ZlZCB3aGVuIHdlIGVpdGhlciBjb2xs
YXBzZSB3aGl0ZXNwYWNlIG9yIHByZS13cmFwIGlzIHByZXNlbnQuCiAgICAgaWYgKCEoc3R5bGUu
Y29sbGFwc2VXaGl0ZXNwYWNlIHx8IHByZVdyYXApKSB7CkBAIC00NzQsMTQgKzQwNiwxNCBAQCBz
dGF0aWMgdm9pZCByZW1vdmVUcmFpbGluZ1doaXRlc3BhY2UoTGluZVN0YXRlJiBsaW5lU3RhdGUs
IExheW91dDo6UnVuVmVjdG9yJiBsaQogICAgICAgICBsaW5lU3RhdGUucmVtb3ZlQ29tbWl0dGVk
VHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAgICAgfQogCi0gICAgaWYgKGNvbnRlbnRJdGVyYXRvci5p
c0VuZE9mQ29udGVudChsaW5lU3RhdGUucG9zaXRpb24pKQorICAgIGlmIChmbG93Q29udGVudHMu
aXNFbmRPZkNvbnRlbnQobGluZVN0YXRlLnBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuOwogICAg
IC8vIElmIHdlIHNraXBwZWQgYW55IHdoaXRlc3BhY2UgYW5kIG5vdyB0aGUgbGluZSBlbmQgaXMg
YSAicHJlc2VydmVkIiBuZXdsaW5lLCBza2lwIHRoZSBuZXdsaW5lIHRvbyBhcyB3ZSBhcmUgd3Jh
cHBpbmcgdGhlIGxpbmUgaGVyZSBhbHJlYWR5LgotICAgIGlmIChsYXN0UG9zaXRpb24gIT0gbGlu
ZVN0YXRlLnBvc2l0aW9uICYmIHN0eWxlLnByZXNlcnZlTmV3bGluZSAmJiBjb250ZW50SXRlcmF0
b3IuaXNOZXdsaW5lQ2hhcmFjdGVyKGxpbmVTdGF0ZS5wb3NpdGlvbikpCisgICAgaWYgKGxhc3RQ
b3NpdGlvbiAhPSBsaW5lU3RhdGUucG9zaXRpb24gJiYgc3R5bGUucHJlc2VydmVOZXdsaW5lICYm
IGZsb3dDb250ZW50cy5pc05ld2xpbmVDaGFyYWN0ZXIobGluZVN0YXRlLnBvc2l0aW9uKSkKICAg
ICAgICAgKytsaW5lU3RhdGUucG9zaXRpb247CiB9CiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVO
ZXdMaW5lKExpbmVTdGF0ZSYgbGluZVN0YXRlLCBjb25zdCBGbG93Q29udGVudEl0ZXJhdG9yJiBj
b250ZW50SXRlcmF0b3IsIHVuc2lnbmVkIGxpbmVTdGFydFJ1bkluZGV4KQorc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZU5ld0xpbmUoTGluZVN0YXRlJiBsaW5lU3RhdGUsIGNvbnN0IEZsb3dDb250ZW50
cyYgZmxvd0NvbnRlbnRzLCB1bnNpZ25lZCBsaW5lU3RhcnRSdW5JbmRleCkKIHsKICAgICBsaW5l
U3RhdGUubGluZVN0YXJ0UnVuSW5kZXggPSBsaW5lU3RhcnRSdW5JbmRleDsKICAgICAvLyBTa2lw
IGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBjb2xsYXBzaW5nIHdoaXRlc3BhY2UsIHVubGVzcyB0aGVy
ZSdzIGFuIHVuY29tbWl0dGVkIGZyYWdtZW50IHB1c2hlZCBmcm9tIHRoZSBwcmV2aW91cyBsaW5l
LgpAQCAtNDkzLDEyICs0MjUsMTIgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ld0xpbmUoTGlu
ZVN0YXRlJiBsaW5lU3RhdGUsIGNvbnN0IEZsb3dDb250ZW50SXRlcmF0b3ImIGMKICAgICAgICAg
ICAgIGxpbmVTdGF0ZS5qdW1wVG8obGluZVN0YXRlLm92ZWZsb3dlZEZyYWdtZW50LnN0YXJ0LCAw
KTsgLy8gU3RhcnQgb3ZlciB3aXRoIHRoaXMgZnJhZ21lbnQuCiAgICAgfSBlbHNlIHsKICAgICAg
ICAgdW5zaWduZWQgc3BhY2VDb3VudCA9IDA7Ci0gICAgICAgIGxpbmVTdGF0ZS5qdW1wVG8oY29u
dGVudEl0ZXJhdG9yLnN0eWxlKCkuY29sbGFwc2VXaGl0ZXNwYWNlID8gY29udGVudEl0ZXJhdG9y
LmZpbmROZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGxpbmVTdGF0ZS5wb3NpdGlvbiwgc3BhY2VD
b3VudCkgOiBsaW5lU3RhdGUucG9zaXRpb24sIDApOworICAgICAgICBsaW5lU3RhdGUuanVtcFRv
KGZsb3dDb250ZW50cy5zdHlsZSgpLmNvbGxhcHNlV2hpdGVzcGFjZSA/IGZsb3dDb250ZW50cy5m
aW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihsaW5lU3RhdGUucG9zaXRpb24sIHNwYWNlQ291
bnQpIDogbGluZVN0YXRlLnBvc2l0aW9uLCAwKTsKICAgICB9CiAgICAgbGluZVN0YXRlLm92ZWZs
b3dlZEZyYWdtZW50ID0gVGV4dEZyYWdtZW50KCk7CiB9CiAKLXN0YXRpYyBUZXh0RnJhZ21lbnQg
c3BsaXRGcmFnbWVudFRvRml0TGluZShUZXh0RnJhZ21lbnQmIGZyYWdtZW50VG9TcGxpdCwgZmxv
YXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wga2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIsIGNvbnN0IEZs
b3dDb250ZW50SXRlcmF0b3ImIGNvbnRlbnRJdGVyYXRvcikKK3N0YXRpYyBUZXh0RnJhZ21lbnQg
c3BsaXRGcmFnbWVudFRvRml0TGluZShUZXh0RnJhZ21lbnQmIGZyYWdtZW50VG9TcGxpdCwgZmxv
YXQgYXZhaWxhYmxlV2lkdGgsIGJvb2wga2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIsIGNvbnN0IEZs
b3dDb250ZW50cyYgZmxvd0NvbnRlbnRzKQogewogICAgIC8vIEZhc3QgcGF0aCBmb3Igc2luZ2xl
IGNoYXIgZnJhZ21lbnRzLgogICAgIGlmIChmcmFnbWVudFRvU3BsaXQuc3RhcnQgKyAxID09IGZy
YWdtZW50VG9TcGxpdC5lbmQpIHsKQEAgLTUxNyw3ICs0NDksNyBAQCBzdGF0aWMgVGV4dEZyYWdt
ZW50IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoVGV4dEZyYWdtZW50JiBmcmFnbWVudFRvU3BsaXQs
IGZsb2F0CiAgICAgZmxvYXQgd2lkdGggPSAwOwogICAgIHdoaWxlIChsZWZ0IDwgcmlnaHQpIHsK
ICAgICAgICAgdW5zaWduZWQgbWlkZGxlID0gKGxlZnQgKyByaWdodCkgLyAyOwotICAgICAgICB3
aWR0aCA9IGNvbnRlbnRJdGVyYXRvci50ZXh0V2lkdGgoZnJhZ21lbnRUb1NwbGl0LnN0YXJ0LCBt
aWRkbGUgKyAxLCAwKTsKKyAgICAgICAgd2lkdGggPSBmbG93Q29udGVudHMudGV4dFdpZHRoKGZy
YWdtZW50VG9TcGxpdC5zdGFydCwgbWlkZGxlICsgMSwgMCk7CiAgICAgICAgIGlmIChhdmFpbGFi
bGVXaWR0aCA+IHdpZHRoKQogICAgICAgICAgICAgbGVmdCA9IG1pZGRsZSArIDE7CiAgICAgICAg
IGVsc2UgaWYgKGF2YWlsYWJsZVdpZHRoIDwgd2lkdGgpCkBAIC01MzIsMjYgKzQ2NCwyNiBAQCBz
dGF0aWMgVGV4dEZyYWdtZW50IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoVGV4dEZyYWdtZW50JiBm
cmFnbWVudFRvU3BsaXQsIGZsb2F0CiAgICAgICAgICsrcmlnaHQ7CiAgICAgVGV4dEZyYWdtZW50
IGZyYWdtZW50Rm9yTmV4dExpbmUoZnJhZ21lbnRUb1NwbGl0KTsKICAgICBmcmFnbWVudFRvU3Bs
aXQuZW5kID0gcmlnaHQ7Ci0gICAgZnJhZ21lbnRUb1NwbGl0LndpZHRoID0gZnJhZ21lbnRUb1Nw
bGl0LmlzRW1wdHkoKSA/IDAgOiBjb250ZW50SXRlcmF0b3IudGV4dFdpZHRoKGZyYWdtZW50VG9T
cGxpdC5zdGFydCwgcmlnaHQsIDApOworICAgIGZyYWdtZW50VG9TcGxpdC53aWR0aCA9IGZyYWdt
ZW50VG9TcGxpdC5pc0VtcHR5KCkgPyAwIDogZmxvd0NvbnRlbnRzLnRleHRXaWR0aChmcmFnbWVu
dFRvU3BsaXQuc3RhcnQsIHJpZ2h0LCAwKTsKIAogICAgIGZyYWdtZW50Rm9yTmV4dExpbmUuc3Rh
cnQgPSBmcmFnbWVudFRvU3BsaXQuZW5kOwogICAgIGZyYWdtZW50Rm9yTmV4dExpbmUud2lkdGgg
LT0gZnJhZ21lbnRUb1NwbGl0LndpZHRoOwogICAgIHJldHVybiBmcmFnbWVudEZvck5leHRMaW5l
OwogfQogCi1zdGF0aWMgVGV4dEZyYWdtZW50IG5leHRGcmFnbWVudCh1bnNpZ25lZCBwcmV2aW91
c0ZyYWdtZW50RW5kLCBGbG93Q29udGVudEl0ZXJhdG9yJiBjb250ZW50SXRlcmF0b3IsIGZsb2F0
IHhQb3NpdGlvbikKK3N0YXRpYyBUZXh0RnJhZ21lbnQgbmV4dEZyYWdtZW50KHVuc2lnbmVkIHBy
ZXZpb3VzRnJhZ21lbnRFbmQsIEZsb3dDb250ZW50cyYgZmxvd0NvbnRlbnRzLCBmbG9hdCB4UG9z
aXRpb24pCiB7CiAgICAgLy8gQSBmcmFnbWVudCBjYW4gaGF2ZQogICAgIC8vIDEuIG5ldyBsaW5l
IGNoYXJhY3RlciB3aGVuIHByZXNlcnZlTmV3bGluZSBpcyBvbiAobm90IGNvbnNpZGVyZWQgYXMg
d2hpdGVzcGFjZSkgb3IKICAgICAvLyAyLiB3aGl0ZXNwYWNlIChjb2xsYXNwZWQsIG5vbi1jb2xs
YXBzZWQgbXVsdGkgb3Igc2luZ2xlKSBvcgogICAgIC8vIDMuIG5vbi13aGl0ZXNwYWNlIGNoYXJh
Y3RlcnMuCi0gICAgY29uc3QgYXV0byYgc3R5bGUgPSBjb250ZW50SXRlcmF0b3Iuc3R5bGUoKTsK
KyAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGZsb3dDb250ZW50cy5zdHlsZSgpOwogICAgIFRleHRG
cmFnbWVudCBmcmFnbWVudDsKLSAgICBmcmFnbWVudC5tdXN0QnJlYWsgPSBzdHlsZS5wcmVzZXJ2
ZU5ld2xpbmUgJiYgY29udGVudEl0ZXJhdG9yLmlzTmV3bGluZUNoYXJhY3RlcihwcmV2aW91c0Zy
YWdtZW50RW5kKTsKKyAgICBmcmFnbWVudC5tdXN0QnJlYWsgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xp
bmUgJiYgZmxvd0NvbnRlbnRzLmlzTmV3bGluZUNoYXJhY3RlcihwcmV2aW91c0ZyYWdtZW50RW5k
KTsKICAgICB1bnNpZ25lZCBzcGFjZUNvdW50ID0gMDsKICAgICB1bnNpZ25lZCB3aGl0ZXNwYWNl
RW5kID0gcHJldmlvdXNGcmFnbWVudEVuZDsKICAgICBpZiAoIWZyYWdtZW50Lm11c3RCcmVhaykK
LSAgICAgICAgd2hpdGVzcGFjZUVuZCA9IGNvbnRlbnRJdGVyYXRvci5maW5kTmV4dE5vbldoaXRl
c3BhY2VQb3NpdGlvbihwcmV2aW91c0ZyYWdtZW50RW5kLCBzcGFjZUNvdW50KTsKKyAgICAgICAg
d2hpdGVzcGFjZUVuZCA9IGZsb3dDb250ZW50cy5maW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bihwcmV2aW91c0ZyYWdtZW50RW5kLCBzcGFjZUNvdW50KTsKICAgICBmcmFnbWVudC5pc1doaXRl
c3BhY2VPbmx5ID0gcHJldmlvdXNGcmFnbWVudEVuZCA8IHdoaXRlc3BhY2VFbmQ7CiAgICAgZnJh
Z21lbnQuc3RhcnQgPSBwcmV2aW91c0ZyYWdtZW50RW5kOwogICAgIGlmIChmcmFnbWVudC5pc1do
aXRlc3BhY2VPbmx5KQpAQCAtNTU5LDcgKzQ5MSw3IEBAIHN0YXRpYyBUZXh0RnJhZ21lbnQgbmV4
dEZyYWdtZW50KHVuc2lnbmVkIHByZXZpb3VzRnJhZ21lbnRFbmQsIEZsb3dDb250ZW50SXRlcmF0
CiAgICAgZWxzZSBpZiAoZnJhZ21lbnQubXVzdEJyZWFrKQogICAgICAgICBmcmFnbWVudC5lbmQg
PSBmcmFnbWVudC5zdGFydCArIDE7CiAgICAgZWxzZQotICAgICAgICBmcmFnbWVudC5lbmQgPSBj
b250ZW50SXRlcmF0b3IuZmluZE5leHRCcmVha2FibGVQb3NpdGlvbihwcmV2aW91c0ZyYWdtZW50
RW5kICsgMSk7CisgICAgICAgIGZyYWdtZW50LmVuZCA9IGZsb3dDb250ZW50cy5maW5kTmV4dEJy
ZWFrYWJsZVBvc2l0aW9uKHByZXZpb3VzRnJhZ21lbnRFbmQgKyAxKTsKICAgICBib29sIG11bHRp
cGxlID0gZnJhZ21lbnQuc3RhcnQgKyAxIDwgZnJhZ21lbnQuZW5kOwogICAgIGZyYWdtZW50Lmlz
Q29sbGFwc2VkV2hpdGVzcGFjZSA9IG11bHRpcGxlICYmIGZyYWdtZW50LmlzV2hpdGVzcGFjZU9u
bHkgJiYgc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlOwogICAgIC8vIE5vbi1jb2xsYXBzZWQgd2hp
dGVzcGFjZSBvciBqdXN0IHBsYWluIHdvcmRzIHdoZW4gImJyZWFrIHdvcmQgb24gb3ZlcmZsb3ci
IGlzIG9uIGNhbiB3cmFwLgpAQCAtNTc0LDE3ICs1MDYsMTcgQEAgc3RhdGljIFRleHRGcmFnbWVu
dCBuZXh0RnJhZ21lbnQodW5zaWduZWQgcHJldmlvdXNGcmFnbWVudEVuZCwgRmxvd0NvbnRlbnRJ
dGVyYXQKICAgICBlbHNlIGlmIChmcmFnbWVudExlbmd0aCA9PSBzcGFjZUNvdW50KSAvLyBTcGFj
ZSBvbmx5LgogICAgICAgICBmcmFnbWVudC53aWR0aCA9IHN0eWxlLnNwYWNlV2lkdGggKiBzcGFj
ZUNvdW50OwogICAgIGVsc2UKLSAgICAgICAgZnJhZ21lbnQud2lkdGggPSBjb250ZW50SXRlcmF0
b3IudGV4dFdpZHRoKGZyYWdtZW50LnN0YXJ0LCBmcmFnbWVudC5lbmQsIHhQb3NpdGlvbik7Cisg
ICAgICAgIGZyYWdtZW50LndpZHRoID0gZmxvd0NvbnRlbnRzLnRleHRXaWR0aChmcmFnbWVudC5z
dGFydCwgZnJhZ21lbnQuZW5kLCB4UG9zaXRpb24pOwogICAgIHJldHVybiBmcmFnbWVudDsKIH0K
IAotc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91
dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgRmxvd0NvbnRlbnRJdGVyYXRvciYgY29udGVudEl0ZXJh
dG9yKQorc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExh
eW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMpCiB7
Ci0gICAgY29uc3QgYXV0byYgc3R5bGUgPSBjb250ZW50SXRlcmF0b3Iuc3R5bGUoKTsKKyAgICBj
b25zdCBhdXRvJiBzdHlsZSA9IGZsb3dDb250ZW50cy5zdHlsZSgpOwogICAgIGJvb2wgbGluZUNh
bkJlV3JhcHBlZCA9IHN0eWxlLndyYXBMaW5lcyB8fCBzdHlsZS5icmVha1dvcmRPbk92ZXJmbG93
OwotICAgIHdoaWxlICghY29udGVudEl0ZXJhdG9yLmlzRW5kT2ZDb250ZW50KGxpbmVTdGF0ZS5w
b3NpdGlvbikpIHsKKyAgICB3aGlsZSAoIWZsb3dDb250ZW50cy5pc0VuZE9mQ29udGVudChsaW5l
U3RhdGUucG9zaXRpb24pKSB7CiAgICAgICAgIC8vIEZpbmQgdGhlIG5leHQgdGV4dCBmcmFnbWVu
dC4gU3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBmcmFnbWVudCAtY3VycmVudCBs
aW5lIGVuZC4KLSAgICAgICAgVGV4dEZyYWdtZW50IGZyYWdtZW50ID0gbmV4dEZyYWdtZW50KGxp
bmVTdGF0ZS5wb3NpdGlvbiwgY29udGVudEl0ZXJhdG9yLCBsaW5lU3RhdGUud2lkdGgoKSk7Cisg
ICAgICAgIFRleHRGcmFnbWVudCBmcmFnbWVudCA9IG5leHRGcmFnbWVudChsaW5lU3RhdGUucG9z
aXRpb24sIGZsb3dDb250ZW50cywgbGluZVN0YXRlLndpZHRoKCkpOwogICAgICAgICBpZiAoKGxp
bmVDYW5CZVdyYXBwZWQgJiYgIWxpbmVTdGF0ZS5maXRzKGZyYWdtZW50LndpZHRoKSkgfHwgZnJh
Z21lbnQubXVzdEJyZWFrKSB7CiAgICAgICAgICAgICAvLyBPdmVyZmxvdyB3cmFwcGluZyBiZWhh
dmlvdXI6CiAgICAgICAgICAgICAvLyAxLiBOZXdsaW5lIGNoYXJhY3Rlcjogd3JhcHMgdGhlIGxp
bmUgdW5sZXNzIGl0J3MgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlLgpAQCAtNjA2LDcgKzUzOCw3IEBA
IHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZVN0YXRlLCBMYXlvdXQ6
OlJ1blZlY3RvciYgbGluZVJ1bnMsIEZsCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyYWdtZW50
LmlzV2hpdGVzcGFjZU9ubHkgfHwgKChpc0ZpcnN0RnJhZ21lbnQgJiYgc3R5bGUuYnJlYWtXb3Jk
T25PdmVyZmxvdykgfHwgIXN0eWxlLndyYXBMaW5lcykpIHsgLy8gIXN0eWxlLndyYXBMaW5lczog
YnVnMTM4MTAyKHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW9yKQogICAgICAgICAgICAgICAgIC8v
IFdoaXRlc3BhY2UgY29sbGFwc2UgaXMgb2ZmIG9yIG5vbi13aGl0ZXNwYWNlIGNvbnRlbnQuIHNw
bGl0IHRoZSBmcmFnbWVudDsgKG1vZGlmaWVkKWZyYWdtZW50IC0+IHRoaXMgbGluZVN0YXRlLCBv
dmVmbG93ZWRGcmFnbWVudCAtPiBuZXh0IGxpbmUuCiAgICAgICAgICAgICAgICAgLy8gV2hlbiB0
aGlzIGlzIHRoZSBvbmx5IChmaXJzdCkgZnJhZ21lbnQsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc3Rh
eXMgb24gdGhlIGxpbmUsIGV2ZW4gaWYgaXQgZG9lcyBub3QgZml0LgotICAgICAgICAgICAgICAg
IGxpbmVTdGF0ZS5vdmVmbG93ZWRGcmFnbWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoZnJh
Z21lbnQsIGxpbmVTdGF0ZS5hdmFpbGFibGVXaWR0aCAtIGxpbmVTdGF0ZS53aWR0aCgpLCBpc0Zp
cnN0RnJhZ21lbnQsIGNvbnRlbnRJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgbGluZVN0YXRl
Lm92ZWZsb3dlZEZyYWdtZW50ID0gc3BsaXRGcmFnbWVudFRvRml0TGluZShmcmFnbWVudCwgbGlu
ZVN0YXRlLmF2YWlsYWJsZVdpZHRoIC0gbGluZVN0YXRlLndpZHRoKCksIGlzRmlyc3RGcmFnbWVu
dCwgZmxvd0NvbnRlbnRzKTsKICAgICAgICAgICAgICAgICBpZiAoIWZyYWdtZW50LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBXaGl0ZXNwYWNlIGZyYWdtZW50cyBjYW4gZ2V0
IHB1c2hlZCBlbnRpcmVseSB0byB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAgICBs
aW5lU3RhdGUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQpOwpAQCAtNjMxLDE4ICs1NjMsMTggQEAg
c3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6
UnVuVmVjdG9yJiBsaW5lUnVucywgRmwKICAgICAgICAgICAgIGxpbmVTdGF0ZS5hZGRVbmNvbW1p
dHRlZChmcmFnbWVudCk7CiAgICAgfQogICAgIGxpbmVTdGF0ZS5jb21taXRBbmRDcmVhdGVSdW4o
bGluZVJ1bnMpOwotICAgIHJldHVybiBjb250ZW50SXRlcmF0b3IuaXNFbmRPZkNvbnRlbnQobGlu
ZVN0YXRlLnBvc2l0aW9uKSAmJiBsaW5lU3RhdGUub3ZlZmxvd2VkRnJhZ21lbnQuaXNFbXB0eSgp
OworICAgIHJldHVybiBmbG93Q29udGVudHMuaXNFbmRPZkNvbnRlbnQobGluZVN0YXRlLnBvc2l0
aW9uKSAmJiBsaW5lU3RhdGUub3ZlZmxvd2VkRnJhZ21lbnQuaXNFbXB0eSgpOwogfQogCi1zdGF0
aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVTdGF0ZSYgbGluZVN0YXRl
LCBMYXlvdXQ6OlJ1blZlY3RvciYgbGluZVJ1bnMsIHVuc2lnbmVkJiBsaW5lQ291bnQsIGNvbnN0
IEZsb3dDb250ZW50SXRlcmF0b3ImIGNvbnRlbnRJdGVyYXRvcikKK3N0YXRpYyB2b2lkIGNsb3Nl
TGluZUVuZGluZ0FuZEFkanVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVu
VmVjdG9yJiBsaW5lUnVucywgdW5zaWduZWQmIGxpbmVDb3VudCwgY29uc3QgRmxvd0NvbnRlbnRz
JiBmbG93Q29udGVudHMpCiB7CiAgICAgaWYgKGxpbmVTdGF0ZS5saW5lU3RhcnRSdW5JbmRleCA9
PSBsaW5lUnVucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChsaW5lUnVu
cy5zaXplKCkpOwotICAgIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShsaW5lU3RhdGUsIGxpbmVS
dW5zLCBjb250ZW50SXRlcmF0b3IpOworICAgIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShsaW5l
U3RhdGUsIGxpbmVSdW5zLCBmbG93Q29udGVudHMpOwogICAgIC8vIEFkanVzdCBydW5zJyBwb3Np
dGlvbiBieSB0YWtpbmcgbGluZSdzIGFsaWdubWVudCBpbnRvIGFjY291bnQuCi0gICAgaWYgKGZs
b2F0IGxpbmVMb2dpY2FsTGVmdCA9IGNvbXB1dGVMaW5lTGVmdChjb250ZW50SXRlcmF0b3Iuc3R5
bGUoKS50ZXh0QWxpZ24sIGxpbmVTdGF0ZS5hdmFpbGFibGVXaWR0aCwgbGluZVN0YXRlLmNvbW1p
dHRlZFdpZHRoLCBsaW5lU3RhdGUubG9naWNhbExlZnRPZmZzZXQpKSB7CisgICAgaWYgKGZsb2F0
IGxpbmVMb2dpY2FsTGVmdCA9IGNvbXB1dGVMaW5lTGVmdChmbG93Q29udGVudHMuc3R5bGUoKS50
ZXh0QWxpZ24sIGxpbmVTdGF0ZS5hdmFpbGFibGVXaWR0aCwgbGluZVN0YXRlLmNvbW1pdHRlZFdp
ZHRoLCBsaW5lU3RhdGUubG9naWNhbExlZnRPZmZzZXQpKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGxpbmVTdGF0ZS5saW5lU3RhcnRSdW5JbmRleDsgaSA8IGxpbmVSdW5zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBsaW5lUnVuc1tpXS5sb2dpY2FsTGVmdCArPSBsaW5lTG9naWNh
bExlZnQ7CiAgICAgICAgICAgICBsaW5lUnVuc1tpXS5sb2dpY2FsUmlnaHQgKz0gbGluZUxvZ2lj
YWxMZWZ0OwpAQCAtNjY5LDE0ICs2MDEsMTQgQEAgc3RhdGljIHZvaWQgY3JlYXRlVGV4dFJ1bnMo
TGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIFJlbmRlckJsb2NrRmxvdyYgZmxvdywgdW5zaWcKICAg
ICBMYXlvdXRVbml0IGxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdyk7CiAgICAg
TGluZVN0YXRlIGxpbmVTdGF0ZTsKICAgICBib29sIGlzRW5kT2ZDb250ZW50ID0gZmFsc2U7Ci0g
ICAgRmxvd0NvbnRlbnRJdGVyYXRvciBjb250ZW50SXRlcmF0b3IgPSBGbG93Q29udGVudEl0ZXJh
dG9yKGZsb3cpOworICAgIEZsb3dDb250ZW50cyBmbG93Q29udGVudHMgPSBGbG93Q29udGVudHMo
Zmxvdyk7CiAKICAgICBkbyB7CiAgICAgICAgIGZsb3cuc2V0TG9naWNhbEhlaWdodChsaW5lSGVp
Z2h0ICogbGluZUNvdW50ICsgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSk7CiAgICAgICAgIHVwZGF0
ZUxpbmVDb25zdHJhaW5zKGZsb3csIGxpbmVTdGF0ZS5hdmFpbGFibGVXaWR0aCwgbGluZVN0YXRl
LmxvZ2ljYWxMZWZ0T2Zmc2V0KTsKLSAgICAgICAgaW5pdGlhbGl6ZU5ld0xpbmUobGluZVN0YXRl
LCBjb250ZW50SXRlcmF0b3IsIHJ1bnMuc2l6ZSgpKTsKLSAgICAgICAgaXNFbmRPZkNvbnRlbnQg
PSBjcmVhdGVMaW5lUnVucyhsaW5lU3RhdGUsIHJ1bnMsIGNvbnRlbnRJdGVyYXRvcik7Ci0gICAg
ICAgIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMobGluZVN0YXRlLCBydW5zLCBsaW5lQ291
bnQsIGNvbnRlbnRJdGVyYXRvcik7CisgICAgICAgIGluaXRpYWxpemVOZXdMaW5lKGxpbmVTdGF0
ZSwgZmxvd0NvbnRlbnRzLCBydW5zLnNpemUoKSk7CisgICAgICAgIGlzRW5kT2ZDb250ZW50ID0g
Y3JlYXRlTGluZVJ1bnMobGluZVN0YXRlLCBydW5zLCBmbG93Q29udGVudHMpOworICAgICAgICBj
bG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKGxpbmVTdGF0ZSwgcnVucywgbGluZUNvdW50LCBm
bG93Q29udGVudHMpOwogICAgIH0gd2hpbGUgKCFpc0VuZE9mQ29udGVudCk7CiAgICAgQVNTRVJU
KCFsaW5lU3RhdGUudW5jb21taXR0ZWRXaWR0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDQ2MzllYmM2Nzc5OGZjZDZlOGRjYTYwYzk0ZTJiZGE0NGFhYzYxMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0Nv
bnRlbnRzLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCIKKworI2luY2x1
ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
U2ltcGxlTGluZUxheW91dCB7CisKK0Zsb3dDb250ZW50czo6Rmxvd0NvbnRlbnRzKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdykKKyAgICA6IG1fZmxvdyhmbG93KQorICAgICwgbV9zdHlsZShm
bG93LnN0eWxlKCkpCisgICAgLCBtX2xpbmVCcmVha0l0ZXJhdG9yKGRvd25jYXN0PFJlbmRlclRl
eHQ+KCpmbG93LmZpcnN0Q2hpbGQoKSkudGV4dCgpLCBmbG93LnN0eWxlKCkubG9jYWxlKCkpCit7
Cit9CisKK3Vuc2lnbmVkIEZsb3dDb250ZW50czo6ZmluZE5leHRCcmVha2FibGVQb3NpdGlvbih1
bnNpZ25lZCBwb3NpdGlvbikKK3sKKyAgICBTdHJpbmcgc3RyaW5nID0gbV9saW5lQnJlYWtJdGVy
YXRvci5zdHJpbmcoKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uPExDaGFyLCBm
YWxzZT4obV9saW5lQnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5s
ZW5ndGgoKSwgcG9zaXRpb24pOworfQorCit1bnNpZ25lZCBGbG93Q29udGVudHM6OmZpbmROZXh0
Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCYgc3BhY2VD
b3VudCkgY29uc3QKK3sKKyAgICBTdHJpbmcgc3RyaW5nID0gbV9saW5lQnJlYWtJdGVyYXRvci5z
dHJpbmcoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgY29u
c3QgTENoYXIqIHRleHQgPSBzdHJpbmcuY2hhcmFjdGVyczgoKTsKKyAgICBzcGFjZUNvdW50ID0g
MDsKKyAgICBmb3IgKDsgcG9zaXRpb24gPCBsZW5ndGg7ICsrcG9zaXRpb24pIHsKKyAgICAgICAg
Ym9vbCBpc1NwYWNlID0gdGV4dFtwb3NpdGlvbl0gPT0gJyAnOworICAgICAgICBpZiAoIShpc1Nw
YWNlIHx8IHRleHRbcG9zaXRpb25dID09ICdcdCcgfHwgKCFtX3N0eWxlLnByZXNlcnZlTmV3bGlu
ZSAmJiB0ZXh0W3Bvc2l0aW9uXSA9PSAnXG4nKSkpCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIGlmIChpc1NwYWNlKQorICAgICAgICAgICAgKytzcGFjZUNvdW50OworICAg
IH0KKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitmbG9hdCBGbG93Q29udGVudHM6OnRleHRXaWR0
aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdAorewor
ICAgIFN0cmluZyBzdHJpbmcgPSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBpZiAobV9zdHlsZS5mb250Lmlz
Rml4ZWRQaXRjaCgpIHx8ICghZnJvbSAmJiB0byA9PSBsZW5ndGgpKSB7CisgICAgICAgIGNvbnN0
IFJlbmRlclRleHQmIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKm1fZmxvdy5maXJz
dENoaWxkKCkpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIud2lkdGgoZnJvbSwgdG8gLSBmcm9t
LCBtX3N0eWxlLmZvbnQsIHhQb3NpdGlvbiwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgfQorCisg
ICAgVGV4dFJ1biBydW4oc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBmcm9tLCB0byAtIGZyb20pOwor
ICAgIHJ1bi5zZXRYUG9zKHhQb3NpdGlvbik7CisgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgo
bGVuZ3RoIC0gZnJvbSk7CisgICAgcnVuLnNldFRhYlNpemUoISFtX3N0eWxlLnRhYldpZHRoLCBt
X3N0eWxlLnRhYldpZHRoKTsKKyAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBy
dW4ubGVuZ3RoKCkpOworICAgIHJldHVybiBtX3N0eWxlLmZvbnQud2lkdGgocnVuKTsKK30KKwor
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGbG93Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2ZmM1YjU4NmJkNzk0MjBhOWY2MGFmMjAx
Y2Y5MGIzYWY4MDYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c19oCisjZGVmaW5lIFNp
bXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNfaAorCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJicmVha19saW5lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZW5kZXJC
bG9ja0Zsb3c7CisKK25hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKKworY2xhc3MgRmxvd0Nv
bnRlbnRzIHsKK3B1YmxpYzoKKyAgICBGbG93Q29udGVudHMoY29uc3QgUmVuZGVyQmxvY2tGbG93
Jik7CisKKyAgICB1bnNpZ25lZCBmaW5kTmV4dEJyZWFrYWJsZVBvc2l0aW9uKHVuc2lnbmVkIHBv
c2l0aW9uKTsKKyAgICB1bnNpZ25lZCBmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQmIHNwYWNlQ291bnQpIGNvbnN0OworCisgICAgZmxvYXQg
dGV4dFdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4UG9zaXRpb24pIGNv
bnN0OworCisgICAgYm9vbCBpc05ld2xpbmVDaGFyYWN0ZXIodW5zaWduZWQgcG9zaXRpb24pIGNv
bnN0OworICAgIGJvb2wgaXNFbmRPZkNvbnRlbnQodW5zaWduZWQgcG9zaXRpb24pIGNvbnN0Owor
CisgICAgY2xhc3MgU3R5bGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQorICAgICAgICAgICAgOiBmb250KHN0eWxlLmZvbnQoKSkKKyAgICAg
ICAgICAgICwgdGV4dEFsaWduKHN0eWxlLnRleHRBbGlnbigpKQorICAgICAgICAgICAgLCBjb2xs
YXBzZVdoaXRlc3BhY2Uoc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkpCisgICAgICAgICAgICAs
IHByZXNlcnZlTmV3bGluZShzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKSkKKyAgICAgICAgICAgICwg
d3JhcExpbmVzKHN0eWxlLmF1dG9XcmFwKCkpCisgICAgICAgICAgICAsIGJyZWFrV29yZE9uT3Zl
cmZsb3coc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dyYXAgJiYgKHdyYXBM
aW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUpKQorICAgICAgICAgICAgLCBzcGFjZVdpZHRoKGZvbnQu
d2lkdGgoVGV4dFJ1bigmc3BhY2UsIDEpKSkKKyAgICAgICAgICAgICwgdGFiV2lkdGgoY29sbGFw
c2VXaGl0ZXNwYWNlID8gMCA6IHN0eWxlLnRhYlNpemUoKSkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgRm9udCYgZm9udDsKKyAgICAgICAgRVRleHRBbGlnbiB0ZXh0QWxp
Z247CisgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZXNwYWNlOworICAgICAgICBib29sIHByZXNl
cnZlTmV3bGluZTsKKyAgICAgICAgYm9vbCB3cmFwTGluZXM7CisgICAgICAgIGJvb2wgYnJlYWtX
b3JkT25PdmVyZmxvdzsKKyAgICAgICAgZmxvYXQgc3BhY2VXaWR0aDsKKyAgICAgICAgdW5zaWdu
ZWQgdGFiV2lkdGg7CisgICAgfTsKKyAgICBjb25zdCBTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0eWxlOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbmV4dE5vbldoaXRlc3Bh
Y2VQb3NpdGlvbih1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQmIHNwYWNlQ291bnQpIGNvbnN0
OworICAgIGZsb2F0IHJ1bldpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4
UG9zaXRpb24pIGNvbnN0OworCisgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX2Zsb3c7Cisg
ICAgU3R5bGUgbV9zdHlsZTsKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgbV9saW5lQnJlYWtJ
dGVyYXRvcjsKK307CisKK2lubGluZSBib29sIEZsb3dDb250ZW50czo6aXNOZXdsaW5lQ2hhcmFj
dGVyKHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdAoreworICAgIEFTU0VSVChtX2xpbmVCcmVha0l0
ZXJhdG9yLnN0cmluZygpLmxlbmd0aCgpID4gcG9zaXRpb24pOworICAgIHJldHVybiBtX2xpbmVC
cmVha0l0ZXJhdG9yLnN0cmluZygpLmF0KHBvc2l0aW9uKSA9PSAnXG4nOworfQorCitpbmxpbmUg
Ym9vbCBGbG93Q29udGVudHM6OmlzRW5kT2ZDb250ZW50KHVuc2lnbmVkIHBvc2l0aW9uKSBjb25z
dAoreworICAgIHJldHVybiBwb3NpdGlvbiA+PSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygp
Lmxlbmd0aCgpOworfQorCit9Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>