<?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>157703</bug_id>
          
          <creation_ts>2016-05-13 19:50:29 -0700</creation_ts>
          <short_desc>[WebIDL] Add support for dictionary members of integer types</short_desc>
          <delta_ts>2016-05-14 11:00:59 -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>Bindings</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193025</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 19:50:29 -0700</bug_when>
    <thetext>Add support for dictionary members of integer types, including support for the [Clamp] and [EnforceRange] IDL extended attributes on such members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193064</commentid>
    <comment_count>1</comment_count>
      <attachid>278927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 23:15:31 -0700</bug_when>
    <thetext>Created attachment 278927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193083</commentid>
    <comment_count>2</comment_count>
      <attachid>278927</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-14 08:52:02 -0700</bug_when>
    <thetext>Comment on attachment 278927
Patch

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

I would like this patch even better if you used this in at least one place. I have been trying to only add things as they are actually used.

On the other hand, it’s great to keep building this out. Maybe eventually we can use this for function arguments too.

When trying to use dictionary more to replace Dictionary/JSDictionary, the main problem I have been running into is lack of support for union types.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:39
&gt; +template&lt;typename T, typename U = T&gt;
&gt; +using enable_if_integral_t = typename std::enable_if&lt;std::is_integral&lt;T&gt;::value, U&gt;::type;
&gt; +
&gt; +template&lt;typename T, typename U = T&gt;
&gt; +using enable_if_floating_point_t = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, U&gt;::type;

I understand that these are extensions of std::enable_if, but I’m not sure we should name them using the standard library style names rather than our style.

Also, I prefer to put things like this into one longer line rather than having template on one line and the body of the template on the next.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:63
&gt; -template&lt;typename T&gt; T convert(JSC::ExecState&amp; state, JSC::JSValue value, IntegerConversionConfiguration configuration)
&gt; +template&lt;typename T&gt;
&gt; +inline enable_if_integral_t&lt;T&gt; convert(JSC::ExecState&amp; state, JSC::JSValue value, IntegerConversionConfiguration configuration)

I intentionally did this on a single line and would prefer that it not be broken up into two like this.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:69
&gt; +template&lt;typename T&gt;
&gt; +inline enable_if_floating_point_t&lt;T&gt; convert(JSC::ExecState&amp; state, JSC::JSValue value, ShouldAllowNonFinite allow)

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:85
&gt; +template&lt;typename T&gt;
&gt; +inline enable_if_floating_point_t&lt;T, Optional&lt;T&gt;&gt; convertOptional(JSC::ExecState&amp; state, JSC::JSValue value, ShouldAllowNonFinite allow)

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:91
&gt; +template&lt;typename T, typename U&gt;
&gt; +inline enable_if_floating_point_t&lt;T&gt; convertOptional(JSC::ExecState&amp; state, JSC::JSValue value, ShouldAllowNonFinite allow, U&amp;&amp; defaultValue)

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:97
&gt; +template&lt;typename T&gt;
&gt; +inline enable_if_integral_t&lt;T, Optional&lt;T&gt;&gt; convertOptional(JSC::ExecState&amp; state, JSC::JSValue value, IntegerConversionConfiguration configuration)

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:103
&gt; +template&lt;typename T, typename U&gt;
&gt; +inline enable_if_integral_t&lt;T&gt; convertOptional(JSC::ExecState&amp; state, JSC::JSValue value, IntegerConversionConfiguration configuration, U&amp;&amp; defaultValue)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193093</commentid>
    <comment_count>3</comment_count>
      <attachid>278927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-14 09:56:03 -0700</bug_when>
    <thetext>Comment on attachment 278927
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvert.h:39
&gt;&gt; +using enable_if_floating_point_t = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, U&gt;::type;
&gt; 
&gt; I understand that these are extensions of std::enable_if, but I’m not sure we should name them using the standard library style names rather than our style.
&gt; 
&gt; Also, I prefer to put things like this into one longer line rather than having template on one line and the body of the template on the next.

Do you have a suggestion for the naming?

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvert.h:63
&gt;&gt; +inline enable_if_integral_t&lt;T&gt; convert(JSC::ExecState&amp; state, JSC::JSValue value, IntegerConversionConfiguration configuration)
&gt; 
&gt; I intentionally did this on a single line and would prefer that it not be broken up into two like this.

I know. I just thought the lines were getting really long but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193095</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-14 09:59:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 278927 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278927&amp;action=review
&gt; 
&gt; I would like this patch even better if you used this in at least one place.
&gt; I have been trying to only add things as they are actually used.

I admit I have looked if I could use this new support in the existing code base yet. I will though. At the same time, supporting integers seems like basic support we want to have either way. If someone needs to add a dictionary with integers at some point, the cost of doing so will be much less. I know I added a new dictionary yesterday and had to hack the bindings generator because we did not support floating point members in dictionaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193099</commentid>
    <comment_count>5</comment_count>
      <attachid>278933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-14 10:54:35 -0700</bug_when>
    <thetext>Created attachment 278933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193100</commentid>
    <comment_count>6</comment_count>
      <attachid>278933</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-14 10:55:08 -0700</bug_when>
    <thetext>Comment on attachment 278933
Patch

Clearing flags on attachment: 278933

Committed r200920: &lt;http://trac.webkit.org/changeset/200920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193101</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-14 10:55:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193103</commentid>
    <comment_count>8</comment_count>
      <attachid>278927</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-14 11:00:59 -0700</bug_when>
    <thetext>Comment on attachment 278927
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMConvert.h:39
&gt;&gt;&gt; +using enable_if_floating_point_t = typename std::enable_if&lt;std::is_floating_point&lt;T&gt;::value, U&gt;::type;
&gt;&gt; 
&gt;&gt; I understand that these are extensions of std::enable_if, but I’m not sure we should name them using the standard library style names rather than our style.
&gt;&gt; 
&gt;&gt; Also, I prefer to put things like this into one longer line rather than having template on one line and the body of the template on the next.
&gt; 
&gt; Do you have a suggestion for the naming?

My starting point would be the exact same name, but in our style:

    EnableIfIntegralType

But I find that “If” looks really bad in a name like this with our style, even though it looks good in lowercase-plus-underscores and I also don’t think we need a Type suffix just to indicate this is a type since that will be clear based on how it’s used. So maybe:

    EnableForIntegral
    EnableForFloatingPoint

Or we could find another naming scheme for the &quot;enable_if&quot; idiom. A few different ideas:

    OnlyIntegral
    OnlyFloatingPoint

    RestrictToIntegral
    RestrictToFloatingPoint

    SkipUnlessIntegral
    SkipUnlessFloatingPoint

I’m sure I could come up with more ideas with more time to think.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278927</attachid>
            <date>2016-05-13 23:15:31 -0700</date>
            <delta_ts>2016-05-14 10:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157703-20160513231624.patch</filename>
            <type>text/plain</type>
            <size>16333</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyYjg1MTRlZWIxZWU5
ZmZhNTMxZmY1ZGJkMTNmMWE1ODAyMmM0Ni4uZTkwOWYzMTJhNzcxNDlhM2UzZWU5NWZkNDA2MWUz
YjFmMGRjYmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE2LTA1LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBv
cnQgZm9yIGRpY3Rpb25hcnkgbWVtYmVycyBvZiBpbnRlZ2VyIHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGljdGlv
bmFyeSBtZW1iZXJzIG9mIGludGVnZXIgdHlwZXMsIGluY2x1ZGluZyBzdXBwb3J0CisgICAgICAg
IGZvciB0aGUgW0NsYW1wXSBhbmQgW0VuZm9yY2VSYW5nZV0gSURMIGV4dGVuZGVkIGF0dHJpYnV0
ZXMgb24gc3VjaAorICAgICAgICBtZW1iZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRPcHRpb25hbCk6CisgICAgICAgIC0gQWRkIHRoZSBuZWVkZWQgdGVtcGxhdGUg
c3BlY2lhbGl6YXRpb25zIHNvIHdlIGNhbiB1c2UgY29udmVydE9wdGlvbmFsKCkKKyAgICAgICAg
ICB3aXRoIGludGVncmFsIHR5cGVzLgorICAgICAgICAtIFVzZSBzdGQ6OmVuYWJsZV9pZiBzbyB0
aGUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG1lYW50cyB0byBiZSB1c2VkCisgICAgICAgICAg
Zm9yIGZsb2F0aW5nIHBvaW50IHR5cGVzIG9yIGludGVncmFsIHR5cGVzIGNhbiBvbmx5IGJlIGlu
c3RhbnRpYXRlZAorICAgICAgICAgIGZvciBzdWNoIHR5cGVzLgorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnZlcnNp
b25SdWxlV2l0aExlYWRpbmdDb21tYSk6CisgICAgICAgIChHZXRJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgR2VuZXJh
dGUgdGhlIHJpZ2h0IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgZm9y
IGNvbnZlcnQoKQorICAgICAgICBhbmQgY29udmVydE9wdGlvbmFsKCkgd2hlbiBjb252ZXJ0aW5n
IGRpY3Rpb25hcnkgbWVtYmVycyBvZiBpbnRlZ3JhbAorICAgICAgICB0eXBlcworCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZURpY3Rpb25h
cnlNZW1iZXIpOgorICAgICAgICBGaXggYnVnIGluIHRoZSBJREwgcGFyc2VyIHdoZXJlIHdlIHdl
cmVuJ3QgaW5pdGlhbGl6aW5nIHRoZSBleHRlbmRlZAorICAgICAgICBhdHRyaWJ1dGVzIGZvciBk
aWN0aW9uYXJ5IG1lbWJlcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGw6CisgICAgICAgIEFkZCBiaW5kaW5ncyB0ZXN0cyBjb3ZlcmFnZS4KKworMjAxNi0wNS0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFtOZXR3b3JrQ2FjaGVd
IEF2b2lkIGhhdmluZyB0byByZS1wYXJzZSBVUkxzIGFmdGVyIGRlc2VyaWFsaXppbmcgdGhlbQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjYwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggNTU0NDgzMjk3
MDhkY2MxOTcxMmNlNmJiZGVhZjIyYWU2M2NlYmUxYS4uNmEyZDU5NDU0NWFhNGZiYTZhZWNlZGUw
MjgyMWUxZWExMWY2ODYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKQEAgLTMyLDE3ICszMiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xh
c3MgU2hvdWxkQWxsb3dOb25GaW5pdGUgeyBObywgWWVzIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUgPSBUPgordXNpbmcgZW5hYmxlX2lmX2ludGVncmFsX3QgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVT46OnR5cGU7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPSBUPgordXNpbmcgZW5hYmxlX2lmX2Zs
b2F0aW5nX3BvaW50X3QgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PFQ+Ojp2YWx1ZSwgVT46OnR5cGU7CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEVuYWJsZSA9IHZvaWQ+IHN0cnVjdCBDb252ZXJ0ZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEludGVn
ZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZl
cnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlKTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGVuYWJsZV9pZl9pbnRlZ3JhbF90PFQ+IGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
bik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBlbmFibGVfaWZfZmxvYXRpbmdfcG9pbnRfdDxUPiBj
b252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0
ZSk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9u
YWxWYWx1ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gVCBjb252ZXJ0T3B0aW9uYWwoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFUmJiBkZWZhdWx0VmFsdWUpOwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFsdWUgY29udmVydE9w
dGlvbmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0
ZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBUIGNvbnZlcnRPcHRpb25hbChK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUsIFUmJiBk
ZWZhdWx0VmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gZW5hYmxlX2lmX2ludGVncmFsX3Q8
VCwgT3B0aW9uYWw8VD4+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGVuYWJsZV9pZl9mbG9hdGluZ19wb2ludF90PFQsIE9wdGlvbmFsPFQ+PiBjb252ZXJ0T3B0
aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRl
KTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGVuYWJsZV9pZl9pbnRlZ3JhbF90
PFQ+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uLCBVJiYgZGVmYXVsdFZhbHVlKTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGVuYWJsZV9pZl9mbG9hdGluZ19wb2ludF90PFQ+IGNvbnZl
cnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hvdWxkQWxsb3dOb25G
aW5pdGUsIFUmJiBkZWZhdWx0VmFsdWUpOwogCiAvLyBUaGlzIGlzIHdoZXJlIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgdGhpbmdzIGRlY2xhcmVkIGFib3ZlIGJlZ2luczoKIApAQCAtNTEsMTgg
KzU5LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gQ29udmVydGVyPFQ+Ojpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5s
aW5lIGVuYWJsZV9pZl9pbnRlZ3JhbF90PFQ+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uKQogewogICAgIHJldHVybiBDb252ZXJ0ZXI8VD46OmNvbnZlcnQoc3RhdGUsIHZh
bHVlLCBjb25maWd1cmF0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQg
Y29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU2hvdWxk
QWxsb3dOb25GaW5pdGUgYWxsb3cpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIGVuYWJs
ZV9pZl9mbG9hdGluZ19wb2ludF90PFQ+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogewotICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIGZsb2F0Pjo6dmFsdWUgfHwgc3RkOjppc19zYW1l
PFQsIGRvdWJsZT46OnZhbHVlLCAiU2hvdWxkQWxsb3dOb25GaW5pdGUgY2FuIG9ubHkgYmUgdXNl
ZCB3aXRoIGZsb2F0IG9yIGRvdWJsZSIpOwogICAgIHJldHVybiBDb252ZXJ0ZXI8VD46OmNvbnZl
cnQoc3RhdGUsIHZhbHVlLCBhbGxvdyk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVu
YW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSBpbmxpbmUgY29udmVydE9wdGlvbmFsKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSBjb252ZXJ0
T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9w
dGlvbmFsVmFsdWUoKSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlKTsKIH0KQEAgLTcyLDE2ICs4
MSwzMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgVCBjb252ZXJ0
T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpmb3J3YXJkPFU+KGRlZmF1bHRWYWx1ZSkgOiBjb252ZXJ0PFQ+KHN0YXRl
LCB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxU
Pjo6T3B0aW9uYWxWYWx1ZSBpbmxpbmUgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgZW5hYmxlX2lmX2Zsb2F0aW5nX3BvaW50X3Q8VCwg
T3B0aW9uYWw8VD4+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUgYWxsb3cpCiB7Ci0gICAgcmV0dXJu
IHZhbHVlLmlzVW5kZWZpbmVkKCkgPyB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFs
dWUoKSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlLCBhbGxvdyk7CisgICAgcmV0dXJuIHZhbHVl
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxUPigpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUs
IGFsbG93KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQg
Y29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdywgVSYmIGRlZmF1bHRWYWx1ZSkKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgZW5hYmxlX2lmX2Zsb2F0aW5nX3BvaW50
X3Q8VD4gY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdywgVSYmIGRlZmF1bHRWYWx1ZSkKIHsK
ICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IHN0ZDo6Zm9yd2FyZDxVPihkZWZhdWx0
VmFsdWUpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUsIGFsbG93KTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK2lubGluZSBlbmFibGVfaWZfaW50ZWdyYWxfdDxULCBPcHRpb25hbDxUPj4g
Y29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK3sKKyAgICBy
ZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPFQ+KCkgOiBjb252ZXJ0PFQ+KHN0
YXRlLCB2YWx1ZSwgY29uZmlndXJhdGlvbik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CitpbmxpbmUgZW5hYmxlX2lmX2ludGVncmFsX3Q8VD4gY29udmVydE9wdGlvbmFs
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgVSYmIGRlZmF1bHRWYWx1ZSkKK3sKKyAg
ICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IHN0ZDo6Zm9yd2FyZDxVPihkZWZhdWx0VmFs
dWUpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUsIGNvbmZpZ3VyYXRpb24pOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRlciB7CiAgICAgdXNpbmcgT3B0
aW9uYWxWYWx1ZSA9IE9wdGlvbmFsPFQ+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMTI3N2M5ZjdjODY3MDk0NjNk
NTE2ZmZhMzdiOWFlNmY4MTcxNzdiZi4uYzdjNWJhMTdlOTZlNmQ3YTdjZmMxYzg3ZjJmY2QyN2Ez
YWQxZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KQEAgLTk3Myw3ICs5NzMsNyBAQCBzdWIgR2VuZXJhdGVDb252ZXJzaW9u
UnVsZVdpdGhMZWFkaW5nQ29tbWEKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRmxvYXRpbmdQ
b2ludFR5cGUoJG1lbWJlci0+dHlwZSkpIHsKICAgICAgICAgcmV0dXJuICIsICIgLiAoU2hvdWxk
QWxsb3dOb25GaW5pdGVGb3JGbG9hdGluZ1BvaW50VHlwZSgkbWVtYmVyLT50eXBlKSA/ICJTaG91
bGRBbGxvd05vbkZpbml0ZTo6WWVzIiA6ICJTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8iKTsKICAg
ICB9Ci0gICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGludGVnZXIgdHlwZXMuCisgICAgcmV0
dXJuICIsICIgLiBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJG1lbWJlcikgaWYg
JGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJG1lbWJlci0+dHlwZSk7CiAgICAgcmV0dXJu
ICIiOwogfQogCkBAIC00Mzg0LDcgKzQzODQsNyBAQCBzdWIgSXNOYXRpdmVUeXBlCiAgICAgcmV0
dXJuIGV4aXN0cyAkbmF0aXZlVHlwZXskdHlwZX07CiB9CiAKLXN1YiBHZXRJbnRlZ2VyQ29udmVy
c2lvblR5cGUKK3N1YiBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIHsKICAgICBt
eSAkc2lnbmF0dXJlID0gc2hpZnQ7CiAKQEAgLTQ0MDIsNyArNDQwMiw3IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSkp
IHsKICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0
eXBlKTsKLSAgICAgICAgbXkgJGNvbnZlcnNpb25UeXBlID0gR2V0SW50ZWdlckNvbnZlcnNpb25U
eXBlKCRzaWduYXR1cmUpOworICAgICAgICBteSAkY29udmVyc2lvblR5cGUgPSBHZXRJbnRlZ2Vy
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJHNpZ25hdHVyZSk7CiAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJKU0RPTUNvbnZlcnQuaCIpOwogICAgICAgICByZXR1cm4gKCJjb252ZXJ0PCRuYXRp
dmVUeXBlPigqc3RhdGUsICR2YWx1ZSwgJGNvbnZlcnNpb25UeXBlKSIsIDEpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMjU0N2Q4
YjBjZWJkMjMwZjNiNDZkZmJlMmMzMjI3N2Q1MmM2ZmY0MS4uYzhkM2UwOTQ0MDhjYjgwZGU2ZmQ4
MGRkODdmZTRkNmFmOWJkMmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KQEAgLTY4MSw2ICs2ODEsNyBAQCBzdWIgcGFyc2VEaWN0aW9uYXJ5TWVt
YmVyCiAgICAgICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4o
KSwgInJlcXVpcmVkIiwgX19MSU5FX18pOwogICAgICAgICAgICAgJG1lbWJlci0+aXNPcHRpb25h
bCgwKTsKICAgICAgICAgfQorICAgICAgICAkbWVtYmVyLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRtZW1iZXItPnR5cGUoJHNlbGYtPnBhcnNl
VHlwZSgpKTsKICAgICAgICAgbXkgJG5hbWVUb2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAg
ICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRuYW1lVG9rZW4sIElkZW50aWZpZXJUb2tlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IGVjYmY3ODAwYjMyNWNiMjUxNzM3NjM5MGU1Nzc3Y2FiOWFkNGM5NWIu
Ljc3YWRmYjRjYTcwNzU3NTdkYjUxM2RmMWRiNWY5MTExYjM4YTRhYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC00NTUsNyArNDU1LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgY2hhciogZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpDb25maWRlbmNlPigpCiB0ZW1wbGF0ZTw+IFRlc3RP
Ymo6OkRpY3Rpb25hcnkgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
KQotICAgICAgICByZXR1cm4geyB7IH0sIFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUxLCBU
ZXN0T2JqOjpFbnVtVHlwZTo6RW1wdHlTdHJpbmcsICJkZWZhdWx0U3RyaW5nIiwgeyB9LCBmYWxz
ZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAwLCAwLCB7IH0sIHsgfSwgMCwgMCB9OworICAgICAgICBy
ZXR1cm4geyB7IH0sIFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUxLCBUZXN0T2JqOjpFbnVt
VHlwZTo6RW1wdHlTdHJpbmcsICJkZWZhdWx0U3RyaW5nIiwgeyB9LCBmYWxzZSwgeyB9LCB7IH0s
IHsgfSwgeyB9LCAwLCAwLCB7IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIHsgfSwgMCwgeyB9LCAw
LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwIH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0
T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0g
UmVnRXhwT2JqZWN0VHlwZSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAg
LTUwNyw3ICs1MDcsNDMgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnQ8
VGVzdE9iajo6RGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlMKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIGF1dG8g
dW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IGNvbnZlcnRPcHRpb25hbDxmbG9hdD4oc3Rh
dGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1
bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IikpLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
LCAwKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVs
dCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJh
dGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aERlZmF1
bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0aERl
ZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVsdCksIFdURk1vdmUoc2VxdWVuY2VP
ZlN0cmluZ3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHVucmVzdHJpY3Rl
ZERvdWJsZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KSwgV1RGTW92ZSh1
bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0KSwg
V1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0V2l0aERl
ZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpIH07CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBhdXRvIHNtYWxsSW50ZWdlckNsYW1wZWQgPSBjb252ZXJ0T3B0aW9uYWw8aW50OF90PihzdGF0
ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNt
YWxsSW50ZWdlckNsYW1wZWQiKSksIENsYW1wKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc21hbGxJbnRlZ2Vy
V2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0aW9uYWw8aW50OF90PihzdGF0ZSwgb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNtYWxsSW50ZWdlcldpdGhE
ZWZhdWx0IikpLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc21hbGxVbnNpZ25l
ZEludGVnZXJFbmZvcmNlZFJhbmdlID0gY29udmVydE9wdGlvbmFsPHVpbnQ4X3Q+KHN0YXRlLCBv
YmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic21hbGxV
bnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlIikpLCBFbmZvcmNlUmFuZ2UpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07CisgICAg
YXV0byBzbWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPHVp
bnQ4X3Q+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnN0YXRlLCAic21hbGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9ybWFsQ29udmVy
c2lvbiwgMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGludGVnZXIgPSBjb252ZXJ0T3B0aW9uYWw8aW50MzJf
dD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJpbnRlZ2VyIikpLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gaW50ZWdl
cldpdGhEZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPGludDMyX3Q+KHN0YXRlLCBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlcldpdGhEZWZh
dWx0IikpLCBOb3JtYWxDb252ZXJzaW9uLCAwKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gdW5zaWduZWRJbnRl
Z2VyID0gY29udmVydE9wdGlvbmFsPHVpbnQzMl90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkSW50ZWdlciIpKSwgTm9y
bWFsQ29udmVyc2lvbik7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0
ID0gY29udmVydE9wdGlvbmFsPHVpbnQzMl90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0
IikpLCBOb3JtYWxDb252ZXJzaW9uLCAwKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gbGFyZ2VJbnRlZ2VyID0g
Y29udmVydE9wdGlvbmFsPGludDY0X3Q+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibGFyZ2VJbnRlZ2VyIikpLCBOb3JtYWxDb252ZXJz
aW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0
aW9uYWw8aW50NjRfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJsYXJnZUludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9ybWFsQ29udmVy
c2lvbiwgMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyID0gY29udmVydE9w
dGlvbmFsPHVpbnQ2NF90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgInVuc2lnbmVkTGFyZ2VJbnRlZ2VyIikpLCBOb3JtYWxDb252ZXJz
aW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gdW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IGNv
bnZlcnRPcHRpb25hbDx1aW50NjRfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0
IikpLCBOb3JtYWxDb252ZXJzaW9uLCAwKTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0
aW9uVmFsdWVXaXRob3V0RGVmYXVsdCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZh
dWx0KSwgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdU
Rk1vdmUoc3RyaW5nV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwg
V1RGTW92ZShib29sZWFuV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVs
dCksIFdURk1vdmUoc2VxdWVuY2VPZlN0cmluZ3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUp
LCBXVEZNb3ZlKHVucmVzdHJpY3RlZERvdWJsZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdp
dGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1v
dmUocmVzdHJpY3RlZEZsb2F0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUo
cmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0
aERlZmF1bHQpLCBXVEZNb3ZlKHNtYWxsSW50ZWdlckNsYW1wZWQpLCBXVEZNb3ZlKHNtYWxsSW50
ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZShzbWFsbFVuc2lnbmVkSW50ZWdlckVuZm9yY2VkUmFu
Z2UpLCBXVEZNb3ZlKHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGlu
dGVnZXIpLCBXVEZNb3ZlKGludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWduZWRJbnRl
Z2VyKSwgV1RGTW92ZSh1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUobGFyZ2VJ
bnRlZ2VyKSwgV1RGTW92ZShsYXJnZUludGVnZXJXaXRoRGVmYXVsdCksIFdURk1vdmUodW5zaWdu
ZWRMYXJnZUludGVnZXIpLCBXVEZNb3ZlKHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQp
IH07CiB9CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xl
cmF0ZU51bGwgY29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRl
TnVsbD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBlOWNiYjZlMGQ5MmQ2
NTUyNWJlMTk0YjE2YjAyNmMwODc1MTc3YWNjLi4zMjIxNWRhZTg0NzBlODcwYTFkOGUyOTBlMmI0
NjZkZjQ4M2U1MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCkBAIC0zOTksNiArMzk5LDE4IEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rp
b25hcnkgewogICAgIHVucmVzdHJpY3RlZCBmbG9hdCB1bnJlc3RyaWN0ZWRGbG9hdDsKICAgICBm
bG9hdCByZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IDA7CiAgICAgdW5yZXN0cmljdGVkIGZs
b2F0IHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSAwOworICAgIFtDbGFtcF0gYnl0ZSBz
bWFsbEludGVnZXJDbGFtcGVkOworICAgIGJ5dGUgc21hbGxJbnRlZ2VyV2l0aERlZmF1bHQ7Cisg
ICAgW0VuZm9yY2VSYW5nZV0gb2N0ZXQgc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdl
OworICAgIG9jdGV0IHNtYWxsVW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQgPSAwOworICAgIGxv
bmcgaW50ZWdlcjsKKyAgICBsb25nIGludGVnZXJXaXRoRGVmYXVsdCA9IDA7CisgICAgdW5zaWdu
ZWQgbG9uZyB1bnNpZ25lZEludGVnZXI7CisgICAgdW5zaWduZWQgbG9uZyB1bnNpZ25lZEludGVn
ZXJXaXRoRGVmYXVsdCA9IDA7CisgICAgbG9uZyBsb25nIGxhcmdlSW50ZWdlcjsKKyAgICBsb25n
IGxvbmcgbGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1bnNpZ25lZExhcmdlSW50ZWdlcjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5zaWduZWRM
YXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IDA7CiB9OwogCiBkaWN0aW9uYXJ5IFRlc3REaWN0aW9u
YXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278933</attachid>
            <date>2016-05-14 10:54:35 -0700</date>
            <delta_ts>2016-05-14 10:55:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157703-20160514105528.patch</filename>
            <type>text/plain</type>
            <size>16319</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYzY2UwMDY4NjBhOGVm
MGI0ZTA4NzczYzU3ZDk0MjdkMWJlZTYwYi4uNzFkYzFmOWU5YjFmNjUyZWRlZTM0ZGE5MjE2NDRh
M2VmYjFiYTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE2LTA1LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYklETF0gQWRkIHN1cHBv
cnQgZm9yIGRpY3Rpb25hcnkgbWVtYmVycyBvZiBpbnRlZ2VyIHR5cGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGljdGlvbmFy
eSBtZW1iZXJzIG9mIGludGVnZXIgdHlwZXMsIGluY2x1ZGluZyBzdXBwb3J0CisgICAgICAgIGZv
ciB0aGUgW0NsYW1wXSBhbmQgW0VuZm9yY2VSYW5nZV0gSURMIGV4dGVuZGVkIGF0dHJpYnV0ZXMg
b24gc3VjaAorICAgICAgICBtZW1iZXJzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRPcHRpb25hbCk6CisgICAgICAgIC0gQWRkIHRoZSBuZWVkZWQgdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb25zIHNvIHdlIGNhbiB1c2UgY29udmVydE9wdGlvbmFsKCkKKyAgICAgICAgICB3
aXRoIGludGVncmFsIHR5cGVzLgorICAgICAgICAtIFVzZSBzdGQ6OmVuYWJsZV9pZiBzbyB0aGUg
dGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIG1lYW50cyB0byBiZSB1c2VkCisgICAgICAgICAgZm9y
IGZsb2F0aW5nIHBvaW50IHR5cGVzIG9yIGludGVncmFsIHR5cGVzIGNhbiBvbmx5IGJlIGluc3Rh
bnRpYXRlZAorICAgICAgICAgIGZvciBzdWNoIHR5cGVzLgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNvbnZlcnNpb25S
dWxlV2l0aExlYWRpbmdDb21tYSk6CisgICAgICAgIChHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgR2VuZXJhdGUg
dGhlIHJpZ2h0IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgZm9yIGNv
bnZlcnQoKQorICAgICAgICBhbmQgY29udmVydE9wdGlvbmFsKCkgd2hlbiBjb252ZXJ0aW5nIGRp
Y3Rpb25hcnkgbWVtYmVycyBvZiBpbnRlZ3JhbAorICAgICAgICB0eXBlcworCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChwYXJzZURpY3Rpb25hcnlN
ZW1iZXIpOgorICAgICAgICBGaXggYnVnIGluIHRoZSBJREwgcGFyc2VyIHdoZXJlIHdlIHdlcmVu
J3QgaW5pdGlhbGl6aW5nIHRoZSBleHRlbmRlZAorICAgICAgICBhdHRyaWJ1dGVzIGZvciBkaWN0
aW9uYXJ5IG1lbWJlcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6
CisgICAgICAgIEFkZCBiaW5kaW5ncyB0ZXN0cyBjb3ZlcmFnZS4KKworMjAxNi0wNS0xNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFsbG9jYXRlIE1hY0dseXBo
VG9QYXRoVHJhbnNsYXRvciAvIENhaXJvR2x5cGhUb1BhdGhUcmFuc2xhdG9yIG9uIHRoZSBzdGFj
awogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3Njkw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggNTU0NDgz
Mjk3MDhkY2MxOTcxMmNlNmJiZGVhZjIyYWU2M2NlYmUxYS4uM2FmYThiZWE3YTE0MzJjYTk5Y2I3
M2RmMGM2MDQ0MzUyZmMwMDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0LmgKQEAgLTMyLDE3ICszMiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0g
Y2xhc3MgU2hvdWxkQWxsb3dOb25GaW5pdGUgeyBObywgWWVzIH07CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUgPSBUPiB1c2luZyBFbmFibGVJZkludGVncmFsVHlwZSA9IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBVPjo6dHlwZTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUgPSBUPiB1c2luZyBFbmFibGVJZkZsb2F0
aW5nUG9pbnRUeXBlID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWUsIFU+Ojp0eXBlOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBFbmFibGUgPSB2b2lkPiBzdHJ1Y3QgQ29udmVydGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2Vy
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb24pOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFbmFibGVJZkludGVncmFsVHlwZTxUPiBjb252ZXJ0KEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24p
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRW5hYmxlSWZGbG9hdGluZ1BvaW50VHlwZTxUPiBjb252
ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSk7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxW
YWx1ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gVCBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUsIFUmJiBkZWZhdWx0VmFsdWUpOwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFsdWUgY29udmVydE9wdGlv
bmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSk7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBUIGNvbnZlcnRPcHRpb25hbChKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUsIFUmJiBkZWZh
dWx0VmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRW5hYmxlSWZJbnRlZ3JhbFR5cGU8VCwg
T3B0aW9uYWw8VD4+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IEVuYWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VCwgT3B0aW9uYWw8VD4+IGNvbnZlcnRPcHRpb25h
bChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUpOwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gRW5hYmxlSWZJbnRlZ3JhbFR5cGU8VD4g
Y29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29u
dmVyc2lvbkNvbmZpZ3VyYXRpb24sIFUmJiBkZWZhdWx0VmFsdWUpOwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gRW5hYmxlSWZGbG9hdGluZ1BvaW50VHlwZTxUPiBjb252ZXJ0T3B0
aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRl
LCBVJiYgZGVmYXVsdFZhbHVlKTsKIAogLy8gVGhpcyBpcyB3aGVyZSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgdGhlIHRoaW5ncyBkZWNsYXJlZCBhYm92ZSBiZWdpbnM6CiAKQEAgLTUxLDE4ICs1Niwx
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIENvbnZlcnRlcjxUPjo6Y29udmVydChz
dGF0ZSwgdmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEVu
YWJsZUlmSW50ZWdyYWxUeXBlPFQ+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKQogewogICAgIHJldHVybiBDb252ZXJ0ZXI8VD46OmNvbnZlcnQoc3RhdGUsIHZhbHVlLCBj
b25maWd1cmF0aW9uKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgY29udmVy
dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU2hvdWxkQWxsb3dO
b25GaW5pdGUgYWxsb3cpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRW5hYmxlSWZGbG9h
dGluZ1BvaW50VHlwZTxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKIHsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxULCBmbG9hdD46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxULCBkb3Vi
bGU+Ojp2YWx1ZSwgIlNob3VsZEFsbG93Tm9uRmluaXRlIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBm
bG9hdCBvciBkb3VibGUiKTsKICAgICByZXR1cm4gQ29udmVydGVyPFQ+Ojpjb252ZXJ0KHN0YXRl
LCB2YWx1ZSwgYWxsb3cpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBDb252
ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFsdWUgaW5saW5lIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlvbmFsVmFsdWUgY29udmVydE9wdGlvbmFs
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIHJldHVy
biB2YWx1ZS5pc1VuZGVmaW5lZCgpID8gdHlwZW5hbWUgQ29udmVydGVyPFQ+OjpPcHRpb25hbFZh
bHVlKCkgOiBjb252ZXJ0PFQ+KHN0YXRlLCB2YWx1ZSk7CiB9CkBAIC03MiwxNiArNzYsMjYgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgY29udmVydE9wdGlvbmFs
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/
IHN0ZDo6Zm9yd2FyZDxVPihkZWZhdWx0VmFsdWUpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46Ok9wdGlv
bmFsVmFsdWUgaW5saW5lIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUgYWxsb3cpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgRW5hYmxlSWZGbG9hdGluZ1BvaW50VHlwZTxULCBPcHRpb25hbDxU
Pj4gY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZh
bHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKIHsKLSAgICByZXR1cm4gdmFsdWUuaXNV
bmRlZmluZWQoKSA/IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSgpIDogY29u
dmVydDxUPihzdGF0ZSwgdmFsdWUsIGFsbG93KTsKKyAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmlu
ZWQoKSA/IE9wdGlvbmFsPFQ+KCkgOiBjb252ZXJ0PFQ+KHN0YXRlLCB2YWx1ZSwgYWxsb3cpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgVCBjb252ZXJ0T3B0
aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFs
bG93Tm9uRmluaXRlIGFsbG93LCBVJiYgZGVmYXVsdFZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIEVuYWJsZUlmRmxvYXRpbmdQb2ludFR5cGU8VD4gY29udmVy
dE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91
bGRBbGxvd05vbkZpbml0ZSBhbGxvdywgVSYmIGRlZmF1bHRWYWx1ZSkKIHsKICAgICByZXR1cm4g
dmFsdWUuaXNVbmRlZmluZWQoKSA/IHN0ZDo6Zm9yd2FyZDxVPihkZWZhdWx0VmFsdWUpIDogY29u
dmVydDxUPihzdGF0ZSwgdmFsdWUsIGFsbG93KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEVuYWJsZUlmSW50ZWdyYWxUeXBlPFQsIE9wdGlvbmFsPFQ+PiBjb252ZXJ0T3B0aW9u
YWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB2YWx1ZS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VD4oKSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlLCBj
b25maWd1cmF0aW9uKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIEVuYWJsZUlmSW50ZWdyYWxUeXBlPFQ+IGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24sIFUmJiBkZWZhdWx0VmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVl
LmlzVW5kZWZpbmVkKCkgPyBzdGQ6OmZvcndhcmQ8VT4oZGVmYXVsdFZhbHVlKSA6IGNvbnZlcnQ8
VD4oc3RhdGUsIHZhbHVlLCBjb25maWd1cmF0aW9uKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IERlZmF1bHRDb252ZXJ0ZXIgewogICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBP
cHRpb25hbDxUPjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDEyNzdjOWY3Yzg2NzA5NDYzZDUxNmZmYTM3YjlhZTZm
ODE3MTc3YmYuLmM3YzViYTE3ZTk2ZTZkN2E3Y2ZjMWM4N2YyZmNkMjdhM2FkMWViMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC05NzMsNyArOTczLDcgQEAgc3ViIEdlbmVyYXRlQ29udmVyc2lvblJ1bGVXaXRoTGVhZGlu
Z0NvbW1hCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Zsb2F0aW5nUG9pbnRUeXBlKCRtZW1i
ZXItPnR5cGUpKSB7CiAgICAgICAgIHJldHVybiAiLCAiIC4gKFNob3VsZEFsbG93Tm9uRmluaXRl
Rm9yRmxvYXRpbmdQb2ludFR5cGUoJG1lbWJlci0+dHlwZSkgPyAiU2hvdWxkQWxsb3dOb25GaW5p
dGU6OlllcyIgOiAiU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vIik7CiAgICAgfQotICAgICMgRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBpbnRlZ2VyIHR5cGVzLgorICAgIHJldHVybiAiLCAiIC4gR2V0
SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKCRtZW1iZXIpIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0ludGVnZXJUeXBlKCRtZW1iZXItPnR5cGUpOwogICAgIHJldHVybiAiIjsKIH0KIApAQCAt
NDM4NCw3ICs0Mzg0LDcgQEAgc3ViIElzTmF0aXZlVHlwZQogICAgIHJldHVybiBleGlzdHMgJG5h
dGl2ZVR5cGV7JHR5cGV9OwogfQogCi1zdWIgR2V0SW50ZWdlckNvbnZlcnNpb25UeXBlCitzdWIg
R2V0SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9
IHNoaWZ0OwogCkBAIC00NDAyLDcgKzQ0MDIsNyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJHR5cGUpKSB7CiAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7Ci0gICAgICAg
IG15ICRjb252ZXJzaW9uVHlwZSA9IEdldEludGVnZXJDb252ZXJzaW9uVHlwZSgkc2lnbmF0dXJl
KTsKKyAgICAgICAgbXkgJGNvbnZlcnNpb25UeXBlID0gR2V0SW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uKCRzaWduYXR1cmUpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01D
b252ZXJ0LmgiKTsKICAgICAgICAgcmV0dXJuICgiY29udmVydDwkbmF0aXZlVHlwZT4oKnN0YXRl
LCAkdmFsdWUsICRjb252ZXJzaW9uVHlwZSkiLCAxKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDI1NDdkOGIwY2ViZDIzMGYzYjQ2
ZGZiZTJjMzIyNzdkNTJjNmZmNDEuLmM4ZDNlMDk0NDA4Y2I4MGRlNmZkODBkZDg3ZmU0ZDZhZjli
ZDJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFy
c2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
CkBAIC02ODEsNiArNjgxLDcgQEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJlcgogICAgICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJyZXF1aXJlZCIs
IF9fTElORV9fKTsKICAgICAgICAgICAgICRtZW1iZXItPmlzT3B0aW9uYWwoMCk7CiAgICAgICAg
IH0KKyAgICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwogICAgICAgICAkbWVtYmVyLT50eXBlKCRzZWxmLT5wYXJzZVR5cGUoKSk7CiAgICAg
ICAgIG15ICRuYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFz
c2VydFRva2VuVHlwZSgkbmFtZVRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRl
eCBlY2JmNzgwMGIzMjVjYjI1MTczNzYzOTBlNTc3N2NhYjlhZDRjOTViLi43N2FkZmI0Y2E3MDc1
NzU3ZGI1MTNkZjFkYjVmOTExMWIzOGE0YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDU1LDcgKzQ1NSw3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4oKQogdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5
IGNvbnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0
dXJuIHsgeyB9LCBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSwgVGVzdE9iajo6RW51bVR5
cGU6OkVtcHR5U3RyaW5nLCAiZGVmYXVsdFN0cmluZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9LCB7
IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIDAsIDAgfTsKKyAgICAgICAgcmV0dXJuIHsgeyB9LCBU
ZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSwgVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3Ry
aW5nLCAiZGVmYXVsdFN0cmluZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwg
MCwgeyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0s
IDAsIHsgfSwgMCB9OwogICAgIGF1dG8qIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAg
IGlmIChVTkxJS0VMWSghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5
cGUpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC01MDcsNyArNTA3LDQz
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0PFRlc3RPYmo6OkRpY3Rp
b25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBhdXRvIHVucmVzdHJpY3RlZEZs
b2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0aW9uYWw8ZmxvYXQ+KHN0YXRlLCBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRmxv
YXRXaXRoRGVmYXVsdCIpKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6OlllcywgMCk7Ci0gICAgcmV0
dXJuIHsgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKGVu
dW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhF
bXB0eVN0cmluZ0RlZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhEZWZhdWx0KSwgV1RGTW92ZShz
dHJpbmdXaXRob3V0RGVmYXVsdCksIFdURk1vdmUoYm9vbGVhbldpdGhEZWZhdWx0KSwgV1RGTW92
ZShib29sZWFuV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKHNlcXVlbmNlT2ZTdHJpbmdzKSwgV1RG
TW92ZShyZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWREb3VibGUpLCBXVEZN
b3ZlKHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1vdmUodW5yZXN0cmljdGVkRG91
YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUodW5yZXN0
cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0KSwgV1RGTW92
ZSh1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0KSB9OworICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzbWFsbElu
dGVnZXJDbGFtcGVkID0gY29udmVydE9wdGlvbmFsPGludDhfdD4oc3RhdGUsIG9iamVjdC0+Z2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzbWFsbEludGVnZXJDbGFt
cGVkIikpLCBDbGFtcCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNtYWxsSW50ZWdlcldpdGhEZWZhdWx0ID0g
Y29udmVydE9wdGlvbmFsPGludDhfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzbWFsbEludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9y
bWFsQ29udmVyc2lvbik7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5mb3Jj
ZWRSYW5nZSA9IGNvbnZlcnRPcHRpb25hbDx1aW50OF90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNtYWxsVW5zaWduZWRJbnRlZ2Vy
RW5mb3JjZWRSYW5nZSIpKSwgRW5mb3JjZVJhbmdlKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc21hbGxVbnNp
Z25lZEludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnRPcHRpb25hbDx1aW50OF90PihzdGF0ZSwg
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNtYWxs
VW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQiKSksIE5vcm1hbENvbnZlcnNpb24sIDApOworICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07
CisgICAgYXV0byBpbnRlZ2VyID0gY29udmVydE9wdGlvbmFsPGludDMyX3Q+KHN0YXRlLCBvYmpl
Y3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdlciIp
KSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGludGVnZXJXaXRoRGVmYXVsdCA9
IGNvbnZlcnRPcHRpb25hbDxpbnQzMl90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9ybWFs
Q29udmVyc2lvbiwgMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHVuc2lnbmVkSW50ZWdlciA9IGNvbnZlcnRP
cHRpb25hbDx1aW50MzJfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZEludGVnZXIiKSksIE5vcm1hbENvbnZlcnNpb24p
OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biB7IH07CisgICAgYXV0byB1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnRPcHRp
b25hbDx1aW50MzJfdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9ybWFsQ29u
dmVyc2lvbiwgMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGxhcmdlSW50ZWdlciA9IGNvbnZlcnRPcHRpb25h
bDxpbnQ2NF90PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlciIpKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBhdXRvIGxhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPGludDY0X3Q+
KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCAibGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQiKSksIE5vcm1hbENvbnZlcnNpb24sIDApOworICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07
CisgICAgYXV0byB1bnNpZ25lZExhcmdlSW50ZWdlciA9IGNvbnZlcnRPcHRpb25hbDx1aW50NjRf
dD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJ1bnNpZ25lZExhcmdlSW50ZWdlciIpKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBhdXRvIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0aW9uYWw8
dWludDY0X3Q+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnN0YXRlLCAidW5zaWduZWRMYXJnZUludGVnZXJXaXRoRGVmYXVsdCIpKSwgTm9ybWFsQ29u
dmVyc2lvbiwgMCk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShlbnVtZXJhdGlvblZhbHVlV2l0aG91
dERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVsdCksIFdURk1vdmUo
ZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dp
dGhEZWZhdWx0KSwgV1RGTW92ZShzdHJpbmdXaXRob3V0RGVmYXVsdCksIFdURk1vdmUoYm9vbGVh
bldpdGhEZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKHNl
cXVlbmNlT2ZTdHJpbmdzKSwgV1RGTW92ZShyZXN0cmljdGVkRG91YmxlKSwgV1RGTW92ZSh1bnJl
c3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdU
Rk1vdmUodW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHJlc3RyaWN0ZWRG
bG9hdCksIFdURk1vdmUodW5yZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHJlc3RyaWN0ZWRGbG9h
dFdpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0KSwgV1RG
TW92ZShzbWFsbEludGVnZXJDbGFtcGVkKSwgV1RGTW92ZShzbWFsbEludGVnZXJXaXRoRGVmYXVs
dCksIFdURk1vdmUoc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdlKSwgV1RGTW92ZShz
bWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0KSwgV1RGTW92ZShpbnRlZ2VyKSwgV1RGTW92
ZShpbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVuc2lnbmVkSW50ZWdlciksIFdURk1vdmUo
dW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGxhcmdlSW50ZWdlciksIFdURk1v
dmUobGFyZ2VJbnRlZ2VyV2l0aERlZmF1bHQpLCBXVEZNb3ZlKHVuc2lnbmVkTGFyZ2VJbnRlZ2Vy
KSwgV1RGTW92ZSh1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0KSB9OwogfQogCiB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsIGNvbnZl
cnQ8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZTljYmI2ZTBkOTJkNjU1MjViZTE5NGIxNmIw
MjZjMDg3NTE3N2FjYy4uMzIyMTVkYWU4NDcwZTg3MGExZDhlMjkwZTJiNDY2ZGY0ODNlNTEyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bApAQCAtMzk5LDYgKzM5OSwxOCBAQCBkaWN0aW9uYXJ5IFRlc3REaWN0aW9uYXJ5IHsKICAgICB1
bnJlc3RyaWN0ZWQgZmxvYXQgdW5yZXN0cmljdGVkRmxvYXQ7CiAgICAgZmxvYXQgcmVzdHJpY3Rl
ZEZsb2F0V2l0aERlZmF1bHQgPSAwOwogICAgIHVucmVzdHJpY3RlZCBmbG9hdCB1bnJlc3RyaWN0
ZWRGbG9hdFdpdGhEZWZhdWx0ID0gMDsKKyAgICBbQ2xhbXBdIGJ5dGUgc21hbGxJbnRlZ2VyQ2xh
bXBlZDsKKyAgICBieXRlIHNtYWxsSW50ZWdlcldpdGhEZWZhdWx0OworICAgIFtFbmZvcmNlUmFu
Z2VdIG9jdGV0IHNtYWxsVW5zaWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZTsKKyAgICBvY3RldCBz
bWFsbFVuc2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICBsb25nIGludGVnZXI7Cisg
ICAgbG9uZyBpbnRlZ2VyV2l0aERlZmF1bHQgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgdW5zaWdu
ZWRJbnRlZ2VyOworICAgIHVuc2lnbmVkIGxvbmcgdW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQg
PSAwOworICAgIGxvbmcgbG9uZyBsYXJnZUludGVnZXI7CisgICAgbG9uZyBsb25nIGxhcmdlSW50
ZWdlcldpdGhEZWZhdWx0ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdW5zaWduZWRMYXJn
ZUludGVnZXI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0
aERlZmF1bHQgPSAwOwogfTsKIAogZGljdGlvbmFyeSBUZXN0RGljdGlvbmFyeVRoYXRTaG91bGRO
b3RUb2xlcmF0ZU51bGwgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>