<?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>154313</bug_id>
          
          <creation_ts>2016-02-16 15:22:26 -0800</creation_ts>
          <short_desc>Implement Proxy.[[HasProperty]]</short_desc>
          <delta_ts>2016-02-18 17:08:24 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>154081</dependson>
          <blocked>35731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165352</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-16 15:22:26 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165957</commentid>
    <comment_count>1</comment_count>
      <attachid>271641</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-18 00:21:54 -0800</bug_when>
    <thetext>Created attachment 271641
WIP

Basically done, just need to write tests.
This contains some of the patch for [[GetOwnProperty]], so we need to wait for that to land before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166223</commentid>
    <comment_count>2</comment_count>
      <attachid>271707</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-18 15:51:37 -0800</bug_when>
    <thetext>Created attachment 271707
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166226</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-18 15:54:04 -0800</bug_when>
    <thetext>Attachment 271707 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ProxyObject.cpp:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166227</commentid>
    <comment_count>4</comment_count>
      <attachid>271709</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-18 15:54:22 -0800</bug_when>
    <thetext>Created attachment 271709
patch

with a changelog this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166231</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-18 15:56:34 -0800</bug_when>
    <thetext>Attachment 271709 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ProxyObject.cpp:242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166261</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-18 17:08:24 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/196789</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271641</attachid>
            <date>2016-02-18 00:21:54 -0800</date>
            <delta_ts>2016-02-18 15:51:37 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>23924</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlz
aW9uIDE5NjczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY0NiwzNCArMjY0NiwzOCBAQCBwcml2YXRlOgogICAgIFZN
JiBtX3ZtOwogfTsKIAotYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKKworLy8gOS4xLjYu
MyBvZiB0aGUgc3BlYworLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC9pbmRleC5odG1sI3NlYy12YWxpZGF0ZWFuZGFwcGx5cHJvcGVydHlkZXNjcmlwdG9y
Citib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBib29sIGlzRXh0
ZW5zaWJsZSwKKyAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
aXNDdXJyZW50RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50LCBib29s
IHRocm93RXhjZXB0aW9uKQogewotICAgIC8vIFRyYWNrIG9uIHRoZSBnbG9iYWxkYXRhIHRoYXQg
d2UncmUgaW4gZGVmaW5lIHByb3BlcnR5LgotICAgIC8vIEN1cnJlbnRseSBEZWZpbmVPd25Qcm9w
ZXJ0eSB1c2VzIGRlbGV0ZSB0byByZW1vdmUgcHJvcGVydGllcyB3aGVuIHRoZXkgYXJlIGJlaW5n
IHJlcGxhY2VkCi0gICAgLy8gKHBhcnRpY3VsYXJseSB3aGVuIGNoYW5naW5nIGF0dHJpYnV0ZXMp
LCBob3dldmVyIGRlbGV0ZSB3b24ndCBhbGxvdyBub24tY29uZmlndXJhYmxlIChpLmUuCi0gICAg
Ly8gRG9udERlbGV0ZSkgcHJvcGVydGllcyB0byBiZSBkZWxldGVkLiBGb3Igbm93LCB3ZSBjYW4g
dXNlIHRoaXMgZmxhZyB0byBtYWtlIHRoaXMgd29yay4KLSAgICBEZWZpbmVPd25Qcm9wZXJ0eVNj
b3BlIHNjb3BlKGV4ZWMpOwotICAgIAogICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgcHJvcGVydHkg
d2UgY2FuIGp1c3QgcHV0IGl0IG9uIG5vcm1hbGx5Ci0gICAgUHJvcGVydHlEZXNjcmlwdG9yIGN1
cnJlbnQ7Ci0gICAgaWYgKCFnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBjdXJyZW50KSkgeworICAgIC8vIFN0ZXAgMi4KKyAgICBpZiAoIWlzQ3VycmVudERlZmlu
ZWQpIHsKICAgICAgICAgLy8gdW5sZXNzIGV4dGVuc2lvbnMgYXJlIHByZXZlbnRlZCEKLSAgICAg
ICAgaWYgKCFpc0V4dGVuc2libGUoKSkgeworICAgICAgICAvLyBTdGVwIDIuYQorICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQogICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQorICAgICAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAvLyBTdGVwIDIuYy9kCiAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBvbGREZXNjcmlwdG9yOwogICAgICAgICBvbGREZXNjcmlwdG9yLnNldFZhbHVlKGpzVW5kZWZp
bmVkKCkpOwotICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlcygpLCBvbGREZXNjcmlwdG9y
KTsKKyAgICAgICAgLy8gRklYTUU6IHNwZWMgc2F5cyB0byBhbHdheXMgcmV0dXJuIHRydWUgaGVy
ZS4KKyAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlcygpLCBvbGREZXNjcmlwdG9yKTsK
ICAgICB9Ci0KKyAgICAvLyBTdGVwIDMuCiAgICAgaWYgKGRlc2NyaXB0b3IuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQorICAgIC8vIFN0ZXAgNC4KICAgICBpZiAoY3VycmVudC5l
cXVhbFRvKGV4ZWMsIGRlc2NyaXB0b3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorICAgIC8v
IFN0ZXAgNS4KICAgICAvLyBGaWx0ZXIgb3V0IGludmFsaWQgY2hhbmdlcwogICAgIGlmICghY3Vy
cmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSkgewpAQCAtMjY4NywxNiArMjY5MSwxOCBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25O
b25JbmRleFByb3BlcnR5CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9Ci0KKyAgICAKKyAgICAvLyBTdGVwIDYuCiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3Ig
aXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5
CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigpKSB7Ci0gICAgICAgIGlm
ICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikpIHsKLSAgICAgICAgICAgIG1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3Vy
cmVudChjdXJyZW50KSwgY3VycmVudCk7CisgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVz
RXF1YWwoZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7CisgICAgICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1
cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLQorICAgIAorICAgIC8vIFN0ZXAgNy4KICAgICAvLyBDaGFuZ2luZyBiZXR3ZWVu
IGEgbm9ybWFsIHByb3BlcnR5IG9yIGFuIGFjY2Vzc29yIHByb3BlcnR5CiAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICE9IGN1cnJlbnQuaXNEYXRhRGVzY3JpcHRvcigpKSB7
CiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewpAQCAtMjcwNCwxMCArMjcx
MCwxNSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNt
IGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICByZXR1cm4gcHV0
RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0
b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKKworICAg
ICAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJy
aWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CiAKKyAgICAvLyBTdGVwIDgu
CiAgICAgLy8gQ2hhbmdpbmcgdGhlIHZhbHVlIGFuZCBhdHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5n
IHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpKSB7CiAgICAg
ICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewpAQCAtMjcyNiwxMCArMjczNywxMyBA
QCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmICFkZXNjcmlw
dG9yLnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgbWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOworICAgICAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9w
ZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBwdXREZXNj
cmlwdG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9y
LmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQog
CisgICAgLy8gU3RlcCA5LgogICAgIC8vIENoYW5naW5nIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMg
b2YgYW4gZXhpc3RpbmcgYWNjZXNzb3IgcHJvcGVydHkKICAgICBBU1NFUlQoZGVzY3JpcHRvci5p
c0FjY2Vzc29yRGVzY3JpcHRvcigpKTsKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkp
IHsKQEAgLTI3NDksNyArMjc2MywxMSBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRl
eFByb3BlcnR5CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgSlNWYWx1ZSBhY2Nlc3NvciA9IGdldERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUp
OworCisgICAgLy8gU3RlcCAxMC8xMS4KKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgSlNWYWx1ZSBhY2Nlc3NvciA9IG9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOwpAQCAtMjc3MCwxMiArMjc4OCwy
NCBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgfQogICAg
IGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiAhZ2V0dGVyU2V0dGVy
Q2hhbmdlZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgbWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVz
T3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7Ci0gICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywg
cHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgQWNjZXNzb3IpOworICAgIG9iamVj
dC0+cHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0
dHJzIHwgQWNjZXNzb3IpOwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEpTT2JqZWN0Ojpk
ZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRo
cm93RXhjZXB0aW9uKQoreworICAgIC8vIFRyYWNrIG9uIHRoZSBnbG9iYWxkYXRhIHRoYXQgd2Un
cmUgaW4gZGVmaW5lIHByb3BlcnR5LgorICAgIC8vIEN1cnJlbnRseSBEZWZpbmVPd25Qcm9wZXJ0
eSB1c2VzIGRlbGV0ZSB0byByZW1vdmUgcHJvcGVydGllcyB3aGVuIHRoZXkgYXJlIGJlaW5nIHJl
cGxhY2VkCisgICAgLy8gKHBhcnRpY3VsYXJseSB3aGVuIGNoYW5naW5nIGF0dHJpYnV0ZXMpLCBo
b3dldmVyIGRlbGV0ZSB3b24ndCBhbGxvdyBub24tY29uZmlndXJhYmxlIChpLmUuCisgICAgLy8g
RG9udERlbGV0ZSkgcHJvcGVydGllcyB0byBiZSBkZWxldGVkLiBGb3Igbm93LCB3ZSBjYW4gdXNl
IHRoaXMgZmxhZyB0byBtYWtlIHRoaXMgd29yay4KKyAgICBEZWZpbmVPd25Qcm9wZXJ0eVNjb3Bl
IHNjb3BlKGV4ZWMpOworICAgIFByb3BlcnR5RGVzY3JpcHRvciBjdXJyZW50OworICAgIGJvb2wg
aXNDdXJyZW50RGVmaW5lZCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIGN1cnJlbnQpOworICAgIHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlKCksIGRlc2NyaXB0
b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsKK30KKwogYm9v
bCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgLy8gSWYgaXQncyBh
biBhcnJheSBpbmRleCwgdGhlbiB1c2UgdGhlIGluZGV4ZWQgcHJvcGVydHkgc3RvcmFnZS4KQEAg
LTI4OTUsNCArMjkyNSwyOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
cyhKCiAgICAgfQogfQogCisvLyBJbXBsZW1lbnRzIEdldE1ldGhvZChPLCBQKSBpbiBzZWN0aW9u
IDcuMy45IG9mIHRoZSBzcGVjLgorLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nZXRtZXRob2QKK0pTVmFsdWUgSlNPYmplY3Q6
OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUm
IGNhbGxUeXBlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit7CisgICAgSlNWYWx1ZSBtZXRob2QgPSBnZXQoZXhlYywgaWRlbnQpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisK
KyAgICBpZiAobWV0aG9kLmlzVW5kZWZpbmVkKCkgfHwgbWV0aG9kLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIGlmICghbWV0aG9kLmlzQ2VsbCgpKSB7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgY2FsbFR5cGUgPSBtZXRob2QuYXNDZWxs
KCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5hc0NlbGwoKSwgY2FsbERhdGEp
OworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gbWV0aG9kOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24g
MTk2NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzE3LDYgKzcxNyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZt
X2J1dHRlcmZseTsKICAgICB9CiAKKyAgICBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqIGV4
ZWMsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgpAQCAtMTQ3MSw2ICsxNDczLDkgQEAgQUxXQVlTX0lO
TElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKAogICAgIHJldHVybiBuYW1lOwogfQogCiti
b29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBQcm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAorICAgIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pOworCiAvLyBIZWxw
ZXIgZm9yIGRlZmluaW5nIG5hdGl2ZSBmdW5jdGlvbnMsIGlmIHlvdSdyZSBub3QgdXNpbmcgYSBz
dGF0aWMgaGFzaCB0YWJsZS4KIC8vIFVzZSB0aGlzIG1hY3JvIGZyb20gd2l0aGluIGZpbmlzaENy
ZWF0aW9uKCkgbWV0aG9kcyBpbiBwcm90b3R5cGVzLiBUaGlzIGFzc3VtZXMKIC8vIHlvdSd2ZSBk
ZWZpbmVkIHZhcmlhYmxlcyBjYWxsZWQgZXhlYywgZ2xvYmFsT2JqZWN0LCBhbmQgdm0sIGFuZCB0
aGV5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxOTY3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAjaW5jbHVk
ZSAiUHJveHlPYmplY3QuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSWRlbnRp
ZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
IApAQCAtOTAsMjUgKzkyLDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwZXJmb3JtUHJveHlH
ZXQoRXgKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CiAK
ICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7
Ci0gICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5T2JqZWN0LT50YXJnZXQoKTsKLSAgICBKU1Zh
bHVlIGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Z2V0
KTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZTsKKyAgICBK
U1ZhbHVlIGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNh
bGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIEFTQ0lJTGl0ZXJhbCgiJ2dldCcgcHJvcGVy
dHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgb2JqZWN0IHNob3VsZCBiZSBjYWxsYWJsZS4iKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5T2JqZWN0
LT50YXJnZXQoKTsKICAgICBpZiAoZ2V0SGFuZGxlci5pc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRhcmdldC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwog
Ci0gICAgaWYgKCFnZXRIYW5kbGVyLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIidnZXQnIHByb3BlcnR5IG9mIFByb3h5J3MgaGFu
ZGxlciBzaG91bGQgYmUgY2FsbGFibGUuIikpOwotCi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0g
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRIYW5kbGVyLmFzQ2VsbCgpLT5tZXRob2RUYWJsZSgp
LT5nZXRDYWxsRGF0YShnZXRIYW5kbGVyLmFzQ2VsbCgpLCBjYWxsRGF0YSk7Ci0gICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCInZ2V0JyBwcm9wZXJ0eSBvZiBQcm94eSdzIGhhbmRsZXIgc2hv
dWxkIGJlIGNhbGxhYmxlLiIpKTsKLQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChq
c1N0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqZWN0KTsKICAgICBKU1ZhbHVlIHRyYXBSZXN1
bHQgPSBjYWxsKGV4ZWMsIGdldEhhbmRsZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwg
YXJndW1lbnRzKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMjUsMzkgKzEy
MywxNzggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHdoZW4gaW1wbGVtZW50aW5nIFByb3h5LltbR2V0
T3duUHJvcGVydHldXSBpdCB3b3VsZCBiZSBhIGdvb2QgdGVzdCB0bwotICAgIC8vIGhhdmUgaGFu
ZGxlciBiZSBhbm90aGVyIFByb3h5IHdoZXJlIGl0cyBoYW5kbGVyIHRocm93cyBvbiBbW0dldE93
blByb3BlcnR5XV0KLSAgICAvLyByaWdodCBoZXJlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMTQKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRyYXBSZXN1bHQpOwogfQogCi1ib29sIFByb3h5T2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiwgUHJvcGVydHlTbG90JiBz
bG90KQorYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgaWYgKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCkgeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBOb25lLCBqc1VuZGVmaW5lZCgpKTsgLy8gV2Ug
ZG8gdGhpcyB0byBwcm90ZWN0IGFnYWluc3QgYW55IGJhZCBhY3RvcnMuIE5vYm9keSBzaG91bGQg
ZGVwZW5kIG9uIHRoaXMgdmFsdWUuCisgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5o
YW5kbGVyKCk7CisgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgeworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlzIG51bGwu
IEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFs
dWUpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlOworICAg
IEpTVmFsdWUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IiKSwgQVNDSUlMaXRlcmFsKCInZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUuIikp
OworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKKyAgICBpZiAoZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0
YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChq
c1N0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQg
PSBjYWxsKGV4ZWMsIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZCwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZp
bmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb3BlcnR5RGVzY3JpcHRvciB0YXJn
ZXRQcm9wZXJ0eURlc2NyaXB0b3I7CisgICAgYm9vbCBpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRv
ckRlZmluZWQgPSB0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZp
bmVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIXRhcmdldFByb3Bl
cnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgeworICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldoZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yJyBpcyB1bmRlZmluZWQgdGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJs
ZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IHRoaXMgZG9lc24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdl
IGRvbid0IGhhdmUgaXNFeHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3
LyBQcm94eXMuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQzNzUKKyAgICAgICAgaWYgKCF0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogQ29tZSB1cCB3aXRoIGEgdGVzdCBmb3IgdGhpcyBlcnJvci4gSSdt
IG5vdCBzdXJlIGhvdyB0byBiZWNhdXNlCisgICAgICAgICAgICAvLyBPYmplY3Quc2VhbChvKSB3
aWxsIG1ha2UgYWxsIGZpZWxkcyBbW0NvbmZpZ3VyYWJsZV1dIGZhbHNlLgorICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDM3NgorICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldoZW4gJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRlZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFBy
b3h5IHNob3VsZCBiZSBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcm9wZXJ0
eURlc2NyaXB0b3IgdHJhcFJlc3VsdEFzRGVzY3JpcHRvcjsKKyAgICB0b1Byb3BlcnR5RGVzY3Jp
cHRvcihleGVjLCB0cmFwUmVzdWx0LCB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHN0ZXAgMTQuIENvbXBsZXRlUHJvcGVydHlEZXNjcmlwdG9yKHRyYXBSZXN1
bHRBc0Rlc2NyaXB0b3IpIGluIHRoZSBzcGVjLiBNYXliZSB0aGlzIGlzIGFscmVhZHkgZG9uZT8K
KyAgICBib29sIHRocm93RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYm9vbCB2YWxpZCA9IHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1l
LCB0YXJnZXQtPmlzRXh0ZW5zaWJsZSgpLAorICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9y
LCBpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOworICAgIGlmICghdmFsaWQpIHsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVz
dC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXRyYXBSZXN1
bHRBc0Rlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKKyAgICAgICAgaWYgKCFpc1RhcmdldFBy
b3BlcnR5RGVzY3JpcHRvckRlZmluZWQgfHwgdGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9u
LWNvbmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3du
IHByb3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFy
Z2V0Jy4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzLCBOb25lLCBqc1VuZGVmaW5lZCgpKTsgLy8gTm9ib2R5IHNob3VsZCByZWx5IG9uIG91
ciB2YWx1ZSwgYnV0IGJlIHNhZmUgYW5kIHByb3RlY3QgYWdhaW5zdCBhbnkgYmFkIGFjdG9ycyBy
ZWFkaW5nIG91ciB2YWx1ZS4KKyAgICAKKyAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKKyAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVs
bC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJW
YWx1ZSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGU7Cisg
ICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEs
IGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImhhcyIpLCBBU0NJSUxpdGVyYWwoIidoYXMn
IHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZS4iKSk7Cisg
ICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOworICAgIGlmIChoYXNNZXRob2Qu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5n
ZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
dGFyZ2V0KTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFt
ZS51aWQoKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgaGFzTWV0aG9kLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAKKyAgICBib29sIHRyYXBS
ZXN1bHRBc0Jvb2wgPSB0cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdHJhcFJl
c3VsdEFzQm9vbCkgeworICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAg
ICAgICAgYm9vbCBpc1Byb3BlcnR5RGVzY3JpcHRvckRlZmluZWQgPSB0YXJnZXQtPmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOyAKKyAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBpZiAoaXNQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7CisgICAgICAgICAgICBp
ZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3Ry
dWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMuIikpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGFyZ2V0LT5p
c0V4dGVuc2libGUoKSkgeworICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9uLWV4
dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHkuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cmFwUmVzdWx0QXNCb29sOworfQorCitib29sIFByb3h5
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgc2xvdC5kaXNh
YmxlQ2FjaGluZygpOworICAgIHN3aXRjaCAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSkgewor
ICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldDoKICAgICAgICAg
c2xvdC5zZXRDdXN0b20odGhpcywgQ3VzdG9tQWNjZXNzb3IsIHBlcmZvcm1Qcm94eUdldCk7Ci0g
ICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Y2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHk6Cisg
ICAgICAgIHJldHVybiBwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6Okhhc1Byb3BlcnR5OgorICAgICAgICByZXR1cm4gcGVyZm9ybUhhc1Byb3BlcnR5KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBQcm94eS5bW0hhc1Byb3BlcnR5XV0uCisgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMTMKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgUHJveHkuW1tIYXNQcm9wZXJ0eV1d
IGFuZCBQcm94eS5bW0dldE93blByb3BlcnR5XV0KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzEzCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NDMxNAorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQotYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCisKK2Jvb2wgUHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBQcm94eU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
PmdldE93blByb3BlcnR5U2xvdENvbW1vbihleGVjLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09i
amVjdC0+Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiB9CiAKLWJvb2wgUHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90JiBzbG90
KQorYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKGV4ZWMsIHNsb3QpOworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSk7IAorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRPd25Q
cm9wZXJ0eVNsb3RDb21tb24oZXhlYywgaWRlbnQuaW1wbCgpLCBzbG90KTsKIH0KIAogdm9pZCBQ
cm94eU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CShyZXZpc2lvbiAxOTY3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw5IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiwgUHJvcGVydHlTbG90Jik7CisgICAgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBib29sIHBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgYm9vbCBwZXJm
b3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
IAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV90YXJnZXQ7CiAgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+IG1faGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwJKHJldmlzaW9uIDE5NjczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDkgKzkyOSw5IEBACiAtIHBhdGg6IGVzNi9Qcm94
eV9nZXRQcm90b3R5cGVPZl9oYW5kbGVyLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6
IGVzNi9Qcm94eV9oYXNfaGFuZGxlci5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9oYXNfaGFuZGxlcl9pbnN0YW5jZXNfb2Zf
cHJveGllcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9kZWZpbmVQcm9wZXJ0eV9jYWxsc19bW1NldF1dLmpz
CiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9kZWZpbmVQ
cm9wZXJ0eV9jYWxsc19TZXRJbnRlZ3JpdHlMZXZlbC5qcwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAK
IC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldE93blByb3BlcnR5RGVzY3JpcHRvcl9jYWxs
c19PYmplY3QuYXNzaWduLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9Qcm94
eV9pbnRlcm5hbF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JfY2FsbHNfT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9vd25LZXlzX2NhbGxzX1NlcmlhbGl6
ZUpTT05PYmplY3QuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2lu
dGVybmFsX293bktleXNfY2FsbHNfU2V0SW50ZWdyaXR5TGV2ZWwuanMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktYmFzaWMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1iYXNpYy5qcwkocmV2aXNp
b24gMTk2NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1i
YXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCwxMSArOCw2MyBAQCBhc3NlcnQoUHJveHkubGVu
Z3RoID09PSAyKTsKIGFzc2VydChQcm94eS5wcm90b3R5cGUgPT09IHVuZGVmaW5lZCk7CiAKIHsK
LSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgaSsrKQogICAgICAgICBhc3NlcnQoKG5ldyBQcm94eSh7fSwge30pKS5fX3Byb3Rv
X18gPT09IE9iamVjdC5wcm90b3R5cGUpOwogfQogCiB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIG5ldyBQcm94eSh7fSwgMjApOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkg
PT09ICJUeXBlRXJyb3I6IEEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCIp
OworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQorCit7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxz
ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBQcm94eSh7fSwgIiIpOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFz
c2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJveHkncyAnaGFuZGxlcicgc2hv
dWxkIGJlIGFuIE9iamVjdCIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7Cisg
ICAgfQorfQorCit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAg
ICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBQcm94
eSgyMCwge30pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJv
eHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAg
YXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgbmV3IFByb3h5KCIiLCB7fSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0g
IlR5cGVFcnJvcjogQSBQcm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3QiKTsKKyAg
ICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKworewogICAgIC8vIFdo
ZW4gd2UgY2FsbCBQcm94eSBpdCBzaG91bGQgdGhyb3cKICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgaSsrKSB7CiAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271707</attachid>
            <date>2016-02-18 15:51:37 -0800</date>
            <delta_ts>2016-02-18 15:54:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>15278</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJ
KHJldmlzaW9uIDE5Njc3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDE1ICsyMTAsNzEgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgIHJldHVybiB0cnVlOwogfQogCiti
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBzbG90LnNldFZhbHVlKHRoaXMsIE5vbmUsIGpzVW5kZWZpbmVk
KCkpOyAvLyBOb2JvZHkgc2hvdWxkIHJlbHkgb24gb3VyIHZhbHVlLCBidXQgYmUgc2FmZSBhbmQg
cHJvdGVjdCBhZ2FpbnN0IGFueSBiYWQgYWN0b3JzIHJlYWRpbmcgb3VyIHZhbHVlLgorICAgIAor
ICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOworICAgIGlmIChoYW5k
bGVyVmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKKyAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZTsKKyAgICBKU1ZhbHVlIGhhc01ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnByb3BlcnR5TmFt
ZXMtPmhhcywgQVNDSUlMaXRlcmFsKCInaGFzJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxl
ciBzaG91bGQgYmUgY2FsbGFibGUuIikpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJn
ZXQoKTsKKyAgICBpZiAoaGFzTWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0
YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CisgICAgYXJndW1lbnRzLmFwcGVuZChq
c1N0cmluZyhleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBKU1ZhbHVlIHRyYXBSZXN1bHQg
PSBjYWxsKGV4ZWMsIGhhc01ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1
bWVudHMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgCisgICAgYm9vbCB0cmFwUmVzdWx0QXNCb29sID0gdHJhcFJlc3VsdC50b0Jvb2xl
YW4oZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKKyAgICAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgICAgIGJvb2wgaXNQcm9wZXJ0eURlc2NyaXB0b3JE
ZWZpbmVkID0gdGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKTsgCisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGlzUHJvcGVydHlEZXNjcmlwdG9y
RGVmaW5lZCkgeworICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7
CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0
aWVzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIXRhcmdldC0+aXNFeHRlbnNpYmxlKCkpIHsKKyAgICAgICAgICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCBy
ZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEg
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJhcFJlc3Vs
dEFzQm9vbDsKK30KKwogYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9u
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKICAgICBzd2l0Y2ggKHNsb3Qu
aW50ZXJuYWxNZXRob2RUeXBlKCkpIHsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXQ6CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIEN1c3RvbUFjY2Vz
c29yLCBwZXJmb3JtUHJveHlHZXQpOwotICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5OgogICAgICAgICByZXR1cm4gcGVyZm9ybUludGVybmFsTWV0
aG9kR2V0T3duUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBjYXNlIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eToKKyAgICAgICAgcmV0
dXJuIHBlcmZvcm1IYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgUHJveHkuW1tIYXNQcm9wZXJ0eV1d
LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0
MzEzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJ
KHJldmlzaW9uIDE5Njc3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9w
ZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wg
cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0OwogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiBtX2hhbmRsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCShyZXZpc2lvbiAxOTY3NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTkyOSw5ICs5MjksOSBAQAogLSBwYXRoOiBlczYv
UHJveHlfZ2V0UHJvdG90eXBlT2ZfaGFuZGxlci5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBw
YXRoOiBlczYvUHJveHlfaGFzX2hhbmRsZXIuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaGFzX2hhbmRsZXJfaW5zdGFuY2Vz
X29mX3Byb3hpZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZGVmaW5lUHJvcGVydHlfY2FsbHNfW1tTZXRd
XS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZGVm
aW5lUHJvcGVydHlfY2FsbHNfU2V0SW50ZWdyaXR5TGV2ZWwuanMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktYmFzaWMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1iYXNpYy5qcwkocmV2aXNpb24g
MTk2Nzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1iYXNp
Yy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCwxMSArOCw2MyBAQCBhc3NlcnQoUHJveHkubGVuZ3Ro
ID09PSAyKTsKIGFzc2VydChQcm94eS5wcm90b3R5cGUgPT09IHVuZGVmaW5lZCk7CiAKIHsKLSAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgaSsrKQogICAgICAgICBhc3NlcnQoKG5ldyBQcm94eSh7fSwge30pKS5fX3Byb3RvX18g
PT09IE9iamVjdC5wcm90b3R5cGUpOwogfQogCiB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIG5ldyBQcm94eSh7fSwgMjApOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09
ICJUeXBlRXJyb3I6IEEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCIpOwor
ICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQorCit7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBQcm94eSh7fSwgIiIpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2Vy
dChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxk
IGJlIGFuIE9iamVjdCIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAg
fQorfQorCit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBs
ZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBQcm94eSgy
MCwge30pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsK
KyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJveHkn
cyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAgYXNz
ZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsg
aSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgbmV3IFByb3h5KCIiLCB7fSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5
cGVFcnJvcjogQSBQcm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3QiKTsKKyAgICAg
ICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKworewogICAgIC8vIFdoZW4g
d2UgY2FsbCBQcm94eSBpdCBzaG91bGQgdGhyb3cKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CiAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMtcHJvcGVydHkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMtcHJvcGVydHku
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3By
b3h5LWhhcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OSBAQAorZnVu
Y3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
QmFkIGFzc2VydGlvbi4iKTsKK30KKworeworICAgIGxldCBlcnJvciA9IG51bGw7CisgICAgbGV0
IHRhcmdldCA9IHsKKyAgICAgICAgeDogNDAKKyAgICB9OworCisgICAgbGV0IGhhbmRsZXIgPSB7
CisgICAgICAgIGdldCBoYXMoKSB7CisgICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcigpOwor
ICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHBy
b3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICJ4IiBpbiBwcm94eTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZSA9PT0gZXJyb3IpOworICAg
ICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQorCit7CisgICAgbGV0IGVy
cm9yID0gbnVsbDsKKyAgICBsZXQgdGFyZ2V0ID0geworICAgICAgICB4OiA0MAorICAgIH07CisK
KyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGVycm9yID0gbmV3IEVycm9yKCk7CisgICAgICAgICAgICB0aHJvdyBlcnJvcjsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVy
KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgIngiIGluIHByb3h5OworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAg
IGFzc2VydChlID09PSBlcnJvcik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsK
KyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0ID0geworICAgICAgICB4OiA0MAorICAgIH07
CisKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAg
IGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAgY2FsbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwcm9wTmFtZSBpbiB0aGVUYXJnZXQ7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxl
cik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgcmVz
dWx0ID0gIngiIGluIHByb3h5OworICAgICAgICBhc3NlcnQocmVzdWx0KTsKKyAgICAgICAgYXNz
ZXJ0KGNhbGxlZCk7CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAg
IGxldCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgIngi
LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IDQ1fSk7CisK
KyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhh
czogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAgICAgICAgY2FsbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwcm9wTmFtZSBpbiB0aGVUYXJnZXQ7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgcmVzdWx0
ID0gIngiIGluIHByb3h5OworICAgICAgICBhc3NlcnQocmVzdWx0KTsKKyAgICAgICAgYXNzZXJ0
KGNhbGxlZCk7CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAgIGxl
dCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgIngiLCB7
IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IDQ1fSk7CisgICAg
bGV0IGhhbmRsZXIgPSB7IH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBo
YW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGlm
IChpICUgMikKKyAgICAgICAgICAgIGhhbmRsZXIuaGFzID0gbnVsbDsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaGFuZGxlci5oYXMgPSB1bmRlZmluZWQ7CisgICAgICAgIGxldCByZXN1bHQg
PSAieCIgaW4gcHJveHk7CisgICAgICAgIGFzc2VydChyZXN1bHQpOworICAgIH0KK30KKworewor
ICAgIGxldCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwg
IngiLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IDQ1fSk7
CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHByb3h5ID0g
bmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7
IGkrKykgeworICAgICAgICBsZXQgcmVzdWx0ID0gIngiIGluIHByb3h5OworICAgICAgICBhc3Nl
cnQoIXJlc3VsdCk7CisgICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9IHsgfTsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAieCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29u
ZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDQ1fSk7CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAg
ICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcg
PSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICJ4IiBpbiBwcm94eTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlw
ZUVycm9yOiBQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFi
bGUgcHJvcGVydGllcy4iKTsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSB7
IH07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgIngiLCB7IGVudW1lcmFibGU6
IHRydWUsIGNvbmZpZ3VyYWJsZTogZmFsc2UsIHZhbHVlOiA0NX0pOworICAgIGxldCBoYW5kbGVy
ID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQs
IGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAieCIgaW4gcHJv
eHk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmco
KSA9PT0gIlR5cGVFcnJvcjogUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24t
Y29uZmlndXJhYmxlIHByb3BlcnRpZXMuIik7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQg
dGFyZ2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICJ4IiwgeyBl
bnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogNDV9KTsKKyAgICBs
ZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsK
KyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAi
eCIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUu
dG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUn
IGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMuIik7CisgICAgICAgICAgICB0aHJldyA9
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sK
KyAgICBsZXQgdGFyZ2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQs
ICJ4IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogNDV9
KTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHBy
b3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICJ4IiBpbiBwcm94eTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBQcm94eSAnaGFzJyBtdXN0
IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcy4iKTsKKyAgICAg
ICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOwor
ICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRhcmdldCwgIngiLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogZmFs
c2UsIHZhbHVlOiA0NX0pOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
bGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICJ4IiBpbiBwcm94eTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBQcm94eSAnaGFz
JyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcy4iKTsK
KyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhy
ZXcpOworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHRhcmdldCwgIngiLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogZmFsc2UsIHZhbHVlOiA0NX0pOworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQg
aGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbGxl
ZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAieCIgaW4gcHJveHk7
CisgICAgICAgIGFzc2VydChyZXN1bHQpOworICAgICAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICAg
ICAgY2FsbGVkID0gZmFsc2U7CisgICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9IHsgfTsK
KyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAieCIsIHsgZW51bWVyYWJsZTogdHJ1
ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDQ1fSk7CisgICAgbGV0IGNhbGxlZCA9IGZh
bHNlOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAiaGVsbG8iOworICAg
ICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRs
ZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHJl
c3VsdCA9ICJ4IiBpbiBwcm94eTsKKyAgICAgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgICAgIGFz
c2VydChjYWxsZWQpOworICAgICAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3sKKyAg
ICBsZXQgdGFyZ2V0ID0geyB9OworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaGFu
ZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGNhbGxlZCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZQorICAgICAgICB9CisgICAgfTsKKworICAg
IGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICJ4IiBpbiBwcm94eTsK
KyAgICAgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgICAgIGFzc2VydChjYWxsZWQpOworICAgICAg
ICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgcHJvdG8gPSB7eDogMjB9
OworICAgIGxldCB0YXJnZXQgPSBPYmplY3QuY3JlYXRlKHByb3RvKTsKKyAgICBhc3NlcnQodGFy
Z2V0Ll9fcHJvdG9fXyA9PT0gcHJvdG8pOworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAgICBs
ZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0YXJnZXQsIHByb3BOYW1lKSB7
CisgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHByb3BOYW1l
IGluIHRhcmdldDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJv
eHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7
CisgICAgICAgIGxldCByZXN1bHQgPSAieCIgaW4gcHJveHk7CisgICAgICAgIGFzc2VydChyZXN1
bHQpOworICAgICAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICAgICAgY2FsbGVkID0gZmFsc2U7Cisg
ICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9IHt4OiAyMH07CisgICAgbGV0IGhhbmRsZXIg
PSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAg
ICAgICAgYXNzZXJ0KHRoZVRhcmdldCA9PT0gdGFyZ2V0KTsKKyAgICAgICAgICAgIGNhbGxlZCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gcHJvcE5hbWUgaW4gdGhlVGFyZ2V0OworICAgICAg
ICB9CisgICAgfTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsK
KyAgICBsZXQgb2JqID0gT2JqZWN0LmNyZWF0ZShwcm94eSk7CisgICAgYXNzZXJ0KFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gcHJveHkpOworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9ICJ4IiBpbiBvYmo7CisgICAgICAgIGFzc2VydChyZXN1bHQpOworICAgICAgICBhc3NlcnQo
Y2FsbGVkKTsKKyAgICAgICAgY2FsbGVkID0gZmFsc2U7CisgICAgfQorfQorCit7CisgICAgbGV0
IGVycm9yID0gbnVsbDsKKyAgICBsZXQgdGFyZ2V0ID0gbmV3IFByb3h5KHt9LCB7CisgICAgICAg
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlcnJv
ciA9IG5ldyBFcnJvcigpOworICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbih0aGVUYXJn
ZXQsIHByb3BOYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9OworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAiZm9vIiBpbiBwcm94eTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhc3NlcnQoZSA9PT0gZXJyb3IpOworICAgICAgICAgICAg
dGhyZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271709</attachid>
            <date>2016-02-18 15:54:22 -0800</date>
            <delta_ts>2016-02-18 15:58:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>16695</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk2NzgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE2LTAyLTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBQcm94eS5bW0hhc1Byb3BlcnR5XV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodCBmb3J3YXJk
IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgIFByb3h5LltbSGFzUHJvcGVydHldXSB3aXRoIHJl
c3BlY3QgdG8gc2VjdGlvbiA5LjUuNworICAgICAgICBvZiB0aGUgRUNNQVNjcmlwdCBzcGVjLgor
ICAgICAgICBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wcm94eS1vYmplY3Qt
aW50ZXJuYWwtbWV0aG9kcy1hbmQtaW50ZXJuYWwtc2xvdHMtaGFzcHJvcGVydHktcAorCisgICAg
ICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0Lmg6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L3Byb3h5LWJhc2ljLmpzOgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvcHJveHktaGFzLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgICh0aHJvdy5uZXcuRXJyb3IubGV0LmhhbmRsZXIuZ2V0IGhhcyk6CisgICAgICAgICh0aHJv
dy5uZXcuRXJyb3IpOgorICAgICAgICAoYXNzZXJ0LmxldC5oYW5kbGVyLmhhcyk6CisgICAgICAg
IChsZXQuaGFuZGxlci5oYXMpOgorICAgICAgICAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKGkuY2F0Y2gpOgorCiAyMDE2LTAyLTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvdyB1cCBmaXggdG8gSW1wbGVtZW50IFByb3h5Lltb
R2V0T3duUHJvcGVydHldXQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMTk2Nzc5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsMTggKzIx
MCw3MiBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIHNsb3Quc2V0VmFsdWUodGhpcywg
Tm9uZSwganNVbmRlZmluZWQoKSk7IC8vIE5vYm9keSBzaG91bGQgcmVseSBvbiBvdXIgdmFsdWUs
IGJ1dCBiZSBzYWZlIGFuZCBwcm90ZWN0IGFnYWluc3QgYW55IGJhZCBhY3RvcnMgcmVhZGluZyBv
dXIgdmFsdWUuCisgICAgCisgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVy
KCk7CisgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgeworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlzIG51bGwuIEl0IHNo
b3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwor
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlOworICAgIEpTVmFs
dWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlw
ZSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCBBU0NJSUxpdGVyYWwoIidoYXMnIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZS4iKSk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSlNPYmplY3QqIHRh
cmdldCA9IHRoaXMtPnRhcmdldCgpOworICAgIGlmIChoYXNNZXRob2QuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworCisgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKKyAgICBh
cmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEpT
VmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgaGFzTWV0aG9kLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAKKyAgICBib29sIHRyYXBSZXN1bHRBc0Jvb2wgPSB0
cmFwUmVzdWx0LnRvQm9vbGVhbihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkgewor
ICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICAgICAgYm9vbCBpc1By
b3BlcnR5RGVzY3JpcHRvckRlZmluZWQgPSB0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOyAKKyAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXNQ
cm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7CisgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29u
ZmlndXJhYmxlIHByb3BlcnRpZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGFyZ2V0LT5pc0V4dGVuc2libGUoKSkg
eworICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQ
cm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2libGUgJ3Rhcmdl
dCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cmFwUmVzdWx0QXNCb29sOworfQorCiBib29sIFByb3h5T2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwog
ICAgIHN3aXRjaCAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSkgewogICAgIGNhc2UgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldDoKICAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpcywgQ3VzdG9tQWNjZXNzb3IsIHBlcmZvcm1Qcm94eUdldCk7Ci0gICAgICAgIHNsb3QuZGlz
YWJsZUNhY2hpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHk6CiAgICAgICAgIHJldHVybiBw
ZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3Bl
cnR5OgorICAgICAgICByZXR1cm4gcGVyZm9ybUhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBQcm94
eS5bW0hhc1Byb3BlcnR5XV0uCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQzMTMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCShyZXZpc2lv
biAxOTY3NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGdl
dE93blByb3BlcnR5U2xvdENvbW1vbihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYpOwogICAgIGJvb2wgcGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBib29sIHBlcmZvcm1I
YXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAg
ICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3RhcmdldDsKICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9oYW5kbGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAko
cmV2aXNpb24gMTk2Nzc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CSh3b3JraW5nIGNvcHkpCkBAIC05MjksOSArOTI5LDkgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2dl
dFByb3RvdHlwZU9mX2hhbmRsZXIuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2
L1Byb3h5X2hhc19oYW5kbGVyLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2hhc19oYW5kbGVyX2luc3RhbmNlc19vZl9wcm94
aWVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L1Byb3h5X2ludGVybmFsX2RlZmluZVByb3BlcnR5X2NhbGxzX1tbU2V0XV0uanMKICAg
Y21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2RlZmluZVByb3Bl
cnR5X2NhbGxzX1NldEludGVncml0eUxldmVsLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3Byb3h5LWJhc2ljLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktYmFzaWMuanMJKHJldmlzaW9uIDE5Njc3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktYmFzaWMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTgsMTEgKzgsNjMgQEAgYXNzZXJ0KFByb3h5Lmxlbmd0aCA9PT0gMik7
CiBhc3NlcnQoUHJveHkucHJvdG90eXBlID09PSB1bmRlZmluZWQpOwogCiB7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkr
KykKICAgICAgICAgYXNzZXJ0KChuZXcgUHJveHkoe30sIHt9KSkuX19wcm90b19fID09PSBPYmpl
Y3QucHJvdG90eXBlKTsKIH0KIAogeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKysp
IHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBuZXcgUHJveHkoe30sIDIwKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0
aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVy
cm9yOiBBIFByb3h5J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKTsKKyAgICAgICAg
fQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKworeworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBuZXcgUHJveHkoe30sICIiKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0
cmluZygpID09PSAiVHlwZUVycm9yOiBBIFByb3h5J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBP
YmplY3QiKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKwor
eworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3
ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuZXcgUHJveHkoMjAsIHt9KTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAg
ICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBIFByb3h5J3MgJ3Rhcmdl
dCcgc2hvdWxkIGJlIGFuIE9iamVjdCIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJl
dyk7CisgICAgfQorfQorCit7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgewor
ICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5l
dyBQcm94eSgiIiwge30pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6
IEEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iik7CisgICAgICAgIH0KKyAg
ICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKICAgICAvLyBXaGVuIHdlIGNhbGwg
UHJveHkgaXQgc2hvdWxkIHRocm93CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykg
ewogICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5LmpzCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMt
cHJvcGVydHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjkgQEAKK2Z1bmN0aW9uIGFz
c2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3Nl
cnRpb24uIik7Cit9CisKK3sKKyAgICBsZXQgZXJyb3IgPSBudWxsOworICAgIGxldCB0YXJnZXQg
PSB7CisgICAgICAgIHg6IDQwCisgICAgfTsKKworICAgIGxldCBoYW5kbGVyID0geworICAgICAg
ICBnZXQgaGFzKCkgeworICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoKTsKKyAgICAgICAg
ICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5l
dyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBp
KyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAieCIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUgPT09IGVycm9yKTsKKyAgICAgICAgfQor
ICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30KKworeworICAgIGxldCBlcnJvciA9IG51
bGw7CisgICAgbGV0IHRhcmdldCA9IHsKKyAgICAgICAgeDogNDAKKyAgICB9OworCisgICAgbGV0
IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlcnJv
ciA9IG5ldyBFcnJvcigpOworICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxz
ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICJ4IiBpbiBwcm94eTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQo
ZSA9PT0gZXJyb3IpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQor
fQorCit7CisgICAgbGV0IHRhcmdldCA9IHsKKyAgICAgICAgeDogNDAKKyAgICB9OworCisgICAg
bGV0IGNhbGxlZCA9IGZhbHNlOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1
bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gcHJvcE5hbWUgaW4gdGhlVGFyZ2V0OworICAgICAgICB9Cisg
ICAgfTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICJ4
IiBpbiBwcm94eTsKKyAgICAgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgICAgIGFzc2VydChjYWxs
ZWQpOworICAgICAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFy
Z2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICJ4IiwgeyBlbnVt
ZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiA0NX0pOworCisgICAgbGV0
IGNhbGxlZCA9IGZhbHNlOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0
aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gcHJvcE5hbWUgaW4gdGhlVGFyZ2V0OworICAgICAgICB9CisgICAg
fTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICJ4IiBp
biBwcm94eTsKKyAgICAgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgICAgIGFzc2VydChjYWxsZWQp
OworICAgICAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0
ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICJ4IiwgeyBlbnVtZXJh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiA0NX0pOworICAgIGxldCBoYW5k
bGVyID0geyB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBpZiAoaSAlIDIp
CisgICAgICAgICAgICBoYW5kbGVyLmhhcyA9IG51bGw7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGhhbmRsZXIuaGFzID0gdW5kZWZpbmVkOworICAgICAgICBsZXQgcmVzdWx0ID0gIngiIGlu
IHByb3h5OworICAgICAgICBhc3NlcnQocmVzdWx0KTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQg
dGFyZ2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICJ4IiwgeyBl
bnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiA0NX0pOworICAgIGxl
dCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsK
KyAgICAgICAgbGV0IHJlc3VsdCA9ICJ4IiBpbiBwcm94eTsKKyAgICAgICAgYXNzZXJ0KCFyZXN1
bHQpOworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSB7IH07CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHRhcmdldCwgIngiLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogZmFsc2UsIHZhbHVlOiA0NX0pOworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAieCIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjog
UHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3Bl
cnRpZXMuIik7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
YXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0ID0geyB9OworICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICJ4IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBj
b25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogNDV9KTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAg
ICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVy
KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgIngiIGluIHByb3h5OworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJU
eXBlRXJyb3I6IFByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0aWVzLiIpOworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQorCit7CisgICAgbGV0IHRhcmdldCA9
IHsgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAieCIsIHsgZW51bWVyYWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDQ1fSk7CisgICAgbGV0IGhhbmRs
ZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0
LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAg
IGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgIngiIGluIHBy
b3h5OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5n
KCkgPT09ICJUeXBlRXJyb3I6IFByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9u
LWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzLiIpOworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorfQorCit7CisgICAgbGV0
IHRhcmdldCA9IHsgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAieCIsIHsg
ZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZSwgdmFsdWU6IDQ1fSk7CisgICAg
bGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94eSA9IG5l
dyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBp
KyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAieCIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNz
ZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgJ2hhcycgbXVzdCByZXR1cm4g
J3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMuIik7CisgICAgICAgICAgICB0
aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9Cit9
CisKK3sKKyAgICBsZXQgdGFyZ2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
YXJnZXQsICJ4IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1
ZTogNDV9KTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfTsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
NTAwOyBpKyspIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAieCIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkgJ2hhcycgbXVzdCBy
ZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMuIik7CisgICAgICAg
ICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAg
ICB9Cit9CisKK3sKKyAgICBsZXQgdGFyZ2V0ID0geyB9OworICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0YXJnZXQsICJ4IiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IGZhbHNl
LCB2YWx1ZTogNDV9KTsKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRsZXIg
PSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsZWQgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHBy
b3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykgeworICAgICAgICBsZXQgcmVzdWx0ID0gIngiIGluIHByb3h5OworICAgICAg
ICBhc3NlcnQocmVzdWx0KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZCk7CisgICAgICAgIGNhbGxl
ZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAgIGxldCB0YXJnZXQgPSB7IH07CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgIngiLCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZp
Z3VyYWJsZTogZmFsc2UsIHZhbHVlOiA0NX0pOworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAg
ICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAgaGFzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGNhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gImhlbGxvIjsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAi
eCIgaW4gcHJveHk7CisgICAgICAgIGFzc2VydChyZXN1bHQpOworICAgICAgICBhc3NlcnQoY2Fs
bGVkKTsKKyAgICAgICAgY2FsbGVkID0gZmFsc2U7CisgICAgfQorfQorCit7CisgICAgbGV0IHRh
cmdldCA9IHsgfTsKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRsZXIgPSB7
CisgICAgICAgIGhhczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWUKKyAgICAgICAgfQorICAgIH07CisKKyAgICBsZXQgcHJv
eHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAieCIgaW4gcHJveHk7CisgICAgICAg
IGFzc2VydChyZXN1bHQpOworICAgICAgICBhc3NlcnQoY2FsbGVkKTsKKyAgICAgICAgY2FsbGVk
ID0gZmFsc2U7CisgICAgfQorfQorCit7CisgICAgbGV0IHByb3RvID0ge3g6IDIwfTsKKyAgICBs
ZXQgdGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShwcm90byk7CisgICAgYXNzZXJ0KHRhcmdldC5fX3By
b3RvX18gPT09IHByb3RvKTsKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGhhbmRs
ZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGFyZ2V0LCBwcm9wTmFtZSkgeworICAgICAg
ICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwcm9wTmFtZSBpbiB0YXJn
ZXQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdl
dCwgaGFuZGxlcik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAg
ICBsZXQgcmVzdWx0ID0gIngiIGluIHByb3h5OworICAgICAgICBhc3NlcnQocmVzdWx0KTsKKyAg
ICAgICAgYXNzZXJ0KGNhbGxlZCk7CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30K
KworeworICAgIGxldCB0YXJnZXQgPSB7eDogMjB9OworICAgIGxldCBoYW5kbGVyID0geworICAg
ICAgICBoYXM6IGZ1bmN0aW9uKHRoZVRhcmdldCwgcHJvcE5hbWUpIHsKKyAgICAgICAgICAgIGFz
c2VydCh0aGVUYXJnZXQgPT09IHRhcmdldCk7CisgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIHByb3BOYW1lIGluIHRoZVRhcmdldDsKKyAgICAgICAgfQorICAg
IH07CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7CisgICAgbGV0
IG9iaiA9IE9iamVjdC5jcmVhdGUocHJveHkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3Rv
dHlwZU9mKG9iaikgPT09IHByb3h5KTsKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAieCIg
aW4gb2JqOworICAgICAgICBhc3NlcnQocmVzdWx0KTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZCk7
CisgICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KK30KKworeworICAgIGxldCBlcnJvciA9
IG51bGw7CisgICAgbGV0IHRhcmdldCA9IG5ldyBQcm94eSh7fSwgeworICAgICAgICBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXJyb3IgPSBuZXcg
RXJyb3IoKTsKKyAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICB9CisgICAgfSk7Cisg
ICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24odGhlVGFyZ2V0LCBwcm9w
TmFtZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKyAg
ICBsZXQgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgImZvbyIgaW4gcHJveHk7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgYXNzZXJ0KGUgPT09IGVycm9yKTsKKyAgICAgICAgICAgIHRocmV3ID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KK30K
</data>
<flag name="review"
          id="296538"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>