<?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>220137</bug_id>
          
          <creation_ts>2020-12-23 23:42:28 -0800</creation_ts>
          <short_desc>Failures of attribute location conformance tests with Metal backend</short_desc>
          <delta_ts>2021-01-08 16:10:31 -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>WebGL</component>
          <version>WebKit Local 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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219759</dependson>
          <blocked>220076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kyle Piddington">kpiddington</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>geofflang</cc>
    
    <cc>graouts</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>jonahr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716549</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-12-23 23:42:28 -0800</bug_when>
    <thetext>Per Bug 220076, the following three WebGL 1.0.3 conformance tests are failing with the Metal backend:

webgl/1.0.3/conformance/attribs/gl-disabled-vertex-attrib.html
webgl/1.0.3/conformance/attribs/gl-vertex-attrib-render.html
webgl/1.0.3/conformance/attribs/gl-vertex-attrib-zero-issues.html

This is basic functionality; the Metal backend must not be enabled by default before these bugs are tracked down and fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716901</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-30 23:43:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/72750062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717762</commentid>
    <comment_count>2</comment_count>
      <attachid>417121</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-01-06 13:25:01 -0800</bug_when>
    <thetext>Created attachment 417121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717763</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-01-06 13:25:46 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717783</commentid>
    <comment_count>4</comment_count>
      <attachid>417121</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-06 15:04:15 -0800</bug_when>
    <thetext>Comment on attachment 417121
Patch

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

Great work handling this! A few questions, but assuming this passes tests, r+.

&gt; Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp:1229
&gt; +     mOut &lt;&lt; &quot; __unassigned_attribute__ &quot;;

Is the indentaion off here?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:151
&gt; +    //Build string to attrib map.

Nit: space after //.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:152
&gt; +    const std::vector&lt;sh::ShaderVariable&gt; programAttributes = programState.getProgramInputs();

How about &quot;const auto&amp;&quot;? I think this will perform a copy as written.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:163
&gt; +                stream &lt;&lt; attribute.name &lt;&lt; &quot;_&quot; &lt;&lt; std::to_string(i) &lt;&lt; &quot; __unassigned_attribute__&quot;;

How about a variable for the constant string &quot; __unassigned_attribute__&quot;?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:177
&gt; +    for(std::unordered_map&lt;std::string, uint32_t&gt;::iterator it = attributeBindings.begin(); it!=attributeBindings.end(); ++it)

Is &quot;for (auto it = attributeBindings::begin(); ...&quot; workable here?

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:186
&gt; +    }

What happens if a given attribute wasn&apos;t assigned a location via glBindAttribLocation? Would the &quot; __unassigned_attribute__&quot; strings cause MSL compilation failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717784</commentid>
    <comment_count>5</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-01-06 15:11:51 -0800</bug_when>
    <thetext>&gt; What happens if a given attribute wasn&apos;t assigned a location via glBindAttribLocation? Would the &quot; __unassigned_attribute__&quot; strings cause MSL compilation failures?

Any active attribute should get a location, even if they aren&apos;t specifically bound. This is handled in the linkAttributes() (See Program.cpp) step in the Angle frontend.

Any non-active attributes should be optimized out, but if something went wrong, we would have a compilation failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717797</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-06 15:51:06 -0800</bug_when>
    <thetext>(In reply to Kyle Piddington from comment #5)
&gt; &gt; What happens if a given attribute wasn&apos;t assigned a location via glBindAttribLocation? Would the &quot; __unassigned_attribute__&quot; strings cause MSL compilation failures?
&gt; 
&gt; Any active attribute should get a location, even if they aren&apos;t specifically
&gt; bound. This is handled in the linkAttributes() (See Program.cpp) step in the
&gt; Angle frontend.
&gt; 
&gt; Any non-active attributes should be optimized out, but if something went
&gt; wrong, we would have a compilation failure.

Thanks for your confirmation. Sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718465</commentid>
    <comment_count>7</comment_count>
      <attachid>417308</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-01-08 15:26:08 -0800</bug_when>
    <thetext>Created attachment 417308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718469</commentid>
    <comment_count>8</comment_count>
      <attachid>417308</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-08 15:35:35 -0800</bug_when>
    <thetext>Comment on attachment 417308
Patch

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

Looks good if the unrelated changes are removed.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_common.h:-126
&gt; -
&gt; -// NOTE(hqle): support variable max number of vertex attributes
&gt; -constexpr uint32_t kMaxVertexAttribs = gl::MAX_VERTEX_ATTRIBS;
&gt; -// NOTE(hqle): support variable max number of render targets
&gt; -constexpr uint32_t kMaxRenderTargets = 4;
&gt; -

I don&apos;t think you meant to include the changes in this file.

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_constants.h:35
&gt; +constexpr uint32_t kMaxShaderXFBs = gl::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS;
&gt; +
&gt; +// The max size of a buffer that will be allocated in shared memory.
&gt; +// NOTE(hqle): This is just a hint. There is no official document on what is the max allowed size
&gt; +// for shared memory.
&gt; +constexpr size_t kSharedMemBufferMaxBufSizeHint = 128 * 1024;

I think this is from another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718470</commentid>
    <comment_count>9</comment_count>
      <attachid>417308</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-08 15:36:18 -0800</bug_when>
    <thetext>Comment on attachment 417308
Patch

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

&gt;&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/mtl_common.h:-126
&gt;&gt; -
&gt; 
&gt; I don&apos;t think you meant to include the changes in this file.

Kyle explained that this was intentional. Lots of these were defined twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718488</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-08 16:10:29 -0800</bug_when>
    <thetext>Committed r271334: &lt;https://trac.webkit.org/changeset/271334&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417308.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417121</attachid>
            <date>2021-01-06 13:25:01 -0800</date>
            <delta_ts>2021-01-08 15:26:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220137-20210106132500.patch</filename>
            <type>text/plain</type>
            <size>5429</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZGYzZDcwZWFkNTY0YTA5MTY2NWM2ZDBkNTZjYTRlOGQ4NmQwZGI3ZC4uOWFiODJjYjJhYmUw
ZWFlNDU4YjRjYTAwMTA5NDc5YTdiZTY2NzVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAxLTA2ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFpbHVyZXMgb2YgYXR0cmlidXRlIGxvY2F0aW9u
IGNvbmZvcm1hbmNlIHRlc3RzIHdpdGggTWV0YWwgYmFja2VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcDoKKyAgICAgICAgKEdlbk1ldGFsVHJh
dmVyc2VyOjplbWl0QXR0cmlidXRlRGVjbGFyYXRpb24pOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMubW06CisgICAgICAgIChyeDo6
bXRsOjp1cGRhdGVTaGFkZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJ4OjptdGw6Okdsc2xhbmdH
ZXRNU0wpOgorCiAyMDIxLTAxLTA0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11bQ01ha2VdW01TQnVpbGRdW0FOR0xFXSBlbnRy
eV9wb2ludHNfKi5oIHdhcyBnZW5lcmF0ZWQgdHdpY2UgYm90aCBpbiBMaWJHTEVTdjJFbnRyeVBv
aW50c0hlYWRlcnMgYW5kIEdMRVN2MiBwcm9qZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L0VtaXRNZXRhbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcAppbmRleCAxYmJkZDNm
Y2QzN2E3YWMzZDBlNjEzNjAwYjVlOWNhODA4ZTMwNTI2Li4yMDVkYmRhYmY4YmY5YjZkMjUxNTll
YjdlODkzYzE0MmZjN2U2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcApAQCAtMTIyNiw3ICsxMjI2LDcgQEAg
dm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEF0dHJpYnV0ZURlY2xhcmF0aW9uKGNvbnN0IFRG
aWVsZCAmZmllbGQsCiAgICAgRW1pdFZhcmlhYmxlRGVjbGFyYXRpb25Db25maWcgZXZkQ29uZmln
OwogICAgIGV2ZENvbmZpZy5kaXNhYmxlU3RydWN0U3BlY2lmaWVyID0gdHJ1ZTsKICAgICBlbWl0
VmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNsKGZpZWxkKSwgZXZkQ29uZmlnKTsKLSAgICBtT3V0
IDw8ICIgW1thdHRyaWJ1dGUoIiA8PCBhbm5vdGF0aW9uSW5kaWNlcy5hdHRyaWJ1dGUrKyA8PCAi
KV1dIjsKKyAgICAgbU91dCA8PCAiIF9fdW5hc3NpZ25lZF9hdHRyaWJ1dGVfXyAiOwogfQogCiB2
b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0U3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFR5cGUg
JnR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLm1tIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGls
cy5tbQppbmRleCAzNWY1YmVmNDMxMDBmMTEzZTQ5M2RkOWRiNmUwZTJmZDU0NjE1YTJhLi40MzNh
ZjdlMTY1NjFkZjkxMjQ4ZTA0MmZkNGI4NzE0ZmM3NTI2NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdf
bXRsX3V0aWxzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMubW0KQEAgLTEwLDYgKzEwLDcgQEAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1NoYWRlck10bC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGlscy5oIgorI2luY2x1
ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC0xNDUsNiArMTQ2
LDQ3IEBAIHNoOjpUcmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uICpnZXRSZWZsZWN0aW9uRnJvbUNv
bXBpbGVyKGdsOjpDb21waWxlciAqY29tcGlsZXIsCiAgICAgcmV0dXJuIHRyYW5zbGF0b3JNZXRh
bERpcmVjdC0+Z2V0VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbigpOwogfQogCitzdGQ6OnN0cmlu
ZyB1cGRhdGVTaGFkZXJBdHRyaWJ1dGVzKHN0ZDo6c3RyaW5nIHNoYWRlclNvdXJjZUluLCBjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUpCit7CisgICAgLy9CdWlsZCBzdHJpbmcg
dG8gYXR0cmliIG1hcC4KKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+
IHByb2dyYW1BdHRyaWJ1dGVzID0gcHJvZ3JhbVN0YXRlLmdldFByb2dyYW1JbnB1dHMoKTsKKyAg
ICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOworICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6
OnN0cmluZywgdWludDMyX3Q+IGF0dHJpYnV0ZUJpbmRpbmdzOworICAgIGZvcihhdXRvICYgYXR0
cmlidXRlIDogcHJvZ3JhbUF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBjb25zdCBpbnQgcmVn
cyA9IGdsOjpWYXJpYWJsZVJlZ2lzdGVyQ291bnQoYXR0cmlidXRlLnR5cGUpOworICAgICAgICBp
ZihyZWdzID4gMSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHJl
Z3M7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0uc3RyKCIiKTsK
KyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgYXR0cmlidXRlLm5hbWUgPDwgIl8iIDw8IHN0ZDo6
dG9fc3RyaW5nKGkpIDw8ICIgX191bmFzc2lnbmVkX2F0dHJpYnV0ZV9fIjsKKyAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGVCaW5kaW5ncy5pbnNlcnQoe3N0ZDo6c3RyaW5nKHN0cmVhbS5zdHIoKSks
IGkrYXR0cmlidXRlLmxvY2F0aW9ufSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdHJlYW0uc3RyKCIiKTsKKyAgICAgICAg
ICAgIHN0cmVhbSA8PCBhdHRyaWJ1dGUubmFtZSA8PCAiIF9fdW5hc3NpZ25lZF9hdHRyaWJ1dGVf
XyI7CisgICAgICAgICAgICBhdHRyaWJ1dGVCaW5kaW5ncy5pbnNlcnQoe3N0ZDo6c3RyaW5nKHN0
cmVhbS5zdHIoKSksYXR0cmlidXRlLmxvY2F0aW9ufSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvL1Jld3JpdGUgYXR0cmlidXRlcworICAgIHN0ZDo6c3RyaW5nIG91dHB1dFNvdXJjZSA9IHNo
YWRlclNvdXJjZUluOworICAgIGZvcihzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVp
bnQzMl90Pjo6aXRlcmF0b3IgaXQgPSBhdHRyaWJ1dGVCaW5kaW5ncy5iZWdpbigpOyBpdCE9YXR0
cmlidXRlQmluZGluZ3MuZW5kKCk7ICsraXQpCisgICAgeworICAgICAgICBzdGQ6OnNpemVfdCBh
dHRyaWJGb3VuZD0gb3V0cHV0U291cmNlLmZpbmQoaXQtPmZpcnN0KTsKKyAgICAgICAgaWYoYXR0
cmliRm91bmQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
cmVhbS5zdHIoIiIpOworICAgICAgICAgICAgc3RyZWFtIDw8ICJbW2F0dHJpYnV0ZSgiIDw8IGl0
LT5zZWNvbmQgPDwgIildXSI7CisgICAgICAgICAgICBvdXRwdXRTb3VyY2UgPSBvdXRwdXRTb3Vy
Y2UucmVwbGFjZShhdHRyaWJGb3VuZCtpdC0+Zmlyc3QubGVuZ3RoKCktc3RybGVuKCIgX191bmFz
c2lnbmVkX2F0dHJpYnV0ZV9fIiksIHN0cmxlbigiIF9fdW5hc3NpZ25lZF9hdHRyaWJ1dGVfXyIp
LCBzdHJlYW0uc3RyKCkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvdXRwdXRTb3Vy
Y2U7Cit9CisKIGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldE1TTChjb25zdCBnbDo6Q29udGV4dCAq
Z2xDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFt
U3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6Q2FwcyAmZ2xDYXBzLApAQCAtMTkxLDYgKzIzMywxNyBAQCBhbmdsZTo6UmVzdWx0IEdsc2xh
bmdHZXRNU0woY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICB7CiAgICAgICAgICgq
bXNsQ29kZU91dClbdHlwZV0gICAgICAgICAgICAgICAgICAgICAgICAgPSBzaGFkZXJTb3VyY2Vz
W3R5cGVdOwogICAgICAgICAoKm1zbFNoYWRlckluZm9PdXQpW3R5cGVdLm1ldGFsU2hhZGVyU291
cmNlID0gc2hhZGVyU291cmNlc1t0eXBlXTsKKyAgICAgICAgc3RkOjpzdHJpbmcgc291cmNlOwor
ICAgICAgICBpZih0eXBlID09IGdsOjpTaGFkZXJUeXBlOjpWZXJ0ZXgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNvdXJjZSA9IHVwZGF0ZVNoYWRlckF0dHJpYnV0ZXMoc2hhZGVyU291cmNlc1t0
eXBlXSwgcHJvZ3JhbVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHNvdXJjZSA9IHNoYWRlclNvdXJjZXNbdHlwZV07CisgICAgICAgIH0KKyAg
ICAgICAgKCptc2xDb2RlT3V0KVt0eXBlXSAgICAgICAgICAgICAgICAgICAgICAgICA9IHNvdXJj
ZTsKKyAgICAgICAgKCptc2xTaGFkZXJJbmZvT3V0KVt0eXBlXS5tZXRhbFNoYWRlclNvdXJjZSA9
IHNvdXJjZTsKICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcm9ncmFtU3RhdGUuZ2V0QXR0YWNoZWRTaGFkZXIodHlwZSk7CiAgICAgICAgIHNoOjpU
cmFuc2xhdG9yTWV0YWxSZWZsZWN0aW9uICpyZWZsZWN0aW9uID0gZ2V0UmVmbGVjdGlvbkZyb21T
aGFkZXIoc2hhZGVyKTsKICAgICAgICAgLy8gUmV0cmlldmUgYXV0b21hdGljIHRleHR1cmUgc2xv
dCBhc3NpZ25tZW50cwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417308</attachid>
            <date>2021-01-08 15:26:08 -0800</date>
            <delta_ts>2021-01-08 16:10:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220137-20210108152608.patch</filename>
            <type>text/plain</type>
            <size>11337</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZGYzZDcwZWFkNTY0YTA5MTY2NWM2ZDBkNTZjYTRlOGQ4NmQwZGI3ZC4uOWFiODJjYjJhYmUw
ZWFlNDU4YjRjYTAwMTA5NDc5YTdiZTY2NzVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAxLTA2ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFpbHVyZXMgb2YgYXR0cmlidXRlIGxvY2F0aW9u
IGNvbmZvcm1hbmNlIHRlc3RzIHdpdGggTWV0YWwgYmFja2VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMTM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcDoKKyAgICAgICAgKEdlbk1ldGFsVHJh
dmVyc2VyOjplbWl0QXR0cmlidXRlRGVjbGFyYXRpb24pOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMubW06CisgICAgICAgIChyeDo6
bXRsOjp1cGRhdGVTaGFkZXJBdHRyaWJ1dGVzKToKKyAgICAgICAgKHJ4OjptdGw6Okdsc2xhbmdH
ZXRNU0wpOgorCiAyMDIxLTAxLTA0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNv
bnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11bQ01ha2VdW01TQnVpbGRdW0FOR0xFXSBlbnRy
eV9wb2ludHNfKi5oIHdhcyBnZW5lcmF0ZWQgdHdpY2UgYm90aCBpbiBMaWJHTEVTdjJFbnRyeVBv
aW50c0hlYWRlcnMgYW5kIEdMRVN2MiBwcm9qZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L0VtaXRNZXRhbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcAppbmRleCAxYmJkZDNm
Y2QzN2E3YWMzZDBlNjEzNjAwYjVlOWNhODA4ZTMwNTI2Li42M2IxNTdkYWZhZTg0ZTM3YjdhMDQ2
NjQ5ZTVjZDkyYmIzNDFlYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWxEaXJlY3QvRW1pdE1ldGFsLmNwcApAQCAtMTIyNiw3ICsxMjI2LDcgQEAg
dm9pZCBHZW5NZXRhbFRyYXZlcnNlcjo6ZW1pdEF0dHJpYnV0ZURlY2xhcmF0aW9uKGNvbnN0IFRG
aWVsZCAmZmllbGQsCiAgICAgRW1pdFZhcmlhYmxlRGVjbGFyYXRpb25Db25maWcgZXZkQ29uZmln
OwogICAgIGV2ZENvbmZpZy5kaXNhYmxlU3RydWN0U3BlY2lmaWVyID0gdHJ1ZTsKICAgICBlbWl0
VmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNsKGZpZWxkKSwgZXZkQ29uZmlnKTsKLSAgICBtT3V0
IDw8ICIgW1thdHRyaWJ1dGUoIiA8PCBhbm5vdGF0aW9uSW5kaWNlcy5hdHRyaWJ1dGUrKyA8PCAi
KV1dIjsKKyAgICBtT3V0IDw8IHJ4OjptdGw6OmtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nOwog
fQogCiB2b2lkIEdlbk1ldGFsVHJhdmVyc2VyOjplbWl0U3RydWN0RGVjbGFyYXRpb24oY29uc3Qg
VFR5cGUgJnR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tb24uaAppbmRleCAzZmM1ZTM5
ZDE3OGMwMTQwYWFlMjc4NDUzNzEzOWE4ZDQxYzA2ZmJmLi45ZWVmODI5NjYxMGU1YjQxM2NkYjIz
OTBmODJhZGQ5NzVhOGJjNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1vbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbW9uLmgKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9JbWFnZUluZGV4LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvVmVyc2lvbi5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29uc3RhbnRzLmgiCiAKICNp
ZiBUQVJHRVRfT1NfSVBIT05FCiAjICAgIGlmICFkZWZpbmVkKF9fSVBIT05FXzExXzApCkBAIC0x
MTgsNzMgKzExOSwxMSBAQCBBTkdMRV9HTF9PQkpFQ1RTX1goQU5HTEVfUFJFX0RFQ0xBUkVfTVRM
X09CSkVDVCkKIAogbmFtZXNwYWNlIG10bAogewotCi0vLyBOT1RFKGhxbGUpOiBzdXBwb3J0IHZh
cmlhYmxlIG1heCBudW1iZXIgb2YgdmVydGV4IGF0dHJpYnV0ZXMKLWNvbnN0ZXhwciB1aW50MzJf
dCBrTWF4VmVydGV4QXR0cmlicyA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7Ci0vLyBOT1RFKGhx
bGUpOiBzdXBwb3J0IHZhcmlhYmxlIG1heCBudW1iZXIgb2YgcmVuZGVyIHRhcmdldHMKLWNvbnN0
ZXhwciB1aW50MzJfdCBrTWF4UmVuZGVyVGFyZ2V0cyA9IDQ7Ci0KLWNvbnN0ZXhwciB1aW50MzJf
dCBrTWF4U2hhZGVyVUJPcyA9IDEyOwotY29uc3RleHByIHVpbnQzMl90IGtNYXhVQk9TaXplICAg
ID0gMTYzODQ7Ci0KLWNvbnN0ZXhwciB1aW50MzJfdCBrTWF4U2hhZGVyWEZCcyA9IGdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlM7Ci0KLS8v
IFRoZSBtYXggc2l6ZSBvZiBhIGJ1ZmZlciB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIGluIHNoYXJl
ZCBtZW1vcnkuCi0vLyBOT1RFKGhxbGUpOiBUaGlzIGlzIGp1c3QgYSBoaW50LiBUaGVyZSBpcyBu
byBvZmZpY2lhbCBkb2N1bWVudCBvbiB3aGF0IGlzIHRoZSBtYXggYWxsb3dlZCBzaXplCi0vLyBm
b3Igc2hhcmVkIG1lbW9yeS4KLWNvbnN0ZXhwciBzaXplX3Qga1NoYXJlZE1lbUJ1ZmZlck1heEJ1
ZlNpemVIaW50ID0gMTI4ICogMTAyNDsKLQotY29uc3RleHByIHNpemVfdCBrRGVmYXVsdEF0dHJp
YnV0ZVNpemUgPSA0ICogc2l6ZW9mKGZsb2F0KTsKLQotLy8gTWV0YWwgbGltaXRzCi1jb25zdGV4
cHIgdWludDMyX3Qga01heFNoYWRlckJ1ZmZlcnMgICAgID0gMzE7Ci1jb25zdGV4cHIgdWludDMy
X3Qga01heFNoYWRlclNhbXBsZXJzICAgID0gMTY7Ci1jb25zdGV4cHIgc2l6ZV90IGtJbmxpbmVD
b25zdERhdGFNYXhTaXplID0gNCAqIDEwMjQ7Ci1jb25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0VW5p
Zm9ybXNNYXhTaXplID0ga0lubGluZUNvbnN0RGF0YU1heFNpemU7Ci1jb25zdGV4cHIgdWludDMy
X3Qga01heFZpZXdwb3J0cyAgICAgICAgID0gMTsKLQotY29uc3RleHByIHVpbnQzMl90IGtWZXJ0
ZXhBdHRyaWJCdWZmZXJTdHJpZGVBbGlnbm1lbnQgPSA0OwotLy8gQWxpZ25tZW50IHJlcXVpcmVt
ZW50IGZvciBvZmZzZXQgcGFzc2VkIHRvIHNldFZlcnRleHxGcmFnbWVudEJ1ZmZlcgotI2lmIFRB
UkdFVF9PU19PU1ggfHwgVEFSR0VUX09TX01BQ0NBVEFMWVNUCi1jb25zdGV4cHIgdWludDMyX3Qg
a1VuaWZvcm1CdWZmZXJTZXR0aW5nT2Zmc2V0TWluQWxpZ25tZW50ID0gMjU2OwotI2Vsc2UKLWNv
bnN0ZXhwciB1aW50MzJfdCBrVW5pZm9ybUJ1ZmZlclNldHRpbmdPZmZzZXRNaW5BbGlnbm1lbnQg
PSA0OwotI2VuZGlmCi1jb25zdGV4cHIgdWludDMyX3Qga0luZGV4QnVmZmVyT2Zmc2V0QWxpZ25t
ZW50ICAgICAgID0gNDsKLWNvbnN0ZXhwciB1aW50MzJfdCBrQXJndW1lbnRCdWZmZXJPZmZzZXRB
bGlnbm1lbnQgICAgPSBrVW5pZm9ybUJ1ZmZlclNldHRpbmdPZmZzZXRNaW5BbGlnbm1lbnQ7Ci1j
b25zdGV4cHIgdWludDMyX3Qga1RleHR1cmVUb0J1ZmZlckJsaXR0aW5nQWxpZ25tZW50ID0gMjU2
OwotCi0vLyBGb250IGVuZCBiaW5kaW5nIGxpbWl0cwotY29uc3RleHByIHVpbnQzMl90IGtNYXhH
TFNhbXBsZXJCaW5kaW5ncyA9IDIgKiBrTWF4U2hhZGVyU2FtcGxlcnM7Ci1jb25zdGV4cHIgdWlu
dDMyX3Qga01heEdMVUJPQmluZGluZ3MgICAgID0gMiAqIGtNYXhTaGFkZXJVQk9zOwotCi0vLyBC
aW5kaW5nIGluZGV4IHN0YXJ0IGZvciB2ZXJ0ZXggZGF0YSBidWZmZXJzOgotY29uc3RleHByIHVp
bnQzMl90IGtWYm9CaW5kaW5nSW5kZXhTdGFydCA9IDA7Ci0KLS8vIEJpbmRpbmcgaW5kZXggZm9y
IGRlZmF1bHQgYXR0cmlidXRlIGJ1ZmZlcjoKLWNvbnN0ZXhwciB1aW50MzJfdCBrRGVmYXVsdEF0
dHJpYnNCaW5kaW5nSW5kZXggPSBrVmJvQmluZGluZ0luZGV4U3RhcnQgKyBrTWF4VmVydGV4QXR0
cmliczsKLS8vIEJpbmRpbmcgaW5kZXggZm9yIGRyaXZlciB1bmlmb3JtczoKLWNvbnN0ZXhwciB1
aW50MzJfdCBrRHJpdmVyVW5pZm9ybXNCaW5kaW5nSW5kZXggPSBrRGVmYXVsdEF0dHJpYnNCaW5k
aW5nSW5kZXggKyAxOwotLy8gQmluZGluZyBpbmRleCBmb3IgZGVmYXVsdCB1bmlmb3JtczoKLWNv
bnN0ZXhwciB1aW50MzJfdCBrRGVmYXVsdFVuaWZvcm1zQmluZGluZ0luZGV4ID0ga0RlZmF1bHRB
dHRyaWJzQmluZGluZ0luZGV4ICsgMzsKLS8vIEJpbmRpbmcgaW5kZXggZm9yIFRyYW5zZm9ybSBG
ZWVkYmFjayBCdWZmZXJzICg0KQotY29uc3RleHByIHVpbnQzMl90IGtUcmFuc2Zvcm1GZWVkYmFj
a0JpbmRpbmdJbmRleCA9IGtEZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXggKyAxOwotLy8gQmlu
ZGluZyBpbmRleCBmb3Igc2hhZG93IHNhbXBsZXJzJyBjb21wYXJlIG1vZGVzCi1jb25zdGV4cHIg
dWludDMyX3Qga1NoYWRvd1NhbXBsZXJDb21wYXJlTW9kZXNCaW5kaW5nSW5kZXggPSBrVHJhbnNm
b3JtRmVlZGJhY2tCaW5kaW5nSW5kZXggKyA0OwotLy8gQmluZGluZyBpbmRleCBmb3IgVUJPJ3Mg
YXJndW1lbnQgYnVmZmVyCi1jb25zdGV4cHIgdWludDMyX3Qga1VCT0FyZ3VtZW50QnVmZmVyQmlu
ZGluZ0luZGV4ID0ga1NoYWRvd1NhbXBsZXJDb21wYXJlTW9kZXNCaW5kaW5nSW5kZXggKyAxOwot
Ci1jb25zdGV4cHIgdWludDMyX3Qga1N0ZW5jaWxNYXNrQWxsID0gMHhmZjsgIC8vIE9ubHkgOCBi
aXQgc3RlbmNpbCBpcyBzdXBwb3J0ZWQKLQogLy8gVGhpcyBzcGVjaWFsIGNvbnN0YW50IGlzIHVz
ZWQgdG8gaW5kaWNhdGUgdGhhdCBhIHBhcnRpY3VsYXIgdmVydGV4IGRlc2NyaXB0b3IncyBidWZm
ZXIgbGF5b3V0CiAvLyBpbmRleCBpcyB1bnVzZWQuCiBjb25zdGV4cHIgTVRMVmVydGV4U3RlcEZ1
bmN0aW9uIGtWZXJ0ZXhTdGVwRnVuY3Rpb25JbnZhbGlkID0KICAgICBzdGF0aWNfY2FzdDxNVExW
ZXJ0ZXhTdGVwRnVuY3Rpb24+KDB4ZmYpOwogCi1jb25zdGV4cHIgZmxvYXQga0VtdWxhdGVkQWxw
aGFWYWx1ZSA9IDEuMGY7Ci0KLWNvbnN0ZXhwciB1aW50MzJfdCBrT2NjbHVzaW9uUXVlcnlSZXN1
bHRTaXplID0gc2l6ZW9mKHVpbnQ2NF90KTsKLQogLy8gV29yay1hcm91bmQgdGhlIGVudW0gaXMg
bm90IGF2YWlsYWJsZSBvbiBtYWNPUwogI2lmIFRBUkdFVF9PU19PU1ggfHwgVEFSR0VUX09TX01B
Q0NBVEFMWVNUCiBjb25zdGV4cHIgTVRMQmxpdE9wdGlvbiBrQmxpdE9wdGlvblJvd0xpbmVhclBW
UlRDID0gTVRMQmxpdE9wdGlvbk5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbnN0YW50cy5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb25zdGFu
dHMuaAppbmRleCBhMjBiMmNkZjc0NGU2NDY0MTFmOWQ4YmZiNzlhZDJkMjE3NzAyMjcxLi4zYjRj
YjIzZmZiZmFhOWI1ODhlYzdjYjg1N2QzMDI5MmM2MzlmNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbnN0YW50
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfY29uc3RhbnRzLmgKQEAgLTI3LDYgKzI3LDEzIEBAIGNvbnN0ZXhwciB1aW50MzJf
dCBrTWF4UmVuZGVyVGFyZ2V0cyA9IDQ7CiBjb25zdGV4cHIgdWludDMyX3Qga01heFNoYWRlclVC
T3MgPSAxMjsKIGNvbnN0ZXhwciB1aW50MzJfdCBrTWF4VUJPU2l6ZSAgICA9IDE2Mzg0OwogCitj
b25zdGV4cHIgdWludDMyX3Qga01heFNoYWRlclhGQnMgPSBnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTOworCisvLyBUaGUgbWF4IHNpemUg
b2YgYSBidWZmZXIgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVtb3J5LgorLy8g
Tk9URShocWxlKTogVGhpcyBpcyBqdXN0IGEgaGludC4gVGhlcmUgaXMgbm8gb2ZmaWNpYWwgZG9j
dW1lbnQgb24gd2hhdCBpcyB0aGUgbWF4IGFsbG93ZWQgc2l6ZQorLy8gZm9yIHNoYXJlZCBtZW1v
cnkuCitjb25zdGV4cHIgc2l6ZV90IGtTaGFyZWRNZW1CdWZmZXJNYXhCdWZTaXplSGludCA9IDEy
OCAqIDEwMjQ7CisKIGNvbnN0ZXhwciBzaXplX3Qga0RlZmF1bHRBdHRyaWJ1dGVTaXplID0gNCAq
IHNpemVvZihmbG9hdCk7CiAKIC8vIE1ldGFsIGxpbWl0cwpAQCAtNDQsNiArNTEsNyBAQCBjb25z
dGV4cHIgdWludDMyX3Qga1VuaWZvcm1CdWZmZXJTZXR0aW5nT2Zmc2V0TWluQWxpZ25tZW50ID0g
MjU2OwogY29uc3RleHByIHVpbnQzMl90IGtVbmlmb3JtQnVmZmVyU2V0dGluZ09mZnNldE1pbkFs
aWdubWVudCA9IDQ7CiAjZW5kaWYKIGNvbnN0ZXhwciB1aW50MzJfdCBrSW5kZXhCdWZmZXJPZmZz
ZXRBbGlnbm1lbnQgICAgICAgPSA0OworY29uc3RleHByIHVpbnQzMl90IGtBcmd1bWVudEJ1ZmZl
ck9mZnNldEFsaWdubWVudCAgICA9IGtVbmlmb3JtQnVmZmVyU2V0dGluZ09mZnNldE1pbkFsaWdu
bWVudDsKIGNvbnN0ZXhwciB1aW50MzJfdCBrVGV4dHVyZVRvQnVmZmVyQmxpdHRpbmdBbGlnbm1l
bnQgPSAyNTY7CiAKIC8vIEZvbnQgZW5kIGJpbmRpbmcgbGltaXRzCkBAIC02Niw3ICs3NCwxNiBA
QCBjb25zdGV4cHIgdWludDMyX3Qga1NoYWRvd1NhbXBsZXJDb21wYXJlTW9kZXNCaW5kaW5nSW5k
ZXggPSBrVHJhbnNmb3JtRmVlZGJhY2tCaQogLy8gQmluZGluZyBpbmRleCBmb3IgVUJPJ3MgYXJn
dW1lbnQgYnVmZmVyCiBjb25zdGV4cHIgdWludDMyX3Qga1VCT0FyZ3VtZW50QnVmZmVyQmluZGlu
Z0luZGV4ID0ga1NoYWRvd1NhbXBsZXJDb21wYXJlTW9kZXNCaW5kaW5nSW5kZXggKyAxOwogCi1j
b25zdGV4cHIgdWludDMyX3Qga1N0ZW5jaWxNYXNrQWxsID0gMHhmZjsgIC8vIE9ubHkgOCBiaXRz
IHN0ZW5jaWwgaXMgc3VwcG9ydGVkCitjb25zdGV4cHIgdWludDMyX3Qga1N0ZW5jaWxNYXNrQWxs
ID0gMHhmZjsgIC8vIE9ubHkgOCBiaXQgc3RlbmNpbCBpcyBzdXBwb3J0ZWQKKworc3RhdGljIGNv
bnN0IGNoYXIgKiBrVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZyA9ICIgX191bmFzc2lnbmVkX2F0
dHJpYnV0ZV9fIjsKKworCitjb25zdGV4cHIgZmxvYXQga0VtdWxhdGVkQWxwaGFWYWx1ZSA9IDEu
MGY7CisKK2NvbnN0ZXhwciB1aW50MzJfdCBrT2NjbHVzaW9uUXVlcnlSZXN1bHRTaXplID0gc2l6
ZW9mKHVpbnQ2NF90KTsKKworCiAKIH0gIC8vIG5hbWVzcGFjZSBtdGwKIH0gIC8vIG5hbWVzcGFj
ZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210bF91dGlscy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMu
bW0KaW5kZXggMzVmNWJlZjQzMTAwZjExM2U0OTNkZDlkYjZlMGUyZmQ1NDYxNWEyYS4uMWY5YWQz
ZjE2ZDM1Y2U0MmE1MjI0Y2ViNjUxNGZkZGE1NGRiMDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX210
bF91dGlscy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfbXRsX3V0aWxzLm1tCkBAIC0xMCw2ICsxMCw3IEBACiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TaGFkZXJNdGwuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ19tdGxfdXRpbHMuaCIKKyNpbmNsdWRl
ICJjb21tb24vdXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMTQ1LDYgKzE0Niw0
NyBAQCBzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVjdGlvbiAqZ2V0UmVmbGVjdGlvbkZyb21Db21w
aWxlcihnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLAogICAgIHJldHVybiB0cmFuc2xhdG9yTWV0YWxE
aXJlY3QtPmdldFRyYW5zbGF0b3JNZXRhbFJlZmxlY3Rpb24oKTsKIH0KIAorc3RkOjpzdHJpbmcg
dXBkYXRlU2hhZGVyQXR0cmlidXRlcyhzdGQ6OnN0cmluZyBzaGFkZXJTb3VyY2VJbiwgY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlKQoreworICAgIC8vIEJ1aWxkIHN0cmluZyB0
byBhdHRyaWIgbWFwLgorICAgIGNvbnN0IGF1dG8gJiBwcm9ncmFtQXR0cmlidXRlcyA9IHByb2dy
YW1TdGF0ZS5nZXRQcm9ncmFtSW5wdXRzKCk7CisgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVh
bTsKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQzMl90PiBhdHRyaWJ1
dGVCaW5kaW5nczsKKyAgICBmb3IoYXV0byAmIGF0dHJpYnV0ZSA6IHByb2dyYW1BdHRyaWJ1dGVz
KQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJlZ3MgPSBnbDo6VmFyaWFibGVSZWdpc3RlckNv
dW50KGF0dHJpYnV0ZS50eXBlKTsKKyAgICAgICAgaWYocmVncyA+IDEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByZWdzOyBpKyspCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc3RyZWFtLnN0cigiIik7CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8
IGF0dHJpYnV0ZS5uYW1lIDw8ICJfIiA8PCBzdGQ6OnRvX3N0cmluZyhpKSA8PCBrVW5hc3NpZ25l
ZEF0dHJpYnV0ZVN0cmluZzsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVCaW5kaW5ncy5pbnNl
cnQoe3N0ZDo6c3RyaW5nKHN0cmVhbS5zdHIoKSksIGkrYXR0cmlidXRlLmxvY2F0aW9ufSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBzdHJlYW0uc3RyKCIiKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCBhdHRyaWJ1dGUubmFt
ZSA8PCBrVW5hc3NpZ25lZEF0dHJpYnV0ZVN0cmluZzsKKyAgICAgICAgICAgIGF0dHJpYnV0ZUJp
bmRpbmdzLmluc2VydCh7c3RkOjpzdHJpbmcoc3RyZWFtLnN0cigpKSxhdHRyaWJ1dGUubG9jYXRp
b259KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vUmV3cml0ZSBhdHRyaWJ1dGVzCisgICAg
c3RkOjpzdHJpbmcgb3V0cHV0U291cmNlID0gc2hhZGVyU291cmNlSW47CisgICAgZm9yKGF1dG8g
aXQgPSBhdHRyaWJ1dGVCaW5kaW5ncy5iZWdpbigpOyBpdCE9YXR0cmlidXRlQmluZGluZ3MuZW5k
KCk7ICsraXQpCisgICAgeworICAgICAgICBzdGQ6OnNpemVfdCBhdHRyaWJGb3VuZD0gb3V0cHV0
U291cmNlLmZpbmQoaXQtPmZpcnN0KTsKKyAgICAgICAgaWYoYXR0cmliRm91bmQgIT0gc3RkOjpz
dHJpbmc6Om5wb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cmVhbS5zdHIoIiIpOworICAg
ICAgICAgICAgc3RyZWFtIDw8ICJbW2F0dHJpYnV0ZSgiIDw8IGl0LT5zZWNvbmQgPDwgIildXSI7
CisgICAgICAgICAgICBvdXRwdXRTb3VyY2UgPSBvdXRwdXRTb3VyY2UucmVwbGFjZShhdHRyaWJG
b3VuZCtpdC0+Zmlyc3QubGVuZ3RoKCktc3RybGVuKGtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5n
KSwgc3RybGVuKGtVbmFzc2lnbmVkQXR0cmlidXRlU3RyaW5nKSwgc3RyZWFtLnN0cigpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3V0cHV0U291cmNlOworfQorCiBhbmdsZTo6UmVz
dWx0IEdsc2xhbmdHZXRNU0woY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmdsQ2FwcywKQEAg
LTE5MSw2ICsyMzMsMTcgQEAgYW5nbGU6OlJlc3VsdCBHbHNsYW5nR2V0TVNMKGNvbnN0IGdsOjpD
b250ZXh0ICpnbENvbnRleHQsCiAgICAgewogICAgICAgICAoKm1zbENvZGVPdXQpW3R5cGVdICAg
ICAgICAgICAgICAgICAgICAgICAgID0gc2hhZGVyU291cmNlc1t0eXBlXTsKICAgICAgICAgKCpt
c2xTaGFkZXJJbmZvT3V0KVt0eXBlXS5tZXRhbFNoYWRlclNvdXJjZSA9IHNoYWRlclNvdXJjZXNb
dHlwZV07CisgICAgICAgIHN0ZDo6c3RyaW5nIHNvdXJjZTsKKyAgICAgICAgaWYodHlwZSA9PSBn
bDo6U2hhZGVyVHlwZTo6VmVydGV4KQorICAgICAgICB7CisgICAgICAgICAgICBzb3VyY2UgPSB1
cGRhdGVTaGFkZXJBdHRyaWJ1dGVzKHNoYWRlclNvdXJjZXNbdHlwZV0sIHByb2dyYW1TdGF0ZSk7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzb3VyY2Ug
PSBzaGFkZXJTb3VyY2VzW3R5cGVdOworICAgICAgICB9CisgICAgICAgICgqbXNsQ29kZU91dClb
dHlwZV0gICAgICAgICAgICAgICAgICAgICAgICAgPSBzb3VyY2U7CisgICAgICAgICgqbXNsU2hh
ZGVySW5mb091dClbdHlwZV0ubWV0YWxTaGFkZXJTb3VyY2UgPSBzb3VyY2U7CiAgICAgICAgIGds
OjpTaGFkZXIgKnNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgID0gcHJvZ3JhbVN0YXRlLmdl
dEF0dGFjaGVkU2hhZGVyKHR5cGUpOwogICAgICAgICBzaDo6VHJhbnNsYXRvck1ldGFsUmVmbGVj
dGlvbiAqcmVmbGVjdGlvbiA9IGdldFJlZmxlY3Rpb25Gcm9tU2hhZGVyKHNoYWRlcik7CiAgICAg
ICAgIC8vIFJldHJpZXZlIGF1dG9tYXRpYyB0ZXh0dXJlIHNsb3QgYXNzaWdubWVudHMK
</data>

          </attachment>
      

    </bug>

</bugzilla>