<?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>237882</bug_id>
          
          <creation_ts>2022-03-15 01:38:37 -0700</creation_ts>
          <short_desc>[WebGPU] Implement sampler creation according to the spec</short_desc>
          <delta_ts>2022-03-16 20:57:15 -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>WebGPU</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>
          <dependson>237879</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851202</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 01:38:37 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851203</commentid>
    <comment_count>1</comment_count>
      <attachid>454680</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-15 01:40:43 -0700</bug_when>
    <thetext>Created attachment 454680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851836</commentid>
    <comment_count>2</comment_count>
      <attachid>454680</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-16 08:52:12 -0700</bug_when>
    <thetext>Comment on attachment 454680
Patch

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

&gt; Source/WebGPU/WebGPU/Sampler.mm:40
&gt; +    if (descriptor.lodMinClamp &lt; 0)

an edge case of edge cases:
Do we have a mechanism to prevent NaNs in the floats or do we need to validate those?
(those cause tricky failures to debug even if it&apos;s a content issue, so if validation rejects those, maybe it&apos;d be good use of time?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851844</commentid>
    <comment_count>3</comment_count>
      <attachid>454680</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-16 09:01:19 -0700</bug_when>
    <thetext>Comment on attachment 454680
Patch

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

&gt; Source/WebGPU/WebGPU/Sampler.mm:190
&gt; +    samplerDescriptor.maxAnisotropy = descriptor.maxAnisotropy;

this should be clamped?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852126</commentid>
    <comment_count>4</comment_count>
      <attachid>454680</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 20:51:08 -0700</bug_when>
    <thetext>Comment on attachment 454680
Patch

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

&gt;&gt; Source/WebGPU/WebGPU/Sampler.mm:40
&gt;&gt; +    if (descriptor.lodMinClamp &lt; 0)
&gt; 
&gt; an edge case of edge cases:
&gt; Do we have a mechanism to prevent NaNs in the floats or do we need to validate those?
&gt; (those cause tricky failures to debug even if it&apos;s a content issue, so if validation rejects those, maybe it&apos;d be good use of time?)

Yes, good catch. The spec says &quot;Return true if and only if all of the following conditions are satisfied: descriptor.lodMinClamp is greater than or equal to 0. \ descriptor.lodMaxClamp is greater than or equal to descriptor.lodMinClamp.&quot; so I think a careful reading of the spec already catches NaN (those comparisons will be false in that case). My code, however, gets this wrong, since I&apos;ve inverted the conditionals. I&apos;ll check for NaN explicitly.

&gt;&gt; Source/WebGPU/WebGPU/Sampler.mm:190
&gt;&gt; +    samplerDescriptor.maxAnisotropy = descriptor.maxAnisotropy;
&gt; 
&gt; this should be clamped?

Yes, the Metal spec https://developer.apple.com/documentation/metal/mtlsamplerdescriptor/1516164-maxanisotropy?language=objc says &quot;Values must be between 1 and 16, inclusive.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852127</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 20:56:10 -0700</bug_when>
    <thetext>Committed r291387 (248518@trunk): &lt;https://commits.webkit.org/248518@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852129</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 20:57:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/90408334&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454680</attachid>
            <date>2022-03-15 01:40:43 -0700</date>
            <delta_ts>2022-03-16 08:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>10883</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGFiYTBmZmM4ZjVkNzlmMzg1N2U4NGFhYzFlODJmNjE4MzVjZWZkZDcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUdWUgTWFyIDE1
IDAxOjM5OjU2IDIwMjIgLTA3MDAKCiAgICBQYXJ0IDEyCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCAyYzgwOGM1ZmZk
ZWMuLjE0ZDBmMTA1YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMi0wMy0xNSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJH
UFVdIEltcGxlbWVudCBzYW1wbGVyIGNyZWF0aW9uIGFjY29yZGluZyB0byB0aGUgc3BlYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IERl
dmljZTo6Y3JlYXRlU2FtcGxlcigpIGFjY29yZGluZyB0byB0aGUgYWxnb3JpdGhtIGluIHRoZSBz
cGVjLiBUaGVyZQorICAgICAgICBhcmUgYSBmZXcgdGhpbmdzIHdoaWNoIHRoZSBzcGVjIGxpc3Rz
IHdoaWNoIHdlIGNhbid0IGRvIHlldCAobGlrZSBtYWtpbmcgb2JqZWN0cworICAgICAgICBpbnZh
bGlkKSwgc28gdGhvc2UgdGhpbmdzIGFyZSBsZWZ0IHdpdGggRklYTUVzLiBFdmVyeSBzdGVwIGlz
IGxpc3RlZCB3aXRoIGxpbmtzCisgICAgICAgIHRvIHRoZSBzcGVjIHdoZXJlIGFwcHJvcHJpYXRl
LCBhbmQgd2l0aCBxdW90ZXMgdG8gdGhlIHNwZWMgZGVzY3JpYmluZyB3aGF0IGlzCisgICAgICAg
IGJlaW5nIGltcGxlbWVudGVkLgorCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAg
ICAgKFdlYkdQVTo6QnVmZmVyOjptYXBBc3luYyk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQ
aXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6Y3JlYXRlQ29uc3RhbnRWYWx1ZXMpOgorICAg
ICAgICAqIFdlYkdQVS9TYW1wbGVyLmg6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmRlc2NyaXB0b3IgY29uc3QpOgorICAgICAg
ICAoV2ViR1BVOjpTYW1wbGVyOjppc0NvbXBhcmlzb24gY29uc3QpOgorICAgICAgICAoV2ViR1BV
OjpTYW1wbGVyOjppc0ZpbHRlcmluZyBjb25zdCk6CisgICAgICAgICogV2ViR1BVL1NhbXBsZXIu
bW06CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlQ3JlYXRlU2FtcGxlcik6CisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6
OlNhbXBsZXIpOgorCiAyMDIyLTAzLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSW1wbGVtZW50IGZpcnN0IGRyYWZ0IG9mIGRl
YnVnIGNvbW1hbmRzIGFjY29yZGluZyB0byB0aGUgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQnVmZmVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCmlu
ZGV4IDUxYTNiYzk5ZDI2NS4uZTQ5Zjc3OTJmODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CdWZmZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBA
IC0zMjYsNyArMzI2LDYgQEAgdm9pZCBCdWZmZXI6Om1hcEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3Mg
bW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdURjo6RnUKICAgICAgICAgICAgIGNh
bGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1c19EZXZpY2VMb3N0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgY2FsbGJhY2soV0dQVUJ1ZmZlck1hcEFzeW5jU3RhdHVzX0Vycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
cHV0ZVBpcGVsaW5lLm1tCmluZGV4IDQ1MTA4ZDYwMDg1Yy4uYTgyYjgzMTc0YjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0KKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCkBAIC0xMDAsOCArMTAwLDYgQEAgc3Rh
dGljIE1UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgKmNyZWF0ZUNvbnN0YW50VmFsdWVzKHVpbnQz
Ml90IGNvbnN0YW50Q291bnQsIGMKICAgICAgICAgICAgIFtjb25zdGFudFZhbHVlcyBzZXRDb25z
dGFudFZhbHVlOiZ2YWx1ZSB0eXBlOk1UTERhdGFUeXBlVUludCB3aXRoTmFtZTpzcGVjaWFsaXph
dGlvbkNvbnN0YW50Lm1hbmdsZWROYW1lXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gY29uc3RhbnRWYWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TYW1wbGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgK
aW5kZXggM2NkNWZlZjM0OTFhLi41Nzk5M2NjMmE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgK
QEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBTYW1wbGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8U2FtcGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKGlkPE1UTFNhbXBsZXJTdGF0
ZT4gc2FtcGxlclN0YXRlKQorICAgIHN0YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKGlkPE1UTFNh
bXBsZXJTdGF0ZT4gc2FtcGxlclN0YXRlLCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYW1wbGVyKHNh
bXBsZXJTdGF0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTYW1wbGVyKHNhbXBs
ZXJTdGF0ZSwgZGVzY3JpcHRvcikpOwogICAgIH0KIAogICAgIH5TYW1wbGVyKCk7CkBAIC00NCwx
MSArNDQsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiAg
ICAgaWQ8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZXJTdGF0ZTsgfQorICAgIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQorICAgIC8vICJTZXQgcy5bW2lzQ29t
cGFyaXNvbl1dIHRvIGZhbHNlIGlmIHRoZSBjb21wYXJlIGF0dHJpYnV0ZSBvZiBzLltbZGVzY3Jp
cHRvcl1dIGlzIG51bGwgb3IgdW5kZWZpbmVkLiBPdGhlcndpc2UsIHNldCBpdCB0byB0cnVlLiIK
KyAgICBib29sIGlzQ29tcGFyaXNvbigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyaXB0b3IoKS5jb21w
YXJlICE9IFdHUFVDb21wYXJlRnVuY3Rpb25fVW5kZWZpbmVkOyB9CisgICAgLy8gIlNldCBzLltb
aXNGaWx0ZXJpbmddXSB0byBmYWxzZSBpZiBub25lIG9mIG1pbkZpbHRlciwgbWFnRmlsdGVyLCBv
ciBtaXBtYXBGaWx0ZXIgaGFzIHRoZSB2YWx1ZSBvZiAibGluZWFyIi4gT3RoZXJ3aXNlLCBzZXQg
aXQgdG8gdHJ1ZS4iCisgICAgYm9vbCBpc0ZpbHRlcmluZygpIGNvbnN0IHsgcmV0dXJuIGRlc2Ny
aXB0b3IoKS5taW5GaWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyIHx8IGRlc2NyaXB0b3Io
KS5tYWdGaWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyIHx8IGRlc2NyaXB0b3IoKS5taXBt
YXBGaWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyOyB9CiAKIHByaXZhdGU6Ci0gICAgU2Ft
cGxlcihpZDxNVExTYW1wbGVyU3RhdGU+KTsKKyAgICBTYW1wbGVyKGlkPE1UTFNhbXBsZXJTdGF0
ZT4sIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcik7CiAKICAgICBpZDxN
VExTYW1wbGVyU3RhdGU+IG1fc2FtcGxlclN0YXRlIHsgbmlsIH07CisKKyAgICBXR1BVU2FtcGxl
ckRlc2NyaXB0b3IgbV9kZXNjcmlwdG9yIHsgfTsgLy8gIlRoZSBHUFVTYW1wbGVyRGVzY3JpcHRv
ciB3aXRoIHdoaWNoIHRoZSBHUFVTYW1wbGVyIHdhcyBjcmVhdGVkLiIKKyAgICAvLyAiW1tpc0Nv
bXBhcmlzb25dXSBvZiB0eXBlIGJvb2xlYW4uIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyBpdCdzIGlt
cGxlbWVudGVkIGluIGlzQ29tcGFyaXNvbigpLgorICAgIC8vICJbW2lzRmlsdGVyaW5nXV0gb2Yg
dHlwZSBib29sZWFuLiIgVGhpcyBpcyB1bm5lY2Vzc2FyeTsgaXQncyBpbXBsZW1lbnRlZCBpbiBp
c0ZpbHRlcmluZygpLgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5tbQppbmRleCAwY2NlNzljZDE5NWIuLjgyOTNhMDgwNmQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
YW1wbGVyLm1tCkBAIC0zMCwxNCArMzAsMTc3IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitz
dGF0aWMgYm9vbCB2YWxpZGF0ZUNyZWF0ZVNhbXBsZXIoRGV2aWNlJiwgY29uc3QgV0dQVVNhbXBs
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXZhbGlkYXRpbmctZ3B1c2FtcGxlcmRlc2NyaXB0
b3IKKworICAgIC8vIEZJWE1FOiAiZGV2aWNlIGlzIHZhbGlkLiIKKworICAgIC8vICJkZXNjcmlw
dG9yLmxvZE1pbkNsYW1wIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiIKKyAgICBpZiAo
ZGVzY3JpcHRvci5sb2RNaW5DbGFtcCA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vICJkZXNjcmlwdG9yLmxvZE1heENsYW1wIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBk
ZXNjcmlwdG9yLmxvZE1pbkNsYW1wLiIKKyAgICBpZiAoZGVzY3JpcHRvci5sb2RNYXhDbGFtcCA8
IGRlc2NyaXB0b3IubG9kTWluQ2xhbXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
ICJkZXNjcmlwdG9yLm1heEFuaXNvdHJvcHkgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEu
IgorICAgIGlmIChkZXNjcmlwdG9yLm1heEFuaXNvdHJvcHkgPCAxKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyAiV2hlbiBkZXNjcmlwdG9yLm1heEFuaXNvdHJvcHkgaXMgZ3JlYXRl
ciB0aGFuIDEiCisgICAgaWYgKGRlc2NyaXB0b3IubWF4QW5pc290cm9weSA+IDEpIHsKKyAgICAg
ICAgLy8gImRlc2NyaXB0b3IubWFnRmlsdGVyLCBkZXNjcmlwdG9yLm1pbkZpbHRlciwgYW5kIGRl
c2NyaXB0b3IubWlwbWFwRmlsdGVyIG11c3QgYmUgZXF1YWwgdG8gImxpbmVhciIuIgorICAgICAg
ICBpZiAoZGVzY3JpcHRvci5tYWdGaWx0ZXIgIT0gV0dQVUZpbHRlck1vZGVfTGluZWFyCisgICAg
ICAgICAgICB8fCBkZXNjcmlwdG9yLm1pbkZpbHRlciAhPSBXR1BVRmlsdGVyTW9kZV9MaW5lYXIK
KyAgICAgICAgICAgIHx8IGRlc2NyaXB0b3IubWlwbWFwRmlsdGVyICE9IFdHUFVGaWx0ZXJNb2Rl
X0xpbmVhcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogUmVmUHRyPFNhbXBsZXI+IERldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBX
R1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIHJldHVybiBTYW1wbGVyOjpjcmVhdGUobmlsKTsKKyAgICBpZiAoZGVz
Y3JpcHRvci5uZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZXNhbXBs
ZXIKKworICAgIC8vICJJZiB2YWxpZGF0aW5nIEdQVVNhbXBsZXJEZXNjcmlwdG9yKHRoaXMsIGRl
c2NyaXB0b3IpIHJldHVybnMgZmFsc2U6IgorICAgIGlmICghdmFsaWRhdGVDcmVhdGVTYW1wbGVy
KCp0aGlzLCBkZXNjcmlwdG9yKSkgeworICAgICAgICAvLyBGSVhNRTogIkdlbmVyYXRlIGEgdmFs
aWRhdGlvbiBlcnJvci4iCisKKyAgICAgICAgLy8gIkNyZWF0ZSBhIG5ldyBpbnZhbGlkIEdQVVNh
bXBsZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgTVRMU2FtcGxlckRlc2NyaXB0b3IgKnNhbXBsZXJEZXNjcmlwdG9yID0gW01U
TFNhbXBsZXJEZXNjcmlwdG9yIG5ld107CisKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuYWRkcmVz
c01vZGVVKSB7CisgICAgY2FzZSBXR1BVQWRkcmVzc01vZGVfUmVwZWF0OgorICAgICAgICBzYW1w
bGVyRGVzY3JpcHRvci5yQWRkcmVzc01vZGUgPSBNVExTYW1wbGVyQWRkcmVzc01vZGVSZXBlYXQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUFkZHJlc3NNb2RlX01pcnJvclJlcGVhdDoK
KyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IuckFkZHJlc3NNb2RlID0gTVRMU2FtcGxlckFkZHJl
c3NNb2RlTWlycm9yUmVwZWF0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVBZGRyZXNz
TW9kZV9DbGFtcFRvRWRnZToKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IuckFkZHJlc3NNb2Rl
ID0gTVRMU2FtcGxlckFkZHJlc3NNb2RlQ2xhbXBUb0VkZ2U7CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHN3aXRjaCAo
ZGVzY3JpcHRvci5hZGRyZXNzTW9kZVYpIHsKKyAgICBjYXNlIFdHUFVBZGRyZXNzTW9kZV9SZXBl
YXQ6CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLnNBZGRyZXNzTW9kZSA9IE1UTFNhbXBsZXJB
ZGRyZXNzTW9kZVJlcGVhdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVQWRkcmVzc01v
ZGVfTWlycm9yUmVwZWF0OgorICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci5zQWRkcmVzc01vZGUg
PSBNVExTYW1wbGVyQWRkcmVzc01vZGVNaXJyb3JSZXBlYXQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV0dQVUFkZHJlc3NNb2RlX0NsYW1wVG9FZGdlOgorICAgICAgICBzYW1wbGVyRGVzY3Jp
cHRvci5zQWRkcmVzc01vZGUgPSBNVExTYW1wbGVyQWRkcmVzc01vZGVDbGFtcFRvRWRnZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgc3dpdGNoIChkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVykgeworICAgIGNhc2UgV0dQ
VUFkZHJlc3NNb2RlX1JlcGVhdDoKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IudEFkZHJlc3NN
b2RlID0gTVRMU2FtcGxlckFkZHJlc3NNb2RlUmVwZWF0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdHUFVBZGRyZXNzTW9kZV9NaXJyb3JSZXBlYXQ6CisgICAgICAgIHNhbXBsZXJEZXNjcmlw
dG9yLnRBZGRyZXNzTW9kZSA9IE1UTFNhbXBsZXJBZGRyZXNzTW9kZU1pcnJvclJlcGVhdDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVQWRkcmVzc01vZGVfQ2xhbXBUb0VkZ2U6CisgICAg
ICAgIHNhbXBsZXJEZXNjcmlwdG9yLnRBZGRyZXNzTW9kZSA9IE1UTFNhbXBsZXJBZGRyZXNzTW9k
ZUNsYW1wVG9FZGdlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IubWFnRmlsdGVyKSB7
CisgICAgY2FzZSBXR1BVRmlsdGVyTW9kZV9OZWFyZXN0OgorICAgICAgICBzYW1wbGVyRGVzY3Jp
cHRvci5tYWdGaWx0ZXIgPSBNVExTYW1wbGVyTWluTWFnRmlsdGVyTmVhcmVzdDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXR1BVRmlsdGVyTW9kZV9MaW5lYXI6CisgICAgICAgIHNhbXBsZXJE
ZXNjcmlwdG9yLm1hZ0ZpbHRlciA9IE1UTFNhbXBsZXJNaW5NYWdGaWx0ZXJMaW5lYXI7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIHN3aXRjaCAoZGVzY3JpcHRvci5taW5GaWx0ZXIpIHsKKyAgICBjYXNlIFdHUFVGaWx0
ZXJNb2RlX05lYXJlc3Q6CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1pbkZpbHRlciA9IE1U
TFNhbXBsZXJNaW5NYWdGaWx0ZXJOZWFyZXN0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdH
UFVGaWx0ZXJNb2RlX0xpbmVhcjoKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWluRmlsdGVy
ID0gTVRMU2FtcGxlck1pbk1hZ0ZpbHRlckxpbmVhcjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3dpdGNoIChkZXNj
cmlwdG9yLm1pcG1hcEZpbHRlcikgeworICAgIGNhc2UgV0dQVUZpbHRlck1vZGVfTmVhcmVzdDoK
KyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWlwRmlsdGVyID0gTVRMU2FtcGxlck1pcEZpbHRl
ck5lYXJlc3Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUZpbHRlck1vZGVfTGluZWFy
OgorICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci5taXBGaWx0ZXIgPSBNVExTYW1wbGVyTWlwRmls
dGVyTGluZWFyOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBzYW1wbGVyRGVzY3JpcHRvci5sb2RNaW5DbGFtcCA9IGRl
c2NyaXB0b3IubG9kTWluQ2xhbXA7CisKKyAgICBzYW1wbGVyRGVzY3JpcHRvci5sb2RNYXhDbGFt
cCA9IGRlc2NyaXB0b3IubG9kTWF4Q2xhbXA7CisKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuY29t
cGFyZSkgeworICAgIGNhc2UgV0dQVUNvbXBhcmVGdW5jdGlvbl9VbmRlZmluZWQ6CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV0dQVUNvbXBhcmVGdW5jdGlvbl9OZXZlcjoKKyAgICAgICAgc2Ft
cGxlckRlc2NyaXB0b3IuY29tcGFyZUZ1bmN0aW9uID0gTVRMQ29tcGFyZUZ1bmN0aW9uTmV2ZXI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUNvbXBhcmVGdW5jdGlvbl9MZXNzOgorICAg
ICAgICBzYW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSBNVExDb21wYXJlRnVuY3Rp
b25MZXNzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVDb21wYXJlRnVuY3Rpb25fTGVz
c0VxdWFsOgorICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSBNVExD
b21wYXJlRnVuY3Rpb25MZXNzRXF1YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUNv
bXBhcmVGdW5jdGlvbl9HcmVhdGVyOgorICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci5jb21wYXJl
RnVuY3Rpb24gPSBNVExDb21wYXJlRnVuY3Rpb25HcmVhdGVyOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdHUFVDb21wYXJlRnVuY3Rpb25fR3JlYXRlckVxdWFsOgorICAgICAgICBzYW1wbGVy
RGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSBNVExDb21wYXJlRnVuY3Rpb25HcmVhdGVyRXF1
YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUNvbXBhcmVGdW5jdGlvbl9FcXVhbDoK
KyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IuY29tcGFyZUZ1bmN0aW9uID0gTVRMQ29tcGFyZUZ1
bmN0aW9uRXF1YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVUNvbXBhcmVGdW5jdGlv
bl9Ob3RFcXVhbDoKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IuY29tcGFyZUZ1bmN0aW9uID0g
TVRMQ29tcGFyZUZ1bmN0aW9uTm90RXF1YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQ
VUNvbXBhcmVGdW5jdGlvbl9BbHdheXM6CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLmNvbXBh
cmVGdW5jdGlvbiA9IE1UTENvbXBhcmVGdW5jdGlvbkFsd2F5czsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc2FtcGxl
ckRlc2NyaXB0b3IubWF4QW5pc290cm9weSA9IGRlc2NyaXB0b3IubWF4QW5pc290cm9weTsKKwor
ICAgIHNhbXBsZXJEZXNjcmlwdG9yLmxhYmVsID0gZGVzY3JpcHRvci5sYWJlbCA/IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ1N0cmluZzpkZXNjcmlwdG9yLmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSA6IG5pbDsKKworICAgIGlkPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxlclN0YXRl
ID0gW21fZGV2aWNlIG5ld1NhbXBsZXJTdGF0ZVdpdGhEZXNjcmlwdG9yOnNhbXBsZXJEZXNjcmlw
dG9yXTsKKyAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gU2FtcGxlcjo6Y3JlYXRlKHNhbXBsZXJTdGF0ZSwgZGVzY3JpcHRvcik7CiB9
CiAKLVNhbXBsZXI6OlNhbXBsZXIoaWQ8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUpCitT
YW1wbGVyOjpTYW1wbGVyKGlkPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxlclN0YXRlLCBjb25zdCBX
R1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgOiBtX3NhbXBsZXJTdGF0ZShz
YW1wbGVyU3RhdGUpCisgICAgLCBtX2Rlc2NyaXB0b3IoZGVzY3JpcHRvcikKIHsKIH0KIAo=
</data>
<flag name="review"
          id="482400"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
          </attachment>
      

    </bug>

</bugzilla>