<?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>126548</bug_id>
          
          <creation_ts>2014-01-06 16:52:24 -0800</creation_ts>
          <short_desc>[WebGL] Be safer about toggling OpenGL state by using a scoped object to control setting lifetime</short_desc>
          <delta_ts>2014-01-07 06:15:24 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>p.jacquemart</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964809</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-06 16:52:24 -0800</bug_when>
    <thetext>The current WebGL code has a number of places where the same code snippets are used:

    GLboolean isScissorEnabled = ::glIsEnabled(GL_SCISSOR_TEST);
    ::glDisable(GL_SCISSOR_TEST);

[... other code ... ]

    if (isScissorEnabled)
        ::glEnable(GL_SCISSOR_TEST);


These lines are repeated for GL_DITHER and other flags. Sometimes there is a considerable amount of code between the disabling (or enabling) of a flag, and returning it to its initial state before leaving the method. If early returns are added to any of this code, improper OpenGL state will be retained in the context, resulting in improper rendering.

This patch adds a new helper class &quot;TemporaryOpenGLSetting&quot; that does the following:

1. Ensures the setting is in the proper state upon construction.
2. Returns the setting to its original state when the object goes out of scope.

This logic is based on our TemporaryChange&lt;&gt; template (though we do not need a template in this instance, since the glEnable/glDisable logic does not support anything besides a GLenum argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964813</commentid>
    <comment_count>1</comment_count>
      <attachid>220471</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-06 16:59:37 -0800</bug_when>
    <thetext>Created attachment 220471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964817</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-06 17:02:14 -0800</bug_when>
    <thetext>Attachment 220471 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebCore/PlatformEfl.cmake&apos;, u&apos;Source/WebCore/PlatformGTK.cmake&apos;, u&apos;Source/WebCore/PlatformNix.cmake&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp&apos;, u&apos;Source/WebCore/platform/graphics/opengl/TemporaryOpenGLSetting.cpp&apos;, u&apos;Source/WebCore/platform/graphics/opengl/TemporaryOpenGLSetting.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/platform/graphics/opengl/TemporaryOpenGLSetting.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/TemporaryOpenGLSetting.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 10 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964818</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-06 17:04:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 220471 [details] did not pass style-queue:
&gt; ERROR: Source/WebCore/platform/graphics/opengl/TemporaryOpenGLSetting.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]

style-bot is going crazy.  Which is it, style-bot? Should the method implementation (which should have 0 spaces) actually have 8 or 12 spaces?

Buggy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964822</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-06 17:09:16 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 220471 [details] did not pass style-queue:
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:301:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:302:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]

Filed Bug 126554 about this craziness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964829</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-06 17:45:38 -0800</bug_when>
    <thetext>Committed r161389: &lt;http://trac.webkit.org/changeset/161389&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220471</attachid>
            <date>2014-01-06 16:59:37 -0800</date>
            <delta_ts>2014-01-06 17:18:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126548-20140106165936.patch</filename>
            <type>text/plain</type>
            <size>24239</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0LTAxLTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0gQmUgc2FmZXIg
YWJvdXQgdG9nZ2xpbmcgT3BlbkdMIHN0YXRlIGJ5IHVzaW5nIGEgc2NvcGVkIG9iamVjdCB0byBj
b250cm9sIHNldHRpbmcgbGlmZXRpbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjY1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgaXMgbm8gY2hhbmdlIGlu
IGJlaGF2aW9yLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogVXBkYXRlZCB0byBi
dWlsZCBuZXcgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBmaWxlcy4KKyAgICAgICAgKiBQbGF0Zm9y
bUJsYWNrQmVycnkuY21ha2U6IERpdHRvCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERp
dHRvCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvCisgICAgICAgICogUGxhdGZv
cm1OaXguY21ha2U6IERpdHRvCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvajogRGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnM6IERpdHRvCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVz
b2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSk6IFVzZSBuZXcgb2JqZWN0LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOiBE
aXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xT
ZXR0aW5nLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZW1wb3JhcnlPcGVuR0xTZXR0
aW5nOjpUZW1wb3JhcnlPcGVuR0xTZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBvcmFy
eU9wZW5HTFNldHRpbmc6On5UZW1wb3JhcnlPcGVuR0xTZXR0aW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oOiBBZGRlZC4KKwog
MjAxNC0wMS0wNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ1NTIFJlZ2lvbnNdW0NTUyBTaGFwZXNdIEFTU0VSVElPTiBGQUlMRUQ6IG1fc2VnbWVudFJh
bmdlcy5zaXplKCkgPCBtX3NlZ21lbnRzLnNpemUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01Mzg1LDYgKzUzODUsOCBAQCB3ZWJjb3JlX3Bs
YXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5n
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5
LmNtYWtlCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNr
QmVycnkuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcsNyBAQCBpZiAoRU5BQkxF
X1dFQkdMKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMRVMuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogICAgICkKIGVuZGlmICgpCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCw3IEBA
IGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKIAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMRVMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU5peC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU5peC5jbWFr
ZQkocmV2aXNpb24gMTYxMzgyKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1OaXguY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3Bl
bkdMU2V0dGluZy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2MTM4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0MzMs
NiArNzQzMyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xvcGVuZ2xcR0xQbGF0Zm9ybVN1cmZhY2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsXEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW5nbFxHcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFxUZW1wb3JhcnlPcGVuR0xTZXR0
aW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHRleG1hcFxjb29yZGluYXRlZFxBcmVhQWxsb2NhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRleG1hcFxjb29yZGluYXRlZFxDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAiIC8+CkBAIC0yMTEzNSw0ICsyMTEzNiw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0
ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1
aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Q
cm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHJldmlzaW9uIDE2MTM4MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNjgxNCw2ICs2
ODE0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9w
ZW5nbFxHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAiPgogICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFxUZW1wb3JhcnlP
cGVuR0xTZXR0aW5nLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXG9wZW5n
bDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFnZVxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAiPgogICAgICAgPEZpbHRlcj5w
YWdlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjEzODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5NjYsOSArMTk2Niw5IEBACiAJCTVERjdGNUMyMEYwMUY5MkEwMDUyNkI0
QiAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODBFRjA5RDEyQjIwMDAwRTYxRDcgLyog
Q1NTUHJvcGVydHlOYW1lcy5oICovOyB9OwogCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5MzcgLyog
U2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3Bw
ICovOyB9OwogCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzhCQjBE
MTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi87IH07CisJCTVERkVCQUI3MTg1
OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVERkVCQUI2MTg1OTJCNkQwMEM3NUJFQiAvKiBX
ZWJLaXRBdmFpbGFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1RjJEQkJFOTE3OEUzQzgxMDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZv
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUYy
REJCRTcxNzhFMzMyRDAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mb01hYy5tbSAqLzsgfTsKIAkJ
NUZBOTA0Q0ExNzhFNjFGNTAwNEM4QTJEIC8qIENlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUYyREJCRTgxNzhFMzM2OTAwMTQx
NDg2IC8qIENlcnRpZmljYXRlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTVERkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFp
bGFiaWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVERkVCQUI2MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RkM3REMyNkNGRTI1
NjMyMDBCODVBRTQgLyogSlNFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUZDN0RDMjZDRkUyNTYzMjAwQjg1QUU1IC8qIEpTRXZlbnRU
YXJnZXQuaCAqLzsgfTsKIAkJNUZFMUQyOTIxNzhGRDFGMzAwMUFBM0MzIC8qIFNlY3VyaXR5LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVGRTFEMjkxMTc4RkQxRjMwMDFBQTNDMyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJ
CTYyNkNERTBFMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2aWdhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MjZDREUwQzExNDA0MjRD
MDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24uY3BwICovOyB9OwpAQCAtMjIwNSw2ICsyMjA1
LDcgQEAKIAkJN0ExRjJCNTIxMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTFGMkI1MTEy
NkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50LmNwcCAqLzsgfTsKIAkJN0EyNDU4N0Ix
MDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAv
KiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi87IH07CiAJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBB
QSAvKiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFn
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0EyOUJBNkExODdCN0MxRDAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EyOUJBNjkxODdC
NzgxQzAwRjI5Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3BwICovOyB9OwogCQk3QTU0
ODU3RjE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RDE0RTAyRDUxMDA2QUUw
NUEgLyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgKi87IH07CiAJCTdBNTQ4NTgwMTRFMDJENTEwMDZB
RTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlz
dG9yeS5oICovOyB9OwogCQk3QTU0ODgxNzE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBw
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU0
ODgxNTE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBwb3J0LmggKi87IH07CkBAIC04NzY3
LDkgKzg3NjgsOSBAQAogCQk1REE5N0VDQzE2OEU3ODdCMDAwRTM2NzYgLyogU3lzdGVtVmVyc2lv
bk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZl
cnNpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVB
NjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVHJhbnNmb3JtU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVNvdXJjZUxpYnhz
bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1REZFQkFCNjE4NTkyQjZEMDBD
NzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RjJEQkJFNzE3OEUzMzJEMDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2VydGlmaWNhdGVJbmZvTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYg
LyogQ2VydGlmaWNhdGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENl
cnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1REZFQkFCNjE4
NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRhcmdldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RkUxRDI5MTE3OEZEMUYzMDAxQUEzQzMgLyogU2VjdXJp
dHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGgg
PSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IFNES1JPT1Q7IH07CiAJCTYyNkNERTBDMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2
aWdhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGF0aWFs
TmF2aWdhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MDM2LDYgKzkw
MzcsOCBAQAogCQk3QTFGMkI1MTEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBB
QSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBMjQ1ODdBMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JET01BZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTI5QkE2NzE4N0I3MzIyMDBGMjlDRUIgLyogVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1w
b3JhcnlPcGVuR0xTZXR0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMjlC
QTY5MTg3Qjc4MUMwMEYyOUNFQiAvKiBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTU0ODU3RDE0RTAyRDUxMDA2QUUwNUEg
LyogSW5zcGVjdG9ySGlzdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNwZWN0b3JIaXN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0E1NDg1N0UxNEUwMkQ1MTAwNkFFMDVBIC8qIEluc3BlY3Rvckhpc3RvcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySGlzdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTU0ODgxNTE0RTQzMkExMDA2QUUwNUEgLyogRE9NUGF0Y2hTdXBw
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVBhdGNoU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4NjMsNiArMjE4NjYsOCBAQAogCQlG
QkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3BlbmdsICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QTI5QkE2OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi8sCisJCQkJN0EyOUJBNjcxODdCNzMyMjAwRjI5Q0VC
IC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCAqLywKIAkJCQk2RTY3RDJBNDEyODBFOEE0MDA4
NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLywKIAkJCQk2RTY3RDJBNTEyODBFOEE0
MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8sCiAJCQkJNDREQUI1QUYxNUE2MjM1
ODAwOTdDMUU0IC8qIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAgKi8sCkBAIC0yNTg1MCw2
ICsyNTg1NSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3QTI5QkE2QTE4N0I3QzFE
MDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJ
bk9uZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkNERDJGMjExMDNEQTY2MDA2ODA1MjEgLyog
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlRlbXBvcmFyeU9w
ZW5HTFNldHRpbmcuaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjc3RyaW5n
PgpAQCAtMTYxLDExICsxNjIsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJP
cyhjb25zCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc29sdmVNdWx0aXNhbXBsaW5nSWZO
ZWNlc3NhcnkoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHTGJvb2xlYW4gaXNTY2lzc29y
RW5hYmxlZCA9IDo6Z2xJc0VuYWJsZWQoR0xfU0NJU1NPUl9URVNUKTsKLSAgICA6OmdsRGlzYWJs
ZShHTF9TQ0lTU09SX1RFU1QpOwotICAgIEdMYm9vbGVhbiBpc0RpdGhlckVuYWJsZWQgPSA6Omds
SXNFbmFibGVkKEdMX0RJVEhFUik7Ci0gICAgOjpnbERpc2FibGUoR0xfRElUSEVSKTsKLSAgICAK
KyAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFNjaXNzb3IoR0xfU0NJU1NPUl9URVNU
LCBHTF9GQUxTRSk7CisgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWREaXRoZXIoR0xf
U0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CisKICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAKQEAgLTE3NCwx
MSArMTczLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzb2x2ZU11bHRpc2FtcAogICAg
ICAgICByZXNvbHZlUmVjdCA9IEludFJlY3QoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVu
dEhlaWdodCk7CiAKICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHJlc29sdmVSZWN0LngoKSwg
cmVzb2x2ZVJlY3QueSgpLCByZXNvbHZlUmVjdC5tYXhYKCksIHJlc29sdmVSZWN0Lm1heFkoKSwg
cmVzb2x2ZVJlY3QueCgpLCByZXNvbHZlUmVjdC55KCksIHJlc29sdmVSZWN0Lm1heFgoKSwgcmVz
b2x2ZVJlY3QubWF4WSgpLCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotCi0gICAg
aWYgKGlzU2Npc3NvckVuYWJsZWQpCi0gICAgICAgIDo6Z2xFbmFibGUoR0xfU0NJU1NPUl9URVNU
KTsKLSAgICBpZiAoaXNEaXRoZXJFbmFibGVkKQotICAgICAgICA6OmdsRW5hYmxlKEdMX0RJVEhF
Uik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxNjEzODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlRlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCIKICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUg
PHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmll
dy5oPgpAQCAtMTk2LDEwICsxOTcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwcmVwYXJl
VGV4dHVyZSgpCiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIEdMYm9vbGVhbiBp
c1NjaXNzb3JFbmFibGVkID0gOjpnbElzRW5hYmxlZChHTF9TQ0lTU09SX1RFU1QpOwotICAgIDo6
Z2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgR0xib29sZWFuIGlzRGl0aGVyRW5hYmxl
ZCA9IDo6Z2xJc0VuYWJsZWQoR0xfRElUSEVSKTsKLSAgICA6OmdsRGlzYWJsZShHTF9ESVRIRVIp
OworICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkU2Npc3NvcihHTF9TQ0lTU09SX1RF
U1QsIEdMX0ZBTFNFKTsKKyAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZERpdGhlcihH
TF9TQ0lTU09SX1RFU1QsIEdMX0ZBTFNFKTsKICAgICAKICAgICBpZiAobV9hdHRycy5hbnRpYWxp
YXMpCiAgICAgICAgIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKQEAgLTIxNCwx
MSArMjEzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9zdGF0ZS5ib3VuZEZCTyk7CiAgICAgOjpnbEZpbmlzaCgpOwogICAgIG1fbGF5ZXJDb21w
b3NpdGVkID0gdHJ1ZTsKLQotICAgIGlmIChpc1NjaXNzb3JFbmFibGVkKQotICAgICAgICA6Omds
RW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgaWYgKGlzRGl0aGVyRW5hYmxlZCkKLSAgICAg
ICAgOjpnbEVuYWJsZShHTF9ESVRIRVIpOwogfQogI2VuZGlmCiAKQEAgLTI4NCw4ICsyNzgsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0CiAgICAgR0xpbnQgY2xl
YXJTdGVuY2lsID0gMDsKICAgICBHTGJvb2xlYW4gY29sb3JNYXNrW10gPSB7R0xfVFJVRSwgR0xf
VFJVRSwgR0xfVFJVRSwgR0xfVFJVRX0sIGRlcHRoTWFzayA9IEdMX1RSVUU7CiAgICAgR0x1aW50
IHN0ZW5jaWxNYXNrID0gMHhmZmZmZmZmZjsKLSAgICBHTGJvb2xlYW4gaXNTY2lzc29yRW5hYmxl
ZCA9IEdMX0ZBTFNFOwotICAgIEdMYm9vbGVhbiBpc0RpdGhlckVuYWJsZWQgPSBHTF9GQUxTRTsK
ICAgICBHTGJpdGZpZWxkIGNsZWFyTWFzayA9IEdMX0NPTE9SX0JVRkZFUl9CSVQ7CiAgICAgOjpn
bEdldEZsb2F0dihHTF9DT0xPUl9DTEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7CiAgICAgOjpnbENs
ZWFyQ29sb3IoMCwgMCwgMCwgMCk7CkBAIC0zMDUsMTAgKzI5Nyw5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHQKICAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwogICAgICAgICBjbGVhck1hc2sgfD0gR0xfU1RFTkNJ
TF9CVUZGRVJfQklUOwogICAgIH0KLSAgICBpc1NjaXNzb3JFbmFibGVkID0gOjpnbElzRW5hYmxl
ZChHTF9TQ0lTU09SX1RFU1QpOwotICAgIDo6Z2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0g
ICAgaXNEaXRoZXJFbmFibGVkID0gOjpnbElzRW5hYmxlZChHTF9ESVRIRVIpOwotICAgIDo6Z2xE
aXNhYmxlKEdMX0RJVEhFUik7CisKKyAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFNj
aXNzb3IoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CisgICAgVGVtcG9yYXJ5T3BlbkdMU2V0
dGluZyBzY29wZWREaXRoZXIoR0xfU0NJU1NPUl9URVNULCBHTF9GQUxTRSk7CiAKICAgICA6Omds
Q2xlYXIoY2xlYXJNYXNrKTsKIApAQCAtMzIyLDE0ICszMTMsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZXNoYXBlKGludCB3aWR0CiAgICAgICAgIDo6Z2xDbGVhclN0ZW5jaWwoY2xlYXJT
dGVuY2lsKTsKICAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIHN0ZW5j
aWxNYXNrKTsKICAgICB9Ci0gICAgaWYgKGlzU2Npc3NvckVuYWJsZWQpCi0gICAgICAgIDo6Z2xF
bmFibGUoR0xfU0NJU1NPUl9URVNUKTsKLSAgICBlbHNlCi0gICAgICAgIDo6Z2xEaXNhYmxlKEdM
X1NDSVNTT1JfVEVTVCk7Ci0gICAgaWYgKGlzRGl0aGVyRW5hYmxlZCkKLSAgICAgICAgOjpnbEVu
YWJsZShHTF9ESVRIRVIpOwotICAgIGVsc2UKLSAgICAgICAgOjpnbERpc2FibGUoR0xfRElUSEVS
KTsKIAogICAgIGlmIChtdXN0UmVzdG9yZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
ckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fc3RhdGUuYm91bmRGQk8pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9w
ZW5HTFNldHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xT
ZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFVTRSgzRF9HUkFQSElDUykKKyNpbmNsdWRlICJUZW1wb3JhcnlP
cGVuR0xTZXR0aW5nLmgiCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSAiT3BlbkdM
RVNTaGltcy5oIgorI2VsaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPE9wZW5HTC9nbC5oPgor
I2VsaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFdJTikgfHwg
UExBVEZPUk0oTklYKQorI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitUZW1wb3JhcnlPcGVuR0xTZXR0aW5nOjpUZW1wb3JhcnlPcGVuR0xT
ZXR0aW5nKEdMZW51bSBjYXBhYmlsaXR5LCBHTGVudW0gc2NvcGVkU3RhdGUpCisgICAgOiBtX2Nh
cGFiaWxpdHkoY2FwYWJpbGl0eSkKKyAgICAsIG1fc2NvcGVkU3RhdGUoc2NvcGVkU3RhdGUpCit7
CisgICAgbV9vcmlnaW5hbFN0YXRlID0gOjpnbElzRW5hYmxlZChtX2NhcGFiaWxpdHkpOworICAg
IGlmIChtX29yaWdpbmFsU3RhdGUgPT0gbV9zY29wZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKEdMX1RSVUUgPT0gbV9zY29wZWRTdGF0ZSkKKyAgICAgICAgOjpnbEVuYWJsZSht
X2NhcGFiaWxpdHkpOworICAgIGVsc2UKKyAgICAgICAgOjpnbERpc2FibGUobV9jYXBhYmlsaXR5
KTsKK30KKworVGVtcG9yYXJ5T3BlbkdMU2V0dGluZzo6flRlbXBvcmFyeU9wZW5HTFNldHRpbmco
KQoreworICAgIGlmIChtX29yaWdpbmFsU3RhdGUgPT0gbV9zY29wZWRTdGF0ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKEdMX1RSVUUgPT0gbV9vcmlnaW5hbFN0YXRlKQorICAgICAgICA6
OmdsRW5hYmxlKG1fY2FwYWJpbGl0eSk7CisgICAgZWxzZQorICAgICAgICA6OmdsRGlzYWJsZSht
X2NhcGFiaWxpdHkpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVtcG9yYXJ5T3Bl
bkdMU2V0dGluZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9wZW5HTFNldHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZ19oCisjZGVm
aW5lIFRlbXBvcmFyeU9wZW5HTFNldHRpbmdfaAorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNE
LmgiCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nPD4gaXMgdXNlZnVsIGZvciB0ZW1wb3Jhcmls
eSBkaXNhYmxpbmcgKG9yIGVuYWJsaW5nKSBhIHBhcnRpY3VsYXIgT3BlbkdMCisvLyBmZWF0dXJl
IHdpdGggYSBwYXJ0aWN1bGFyIHNjb3BlLiBBIFRlbXBvcmFyeU9wZW5HTFNldHRpbmc8PiBvYmpl
Y3QgcmV0dXJucyB0aGUgZmxhZyB0byBpdHMgb3JpZ2luYWwKKy8vIHZhbHVlIHVwb24gZGVzdHJ1
Y3Rpb24sIG1ha2luZyBpdCBhbiBhbHRlcm5hdGl2ZSB0byBjaGVja2luZywgY2xlYXJpbmcsIGFu
ZCByZXNldHRpbmcgZWFjaCBmbGFnCisvLyBhdCBhbGwgb2YgYSBibG9jaydzIGV4aXQgcG9pbnRz
LgorLy8KKy8vIEJhc2VkIG9uIFdURjo6VGVtcG9yYXJ5Q2hhbmdlPD4KKworY2xhc3MgVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVtcG9yYXJ5T3Bl
bkdMU2V0dGluZyk7CitwdWJsaWM6CisgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyhHQzNEZW51
bSBjYXBhYmlsaXR5LCBHQzNEZW51bSBzY29wZWRTdGF0ZSk7CisgICAgflRlbXBvcmFyeU9wZW5H
TFNldHRpbmcoKTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBHQzNEZW51bSBtX2NhcGFiaWxpdHk7
CisgICAgY29uc3QgR0MzRGVudW0gbV9zY29wZWRTdGF0ZTsKKyAgICBHQzNEZW51bSBtX29yaWdp
bmFsU3RhdGU7Cit9OworCit9CisKK3VzaW5nIFdlYkNvcmU6OlRlbXBvcmFyeU9wZW5HTFNldHRp
bmc7CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="244183"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>