<?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>248181</bug_id>
          
          <creation_ts>2022-11-21 10:40:47 -0800</creation_ts>
          <short_desc>[Filters] FilterEffect::calculatePrimitiveSubregion() and calculateImageRect() should take a span of the input image rects</short_desc>
          <delta_ts>2022-11-30 10:44:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>243816</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1913893</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-11-21 10:40:47 -0800</bug_when>
    <thetext>Instead of passing a FilterImageVector to these functions we should pass a Vector&lt;FloatRect&gt; since they care about the FilterImage::imageRect() only.
    
This work is towards supporting CoreGraphics filters since no FilterImage will be used while applying the FilterEffects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913897</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-11-21 11:20:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/102586592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913898</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-11-21 11:27:34 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/6706</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913899</commentid>
    <comment_count>3</comment_count>
      <attachid>463641</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-11-21 11:29:14 -0800</bug_when>
    <thetext>Created attachment 463641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913929</commentid>
    <comment_count>4</comment_count>
      <attachid>463641</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-11-21 15:42:38 -0800</bug_when>
    <thetext>Comment on attachment 463641
Patch

Functions like these should take Span&lt;const X&gt; rather than const Vector&lt;X&gt;&amp; for greater flexibility if possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1914357</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-11-23 12:46:40 -0800</bug_when>
    <thetext>A new PR was uploaded to https://github.com/WebKit/WebKit/pull/6706</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1914422</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-11-23 20:31:50 -0800</bug_when>
    <thetext>Committed 256983@main (d4236a4ea1de): &lt;https://commits.webkit.org/256983@main&gt;

Reviewed commits have been landed. Closing PR #6706 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915293</commentid>
    <comment_count>7</comment_count>
      <attachid>463641</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-11-29 07:32:00 -0800</bug_when>
    <thetext>Comment on attachment 463641
Patch

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

&gt; COMMIT_MESSAGE:8
&gt; +Instead of passing a FilterImageVector to these functions we should pass a
&gt; +Vector&lt;FloatRect&gt; since they care about the FilterImage::imageRect() only.

I suggest we pass Span&lt;const FloatRect&gt; instead. Still would have a Vector&lt;FloatRect&gt; locally at the call site. Just a good habit to pass Span any time so we don’t have to construct a vector. Lets us use FixedVector or an array or even a single element.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:61
&gt; +    Vector&lt;FloatRect&gt; inputPrimitiveSubregions;
&gt; +    inputPrimitiveSubregions.reserveInitialCapacity(inputs.size());
&gt; +
&gt; +    for (auto&amp; input : inputs)
&gt; +        inputPrimitiveSubregions.uncheckedAppend(input-&gt;primitiveSubregion());
&gt; +
&gt; +    return inputPrimitiveSubregions;

This should use map.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:99
&gt; -    FloatRect imageRect;
&gt; +    Vector&lt;FloatRect&gt; inputImageRects;
&gt; +    inputImageRects.reserveInitialCapacity(inputs.size());
&gt; +
&gt;      for (auto&amp; input : inputs)
&gt; -        imageRect.unite(input-&gt;imageRect());
&gt; +        inputImageRects.uncheckedAppend(input-&gt;imageRect());
&gt; +
&gt; +    return inputImageRects;

This should use map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915294</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-11-29 07:32:29 -0800</bug_when>
    <thetext>Oh, looks like this already landed a while ago. Well consider my comments ideas of how to refine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1915637</commentid>
    <comment_count>9</comment_count>
      <attachid>463641</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-11-30 10:44:58 -0800</bug_when>
    <thetext>Comment on attachment 463641
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:61
&gt;&gt; +    return inputPrimitiveSubregions;
&gt; 
&gt; This should use map.

This is already done in 256983@main.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:99
&gt;&gt; +    return inputImageRects;
&gt; 
&gt; This should use map.

This is already done in 256983@main.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463641</attachid>
            <date>2022-11-21 11:29:14 -0800</date>
            <delta_ts>2022-11-29 07:32:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-248181-20221121112913.patch</filename>
            <type>text/plain</type>
            <size>29134</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">RnJvbSAxYWUzODBhODg0M2ZiNzBmYTU0Yjg3ZjgyNjJjNmQwNjRmMzg5YjQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYWlkIEFib3UtSGFsbGF3YSA8c2FpZEBhcHBsZS5jb20+CkRh
dGU6IE1vbiwgMjEgTm92IDIwMjIgMTE6MjI6MzggLTA4MDAKU3ViamVjdDogW1BBVENIXSBbRmls
dGVyc10gRmlsdGVyRWZmZWN0OjpjYWxjdWxhdGVQcmltaXRpdmVTdWJyZWdpb24oKSBhbmQKIGNh
bGN1bGF0ZUltYWdlUmVjdCgpIHNob3VsZCB0YWtlIGEgdmVjdG9yIG9mIHRoZSBpbnB1dCByZWN0
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0ODE4MSByZGFyOi8v
MTAyNTg2NTkyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluc3RlYWQgb2YgcGFzc2lu
ZyBhIEZpbHRlckltYWdlVmVjdG9yIHRvIHRoZXNlIGZ1bmN0aW9ucyB3ZSBzaG91bGQgcGFzcyBh
ClZlY3RvcjxGbG9hdFJlY3Q+IHNpbmNlIHRoZXkgY2FyZSBhYm91dCB0aGUgRmlsdGVySW1hZ2U6
OmltYWdlUmVjdCgpIG9ubHkuCgpUaGlzIHdvcmsgaXMgdG93YXJkcyBzdXBwb3J0aW5nIENvcmVH
cmFwaGljcyBmaWx0ZXJzIHNpbmNlIG5vIEZpbHRlckltYWdlIHdpbGwgYmUKdXNlZCB3aGlsZSBh
cHBseWluZyB0aGUgRmlsdGVyRWZmZWN0cy4KCiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CihXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y2Fs
Y3VsYXRlSW1hZ2VSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRy
aXg6OmNhbGN1bGF0ZUltYWdlUmVjdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmg6CiogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CihXZWJDb3JlOjpG
RURpc3BsYWNlbWVudE1hcDo6Y2FsY3VsYXRlSW1hZ2VSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CiogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgoo
V2ViQ29yZTo6RkVEcm9wU2hhZG93OjpjYWxjdWxhdGVJbWFnZVJlY3QgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93Lmg6CiogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKFdlYkNv
cmU6OkZFRmxvb2Q6OmNhbGN1bGF0ZUltYWdlUmVjdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CiogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CihXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlSW1hZ2VSZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CiogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUltYWdlLmNwcDoKKFdlYkNvcmU6OkZFSW1h
Z2U6OmNhbGN1bGF0ZUltYWdlUmVjdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUltYWdlLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKFdlYkNvcmU6OkZFTGlnaHRpbmc6OmNhbGN1
bGF0ZUltYWdlUmVjdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUxpZ2h0aW5nLmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwOgooV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpjYWxjdWxh
dGVJbWFnZVJlY3QgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVNb3JwaG9sb2d5Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU9mZnNldC5jcHA6CihXZWJDb3JlOjpGRU9mZnNldDo6Y2FsY3VsYXRlSW1hZ2VS
ZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwOgooV2ViQ29yZTo6RkVUaWxlOjpjYWxjdWxhdGVJbWFnZVJlY3QgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6CiogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgooV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpjYWxjdWxhdGVJbWFnZVJlY3QgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmg6CiogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgooV2Vi
Q29yZTo6aW5wdXRQcmltaXRpdmVTdWJyZWdpb25zKToKKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
Y2FsY3VsYXRlUHJpbWl0aXZlU3VicmVnaW9uIGNvbnN0KToKKFdlYkNvcmU6OmlucHV0SW1hZ2VS
ZWN0cyk6CihXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNhbGN1bGF0ZUltYWdlUmVjdCBjb25zdCk6
CihXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToKKiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgotLS0KIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCB8ICA2ICstLQogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCAgIHwgIDIgKy0KIC4uLi9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguY3BwICAgICB8ICAyICstCiAuLi4vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmggICAgICAgfCAgMiArLQogLi4uL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aXNwbGFjZW1lbnRNYXAuY3BwICAgIHwgIDIgKy0KIC4uLi9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmggICAgICB8ICAyICstCiAuLi4vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuY3BwICAgICAgICAgfCAgNCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmggIHwgIDIgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Rmxvb2QuY3BwICAgICB8ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZs
b29kLmggICAgICAgfCAgMiArLQogLi4uL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwICAgICAgIHwgIDQgKy0KIC4uLi9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgg
ICAgICAgICB8ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUltYWdlLmNw
cCAgICAgfCAgMiArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVJbWFnZS5oICAg
ICAgIHwgIDIgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
ICB8ICAyICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggICAg
fCAgMiArLQogLi4uL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcCAgICAgICAgIHwg
IDQgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oICB8ICAy
ICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgICAgfCAgNCAr
LQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaCAgICAgIHwgIDIgKy0K
IC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgICAgICB8ICAyICstCiAu
Li4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCAgICAgICAgfCAgMiArLQogLi4u
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oICB8ICAyICstCiAuLi4vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwICAgICAgICAgfCA0MCArKysrKysrKysrKysr
Ky0tLS0tCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCAgfCAg
NCArLQogMjYgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcAppbmRleCA0YzNiNjcwOGU1N2YuLjZmMWNlMTVjMWI3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAKQEAgLTg2LDE0ICs4NiwxNCBAQCBib29sIEZFQ29tcG9zaXRlOjpzZXRLNChm
bG9hdCBrNCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRmxvYXRSZWN0IEZFQ29tcG9zaXRlOjpj
YWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdl
VmVjdG9yJiBpbnB1dHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25z
dAorRmxvYXRSZWN0IEZFQ29tcG9zaXRlOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0
IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjoKICAgICBjYXNlIEZFQ09N
UE9TSVRFX09QRVJBVE9SX0FUT1A6CiAgICAgICAgIC8vIEZvciBJbiBhbmQgQXRvcCB0aGUgZmly
c3QgRmlsdGVySW1hZ2UganVzdCBpbmZsdWVuY2VzIHRoZSByZXN1bHQgb2YgdGhlCiAgICAgICAg
IC8vIHNlY29uZCBGaWx0ZXJJbWFnZS4gU28ganVzdCB1c2UgdGhlIHJlY3Qgb2YgdGhlIHNlY29u
ZCBGaWx0ZXJJbWFnZSBoZXJlLgotICAgICAgICByZXR1cm4gZmlsdGVyLmNsaXBUb01heEVmZmVj
dFJlY3QoaW5wdXRzWzFdLT5pbWFnZVJlY3QoKSwgcHJpbWl0aXZlU3VicmVnaW9uKTsKKyAgICAg
ICAgcmV0dXJuIGZpbHRlci5jbGlwVG9NYXhFZmZlY3RSZWN0KGlucHV0SW1hZ2VSZWN0c1sxXSwg
cHJpbWl0aXZlU3VicmVnaW9uKTsKIAogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJ
VEhNRVRJQzoKICAgICAgICAgLy8gQXJpdGhtZXRpYyBtYXkgaW5mbHVuY2UgdGhlIGVudGlyZSBm
aWx0ZXIgcHJpbWl0aXZlIHJlZ2lvbi4gU28gd2UgY2FuJ3QKQEAgLTEwMiw3ICsxMDIsNyBAQCBG
bG9hdFJlY3QgRkVDb21wb3NpdGU6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZp
bHRlciwgY29uc3QgRmlsdGVySW1hZwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVGFrZSB0
aGUgdW5pb24gb2YgYm90aCBpbnB1dCBlZmZlY3RzLgotICAgICAgICByZXR1cm4gRmlsdGVyRWZm
ZWN0OjpjYWxjdWxhdGVJbWFnZVJlY3QoZmlsdGVyLCBpbnB1dHMsIHByaW1pdGl2ZVN1YnJlZ2lv
bik7CisgICAgICAgIHJldHVybiBGaWx0ZXJFZmZlY3Q6OmNhbGN1bGF0ZUltYWdlUmVjdChmaWx0
ZXIsIGlucHV0SW1hZ2VSZWN0cywgcHJpbWl0aXZlU3VicmVnaW9uKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaAppbmRleCA2ODAxYjdkY2Y1NGUuLjc2NDYzZGQzMzljMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJ
bnB1dHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAyOyB9CiAKLSAgICBGbG9hdFJlY3QgY2Fs
Y3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBp
bnB1dHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBGbG9hdFJlY3QgY2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJp
bWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVzdWx0SXNWYWxp
ZFByZW11bHRpcGxpZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgIT0gRkVDT01Q
T1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApp
bmRleCBlNjFhYzhmOTU3YjQuLmVjZjE4NjYxNDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2
ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRmxvYXRS
ZWN0IEZFQ29udm9sdmVNYXRyaXg6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZp
bHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2
ZVN1YnJlZ2lvbikgY29uc3QKK0Zsb2F0UmVjdCBGRUNvbnZvbHZlTWF0cml4OjpjYWxjdWxhdGVJ
bWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+Jiwg
Y29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZpbHRlci5tYXhFZmZlY3RSZWN0KHByaW1pdGl2ZVN1YnJlZ2lvbik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2
ZU1hdHJpeC5oCmluZGV4IDA3NTQ1Yjg3NDhkMS4uYzliYzM4MTIxM2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFQ29u
dm9sdmVNYXRyaXgoY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwgZmxvYXQgZGl2aXNvciwgZmxv
YXQgYmlhcywgY29uc3QgSW50UG9pbnQmIHRhcmdldE9mZnNldCwgRWRnZU1vZGVUeXBlLCBjb25z
dCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoLCBib29sIHByZXNlcnZlQWxwaGEsIGNvbnN0
IFZlY3RvcjxmbG9hdD4mIGtlcm5lbE1hdHJpeCk7CiAKLSAgICBGbG9hdFJlY3QgY2FsY3VsYXRl
SW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMs
IGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBGbG9hdFJlY3QgY2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IFZlY3Rv
cjxGbG9hdFJlY3Q+JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZl
U3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJF
ZmZlY3RBcHBsaWVyPiBjcmVhdGVTb2Z0d2FyZUFwcGxpZXIoKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCA0OTA5OWI2Mzc2MzkuLjEwNDEzZTVlOWM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBG
RURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUZsb2F0UmVjdCBGRURpc3BsYWNlbWVudE1hcDo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNv
bnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAorRmxvYXRSZWN0IEZFRGlzcGxhY2VtZW50
TWFwOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFZlY3Rv
cjxGbG9hdFJlY3Q+JiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGZpbHRlci5tYXhFZmZlY3RSZWN0KHByaW1pdGl2ZVN1YnJlZ2lvbik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggZDhmY2RmZGExZGQ2Li5iMzI5YzMwY2Ri
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
IAogICAgIHVuc2lnbmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMjsgfQogCi0gICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0
ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJlY3QmIHBy
aW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGNhbGN1bGF0
ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgaW5wdXRJ
bWFnZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9yU3Bh
Y2UoY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHRy
YW5zZm9ybUlucHV0c0NvbG9yU3BhY2UoY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cykg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggMjQ2YTViZWU2Zjg0Li4zNTQz
NjcyNDVhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgYm9vbCBGRURy
b3BTaGFkb3c6OnNldFNoYWRvd09wYWNpdHkoZmxvYXQgc2hhZG93T3BhY2l0eSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotRmxvYXRSZWN0IEZFRHJvcFNoYWRvdzo6Y2FsY3VsYXRlSW1hZ2VSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBj
b25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKK0Zsb2F0UmVjdCBGRURy
b3BTaGFkb3c6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3Qg
VmVjdG9yPEZsb2F0UmVjdD4mIGlucHV0SW1hZ2VSZWN0cywgY29uc3QgRmxvYXRSZWN0JiBwcmlt
aXRpdmVTdWJyZWdpb24pIGNvbnN0CiB7Ci0gICAgYXV0byBpbWFnZVJlY3QgPSBpbnB1dHNbMF0t
PmltYWdlUmVjdCgpOworICAgIGF1dG8gaW1hZ2VSZWN0ID0gaW5wdXRJbWFnZVJlY3RzWzBdOwog
ICAgIGF1dG8gaW1hZ2VSZWN0V2l0aE9mZnNldChpbWFnZVJlY3QpOwogICAgIGltYWdlUmVjdFdp
dGhPZmZzZXQubW92ZShmaWx0ZXIucmVzb2x2ZWRTaXplKHsgbV9keCwgbV9keSB9KSk7CiAgICAg
aW1hZ2VSZWN0LnVuaXRlKGltYWdlUmVjdFdpdGhPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKaW5kZXgg
MjllNDZkOTAwYzQyLi42ZDgxNGE1MzA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFRHJvcFNoYWRvdyhmbG9hdCBzdGRYLCBmbG9h
dCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxv
YXQgc2hhZG93T3BhY2l0eSk7CiAKLSAgICBGbG9hdFJlY3QgY2FsY3VsYXRlSW1hZ2VSZWN0KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFJlY3Qg
Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+
JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVy
PiBjcmVhdGVTb2Z0d2FyZUFwcGxpZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXgg
YzRjMWExZmY3YzdmLi42MjhmMTcyOWY2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNTksNyArNTksNyBAQCBi
b29sIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vZE9wYWNpdHkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLUZsb2F0UmVjdCBGRUZsb29kOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29u
c3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxvYXRS
ZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CitGbG9hdFJlY3QgRkVGbG9vZDo6Y2FsY3Vs
YXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0
PiYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewogICAgIHJl
dHVybiBmaWx0ZXIubWF4RWZmZWN0UmVjdChwcmltaXRpdmVTdWJyZWdpb24pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRl
eCA1M2Q0Y2M1ZjlkZjEuLmQxZDY1NjNkNjA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHVuc2lnbmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQogCi0gICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25z
dCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJl
Y3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGNh
bGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYg
aW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0QXBwbGllcj4g
Y3JlYXRlU29mdHdhcmVBcHBsaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAKaW5kZXggY2VkZmMyOTdiY2U3Li4zODcwZjcxZTE5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuY3BwCkBAIC0xMTIsOSArMTEyLDkgQEAgSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3Vs
YXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQogICAgIHJldHVybiB7IDMgKiBr
ZXJuZWxTaXplLndpZHRoKCkgLyAyLCAzICoga2VybmVsU2l6ZS5oZWlnaHQoKSAvIDIgfTsKIH0K
IAotRmxvYXRSZWN0IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAorRmxvYXRSZWN0IEZFR2F1c3NpYW5CbHVy
OjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3Vi
cmVnaW9uKSBjb25zdAogewotICAgIGF1dG8gaW1hZ2VSZWN0ID0gaW5wdXRzWzBdLT5pbWFnZVJl
Y3QoKTsKKyAgICBhdXRvIGltYWdlUmVjdCA9IGlucHV0SW1hZ2VSZWN0c1swXTsKIAogICAgIC8v
IEVkZ2UgbW9kZXMgb3RoZXIgdGhhbiAnbm9uZScgZG8gbm90IGluZmxhdGUgdGhlIGFmZmVjdGVk
IHBhaW50IHJlY3QuCiAgICAgaWYgKG1fZWRnZU1vZGUgIT0gRWRnZU1vZGVUeXBlOjpOb25lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oCmluZGV4IDM4NGIyZGMwMTY2Ni4uNmFmMmY3NDlmNjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVH
YXVzc2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlKTsKIAotICAgIEZsb2F0
UmVjdCBjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VW
ZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0
IG92ZXJyaWRlOworICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVy
JiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGlucHV0SW1hZ2VSZWN0cywgY29uc3QgRmxvYXRS
ZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCByZXN1
bHRJc0FscGhhSW1hZ2UoY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cykgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFSW1hZ2UuY3BwCmluZGV4IGE2NDQ2NzM4MzEwYS4uZTFkNmIzZmI2Y2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVJbWFnZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgRkVJbWFnZTo6RkVJbWFnZShTb3VyY2VJbWFnZSYmIHNvdXJj
ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY28KIHsKIH0KIAotRmxv
YXRSZWN0IEZFSW1hZ2U6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwg
Y29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJl
Z2lvbikgY29uc3QKK0Zsb2F0UmVjdCBGRUltYWdlOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgY29uc3QgRmxvYXRSZWN0
JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CiB7CiAgICAgaWYgKG1fc291cmNlSW1hZ2UubmF0
aXZlSW1hZ2VJZkV4aXN0cygpKSB7CiAgICAgICAgIGF1dG8gaW1hZ2VSZWN0ID0gcHJpbWl0aXZl
U3VicmVnaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFSW1hZ2UuaAppbmRleCA0NjU2YmI5ZDUyYzguLmU2ZWNjYTUyMTIwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUltYWdlLmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5
cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQogICAgIHZvaWQgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IH0KIAot
ICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiwgY29uc3QgRmls
dGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdp
b24pIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVJbWFnZVJlY3QoY29u
c3QgRmlsdGVyJiwgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGlucHV0SW1hZ2VSZWN0cywgY29u
c3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdEFwcGxpZXI+IGNyZWF0ZVNvZnR3YXJlQXBwbGll
cigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBlYjQ5Yjc1ZDRlYjMuLmMwNDUw
MzRlMGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgRkVMaWdodGlu
Zzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLUZsb2F0UmVjdCBGRUxpZ2h0aW5nOjpjYWxjdWxhdGVJbWFnZVJlY3Qo
Y29uc3QgRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxv
YXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CitGbG9hdFJlY3QgRkVMaWdodGluZzo6
Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBWZWN0b3I8Rmxv
YXRSZWN0PiYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewog
ICAgIHJldHVybiBmaWx0ZXIubWF4RWZmZWN0UmVjdChwcmltaXRpdmVTdWJyZWdpb24pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGln
aHRpbmcuaAppbmRleCAwYzA3M2JjMTNmOGMuLjRlNjc1ODcwNzM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEZFTGlnaHRpbmcoVHlwZSwg
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlm
ZnVzZUNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckNvbnN0YW50LCBmbG9hdCBzcGVjdWxhckV4cG9u
ZW50LCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJl
ZjxMaWdodFNvdXJjZT4mJik7CiAKLSAgICBGbG9hdFJlY3QgY2FsY3VsYXRlSW1hZ2VSZWN0KGNv
bnN0IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IEZsb2F0
UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFJlY3Qg
Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+
JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVy
PiBjcmVhdGVTb2Z0d2FyZUFwcGxpZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
Y3BwCmluZGV4IGNhNmU1MDUxNTVkYy4uMjUwZjQwZDMzMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CkBAIC02OCw5ICs2OCw5IEBAIGJvb2wgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0IHJh
ZGl1c1kpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZsb2F0UmVjdCBGRU1vcnBob2xvZ3k6OmNh
bGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VW
ZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0
CitGbG9hdFJlY3QgRkVNb3JwaG9sb2d5OjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVy
JiBmaWx0ZXIsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBpbnB1dEltYWdlUmVjdHMsIGNvbnN0
IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewotICAgIGF1dG8gaW1hZ2VS
ZWN0ID0gaW5wdXRzWzBdLT5pbWFnZVJlY3QoKTsKKyAgICBhdXRvIGltYWdlUmVjdCA9IGlucHV0
SW1hZ2VSZWN0c1swXTsKICAgICBpbWFnZVJlY3QuaW5mbGF0ZShmaWx0ZXIucmVzb2x2ZWRTaXpl
KHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIHJldHVybiBmaWx0ZXIuY2xpcFRvTWF4
RWZmZWN0UmVjdChpbWFnZVJlY3QsIHByaW1pdGl2ZVN1YnJlZ2lvbik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3ku
aAppbmRleCAyZjZiNjIzODE5NjAuLjAzZTliMTZkM2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVNb3JwaG9sb2d5KE1vcnBob2xv
Z3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCi0gICAgRmxv
YXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFn
ZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0
ZXImLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgaW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9h
dFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJl
c3VsdElzQWxwaGFJbWFnZShjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCBkNThlZmVhNmQ5NzYuLjdlOWRmYmI1MDQyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgYm9vbCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUZsb2F0UmVjdCBGRU9mZnNldDo6Y2FsY3VsYXRlSW1h
Z2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5w
dXRzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKK0Zsb2F0UmVj
dCBGRU9mZnNldDo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25z
dCBWZWN0b3I8RmxvYXRSZWN0PiYgaW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHBy
aW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKIHsKLSAgICBhdXRvIGltYWdlUmVjdCA9IGlucHV0c1sw
XS0+aW1hZ2VSZWN0KCk7CisgICAgYXV0byBpbWFnZVJlY3QgPSBpbnB1dEltYWdlUmVjdHNbMF07
CiAgICAgaW1hZ2VSZWN0Lm1vdmUoZmlsdGVyLnJlc29sdmVkU2l6ZSh7IG1fZHgsIG1fZHkgfSkp
OwogICAgIHJldHVybiBmaWx0ZXIuY2xpcFRvTWF4RWZmZWN0UmVjdChpbWFnZVJlY3QsIHByaW1p
dGl2ZVN1YnJlZ2lvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5kZXggYjBhN2I4MTQwMmQ0Li4wMWQyY2ZmYzE1M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVP
ZmZzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRU9mZnNl
dChmbG9hdCBkeCwgZmxvYXQgZHkpOwogCi0gICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVj
dChjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBG
bG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRS
ZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYgaW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lv
bikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlc3VsdElzQWxwaGFJbWFnZShjb25zdCBG
aWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IGUz
NGZiYWIyNjQ3OS4uMTMzMTM0Njg3NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEZFVGls
ZTo6RkVUaWxlKCkKIHsKIH0KIAotRmxvYXRSZWN0IEZFVGlsZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZs
b2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAorRmxvYXRSZWN0IEZFVGlsZTo6Y2Fs
Y3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdAogewogICAg
IHJldHVybiBmaWx0ZXIubWF4RWZmZWN0UmVjdChwcmltaXRpdmVTdWJyZWdpb24pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKaW5k
ZXggODlmYTMwZTQ4MjRlLi45OWIzZjc0NDBhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEZFVGlsZSgpOwogCi0gICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUlt
YWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBj
b25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImLCBjb25zdCBWZWN0b3I8
RmxvYXRSZWN0PiYgaW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1
YnJlZ2lvbikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlc3VsdElzQWxwaGFJbWFnZShj
b25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1
bGVuY2UuY3BwCmluZGV4IGQ0MTI5NzJhN2UyZC4uMWExYzQ5OTU3MmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxl
cyhib29sIHN0aXRjaCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRmxvYXRSZWN0IEZFVHVyYnVs
ZW5jZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0
ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25z
dAorRmxvYXRSZWN0IEZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRl
ciYgZmlsdGVyLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGNvbnN0IEZsb2F0UmVjdCYgcHJp
bWl0aXZlU3VicmVnaW9uKSBjb25zdAogewogICAgIHJldHVybiBmaWx0ZXIubWF4RWZmZWN0UmVj
dChwcmltaXRpdmVTdWJyZWdpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKaW5kZXggZTgwODdjMzAwMmE2
Li5kMTMwNGFhNzAwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAKLSAgICBGbG9hdFJlY3QgY2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZp
bHRlciYsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMsIGNvbnN0IEZsb2F0UmVjdCYg
cHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFJlY3QgY2FsY3Vs
YXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBpbnB1
dEltYWdlUmVjdHMsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RBcHBsaWVyPiBjcmVh
dGVTb2Z0d2FyZUFwcGxpZXIoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmlu
ZGV4IGMxMjBmZmIzOTYyMy4uOGQxOWVmNjQ2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC01
MCwxNSArNTAsMjYgQEAgRmlsdGVySW1hZ2VWZWN0b3IgRmlsdGVyRWZmZWN0Ojp0YWtlSW1hZ2VJ
bnB1dHMoRmlsdGVySW1hZ2VWZWN0b3ImIHN0YWNrKSBjb25zdAogICAgIHJldHVybiBpbnB1dHM7
CiB9CiAKLUZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmNhbGN1bGF0ZVByaW1pdGl2ZVN1YnJlZ2lv
bihjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywg
Y29uc3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mIGdlb21ldHJ5KSBjb25z
dAorc3RhdGljIFZlY3RvcjxGbG9hdFJlY3Q+IGlucHV0UHJpbWl0aXZlU3VicmVnaW9ucyhjb25z
dCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzKQoreworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IGlu
cHV0UHJpbWl0aXZlU3VicmVnaW9uczsKKyAgICBpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dHMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgaW5w
dXQgOiBpbnB1dHMpCisgICAgICAgIGlucHV0UHJpbWl0aXZlU3VicmVnaW9ucy51bmNoZWNrZWRB
cHBlbmQoaW5wdXQtPnByaW1pdGl2ZVN1YnJlZ2lvbigpKTsKKworICAgIHJldHVybiBpbnB1dFBy
aW1pdGl2ZVN1YnJlZ2lvbnM7Cit9CisKK0Zsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmNhbGN1bGF0
ZVByaW1pdGl2ZVN1YnJlZ2lvbihjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgVmVjdG9yPEZs
b2F0UmVjdD4mIGlucHV0UHJpbWl0aXZlU3VicmVnaW9ucywgY29uc3Qgc3RkOjpvcHRpb25hbDxG
aWx0ZXJFZmZlY3RHZW9tZXRyeT4mIGdlb21ldHJ5KSBjb25zdAogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvZmlsdGVyLWVmZmVjdHMtMS8j
RmlsdGVyUHJpbWl0aXZlU3ViUmVnaW9uLgogICAgIEZsb2F0UmVjdCBwcmltaXRpdmVTdWJyZWdp
b247CiAKICAgICAvLyBJZiB0aGVyZSBpcyBubyBpbnB1dCBlZmZlY3RzLCB0YWtlIHRoZSBlZmZl
Y3QgYm91bmRhcmllcyBhcyB1bml0ZSByZWN0LiBEb24ndCB1c2UgdGhlIGlucHV0J3Mgc3VicmVn
aW9uIGZvciBGRVRpbGUuCi0gICAgaWYgKCFpbnB1dHMuaXNFbXB0eSgpICYmIGZpbHRlclR5cGUo
KSAhPSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkgewotICAgICAgICBmb3IgKGF1dG8mIGlu
cHV0IDogaW5wdXRzKQotICAgICAgICAgICAgcHJpbWl0aXZlU3VicmVnaW9uLnVuaXRlKGlucHV0
LT5wcmltaXRpdmVTdWJyZWdpb24oKSk7CisgICAgaWYgKCFpbnB1dFByaW1pdGl2ZVN1YnJlZ2lv
bnMuaXNFbXB0eSgpICYmIGZpbHRlclR5cGUoKSAhPSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGls
ZSkgeworICAgICAgICBmb3IgKGF1dG8mIGlucHV0UHJpbWl0aXZlU3VicmVnaW9uIDogaW5wdXRQ
cmltaXRpdmVTdWJyZWdpb25zKQorICAgICAgICAgICAgcHJpbWl0aXZlU3VicmVnaW9uLnVuaXRl
KGlucHV0UHJpbWl0aXZlU3VicmVnaW9uKTsKICAgICB9IGVsc2UKICAgICAgICAgcHJpbWl0aXZl
U3VicmVnaW9uID0gZmlsdGVyLmZpbHRlclJlZ2lvbigpOwogCkBAIC03NywxMSArODgsMjIgQEAg
RmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6Y2FsY3VsYXRlUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0
IEZpbHRlciYgZmlsdGVyLCBjb25zdAogICAgIHJldHVybiBwcmltaXRpdmVTdWJyZWdpb247CiB9
CiAKLUZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0
ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRS
ZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CitzdGF0aWMgVmVjdG9yPEZsb2F0UmVjdD4g
aW5wdXRJbWFnZVJlY3RzKGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiBpbnB1dHMpCiB7Ci0gICAg
RmxvYXRSZWN0IGltYWdlUmVjdDsKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiBpbnB1dEltYWdlUmVj
dHM7CisgICAgaW5wdXRJbWFnZVJlY3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXRzLnNp
emUoKSk7CisKICAgICBmb3IgKGF1dG8mIGlucHV0IDogaW5wdXRzKQotICAgICAgICBpbWFnZVJl
Y3QudW5pdGUoaW5wdXQtPmltYWdlUmVjdCgpKTsKKyAgICAgICAgaW5wdXRJbWFnZVJlY3RzLnVu
Y2hlY2tlZEFwcGVuZChpbnB1dC0+aW1hZ2VSZWN0KCkpOworCisgICAgcmV0dXJuIGlucHV0SW1h
Z2VSZWN0czsKK30KKworRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6Y2FsY3VsYXRlSW1hZ2VSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgaW5wdXRJbWFn
ZVJlY3RzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKK3sKKyAg
ICBGbG9hdFJlY3QgaW1hZ2VSZWN0OworICAgIGZvciAoYXV0byYgaW5wdXRJbWFnZVJlY3QgOiBp
bnB1dEltYWdlUmVjdHMpCisgICAgICAgIGltYWdlUmVjdC51bml0ZShpbnB1dEltYWdlUmVjdCk7
CiAgICAgcmV0dXJuIGZpbHRlci5jbGlwVG9NYXhFZmZlY3RSZWN0KGltYWdlUmVjdCwgcHJpbWl0
aXZlU3VicmVnaW9uKTsKIH0KIApAQCAtMTE5LDggKzE0MSw4IEBAIFJlZlB0cjxGaWx0ZXJJbWFn
ZT4gRmlsdGVyRWZmZWN0OjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVy
SW1hZ2VWCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gcmVzdWx0cy5lZmZlY3RSZXN1bHQoKnRoaXMp
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0byBwcmltaXRpdmVTdWJyZWdpb24g
PSBjYWxjdWxhdGVQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyLCBpbnB1dHMsIGdlb21ldHJ5KTsK
LSAgICBhdXRvIGltYWdlUmVjdCA9IGNhbGN1bGF0ZUltYWdlUmVjdChmaWx0ZXIsIGlucHV0cywg
cHJpbWl0aXZlU3VicmVnaW9uKTsKKyAgICBhdXRvIHByaW1pdGl2ZVN1YnJlZ2lvbiA9IGNhbGN1
bGF0ZVByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXIsIGlucHV0UHJpbWl0aXZlU3VicmVnaW9ucyhp
bnB1dHMpLCBnZW9tZXRyeSk7CisgICAgYXV0byBpbWFnZVJlY3QgPSBjYWxjdWxhdGVJbWFnZVJl
Y3QoZmlsdGVyLCBpbnB1dEltYWdlUmVjdHMoaW5wdXRzKSwgcHJpbWl0aXZlU3VicmVnaW9uKTsK
ICAgICBhdXRvIGFic29sdXRlSW1hZ2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmaWx0ZXIuc2Nh
bGVkQnlGaWx0ZXJTY2FsZShpbWFnZVJlY3QpKTsKIAogICAgIGlmIChhYnNvbHV0ZUltYWdlUmVj
dC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlSW1h
Z2VSZWN0LnNpemUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAyZmQxNTMzNDg1ZmEuLmM0MzI3Njdj
MGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC01NSw5ICs1NSw5IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3QgeyByZXR1cm4gMTsg
fQogICAgIHVuc2lnbmVkIG51bWJlck9mSW1hZ2VJbnB1dHMoKSBjb25zdCB7IHJldHVybiBmaWx0
ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljID8gMSA6IG51bWJl
ck9mRWZmZWN0SW5wdXRzKCk7IH0KIAotICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVQcmltaXRpdmVT
dWJyZWdpb24oY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywg
Y29uc3Qgc3RkOjpvcHRpb25hbDxGaWx0ZXJFZmZlY3RHZW9tZXRyeT4mKSBjb25zdDsKKyAgICBG
bG9hdFJlY3QgY2FsY3VsYXRlUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZpbHRlciYsIGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiBpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbnMsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8RmlsdGVyRWZmZWN0R2VvbWV0cnk+JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1h
Z2VWZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNv
bnN0OworICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0
ZXImLCBjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgaW5wdXRJbWFnZVJlY3RzLCBjb25zdCBGbG9h
dFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3Q7CiAKICAgICAvLyBTb2xpZCBibGFjayBp
bWFnZSB3aXRoIGRpZmZlcmVudCBhbHBoYSB2YWx1ZXMuCiAgICAgdmlydHVhbCBib29sIHJlc3Vs
dElzQWxwaGFJbWFnZShjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Cg==
</data>
<flag name="review"
          id="492090"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="492102"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>