<?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>119189</bug_id>
          
          <creation_ts>2013-07-27 23:43:27 -0700</creation_ts>
          <short_desc>Some cleanup in PropertySlot</short_desc>
          <delta_ts>2013-07-29 18:36:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>912318</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-27 23:43:27 -0700</bug_when>
    <thetext>PropertySlot represents a property in one of four states - value, getter, custom, or custom-index.  The state is currently tracked redundantly by two mechanisms - the custom getter function (m_getValue) is set to a special value to indicate the type (other than custom), and the type is also tracked by an enum - but only if cacheable.  Cacheability can typically be determined by the value of m_offset (this is invalidOffset if not cacheable).

* Internally, always track the type of the property using an enum value, PropertyType.
* Use m_offset to indicate cacheable.
* Keep the external interface (CachedPropertyType) unchanged.
* Better pack data into the m_data union.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912321</commentid>
    <comment_count>1</comment_count>
      <attachid>207603</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-27 23:49:09 -0700</bug_when>
    <thetext>Created attachment 207603
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912322</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-27 23:52:15 -0700</bug_when>
    <thetext>Attachment 207603 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:16:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:17:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 4 in 3 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>912343</commentid>
    <comment_count>3</comment_count>
      <attachid>207603</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-28 11:09:00 -0700</bug_when>
    <thetext>Comment on attachment 207603
fix

View in context: https://bugs.webkit.org/attachment.cgi?id=207603&amp;action=review

&gt; Source/JavaScriptCore/runtime/PropertySlot.h:205
&gt; +        unsigned index() const { return m_data.customIndex.index; }

Can we ASSERT that the m_propertyType is TypeCustomIndex here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912347</commentid>
    <comment_count>4</comment_count>
      <attachid>207603</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-28 13:23:47 -0700</bug_when>
    <thetext>Comment on attachment 207603
fix

View in context: https://bugs.webkit.org/attachment.cgi?id=207603&amp;action=review

&gt; Source/JavaScriptCore/runtime/PropertySlot.h:50
&gt;          enum CachedPropertyType {
&gt; -            Uncacheable,
&gt; -            Getter,
&gt; -            Custom,
&gt; -            Value
&gt; +            Uncacheable = TypeUnset,
&gt; +            Value = TypeValue,
&gt; +            Getter = TypeGetter,
&gt; +            Custom = TypeCustom

Can you do something to help distinguish these names as being the cacheable variants? Maybe &quot;CacheableValue&quot;, etc.?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912610</commentid>
    <comment_count>5</comment_count>
      <attachid>207674</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-29 15:44:31 -0700</bug_when>
    <thetext>Created attachment 207674
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912612</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-29 15:45:10 -0700</bug_when>
    <thetext>&gt; Can we ASSERT that the m_propertyType is TypeCustomIndex here?

Cleaned up a bit more - removed this method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912613</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-29 15:45:45 -0700</bug_when>
    <thetext>Attachment 207674 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/dfg/DFGRepatch.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/PropertySlot.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:16:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:17:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 4 in 8 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>912614</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-29 15:46:32 -0700</bug_when>
    <thetext>&gt; Can you do something to help distinguish these names as being the cacheable variants? Maybe &quot;CacheableValue&quot;, etc.?

Was going to tidy up the external interface in a follow up patch, but was simple enough.  Removed this enum, added more methods matching existing isCacheableValue() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912634</commentid>
    <comment_count>9</comment_count>
      <attachid>207674</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-29 17:08:11 -0700</bug_when>
    <thetext>Comment on attachment 207674
fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912646</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-07-29 18:36:29 -0700</bug_when>
    <thetext>Fixed in r153454</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207603</attachid>
            <date>2013-07-27 23:49:09 -0700</date>
            <delta_ts>2013-07-29 15:44:31 -0700</delta_ts>
            <desc>fix</desc>
            <filename>119189.patch</filename>
            <type>text/plain</type>
            <size>12446</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzNDAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEzLTA3LTI3ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBTb21lIGNsZWFudXAgaW4gUHJvcGVydHlTbG90CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkxODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVwcmVzZW50cyBh
IHByb3BlcnR5IGluIG9uZSBvZiBmb3VyIHN0YXRlcyAtIHZhbHVlLCBnZXR0ZXIsIGN1c3RvbSwg
b3IgY3VzdG9tLWluZGV4LgorICAgICAgICBUaGUgc3RhdGUgaXMgY3VycmVudGx5IHRyYWNrZWQg
cmVkdW5kYW50bHkgYnkgdHdvIG1lY2hhbmlzbXMgLSB0aGUgY3VzdG9tIGdldHRlciBmdW5jdGlv
biAobV9nZXRWYWx1ZSkKKyAgICAgICAgaXMgc2V0IHRvIGEgc3BlY2lhbCB2YWx1ZSB0byBpbmRp
Y2F0ZSB0aGUgdHlwZSAob3RoZXIgdGhhbiBjdXN0b20pLCBhbmQgdGhlIHR5cGUgaXMgYWxzbyB0
cmFja2VkIGJ5CisgICAgICAgIGFuIGVudW0gLSBidXQgb25seSBpZiBjYWNoZWFibGUuIENhY2hl
YWJpbGl0eSBjYW4gdHlwaWNhbGx5IGJlIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIG1fb2Zm
c2V0CisgICAgICAgICh0aGlzIGlzIGludmFsaWRPZmZzZXQgaWYgbm90IGNhY2hlYWJsZSkuCisK
KyAgICAgICAgICAgICogSW50ZXJuYWxseSwgYWx3YXlzIHRyYWNrIHRoZSB0eXBlIG9mIHRoZSBw
cm9wZXJ0eSB1c2luZyBhbiBlbnVtIHZhbHVlLCBQcm9wZXJ0eVR5cGUuCisgICAgICAgICAgICAq
IFVzZSBtX29mZnNldCB0byBpbmRpY2F0ZSBjYWNoZWFibGUuCisgICAgICAgICAgICAqIEtlZXAg
dGhlIGV4dGVybmFsIGludGVyZmFjZSAoQ2FjaGVkUHJvcGVydHlUeXBlKSB1bmNoYW5nZWQuCisg
ICAgICAgICAgICAqIEJldHRlciBwYWNrIGRhdGEgaW50byB0aGUgbV9kYXRhIHVuaW9uLgorCisg
ICAgICAgIFBlcmZvcm1hbmNlIG5ldXRyYWwuCisKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6ZnVuY3Rpb25HZXR0ZXIpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5
U2xvdDo6UHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpnZXRWYWx1
ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y2FjaGVkUHJvcGVydHlUeXBlKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZSk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6aXNDYWNoZWFibGVWYWx1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xv
dDo6c2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldEN1c3RvbSk6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0Q2FjaGVhYmxlQ3VzdG9tKToKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlTbG90OjpzZXRDdXN0b21JbmRleCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6c2V0R2V0dGVyU2xvdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0
Q2FjaGVhYmxlR2V0dGVyU2xvdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6aW5kZXgp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcik6CisKIDIwMTMtMDct
MjYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KEZUTD8pOiBDcmFzaGVzIGluIHBsdWdpbiB0ZXN0cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVlIFByb3BlcnR5
U2xvdDo6ZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVy
biBjYWxsR2V0dGVyKGV4ZWMsIG1fdGhpc1ZhbHVlLCBtX2RhdGEuZ2V0dGVyU2V0dGVyKTsKKyAg
ICByZXR1cm4gY2FsbEdldHRlcihleGVjLCBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLmdldHRlci50
aGlzVmFsdWUpLCBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlcik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlT
bG90LmgJKHJldmlzaW9uIDE1MzM5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywzMyArMzMsMzQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsK
IAotI2RlZmluZSBKU0NfVkFMVUVfTUFSS0VSIDAKLSNkZWZpbmUgSU5ERVhfR0VUVEVSX01BUktF
UiByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMikKLSNkZWZpbmUgR0VUVEVSX0ZVTkNU
SU9OX01BUktFUiByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMykKLQogICAgIGNsYXNz
IFByb3BlcnR5U2xvdCB7CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIFByb3BlcnR5VHlwZSB7
CisgICAgICAgICAgICBUeXBlVW5zZXQsCisgICAgICAgICAgICBUeXBlVmFsdWUsCisgICAgICAg
ICAgICBUeXBlR2V0dGVyLAorICAgICAgICAgICAgVHlwZUN1c3RvbSwKKyAgICAgICAgICAgIFR5
cGVDdXN0b21JbmRleAorICAgICAgICB9OworCiAgICAgICAgIGVudW0gQ2FjaGVkUHJvcGVydHlU
eXBlIHsKLSAgICAgICAgICAgIFVuY2FjaGVhYmxlLAotICAgICAgICAgICAgR2V0dGVyLAotICAg
ICAgICAgICAgQ3VzdG9tLAotICAgICAgICAgICAgVmFsdWUKKyAgICAgICAgICAgIFVuY2FjaGVh
YmxlID0gVHlwZVVuc2V0LAorICAgICAgICAgICAgVmFsdWUgPSBUeXBlVmFsdWUsCisgICAgICAg
ICAgICBHZXR0ZXIgPSBUeXBlR2V0dGVyLAorICAgICAgICAgICAgQ3VzdG9tID0gVHlwZUN1c3Rv
bQogICAgICAgICB9OwogCiAgICAgICAgIFByb3BlcnR5U2xvdCgpCi0gICAgICAgICAgICA6IG1f
Y2FjaGVkUHJvcGVydHlUeXBlKFVuY2FjaGVhYmxlKQorICAgICAgICAgICAgOiBtX3Byb3BlcnR5
VHlwZShUeXBlVW5zZXQpCisgICAgICAgICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFyQmFzZSgpOwotICAgICAgICAgICAgY2xlYXJPZmZz
ZXQoKTsKLSAgICAgICAgICAgIGNsZWFyVmFsdWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGV4
cGxpY2l0IFByb3BlcnR5U2xvdChjb25zdCBKU1ZhbHVlIGJhc2UpCiAgICAgICAgICAgICA6IG1f
c2xvdEJhc2UoYmFzZSkKLSAgICAgICAgICAgICwgbV9jYWNoZWRQcm9wZXJ0eVR5cGUoVW5jYWNo
ZWFibGUpCisgICAgICAgICAgICAsIG1fcHJvcGVydHlUeXBlKFR5cGVVbnNldCkKKyAgICAgICAg
ICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKICAgICAgICAgewotICAgICAgICAgICAgY2xl
YXJPZmZzZXQoKTsKLSAgICAgICAgICAgIGNsZWFyVmFsdWUoKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgSlNWYWx1ZSBz
bG90QmFzZSwgUHJvcGVydHlOYW1lKTsKQEAgLTY3LDI5ICs2OCwyOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2V0
VmFsdWUgPT0gSlNDX1ZBTFVFX01BUktFUikKLSAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZTsKLSAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IElOREVYX0dFVFRFUl9NQVJLRVIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fZ2V0SW5kZXhWYWx1ZShleGVjLCBzbG90QmFzZSgpLCBp
bmRleCgpKTsKLSAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IEdFVFRFUl9GVU5DVElPTl9N
QVJLRVIpCisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZVZhbHVlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tSW5kZXgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fZGF0YS5jdXN0b21JbmRleC5nZXRJbmRleFZhbHVlKGV4ZWMsIHNsb3RC
YXNlKCksIGluZGV4KCkpOworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVH
ZXR0ZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGV4ZWMpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWUoZXhlYywgc2xvdEJhc2UoKSwgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9tLmdldFZhbHVlKGV4ZWMsIHNsb3RC
YXNlKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBKU1ZhbHVlIGdldFZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBKU0NfVkFMVUVfTUFSS0VSKQotICAg
ICAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgICAgICAgICAgaWYgKG1fZ2V0VmFsdWUg
PT0gSU5ERVhfR0VUVEVSX01BUktFUikKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9nZXRJbmRl
eFZhbHVlKGV4ZWMsIG1fc2xvdEJhc2UsIG1fZGF0YS5pbmRleCk7Ci0gICAgICAgICAgICBpZiAo
bV9nZXRWYWx1ZSA9PSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSKQorICAgICAgICAgICAgaWYgKG1f
cHJvcGVydHlUeXBlID09IFR5cGVWYWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CisgICAgICAgICAgICBpZiAobV9wcm9wZXJ0eVR5cGUg
PT0gVHlwZUN1c3RvbUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9t
SW5kZXguZ2V0SW5kZXhWYWx1ZShleGVjLCBzbG90QmFzZSgpLCBpbmRleCgpKTsKKyAgICAgICAg
ICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbkdldHRlcihleGVjKTsKLSAgICAgICAgICAgIHJldHVybiBtX2dldFZhbHVl
KGV4ZWMsIHNsb3RCYXNlKCksIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZShleGVjLCBzbG90QmFz
ZSgpLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIGNhY2hlZFByb3BlcnR5VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkUHJvcGVydHlUeXBlOyB9Ci0gICAgICAgIGJvb2wgaXNDYWNoZWFibGUo
KSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFByb3BlcnR5VHlwZSAhPSBVbmNhY2hlYWJsZTsgfQot
ICAgICAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFBy
b3BlcnR5VHlwZSA9PSBWYWx1ZTsgfQorICAgICAgICBDYWNoZWRQcm9wZXJ0eVR5cGUgY2FjaGVk
UHJvcGVydHlUeXBlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSA/IHN0YXRpY19jYXN0
PENhY2hlZFByb3BlcnR5VHlwZT4obV9wcm9wZXJ0eVR5cGUpIDogVW5jYWNoZWFibGU7IH0KKyAg
ICAgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQ7IH0KKyAgICAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1
cm4gaXNDYWNoZWFibGUoKSAmJiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlVmFsdWU7IH0KICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwpAQCAtOTksNzcgKzEwMCw4OSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVl
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwotICAgICAgICAg
ICAgY2xlYXJPZmZzZXQoKTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFS
S0VSOworICAgICAgICAgICAgbV9kYXRhLnZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsK
KworICAgICAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKICAgICAgICAgICAgIG1fc2xvdEJhc2Ug
PSBzbG90QmFzZTsKLSAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIG1f
cHJvcGVydHlUeXBlID0gVHlwZVZhbHVlOworICAgICAgICAgICAgbV9vZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFs
dWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUg
PSBKU0NfVkFMVUVfTUFSS0VSOworICAgICAgICAgICAgbV9kYXRhLnZhbHVlID0gSlNWYWx1ZTo6
ZW5jb2RlKHZhbHVlKTsKKworICAgICAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKICAgICAgICAg
ICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKLSAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZVZhbHVlOwogICAgICAgICAgICAgbV9v
ZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFZhbHVl
OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHZhbHVlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwotICAgICAgICAgICAgY2xlYXJCYXNl
KCk7Ci0gICAgICAgICAgICBjbGVhck9mZnNldCgpOwotICAgICAgICAgICAgbV9nZXRWYWx1ZSA9
IEpTQ19WQUxVRV9NQVJLRVI7Ci0gICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAg
ICAgICBtX2RhdGEudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworCisgICAgICAgICAg
ICBtX3Nsb3RCYXNlID0gSlNWYWx1ZSgpOworICAgICAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBU
eXBlVmFsdWU7CisgICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIHNldEN1c3RvbShKU1ZhbHVlIHNsb3RCYXNlLCBHZXRWYWx1ZUZ1
bmMgZ2V0VmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChzbG90QmFzZSk7CiAg
ICAgICAgICAgICBBU1NFUlQoZ2V0VmFsdWUpOwotICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IGdl
dFZhbHVlOwotICAgICAgICAgICAgbV9nZXRJbmRleFZhbHVlID0gMDsKKyAgICAgICAgICAgIG1f
ZGF0YS5jdXN0b20uZ2V0VmFsdWUgPSBnZXRWYWx1ZTsKKworICAgICAgICAgICAgQVNTRVJUKHNs
b3RCYXNlKTsKICAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKKyAgICAgICAgICAg
IG1fcHJvcGVydHlUeXBlID0gVHlwZUN1c3RvbTsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBzZXRDYWNoZWFi
bGVDdXN0b20oSlNWYWx1ZSBzbG90QmFzZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoc2xvdEJhc2UpOwogICAgICAgICAgICAgQVNTRVJUKGdl
dFZhbHVlKTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBnZXRWYWx1ZTsKLSAgICAgICAgICAg
IG1fZ2V0SW5kZXhWYWx1ZSA9IDA7CisgICAgICAgICAgICBtX2RhdGEuY3VzdG9tLmdldFZhbHVl
ID0gZ2V0VmFsdWU7CisKKyAgICAgICAgICAgIEFTU0VSVChzbG90QmFzZSk7CiAgICAgICAgICAg
ICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlw
ZSA9IEN1c3RvbTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZUN1c3RvbTsKKyAg
ICAgICAgICAgIG1fb2Zmc2V0ID0gIWludmFsaWRPZmZzZXQ7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIHNldEN1c3RvbUluZGV4KEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4LCBH
ZXRJbmRleFZhbHVlRnVuYyBnZXRJbmRleFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoc2xvdEJhc2UpOwogICAgICAgICAgICAgQVNTRVJUKGdldEluZGV4VmFsdWUpOwotICAg
ICAgICAgICAgbV9nZXRWYWx1ZSA9IElOREVYX0dFVFRFUl9NQVJLRVI7Ci0gICAgICAgICAgICBt
X2dldEluZGV4VmFsdWUgPSBnZXRJbmRleFZhbHVlOworICAgICAgICAgICAgbV9kYXRhLmN1c3Rv
bUluZGV4LmdldEluZGV4VmFsdWUgPSBnZXRJbmRleFZhbHVlOworICAgICAgICAgICAgbV9kYXRh
LmN1c3RvbUluZGV4LmluZGV4ID0gaW5kZXg7CisKKyAgICAgICAgICAgIEFTU0VSVChzbG90QmFz
ZSk7CiAgICAgICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2Rh
dGEuaW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZUN1c3Rv
bUluZGV4OworICAgICAgICAgICAgbV9vZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogICAgICAgICB9
CiAKICAgICAgICAgdm9pZCBzZXRHZXR0ZXJTbG90KEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVy
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyU2V0dGVyKTsKLSAgICAgICAg
ICAgIG1fdGhpc1ZhbHVlID0gbV9zbG90QmFzZTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBH
RVRURVJfRlVOQ1RJT05fTUFSS0VSOwotICAgICAgICAgICAgbV9kYXRhLmdldHRlclNldHRlciA9
IGdldHRlclNldHRlcjsKKyAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXIudGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZW5jb2RlKG1fc2xvdEJhc2UpOworICAgICAgICAgICAgbV9kYXRhLmdldHRlci5nZXR0
ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7CisKKyAgICAgICAgICAgIG1fcHJvcGVydHlUeXBlID0g
VHlwZUdldHRlcjsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgc2V0Q2FjaGVhYmxlR2V0dGVyU2xvdChKU1ZhbHVlIHNsb3RC
YXNlLCBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoZ2V0dGVyU2V0dGVyKTsKLSAgICAgICAgICAg
IG1fZ2V0VmFsdWUgPSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSOwotICAgICAgICAgICAgbV90aGlz
VmFsdWUgPSBtX3Nsb3RCYXNlOworICAgICAgICAgICAgbV9kYXRhLmdldHRlci50aGlzVmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUobV9zbG90QmFzZSk7CisgICAgICAgICAgICBtX2RhdGEuZ2V0dGVy
LmdldHRlclNldHRlciA9IGdldHRlclNldHRlcjsKKworICAgICAgICAgICAgQVNTRVJUKHNsb3RC
YXNlKTsKICAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKLSAgICAgICAgICAgIG1f
ZGF0YS5nZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7CisgICAgICAgICAgICBtX3Byb3BlcnR5
VHlwZSA9IFR5cGVHZXR0ZXI7CiAgICAgICAgICAgICBtX29mZnNldCA9IG9mZnNldDsKLSAgICAg
ICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBlID0gR2V0dGVyOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBzZXRVbmRlZmluZWQoKQpAQCAtMTg5LDUyICsyMDIsMzQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBtX3Nsb3RCYXNlID0gYmFzZTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgY2xlYXJCYXNlKCkKLSAgICAgICAgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAg
IG1fc2xvdEJhc2UgPSBKU1ZhbHVlKCk7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgY2xlYXJWYWx1ZSgpCi0gICAgICAgIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBt
X3ZhbHVlID0gSlNWYWx1ZSgpOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNs
ZWFyT2Zmc2V0KCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ2xlYXIgb2Zmc2V0IGV2ZW4g
aW4gcmVsZWFzZSBidWlsZHMsIGluIGNhc2UgdGhpcyBQcm9wZXJ0eVNsb3QgaGFzIGJlZW4gdXNl
ZCBiZWZvcmUuCi0gICAgICAgICAgICAvLyAoRm9yIG90aGVyIGRhdGEgbWVtYmVycywgd2UgZG9u
J3QgbmVlZCB0byBjbGVhciBhbnl0aGluZyBiZWNhdXNlIHJldXNlIHdvdWxkIG1lYW5pbmdmdWxs
eSBvdmVyd3JpdGUgdGhlbS4pCi0gICAgICAgICAgICBtX29mZnNldCA9IGludmFsaWRPZmZzZXQ7
Ci0gICAgICAgICAgICBtX2NhY2hlZFByb3BlcnR5VHlwZSA9IFVuY2FjaGVhYmxlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5k
ZXg7IH0KKyAgICAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY3Vz
dG9tSW5kZXguaW5kZXg7IH0KIAogICAgICAgICBHZXRWYWx1ZUZ1bmMgY3VzdG9tR2V0dGVyKCkg
Y29uc3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fY2FjaGVkUHJvcGVydHlUeXBl
ID09IEN1c3RvbSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKKyAgICAgICAgICAg
IEFTU0VSVChpc0NhY2hlYWJsZSgpICYmIG1fcHJvcGVydHlUeXBlID09IFR5cGVDdXN0b20pOwor
ICAgICAgICAgICAgcmV0dXJuIG1fZGF0YS5jdXN0b20uZ2V0VmFsdWU7CiAgICAgICAgIH0KICAg
ICBwcml2YXRlOgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGZ1bmN0aW9uR2V0
dGVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCi0gICAgICAgIEdldFZhbHVlRnVuYyBtX2dldFZhbHVl
OwotICAgICAgICBHZXRJbmRleFZhbHVlRnVuYyBtX2dldEluZGV4VmFsdWU7Ci0gICAgICAgIAot
ICAgICAgICBKU1ZhbHVlIG1fc2xvdEJhc2U7CiAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOwotICAgICAgICAgICAgdW5zaWduZWQgaW5kZXg7
CisgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlOworICAgICAgICAgICAg
ICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOworICAgICAgICAgICAgfSBnZXR0ZXI7Cisg
ICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIEdldFZhbHVlRnVuYyBnZXRWYWx1
ZTsKKyAgICAgICAgICAgIH0gY3VzdG9tOworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAg
ICAgICAgICBHZXRJbmRleFZhbHVlRnVuYyBnZXRJbmRleFZhbHVlOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGluZGV4OworICAgICAgICAgICAgfSBjdXN0b21JbmRleDsKICAgICAgICAgfSBt
X2RhdGE7CiAKLSAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOwotICAgICAgICBKU1ZhbHVlIG1fdGhp
c1ZhbHVlOwotCisgICAgICAgIEpTVmFsdWUgbV9zbG90QmFzZTsKKyAgICAgICAgUHJvcGVydHlU
eXBlIG1fcHJvcGVydHlUeXBlOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKLSAg
ICAgICAgQ2FjaGVkUHJvcGVydHlUeXBlIG1fY2FjaGVkUHJvcGVydHlUeXBlOwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="229399"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207674</attachid>
            <date>2013-07-29 15:44:31 -0700</date>
            <delta_ts>2013-07-29 17:08:11 -0700</delta_ts>
            <desc>fix</desc>
            <filename>119189.2.patch</filename>
            <type>text/plain</type>
            <size>31463</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzNDQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBA
CisyMDEzLTA3LTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBTb21lIGNsZWFudXAgaW4gUHJvcGVydHlTbG90CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkxODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVwcmVzZW50cyBh
IHByb3BlcnR5IGluIG9uZSBvZiBmb3VyIHN0YXRlcyAtIHZhbHVlLCBnZXR0ZXIsIGN1c3RvbSwg
b3IgY3VzdG9tLWluZGV4LgorICAgICAgICBUaGUgc3RhdGUgaXMgY3VycmVudGx5IHRyYWNrZWQg
cmVkdW5kYW50bHkgYnkgdHdvIG1lY2hhbmlzbXMgLSB0aGUgY3VzdG9tIGdldHRlciBmdW5jdGlv
biAobV9nZXRWYWx1ZSkKKyAgICAgICAgaXMgc2V0IHRvIGEgc3BlY2lhbCB2YWx1ZSB0byBpbmRp
Y2F0ZSB0aGUgdHlwZSAob3RoZXIgdGhhbiBjdXN0b20pLCBhbmQgdGhlIHR5cGUgaXMgYWxzbyB0
cmFja2VkIGJ5CisgICAgICAgIGFuIGVudW0gLSBidXQgb25seSBpZiBjYWNoZWFibGUuIENhY2hl
YWJpbGl0eSBjYW4gdHlwaWNhbGx5IGJlIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIG1fb2Zm
c2V0CisgICAgICAgICh0aGlzIGlzIGludmFsaWRPZmZzZXQgaWYgbm90IGNhY2hlYWJsZSkuCisK
KyAgICAgICAgICAgICogSW50ZXJuYWxseSwgYWx3YXlzIHRyYWNrIHRoZSB0eXBlIG9mIHRoZSBw
cm9wZXJ0eSB1c2luZyBhbiBlbnVtIHZhbHVlLCBQcm9wZXJ0eVR5cGUuCisgICAgICAgICAgICAq
IFVzZSBtX29mZnNldCB0byBpbmRpY2F0ZSBjYWNoZWFibGUuCisgICAgICAgICAgICAqIEtlZXAg
dGhlIGV4dGVybmFsIGludGVyZmFjZSAoQ2FjaGVkUHJvcGVydHlUeXBlKSB1bmNoYW5nZWQuCisg
ICAgICAgICAgICAqIEJldHRlciBwYWNrIGRhdGEgaW50byB0aGUgbV9kYXRhIHVuaW9uLgorCisg
ICAgICAgIFBlcmZvcm1hbmNlIG5ldXRyYWwuCisKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6
REZHOjp0cnlCdWlsZEdldEJ5SURMaXN0KToKKyAgICAgICAgICAgIC0gY2FjaGVkUHJvcGVydHlU
eXBlKCkgLT4gaXNDYWNoZWFibGUqKCkKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgICAgIC0gY2FjaGVkUHJv
cGVydHlUeXBlKCkgLT4gaXNDYWNoZWFibGUqKCkKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
UHJvdG8pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QpOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgorICAgICAgICAgICAg
LSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSAtPiBpc0NhY2hlYWJsZSooKQorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgICAg
ICAtIGNhY2hlZFByb3BlcnR5VHlwZSgpIC0+IGlzQ2FjaGVhYmxlKigpCisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAgICAgLSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSAtPiBpc0NhY2hl
YWJsZSooKQorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlTbG90OjpmdW5jdGlvbkdldHRlcik6CisgICAgICAgICAgICAtIHJlZmFjdG9y
aW5nIGRlc2NyaWJlZCBhYm92ZS4KKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U2xvdDo6Z2V0VmFsdWUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
Q2FjaGVhYmxlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZVZhbHVl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90Ojppc0NhY2hlYWJsZUdldHRlcik6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5U2xvdDo6aXNDYWNoZWFibGVDdXN0b20pOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OmNhY2hlZE9mZnNldCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xv
dDo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0Q3VzdG9tKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVDdXN0b20pOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eVNsb3Q6OnNldEN1c3RvbUluZGV4KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRH
ZXR0ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDYWNoZWFibGVHZXR0
ZXJTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRVbmRlZmluZWQpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNsb3RCYXNlKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlTbG90OjpzZXRCYXNlKToKKyAgICAgICAgICAgIC0gcmVmYWN0b3JpbmcgZGVzY3JpYmVkIGFi
b3ZlLgorCiAyMDEzLTA3LTI4ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTjogQ3Jhc2ggd2hlbiBvcGVuaW5nIEZhY2Vib29rLmNvbQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTMzOTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNT
dGF0ZSogZQogCiAgICAgLy8gT3B0aW1pemUgc2VsZiBhY2Nlc3MuCiAgICAgaWYgKHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKLSAgICAgICAgaWYgKChzbG90LmNhY2hlZFByb3BlcnR5
VHlwZSgpICE9IFByb3BlcnR5U2xvdDo6VmFsdWUpCisgICAgICAgIGlmICghc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkKICAgICAgICAgICAgIHx8ICFNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRy
QWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSkgewogICAgICAgICAgICAgZGZnUmVwYXRjaENhbGwoY29kZUJs
b2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExp
c3QpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGlj
IGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCiAgICAgLy8gRklYTUU6IG9wdGltaXplIGdldHRlcnMgYW5kIHNldHRlcnMKLSAgICBp
ZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKQorICAg
IGlmICghc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwpAQCAt
NDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQK
ICAgICAgICAgICAgIC8vIFdlIGNhbm5vdCBkbyBhcyBtdWNoIGlubGluZSBjYWNoaW5nIGlmIHRo
ZSByZWdpc3RlcnMgd2VyZSBub3QgZmx1c2hlZCBwcmlvciB0byB0aGlzIEdldEJ5SWQuIEluIHBh
cnRpY3VsYXIsCiAgICAgICAgICAgICAvLyBub24tVmFsdWUgY2FjaGVkIHByb3BlcnRpZXMgcmVx
dWlyZSBwbGFudGluZyBjYWxscywgd2hpY2ggcmVxdWlyZXMgcmVnaXN0ZXJzIHRvIGhhdmUgYmVl
biBmbHVzaGVkLiBUaHVzLAogICAgICAgICAgICAgLy8gaWYgcmVnaXN0ZXJzIHdlcmUgbm90IGZs
dXNoZWQsIGRvbid0IGRvIG5vbi1WYWx1ZSBjYWNoaW5nLgotICAgICAgICAgICAgaWYgKHNsb3Qu
Y2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJvcGVydHlTbG90OjpWYWx1ZSkKKyAgICAgICAgICAg
IGlmICghc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgCkBAIC00NzUsOSArNDc1LDggQEAgc3RhdGljIGJvb2wgdHJ5
QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICBGdW5jdGlvblB0ciBvcGVyYXRpb25G
dW5jdGlvbjsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzczsKICAgICAgICAg
Ci0gICAgICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6
R2V0dGVyCi0gICAgICAgICAgICB8fCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3Bl
cnR5U2xvdDo6Q3VzdG9tKSB7Ci0gICAgICAgICAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcikgeworICAgICAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZUdldHRlcigpIHx8IHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgeworICAgICAgICAgICAg
aWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChz
Y3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIEFTU0VSVChiYXNl
R1BSICE9IHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIGlmIChpc0lubGluZU9mZnNldChz
bG90LmNhY2hlZE9mZnNldCgpKSkgewpAQCAtNTY3LDggKzU2Niw3IEBAIHN0YXRpYyBib29sIHRy
eUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVi
SW5mby5wYXRjaC5kZmcuZGVsdGFDYWxsVG9Eb25lKS5leGVjdXRhYmxlQWRkcmVzcygpKSksCiAg
ICAgICAgICAgICAgICAgKnZtLAogICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksCi0gICAgICAgICAgICAgICAgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQ
cm9wZXJ0eVNsb3Q6OkdldHRlcgotICAgICAgICAgICAgICAgIHx8IHNsb3QuY2FjaGVkUHJvcGVy
dHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pOworICAgICAgICAgICAgICAgIHNsb3Qu
aXNDYWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpOwogICAgICAg
ICAKICAgICAgICAgcG9seW1vcnBoaWNTdHJ1Y3R1cmVMaXN0LT5saXN0W2xpc3RJbmRleF0uc2V0
KCp2bSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3R1YlJvdXRpbmUsIHN0cnVjdHVy
ZSwgaXNEaXJlY3QpOwogICAgICAgICAKQEAgLTU3Niw4ICs1NzQsNyBAQCBzdGF0aWMgYm9vbCB0
cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiBsaXN0SW5kZXggPCAo
UE9MWU1PUlBISUNfTElTVF9DQUNIRV9TSVpFIC0gMSk7CiAgICAgfQogICAgIAotICAgIGlmIChi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZygpCi0gICAgICAgIHx8IHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgIT0gUHJv
cGVydHlTbG90OjpWYWx1ZSkKKyAgICBpZiAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSB8fCAhc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChzbG90LnNs
b3RCYXNlKCkuaXNPYmplY3QoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1MzM5OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgxOCw3ICs4MTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeUlkUHJvdG8oU3RyCiAKICAgICBib29sIG5lZWRzU3R1YkxpbmsgPSBmYWxzZTsKICAgICAv
LyBDaGVja3Mgb3V0IG9rYXkhCi0gICAgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0g
UHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigp
KSB7CiAgICAgICAgIG5lZWRzU3R1YkxpbmsgPSB0cnVlOwogICAgICAgICBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwgcmVnVDEsIGNhY2hlZE9mZnNldCk7CiAgICAg
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfZ2V0dGVyX3N0
dWIpOwpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byhTdHIKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0g
ICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6
Q3VzdG9tKSB7CisgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKICAg
ICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOwogICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0KSk7CkBAIC04ODQsNyArODg0LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIEp1bXAgZmFp
bHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKICAgICBib29sIG5l
ZWRzU3R1YkxpbmsgPSBmYWxzZTsKICAgICBib29sIGlzRGlyZWN0ID0gZmFsc2U7Ci0gICAgaWYg
KHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAg
ICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKSB7CiAgICAgICAgIG5lZWRzU3R1Ykxpbmsg
PSB0cnVlOwogICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QwLCByZWdUMiwgcmVn
VDEsIGNhY2hlZE9mZnNldCk7CiAgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0
aV9vcF9nZXRfYnlfaWRfZ2V0dGVyX3N0dWIpOwpAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCgKICAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDApOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRy
KHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAg
ICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0gICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5
VHlwZSgpID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CisgICAgfSBlbHNlIGlmIChzbG90Lmlz
Q2FjaGVhYmxlQ3VzdG9tKCkpIHsKICAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAg
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0
dWIpOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CkBAIC05NTgsNyArOTU4
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgIAogICAg
IGJvb2wgbmVlZHNTdHViTGluayA9IGZhbHNlOwogICAgIGJvb2wgaXNEaXJlY3QgPSBmYWxzZTsK
LSAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRl
cikgeworICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKICAgICAgICAgbmVlZHNT
dHViTGluayA9IHRydWU7CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmpl
Y3QsIHJlZ1QyLCByZWdUMSwgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9nZXR0ZXJfc3R1Yik7CkBAIC05NjYsNyArOTY2
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvTGlzdAogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKLSAgICB9IGVsc2UgaWYgKHNsb3Qu
Y2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAgICB9IGVs
c2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewogICAgICAgICBuZWVkc1N0dWJMaW5r
ID0gdHJ1ZTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9i
eV9pZF9jdXN0b21fc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW1QdHIocHJvdG9PYmplY3QpKTsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICAKICAgICBib29sIG5lZWRzU3R1Ykxpbmsg
PSBmYWxzZTsKICAgICBib29sIGlzRGlyZWN0ID0gZmFsc2U7Ci0gICAgaWYgKHNsb3QuY2FjaGVk
UHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZUdldHRlcigpKSB7CiAgICAgICAgIG5lZWRzU3R1YkxpbmsgPSB0cnVlOwogICAg
ICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHByb3RvT2JqZWN0LCByZWdUMiwgcmVnVDEsIGNh
Y2hlZE9mZnNldCk7CiAgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9n
ZXRfYnlfaWRfZ2V0dGVyX3N0dWIpOwpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChyZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoc3R1
YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAg
IHN0dWJDYWxsLmNhbGwoKTsKLSAgICB9IGVsc2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBl
KCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNo
ZWFibGVDdXN0b20oKSkgewogICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAgICAg
SklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9jdXN0b21fc3R1Yik7
CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIocHJvdG9PYmplY3Qp
KTsKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbihTdHIKICAgICBBU1NFUlQocHJvdG9PYmplY3QpOwogICAgIAogICAgIGJvb2wgbmVlZHNT
dHViTGluayA9IGZhbHNlOwotICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFBy
b3BlcnR5U2xvdDo6R2V0dGVyKSB7CisgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkg
ewogICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAgICAgY29tcGlsZUdldERpcmVj
dE9mZnNldChwcm90b09iamVjdCwgcmVnVDIsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogICAgICAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHVi
KTsKQEAgLTExMjMsNyArMTEyMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRD
aGFpbihTdHIKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0g
ICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6
Q3VzdG9tKSB7CisgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKICAg
ICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOwogICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0KSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTUz
Mzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeUlkUHJvdG8oU3RyCiAgICAgYm9vbCBuZWVkc1N0dWJMaW5rID0gZmFsc2U7CiAgICAg
CiAgICAgLy8gQ2hlY2tzIG91dCBva2F5IQotICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6R2V0dGVyKSB7CisgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVH
ZXR0ZXIoKSkgewogICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAgICAgY29tcGls
ZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVnVDEsIGNhY2hlZE9mZnNldCk7CiAgICAg
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfZ2V0dGVyX3N0
dWIpOwpAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byhTdHIKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwogICAgICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHN0dWJJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0g
ICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6
Q3VzdG9tKSB7CisgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkpIHsKICAg
ICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxs
KHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOwogICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0KSk7CkBAIC05MTcsNyArOTE3LDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgIEp1bXAgZmFp
bHVyZUNhc2UgPSBjaGVja1N0cnVjdHVyZShyZWdUMCwgc3RydWN0dXJlKTsKICAgICBib29sIG5l
ZWRzU3R1YkxpbmsgPSBmYWxzZTsKICAgICBib29sIGlzRGlyZWN0ID0gZmFsc2U7Ci0gICAgaWYg
KHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpHZXR0ZXIpIHsKKyAg
ICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKSB7CiAgICAgICAgIG5lZWRzU3R1Ykxpbmsg
PSB0cnVlOwogICAgICAgICBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KHJlZ1QwLCByZWdUMSwgY2Fj
aGVkT2Zmc2V0KTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dl
dF9ieV9pZF9nZXR0ZXJfc3R1Yik7CkBAIC05MjUsNyArOTI1LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlJZFNlbGZMaXN0KAogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoc3R1Yklu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0
dWJDYWxsLmNhbGwoKTsKLSAgICB9IGVsc2UgaWYgKHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
PT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFi
bGVDdXN0b20oKSkgewogICAgICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAgICAgSklU
U3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZF9jdXN0b21fc3R1Yik7CiAg
ICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKQEAgLTk5MSw3ICs5OTEsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAgLy8gQ2hlY2tzIG91
dCBva2F5IQogICAgIGJvb2wgbmVlZHNTdHViTGluayA9IGZhbHNlOwogICAgIGJvb2wgaXNEaXJl
Y3QgPSBmYWxzZTsKLSAgICBpZiAoc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0
eVNsb3Q6OkdldHRlcikgeworICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKICAg
ICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZz
ZXQocHJvdG9PYmplY3QsIHJlZ1QxLCBjYWNoZWRPZmZzZXQpOwogICAgICAgICBKSVRTdHViQ2Fs
bCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKTsKQEAgLTk5OSw3
ICs5OTksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0CiAgICAg
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoVHJ1c3RlZEltbVB0cihzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbCgpOwotICAgIH0gZWxzZSBpZiAo
c2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkN1c3RvbSkgeworICAg
IH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpKSB7CiAgICAgICAgIG5lZWRzU3R1
YkxpbmsgPSB0cnVlOwogICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9zdHViKTsKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1
c3RlZEltbVB0cihwcm90b09iamVjdCkpOwpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlzdAogICAgIAogICAgIGJvb2wgbmVlZHNTdHVi
TGluayA9IGZhbHNlOwogICAgIGJvb2wgaXNEaXJlY3QgPSBmYWxzZTsKLSAgICBpZiAoc2xvdC5j
YWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkdldHRlcikgeworICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpIHsKICAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7
CiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QxLCBjYWNo
ZWRPZmZzZXQpOwogICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfZ2V0
X2J5X2lkX2dldHRlcl9zdHViKTsKQEAgLTEwNzgsNyArMTA3OCw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
cmVnVDApOwogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHN0dWJJ
bmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBz
dHViQ2FsbC5jYWxsKCk7Ci0gICAgfSBlbHNlIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgp
ID09IFByb3BlcnR5U2xvdDo6Q3VzdG9tKSB7CisgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVh
YmxlQ3VzdG9tKCkpIHsKICAgICAgICAgbmVlZHNTdHViTGluayA9IHRydWU7CiAgICAgICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIpOwog
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKHByb3RvT2JqZWN0KSk7
CkBAIC0xMTQ4LDcgKzExNDgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hh
aW4oU3RyCiAgICAgQVNTRVJUKHByb3RvT2JqZWN0KTsKIAogICAgIGJvb2wgbmVlZHNTdHViTGlu
ayA9IGZhbHNlOwotICAgIGlmIChzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5
U2xvdDo6R2V0dGVyKSB7CisgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkgewogICAg
ICAgICBuZWVkc1N0dWJMaW5rID0gdHJ1ZTsKICAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNl
dChwcm90b09iamVjdCwgcmVnVDEsIGNhY2hlZE9mZnNldCk7CiAgICAgICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWRfZ2V0dGVyX3N0dWIpOwpAQCAtMTE1Niw3
ICsxMTU2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0cgogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW1QdHIoc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKSk7CiAgICAgICAgIHN0dWJDYWxsLmNhbGwoKTsKLSAgICB9IGVsc2UgaWYg
KHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpDdXN0b20pIHsKKyAg
ICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSkgewogICAgICAgICBuZWVkc1N0
dWJMaW5rID0gdHJ1ZTsKICAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X2dldF9ieV9pZF9jdXN0b21fc3R1Yik7CiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRy
dXN0ZWRJbW1QdHIocHJvdG9PYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDggKzIyMCw3IEBAIE5FVkVS
X0lOTElORSBzdGF0aWMgdm9pZCB0cnlDYWNoZUdldEJ5SUQKIAogICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlID09IGFjY2Vzc191bnNldCk7Ci0gICAgICAgIGlmICgoc2xvdC5jYWNoZWRQcm9w
ZXJ0eVR5cGUoKSAhPSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKQotICAgICAgICAgICAgfHwgIU1hY3Jv
QXNzZW1ibGVyOjppc0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChtYXhPZmZzZXRSZWxh
dGl2ZVRvUGF0Y2hlZFN0b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkpKQorICAgICAgICBpZiAo
IXNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8ICFNYWNyb0Fzc2VtYmxlcjo6aXNDb21wYWN0UHRy
QWxpZ25lZEFkZHJlc3NPZmZzZXQobWF4T2Zmc2V0UmVsYXRpdmVUb1BhdGNoZWRTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpKSkKICAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhjb2RlQmxvY2ssIHJldHVybkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlf
aWRfc2VsZl9mYWlsKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgSklUOjpwYXRjaEdl
dEJ5SWRTZWxmKGNvZGVCbG9jaywgc3R1YkluZm8sIHN0cnVjdHVyZSwgc2xvdC5jYWNoZWRPZmZz
ZXQoKSwgcmV0dXJuQWRkcmVzcyk7CkBAIC0yNTUsNyArMjU0LDcgQEAgTkVWRVJfSU5MSU5FIHN0
YXRpYyB2b2lkIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT52bSgpLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90byhj
YWxsRnJhbWUtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSwg
c2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLCBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09
IFByb3BlcnR5U2xvdDo6VmFsdWUpOworICAgICAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRQcm90
byhjYWxsRnJhbWUtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVy
ZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLCBzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSk7
CiAKICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICAgICAg
QVNTRVJUKCFzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKTsKQEAg
LTI3Miw3ICsyNzEsNyBAQCBORVZFUl9JTkxJTkUgc3RhdGljIHZvaWQgdHJ5Q2FjaGVHZXRCeUlE
CiAgICAgfQogCiAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJl
LT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZENo
YWluKGNhbGxGcmFtZS0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlLCBwcm90b3R5cGVDaGFpbiwgY291bnQsIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0g
UHJvcGVydHlTbG90OjpWYWx1ZSk7CisgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkQ2hhaW4oY2Fs
bEZyYW1lLT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHBy
b3RvdHlwZUNoYWluLCBjb3VudCwgc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpOwogICAgIEpJVDo6
Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPnNjb3BlKCktPnZtKCksIGNhbGxGcmFtZSwg
Y29kZUJsb2NrLCBzdHViSW5mbywgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwgY291bnQsIHBy
b3BlcnR5TmFtZSwgc2xvdCwgb2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAxNTMzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTUsNyArNTE1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZAogICAgICAgICAmJiBiYXNlVmFsdWUuaXNDZWxsKCkKICAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCiAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlVmFsdWUKLSAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9w
ZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKSB7
CiAgICAgICAgIAogICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgp
OwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNw
cAkocmV2aXNpb24gMTUzMzk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmZ1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIHsKLSAgICByZXR1cm4gY2FsbEdldHRlcihleGVjLCBtX3RoaXNWYWx1ZSwg
bV9kYXRhLmdldHRlclNldHRlcik7CisgICAgcmV0dXJuIGNhbGxHZXR0ZXIoZXhlYywgSlNWYWx1
ZTo6ZGVjb2RlKG1fZGF0YS5nZXR0ZXIudGhpc1ZhbHVlKSwgbV9kYXRhLmdldHRlci5nZXR0ZXJT
ZXR0ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAxNTMzOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMjEyICszMCwyMDEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVj
U3RhdGU7Ci0gICAgY2xhc3MgR2V0dGVyU2V0dGVyOworY2xhc3MgRXhlY1N0YXRlOworY2xhc3Mg
R2V0dGVyU2V0dGVyOwogCi0jZGVmaW5lIEpTQ19WQUxVRV9NQVJLRVIgMAotI2RlZmluZSBJTkRF
WF9HRVRURVJfTUFSS0VSIHJlaW50ZXJwcmV0X2Nhc3Q8R2V0VmFsdWVGdW5jPigyKQotI2RlZmlu
ZSBHRVRURVJfRlVOQ1RJT05fTUFSS0VSIHJlaW50ZXJwcmV0X2Nhc3Q8R2V0VmFsdWVGdW5jPigz
KQotCi0gICAgY2xhc3MgUHJvcGVydHlTbG90IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0g
Q2FjaGVkUHJvcGVydHlUeXBlIHsKLSAgICAgICAgICAgIFVuY2FjaGVhYmxlLAotICAgICAgICAg
ICAgR2V0dGVyLAotICAgICAgICAgICAgQ3VzdG9tLAotICAgICAgICAgICAgVmFsdWUKLSAgICAg
ICAgfTsKLQotICAgICAgICBQcm9wZXJ0eVNsb3QoKQotICAgICAgICAgICAgOiBtX2NhY2hlZFBy
b3BlcnR5VHlwZShVbmNhY2hlYWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXJCYXNl
KCk7Ci0gICAgICAgICAgICBjbGVhck9mZnNldCgpOwotICAgICAgICAgICAgY2xlYXJWYWx1ZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZXhwbGljaXQgUHJvcGVydHlTbG90KGNvbnN0IEpTVmFs
dWUgYmFzZSkKLSAgICAgICAgICAgIDogbV9zbG90QmFzZShiYXNlKQotICAgICAgICAgICAgLCBt
X2NhY2hlZFByb3BlcnR5VHlwZShVbmNhY2hlYWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y2xlYXJPZmZzZXQoKTsKLSAgICAgICAgICAgIGNsZWFyVmFsdWUoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldFZhbHVlRnVuYykoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKTsKLSAgICAgICAgdHlwZWRlZiBKU1ZhbHVlICgqR2V0
SW5kZXhWYWx1ZUZ1bmMpKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkKTsK
LQotICAgICAgICBKU1ZhbHVlIGdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2V0VmFs
dWUgPT0gSlNDX1ZBTFVFX01BUktFUikKLSAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZTsK
LSAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IElOREVYX0dFVFRFUl9NQVJLRVIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fZ2V0SW5kZXhWYWx1ZShleGVjLCBzbG90QmFzZSgpLCBpbmRl
eCgpKTsKLSAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IEdFVFRFUl9GVU5DVElPTl9NQVJL
RVIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGV4ZWMpOwotICAgICAg
ICAgICAgcmV0dXJuIG1fZ2V0VmFsdWUoZXhlYywgc2xvdEJhc2UoKSwgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgfQotCi0gICAgICAgIEpTVmFsdWUgZ2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X2dldFZhbHVlID09IEpTQ19WQUxVRV9NQVJLRVIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWU7Ci0gICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBJTkRFWF9HRVRURVJfTUFSS0VS
KQotICAgICAgICAgICAgICAgIHJldHVybiBtX2dldEluZGV4VmFsdWUoZXhlYywgbV9zbG90QmFz
ZSwgbV9kYXRhLmluZGV4KTsKLSAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IEdFVFRFUl9G
VU5DVElPTl9NQVJLRVIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGV4
ZWMpOwotICAgICAgICAgICAgcmV0dXJuIG1fZ2V0VmFsdWUoZXhlYywgc2xvdEJhc2UoKSwgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IENhY2hlZFByb3BlcnR5VHlwZSBjYWNoZWRQcm9wZXJ0eVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZFByb3BlcnR5VHlwZTsgfQotICAgICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5cGUgIT0gVW5jYWNoZWFibGU7IH0KLSAgICAgICAg
Ym9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQcm9wZXJ0eVR5
cGUgPT0gVmFsdWU7IH0KLSAgICAgICAgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KCkgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRWYWx1
ZShKU1ZhbHVlIHNsb3RCYXNlLCBKU1ZhbHVlIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQodmFsdWUpOwotICAgICAgICAgICAgY2xlYXJPZmZzZXQoKTsKLSAgICAgICAgICAg
IG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwotICAgICAgICAgICAgbV9zbG90QmFzZSA9
IHNsb3RCYXNlOwotICAgICAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJhc2UsIEpTVmFsdWUgdmFs
dWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KHZhbHVlKTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfTUFSS0VSOwotICAg
ICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwotICAgICAgICAgICAgbV92YWx1ZSA9IHZh
bHVlOwotICAgICAgICAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgICAgICBtX2NhY2hl
ZFByb3BlcnR5VHlwZSA9IFZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRWYWx1
ZShKU1ZhbHVlIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQodmFsdWUpOwot
ICAgICAgICAgICAgY2xlYXJCYXNlKCk7Ci0gICAgICAgICAgICBjbGVhck9mZnNldCgpOwotICAg
ICAgICAgICAgbV9nZXRWYWx1ZSA9IEpTQ19WQUxVRV9NQVJLRVI7Ci0gICAgICAgICAgICBtX3Zh
bHVlID0gdmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNldEN1c3RvbShKU1ZhbHVl
IHNsb3RCYXNlLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChzbG90QmFzZSk7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0VmFsdWUpOwotICAgICAg
ICAgICAgbV9nZXRWYWx1ZSA9IGdldFZhbHVlOwotICAgICAgICAgICAgbV9nZXRJbmRleFZhbHVl
ID0gMDsKLSAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgdm9pZCBzZXRDYWNoZWFibGVDdXN0b20oSlNWYWx1ZSBzbG90QmFzZSwg
R2V0VmFsdWVGdW5jIGdldFZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoc2xv
dEJhc2UpOwotICAgICAgICAgICAgQVNTRVJUKGdldFZhbHVlKTsKLSAgICAgICAgICAgIG1fZ2V0
VmFsdWUgPSBnZXRWYWx1ZTsKLSAgICAgICAgICAgIG1fZ2V0SW5kZXhWYWx1ZSA9IDA7Ci0gICAg
ICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2NhY2hlZFByb3Bl
cnR5VHlwZSA9IEN1c3RvbTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0Q3VzdG9tSW5k
ZXgoSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgsIEdldEluZGV4VmFsdWVGdW5jIGdl
dEluZGV4VmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChzbG90QmFzZSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoZ2V0SW5kZXhWYWx1ZSk7Ci0gICAgICAgICAgICBtX2dldFZhbHVl
ID0gSU5ERVhfR0VUVEVSX01BUktFUjsKLSAgICAgICAgICAgIG1fZ2V0SW5kZXhWYWx1ZSA9IGdl
dEluZGV4VmFsdWU7Ci0gICAgICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAg
ICAgICBtX2RhdGEuaW5kZXggPSBpbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0
R2V0dGVyU2xvdChHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcikKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7Ci0gICAgICAgICAgICBtX3RoaXNWYWx1ZSA9IG1f
c2xvdEJhc2U7Ci0gICAgICAgICAgICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktF
UjsKLSAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3QoSlNWYWx1ZSBzbG90
QmFzZSwgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
LSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7Ci0gICAgICAgICAg
ICBtX2dldFZhbHVlID0gR0VUVEVSX0ZVTkNUSU9OX01BUktFUjsKLSAgICAgICAgICAgIG1fdGhp
c1ZhbHVlID0gbV9zbG90QmFzZTsKLSAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsK
LSAgICAgICAgICAgIG1fZGF0YS5nZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7Ci0gICAgICAg
ICAgICBtX29mZnNldCA9IG9mZnNldDsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBl
ID0gR2V0dGVyOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRVbmRlZmluZWQoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBzZXRWYWx1ZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIEpTVmFsdWUgc2xvdEJhc2UoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zbG90QmFzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0QmFzZShK
U1ZhbHVlIGJhc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3Nsb3RCYXNlKTsK
LSAgICAgICAgICAgIEFTU0VSVChiYXNlKTsKLSAgICAgICAgICAgIG1fc2xvdEJhc2UgPSBiYXNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhckJhc2UoKQotICAgICAgICB7Ci0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICAgICAgbV9zbG90QmFzZSA9IEpTVmFsdWUoKTsKLSNlbmRpZgot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhclZhbHVlKCkKLSAgICAgICAgewotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7Ci0jZW5kaWYKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXJPZmZzZXQoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBDbGVhciBvZmZzZXQgZXZlbiBpbiByZWxlYXNlIGJ1aWxkcywgaW4gY2FzZSB0aGlzIFBy
b3BlcnR5U2xvdCBoYXMgYmVlbiB1c2VkIGJlZm9yZS4KLSAgICAgICAgICAgIC8vIChGb3Igb3Ro
ZXIgZGF0YSBtZW1iZXJzLCB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIGFueXRoaW5nIGJlY2F1c2Ug
cmV1c2Ugd291bGQgbWVhbmluZ2Z1bGx5IG92ZXJ3cml0ZSB0aGVtLikKLSAgICAgICAgICAgIG1f
b2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJvcGVydHlUeXBl
ID0gVW5jYWNoZWFibGU7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pbmRleDsgfQotCi0gICAgICAgIEdldFZhbHVlRnVuYyBjdXN0
b21HZXR0ZXIoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9jYWNoZWRQ
cm9wZXJ0eVR5cGUgPT0gQ3VzdG9tKTsKLSAgICAgICAgICAgIHJldHVybiBtX2dldFZhbHVlOwot
ICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKLQotICAgICAgICBHZXRWYWx1ZUZ1
bmMgbV9nZXRWYWx1ZTsKLSAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMgbV9nZXRJbmRleFZhbHVl
OwotICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSBtX3Nsb3RCYXNlOwotICAgICAgICB1bmlvbiB7
CitjbGFzcyBQcm9wZXJ0eVNsb3QgeworICAgIGVudW0gUHJvcGVydHlUeXBlIHsKKyAgICAgICAg
VHlwZVVuc2V0LAorICAgICAgICBUeXBlVmFsdWUsCisgICAgICAgIFR5cGVHZXR0ZXIsCisgICAg
ICAgIFR5cGVDdXN0b20sCisgICAgICAgIFR5cGVDdXN0b21JbmRleAorICAgIH07CisKK3B1Ymxp
YzoKKyAgICBQcm9wZXJ0eVNsb3QoKQorICAgICAgICA6IG1fcHJvcGVydHlUeXBlKFR5cGVVbnNl
dCkKKyAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAg
ICBleHBsaWNpdCBQcm9wZXJ0eVNsb3QoY29uc3QgSlNWYWx1ZSBiYXNlKQorICAgICAgICA6IG1f
c2xvdEJhc2UoYmFzZSkKKyAgICAgICAgLCBtX3Byb3BlcnR5VHlwZShUeXBlVW5zZXQpCisgICAg
ICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKKyAgICB7CisgICAgfQorCisgICAgdHlwZWRl
ZiBKU1ZhbHVlICgqR2V0VmFsdWVGdW5jKShFeGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCBQ
cm9wZXJ0eU5hbWUpOworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKkdldEluZGV4VmFsdWVGdW5jKShF
eGVjU3RhdGUqLCBKU1ZhbHVlIHNsb3RCYXNlLCB1bnNpZ25lZCk7CisKKyAgICBKU1ZhbHVlIGdl
dFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlVmFsdWUpCisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CisgICAgICAgIGlmICht
X3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gbV9k
YXRhLmN1c3RvbUluZGV4LmdldEluZGV4VmFsdWUoZXhlYywgc2xvdEJhc2UoKSwgbV9kYXRhLmN1
c3RvbUluZGV4LmluZGV4KTsKKyAgICAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0
ZXIpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZXhlYyk7CisgICAgICAgIHJl
dHVybiBtX2RhdGEuY3VzdG9tLmdldFZhbHVlKGV4ZWMsIHNsb3RCYXNlKCksIHByb3BlcnR5TmFt
ZSk7CisgICAgfQorCisgICAgSlNWYWx1ZSBnZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VHlw
ZSA9PSBUeXBlVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0
YS52YWx1ZSk7CisgICAgICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tSW5kZXgp
CisgICAgICAgICAgICByZXR1cm4gbV9kYXRhLmN1c3RvbUluZGV4LmdldEluZGV4VmFsdWUoZXhl
Yywgc2xvdEJhc2UoKSwgbV9kYXRhLmN1c3RvbUluZGV4LmluZGV4KTsKKyAgICAgICAgaWYgKG1f
cHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25H
ZXR0ZXIoZXhlYyk7CisgICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9tLmdldFZhbHVlKGV4ZWMs
IHNsb3RCYXNlKCksIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAg
fQorCisgICAgYm9vbCBpc0NhY2hlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQ7IH0KKyAgICBib29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBpc0NhY2hlYWJsZSgpICYmIG1fcHJvcGVydHlUeXBlID09IFR5cGVWYWx1ZTsgfQorICAgIGJv
b2wgaXNDYWNoZWFibGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIG1f
cHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXI7IH0KKyAgICBib29sIGlzQ2FjaGVhYmxlQ3VzdG9t
KCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBl
Q3VzdG9tOyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlKCkpOworICAgICAgICByZXR1cm4gbV9vZmZz
ZXQ7CisgICAgfQorCisgICAgR2V0VmFsdWVGdW5jIGN1c3RvbUdldHRlcigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaXNDYWNoZWFibGVDdXN0b20oKSk7CisgICAgICAgIHJldHVybiBt
X2RhdGEuY3VzdG9tLmdldFZhbHVlOworICAgIH0KKworICAgIHZvaWQgc2V0VmFsdWUoSlNWYWx1
ZSBzbG90QmFzZSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZSk7
CisgICAgICAgIG1fZGF0YS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisKKyAgICAg
ICAgQVNTRVJUKHNsb3RCYXNlKTsKKyAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOworICAg
ICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVWYWx1ZTsKKyAgICAgICAgbV9vZmZzZXQgPSBpbnZh
bGlkT2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgc2xvdEJh
c2UsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCh2YWx1ZSk7CisgICAgICAgIG1fZGF0YS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CisKKyAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKKyAgICAgICAgbV9zbG90QmFzZSA9
IHNsb3RCYXNlOworICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVWYWx1ZTsKKyAgICAgICAg
bV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgbV9kYXRhLnZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKworICAgICAgICBtX3Nsb3RCYXNlID0gSlNWYWx1
ZSgpOworICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVWYWx1ZTsKKyAgICAgICAgbV9vZmZz
ZXQgPSBpbnZhbGlkT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgc2V0Q3VzdG9tKEpTVmFsdWUg
c2xvdEJhc2UsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChn
ZXRWYWx1ZSk7CisgICAgICAgIG1fZGF0YS5jdXN0b20uZ2V0VmFsdWUgPSBnZXRWYWx1ZTsKKwor
ICAgICAgICBBU1NFUlQoc2xvdEJhc2UpOworICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7
CisgICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZUN1c3RvbTsKKyAgICAgICAgbV9vZmZzZXQg
PSBpbnZhbGlkT2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldENhY2hlYWJsZUN1c3Rv
bShKU1ZhbHVlIHNsb3RCYXNlLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUpCisgICAgeworICAgICAg
ICBBU1NFUlQoZ2V0VmFsdWUpOworICAgICAgICBtX2RhdGEuY3VzdG9tLmdldFZhbHVlID0gZ2V0
VmFsdWU7CisKKyAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKKyAgICAgICAgbV9zbG90QmFzZSA9
IHNsb3RCYXNlOworICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVDdXN0b207CisgICAgICAg
IG1fb2Zmc2V0ID0gIWludmFsaWRPZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBzZXRDdXN0b21J
bmRleChKU1ZhbHVlIHNsb3RCYXNlLCB1bnNpZ25lZCBpbmRleCwgR2V0SW5kZXhWYWx1ZUZ1bmMg
Z2V0SW5kZXhWYWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnZXRJbmRleFZhbHVlKTsKKyAg
ICAgICAgbV9kYXRhLmN1c3RvbUluZGV4LmdldEluZGV4VmFsdWUgPSBnZXRJbmRleFZhbHVlOwor
ICAgICAgICBtX2RhdGEuY3VzdG9tSW5kZXguaW5kZXggPSBpbmRleDsKKworICAgICAgICBBU1NF
UlQoc2xvdEJhc2UpOworICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CisgICAgICAgIG1f
cHJvcGVydHlUeXBlID0gVHlwZUN1c3RvbUluZGV4OworICAgICAgICBtX29mZnNldCA9IGludmFs
aWRPZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBzZXRHZXR0ZXJTbG90KEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7CisgICAg
ICAgIG1fZGF0YS5nZXR0ZXIudGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKG1fc2xvdEJhc2Up
OworICAgICAgICBtX2RhdGEuZ2V0dGVyLmdldHRlclNldHRlciA9IGdldHRlclNldHRlcjsKKwor
ICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVHZXR0ZXI7CisgICAgICAgIG1fb2Zmc2V0ID0g
aW52YWxpZE9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIHNldENhY2hlYWJsZUdldHRlclNsb3Qo
SlNWYWx1ZSBzbG90QmFzZSwgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKKyAgICB7CisgICAgICAgIEFTU0VSVChnZXR0ZXJTZXR0ZXIpOworICAgICAg
ICBtX2RhdGEuZ2V0dGVyLnRoaXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZShtX3Nsb3RCYXNlKTsK
KyAgICAgICAgbV9kYXRhLmdldHRlci5nZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXI7CisKKyAg
ICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKKyAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwor
ICAgICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVHZXR0ZXI7CisgICAgICAgIG1fb2Zmc2V0ID0g
b2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgc2V0VW5kZWZpbmVkKCkKKyAgICB7CisgICAgICAg
IHNldFZhbHVlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIEpTVmFsdWUgc2xvdEJhc2Uo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2xvdEJhc2U7CisgICAgfQorCisgICAg
dm9pZCBzZXRCYXNlKEpTVmFsdWUgYmFzZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3RC
YXNlKTsKKyAgICAgICAgQVNTRVJUKGJhc2UpOworICAgICAgICBtX3Nsb3RCYXNlID0gYmFzZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlv
bkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKworICAgIHVuaW9uIHsKKyAgICAgICAgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWU7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWU7CiAgICAgICAgICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcjsK
KyAgICAgICAgfSBnZXR0ZXI7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBHZXRWYWx1
ZUZ1bmMgZ2V0VmFsdWU7CisgICAgICAgIH0gY3VzdG9tOworICAgICAgICBzdHJ1Y3QgeworICAg
ICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMgZ2V0SW5kZXhWYWx1ZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4OwotICAgICAgICB9IG1fZGF0YTsKKyAgICAgICAgfSBjdXN0b21JbmRleDsK
KyAgICB9IG1fZGF0YTsKIAotICAgICAgICBKU1ZhbHVlIG1fdmFsdWU7Ci0gICAgICAgIEpTVmFs
dWUgbV90aGlzVmFsdWU7Ci0KLSAgICAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7Ci0gICAg
ICAgIENhY2hlZFByb3BlcnR5VHlwZSBtX2NhY2hlZFByb3BlcnR5VHlwZTsKLSAgICB9OworICAg
IEpTVmFsdWUgbV9zbG90QmFzZTsKKyAgICBQcm9wZXJ0eVR5cGUgbV9wcm9wZXJ0eVR5cGU7Cisg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAo=
</data>
<flag name="review"
          id="229473"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>