<?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>44009</bug_id>
          
          <creation_ts>2010-08-14 07:20:41 -0700</creation_ts>
          <short_desc>Use SVGPathParser logic to traverse states of a Path</short_desc>
          <delta_ts>2010-08-18 06:21:30 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>12047</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264666</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-14 07:20:41 -0700</bug_when>
    <thetext>Use SVGPathParser logic to traverse states of a Path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264702</commentid>
    <comment_count>1</comment_count>
      <attachid>64417</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-14 09:36:49 -0700</bug_when>
    <thetext>Created attachment 64417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264707</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-14 09:52:49 -0700</bug_when>
    <thetext>Attachment 64417 did not build on mac:
Build output: http://queues.webkit.org/results/3772165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264708</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-14 10:08:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 64417 [details] did not build on mac:
&gt; Build output: http://queues.webkit.org/results/3772165

Hah, just tried the debug build on Mac :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264709</commentid>
    <comment_count>4</comment_count>
      <attachid>64420</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-14 10:11:52 -0700</bug_when>
    <thetext>Created attachment 64420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264874</commentid>
    <comment_count>5</comment_count>
      <attachid>64420</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-15 13:33:37 -0700</bug_when>
    <thetext>Comment on attachment 64420
Patch

Hi Dirk, good job, some comments:

WebCore/ChangeLog:8
 +          Move the getPathSegAtLength logic from SVGPathSegList to a new SVGPathParser Consumer.
Move the getPathsegAtLength logic from SVGPathSegList into a new SVGPathConsumer class: SVGPathTraversalStateBuilder.

WebCore/ChangeLog:9-10
 +          This allows us to get a SVGPathSeg at a given length of SVGPathByteStreams, as
 +          well as of SVGPathSegLists.
This allows us to get a SVGPathSeg at a given length for SVGPathByteStreams and SVGPathSegLists.

WebCore/svg/SVGPathBuilder.h:39
 +      virtual void nextPathSegment() { }
nextPathSegment sounds like it would give you the next path segment type or something.
suggestion: &quot;pathSegmentStarted&quot;. (wrong, see below :-)
Just saw that you&apos;re calling it after the segment has been processed, so &quot;incrementPathSegmentCount&quot; sounds even better.


WebCore/svg/SVGPathBuilder.h:40
 +      virtual bool quitEarlier() { return false; }
I&apos;d name it &quot;continueConsuming&quot; return true by default.

WebCore/svg/SVGPathElement.idl:40
 +          unsigned long getPathSegAtLength(in float distance);
Ok, just checked SVG 1.1, this is indeed correct, getPathSegAtLength doesn&apos;t raise exceptions, so fine with me.

WebCore/svg/SVGPathParserFactory.cpp:79
 +  static SVGPathTraversalStateBuilder* globalSVGPathTraversalStateBuilder(PathTraversalState* traversalState, float length)
Take a PathTraversalState&amp; reference here.

WebCore/svg/SVGPathParserFactory.cpp:85
 +      s_builder-&gt;setCurrentTraversalState(traversalState);
Use &amp;traversalState.

WebCore/svg/SVGPathParserFactory.cpp:275
 +      OwnPtr&lt;PathTraversalState&gt; traversalState = adoptPtr(new PathTraversalState(PathTraversalState::TraversalSegmentAtLength));
Don&apos;t create this on the heap - there&apos;s no gain in doing so, just create it on the stack.

WebCore/svg/SVGPathTraversalStateBuilder.cpp:70
 +      return (m_traversalState-&gt;m_totalLength &gt;= m_traversalState-&gt;m_desiredLength);
Useless braces.

WebCore/svg/SVGPathTraversalStateBuilder.cpp:76
 +      m_traversalState-&gt;m_segmentIndex++;
++m_traversalState-&gt;m_segmentIndex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264940</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-15 22:47:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; WebCore/svg/SVGPathElement.idl:40
&gt;  +          unsigned long getPathSegAtLength(in float distance);
&gt; Ok, just checked SVG 1.1, this is indeed correct, getPathSegAtLength doesn&apos;t raise exceptions, so fine with me.

Sure, I wouldn&apos;t change IDL&apos;s if they are not wrong :-)
Working on the other issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265059</commentid>
    <comment_count>7</comment_count>
      <attachid>64488</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-16 06:16:15 -0700</bug_when>
    <thetext>Created attachment 64488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265983</commentid>
    <comment_count>8</comment_count>
      <attachid>64488</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-18 01:19:52 -0700</bug_when>
    <thetext>Comment on attachment 64488
Patch

r=me, with two small suggestions:

WebCore/ChangeLog:8
 +          Move the getPathsegAtLength logic from SVGPathSegList into a new SVGPathConsumer
s/Pathseg/PathSeg/

WebCore/svg/SVGPathTraversalStateBuilder.h:35
 +      unsigned long getSVGPathSeg();
s/getSVGPathSeg/pathSegmentIndex/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266073</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-18 06:21:30 -0700</bug_when>
    <thetext>Committed r65605: &lt;http://trac.webkit.org/changeset/65605&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64417</attachid>
            <date>2010-08-14 09:36:49 -0700</date>
            <delta_ts>2010-08-14 10:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44009-20100814183646.patch</filename>
            <type>text/plain</type>
            <size>30358</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMDgtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
U1ZHUGF0aFBhcnNlciBsb2dpYyB0byB0cmF2ZXJzZSBzdGF0ZXMgb2YgYSBQYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDAwOQorCisgICAgICAg
IE1vdmUgdGhlIGdldFBhdGhTZWdBdExlbmd0aCBsb2dpYyBmcm9tIFNWR1BhdGhTZWdMaXN0IHRv
IGEgbmV3IFNWR1BhdGhQYXJzZXIgQ29uc3VtZXIuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCBhIFNWR1BhdGhTZWcgYXQgYSBnaXZlbiBsZW5ndGggb2YgU1ZHUGF0aEJ5dGVTdHJlYW1z
LCBhcworICAgICAgICB3ZWxsIGFzIG9mIFNWR1BhdGhTZWdMaXN0cy4KKyAgICAgICAgSXQgaXMg
YWxzbyBwb3NzaWJsZSB0byB1c2UgdW5hbHRlcmVkIFNWRyBwYXRoIGRhdGEsIGluc3RlYWQgb2Yg
anVzdCBub3JtYWxpemVkIHBhdGggZGF0YS4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmluYWwgcHJl
cGFyYXRpb24gdG8gcHJvdmlkZSBub3JtYWxpemVkIGFuZCB1bmFsdGVyZWQgU1ZHUGF0aFNlZ0xp
c3RzCisgICAgICAgIG9uIFNWR1BhdGhFbGVtZW50LgorCisgICAgICAgICogQW5kcm9pZC5tazoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVp
bGRlcjo6bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVy
OjpxdWl0RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpuZXh0UGF0aFNl
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpxdWl0
RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhDb25zdW1lci5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFG
cm9tU291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3Ro
RnJvbVNWR1BhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU2VnTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bmV4dFBhdGhTZWdtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6cXVpdEVhcmxpZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om5leHRQYXRoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cXVpdEVhcmxpZXIpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcDogQWRkZWQuIE5ldyBDb25zdW1lciBmb3IgU1ZH
UGF0aFBhcnNlci4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXI6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y2xvc2VQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnNldERlc2lyZWRMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6cXVpdEVh
cmxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXI6OmdldFNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlcjo6c2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsZWFudXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG9WZXJ0
aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpj
dXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmFyY1RvKToKKwogMjAxMC0w
OC0xNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvQW5k
cm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY1MzYz
KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC04OTYsNiArODk2LDcg
QEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3ZnL1NWR1BhdGhT
ZWdNb3ZldG8uY3BwIFwKIAlzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIFwKIAlzdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAgXAorCXN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
LmNwcCBcCiAJc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBcCiAJc3ZnL1NWR1BvaW50TGlzdC5j
cHAgXAogCXN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2NTM2
MykKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsNiAr
MTcwMiw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHUGF0aFNlZ01vdmV0by5j
cHAKICAgICAgICAgc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAogICAgICAgICBzdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAKKyAgICAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKICAgICAgICAgc3Zn
L1NWR1BvaW50TGlzdC5jcHAKICAgICAgICAgc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMzIsNiArNDEzMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmlu
Z1NvdXJjZS5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaCBcCisJV2Vi
Q29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgXAorCVdlYkNvcmUvc3Zn
L1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIFwKIAlXZWJD
b3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTM2MykKKysrIFdl
YkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zODgxLDYgKzM4ODEsOCBAQAog
ICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIu
aCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQb2ludExp
c3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjUzNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC0yODgxLDYgKzI4ODEsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfU1ZHPTEpIHsKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKICAgICAgICAg
c3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU3RyaW5n
U291cmNlLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcvU1ZH
UG9pbnRMaXN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2NTM2MykKKysrIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5
NDY5LDYgKzQ5NDY5LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
UGF0dGVybkVsZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjUzNjQpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTQ5OSw2ICsxNDk5LDggQEAKIAkJODRCNkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhT
ZWdMaXN0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEI2Qjk3NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCAq
LzsgfTsKIAkJODRCREExNkIxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCAq
LzsgfTsKIAkJODRCREExNkMxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRC
REExNkExMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oICovOyB9
OworCQk4NEM1QjJGQTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NEM1QjJGODEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5j
cHAgKi87IH07CisJCTg0QzVCMkZCMTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5oICovOyB9OwogCQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5k
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRD
Njc4NEExMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmNwcCAqLzsgfTsKIAkJODRD
Njc4NEQxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEM2Nzg0QjEyMTQ4MTQ3MDBBOTI5MDIg
LyogU1ZHUGF0aEJsZW5kZXIuaCAqLzsgfTsKIAkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0IC8q
IEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNw
cCAqLzsgfTsKQEAgLTczNTMsNiArNzM1NSw4IEBACiAJCTg0QjZCOTc2MTIwRjEzRTUwMEI4RUZB
RiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QkRBMTZBMTEzNThE
MkEwMERCRjY0QyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg0QzVCMkY4MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QzY3
ODRBMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0QzY3ODRCMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFmZmluZVRyYW5zZm9ybS5jcHA7IHBhdGggPSB0cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQxOSw2ICsxNTQyMyw4IEBACiAJ
CQkJODQxOUQyQjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmggKi8s
CiAJCQkJODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
ICovLAogCQkJCTg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggKi8sCisJCQkJODRDNUIyRjgxMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhUcmF2ZXJzYWxT
dGF0ZUJ1aWxkZXIuY3BwICovLAorCQkJCTg0QzVCMkY5MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggKi8sCiAJCQkJQjIyMjc4RjEwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGMjBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGMzBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaWRsICovLApAQCAtMTk4OTcsNiArMTk5MDMsNyBA
QAogCQkJCTg0MzAwQkQ4MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBT
VkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEM1QjJGQjEyMTZEQzgx
MDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjU1OTk5NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUG9pbnRMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM2OCw2ICsyMjM3NSw3IEBACiAJ
CQkJQjIyMjdBODMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODQxOUQyQjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MzAwQkRBMTIwQzlBRUQwMDIxOTU0QSAv
KiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QzVCMkZBMTIx
NkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRv
LmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNW
R1BvaW50TGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seUVsZW1lbnQuY3BwIgpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoQnVpbGRlci5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogICAgIFNWR1Bh
dGhCdWlsZGVyKCk7CiAKICAgICB2b2lkIHNldEN1cnJlbnRQYXRoKFBhdGgqIHBhdGgpIHsgbV9w
YXRoID0gcGF0aDsgfQorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0aFNlZ21lbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcXVpdEVhcmxpZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3BhdGggPSAwOyB9CiAKIHByaXZhdGU6CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkocmV2aXNpb24gNjUzNjMpCisrKyBXZWJD
b3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKCk7CiAKICAg
ICB2b2lkIHNldEN1cnJlbnRCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBieXRlU3RyZWFt
KSB7IG1fYnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmV4dFBh
dGhTZWdtZW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIHsgbV9ieXRlU3RyZWFtID0gMDsg
fQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHJldmlzaW9uIDY1MzYzKQor
KysgV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDggQEAgZW51bSBQYXRoUGFyc2luZ01vZGUgewogCiBjbGFzcyBTVkdQYXRoQ29uc3VtZXIg
OiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0
aFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgPSAwOwogCiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksMTIgQEAgRmxvYXRQb2ludCBTVkdQYXRo
RWxlbWVudDo6Z2V0UG9pbnRBdExlbgogICAgIHJldHVybiB0b1BhdGhEYXRhKCkucG9pbnRBdExl
bmd0aChsZW5ndGgsIG9rKTsKIH0KIAotdW5zaWduZWQgbG9uZyBTVkdQYXRoRWxlbWVudDo6Z2V0
UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCit1bnNpZ25l
ZCBsb25nIFNWR1BhdGhFbGVtZW50OjpnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKQog
ewotICAgIHJldHVybiBwYXRoU2VnTGlzdCgpLT5nZXRQYXRoU2VnQXRMZW5ndGgobGVuZ3RoLCBl
Yyk7CisgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFj
dG9yeTo6c2VsZigpOworICAgIHVuc2lnbmVkIGxvbmcgcGF0aFNlZyA9IDA7CisgICAgZmFjdG9y
eS0+Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhTZWdMaXN0KHBhdGhTZWdMaXN0KCks
IGxlbmd0aCwgcGF0aFNlZyk7CisgICAgcmV0dXJuIHBhdGhTZWc7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHUGF0aFNlZ0Nsb3NlUGF0aD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9z
ZVBhdGgoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KICAgICAgICAgZmxvYXQgZ2V0VG90YWxM
ZW5ndGgoKTsKICAgICAgICAgRmxvYXRQb2ludCBnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3Rh
bmNlKTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlz
dGFuY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2Vn
QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1BhdGhTZWdDbG9zZVBhdGg+IGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ01v
dmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw3IEBAIG1vZHVsZSBzdmcgewogCiAgICAgICAgIGZsb2F0IGdl
dFRvdGFsTGVuZ3RoKCk7CiAgICAgICAgIFNWR1BvaW50IGdldFBvaW50QXRMZW5ndGgoaW4gZmxv
YXQgZGlzdGFuY2UpOwotICAgICAgICB1bnNpZ25lZCBsb25nIGdldFBhdGhTZWdBdExlbmd0aChp
biBmbG9hdCBkaXN0YW5jZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24sIFNWR0V4
Y2VwdGlvbik7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGluIGZs
b2F0IGRpc3RhbmNlKTsKIAogICAgICAgICBTVkdQYXRoU2VnQ2xvc2VQYXRoIGNyZWF0ZVNWR1Bh
dGhTZWdDbG9zZVBhdGgoKTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDY1
MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2Niw2ICszNjYsOSBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fY29uc3VtZXItPnF1aXRFYXJsaWVyKCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKwogICAgICAgICBtX2xhc3RDb21tYW5kID0gY29tbWFuZDsKIAogICAgICAgICBp
ZiAoIW1fc291cmNlLT5oYXNNb3JlRGF0YSgpKQpAQCAtMzgyLDYgKzM4NSw4IEBAIGJvb2wgU1ZH
UGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3UKICAgICAgICAgICAgICYmIG1fbGFzdENv
bW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMKICAgICAgICAgICAgICYm
IG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwpCiAgICAg
ICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBvaW50OworCisgICAgICAgIG1fY29u
c3VtZXItPm5leHRQYXRoU2VnbWVudCgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDY1MzYzKQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIgogCisjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aEJsZW5kZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgogI2luY2x1ZGUgIlNW
R1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNW
R1BhdGhTZWdMaXN0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFRyYXZl
cnNhbFN0YXRlQnVpbGRlci5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzQsNiArNzYsMTcgQEAgc3RhdGljIFNWR1BhdGhTdHJpbmdCdWls
ZGVyKiBnbG9iYWxTVkdQYQogICAgIHJldHVybiBzX2J1aWxkZXI7CiB9CiAKK3N0YXRpYyBTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyKFBhdGhUcmF2ZXJzYWxTdGF0ZSogdHJhdmVyc2FsU3RhdGUsIGZsb2F0IGxlbmd0aCkKK3sK
KyAgICBzdGF0aWMgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogc19idWlsZGVyID0gMDsK
KyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXI7CisKKyAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRUcmF2ZXJzYWxT
dGF0ZSh0cmF2ZXJzYWxTdGF0ZSk7CisgICAgc19idWlsZGVyLT5zZXREZXNpcmVkTGVuZ3RoKGxl
bmd0aCk7CisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKwogc3RhdGljIFNWR1BhdGhQYXJzZXIq
IGdsb2JhbFNWR1BhdGhQYXJzZXIoU1ZHUGF0aFNvdXJjZSogc291cmNlLCBTVkdQYXRoQ29uc3Vt
ZXIqIGNvbnN1bWVyKQogewogICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyKiBzX3BhcnNlciA9IDA7
CkBAIC0yNTMsNiArMjY2LDIzIEBAIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5p
bWF0ZWQKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6Omdl
dFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnTGlzdCogcGF0
aFNlZ0xpc3QsIGZsb2F0IGxlbmd0aCwgdW5zaWduZWQgbG9uZyYgcGF0aFNlZykKK3sKKyAgICBB
U1NFUlQocGF0aFNlZ0xpc3QpOworICAgIGlmICghcGF0aFNlZ0xpc3QtPm51bWJlck9mSXRlbXMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAKKworICAgIE93blB0cjxQYXRoVHJhdmVyc2FsU3Rh
dGU+IHRyYXZlcnNhbFN0YXRlID0gYWRvcHRQdHIobmV3IFBhdGhUcmF2ZXJzYWxTdGF0ZShQYXRo
VHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCkpOworICAgIFNWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLmdldCgpLCBsZW5ndGgpOworCisgICAgT3duUHRyPFNW
R1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6Y3JlYXRl
KHBhdGhTZWdMaXN0KTsKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRo
UGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CisgICAgYm9vbCBvayA9IHBhcnNlci0+cGFy
c2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOworICAgIHBhdGhTZWcgPSBi
dWlsZGVyLT5nZXRTVkdQYXRoU2VnKCk7CisgICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgcmV0
dXJuIG9rOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNl
ckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9y
eS5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBi
dWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBTVkdQYXRo
Qnl0ZVN0cmVhbSosIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mLCBmbG9hdCk7CiAKKyAgICBi
b29sIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnTGlz
dCosIGZsb2F0LCB1bnNpZ25lZCBsb25nJik7CisKIHByaXZhdGU6CiAgICAgU1ZHUGF0aFBhcnNl
ckZhY3RvcnkoKTsKICAgICB+U1ZHUGF0aFBhcnNlckZhY3RvcnkoKTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsMTQgKzI1LDYgQEAK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCiAKLSNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAi
UGF0aFRyYXZlcnNhbFN0YXRlLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIgot
I2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG8uaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRv
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oIgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQpAQCAtNDMsNTkgKzM2LDYgQEAgU1ZHUGF0aFNlZ0xpc3Q6On5T
VkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRo
U2VnQXRMZW5ndGgoZG91YmxlIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8g
RklYTUUgOiB0byBiZSB1c2VmdWwgdGhpcyB3aWxsIG5lZWQgdG8gc3VwcG9ydCBub24tbm9ybWFs
aXplZCBTVkdQYXRoU2VnTGlzdHMKLSAgICBpbnQgbGVuID0gbnVtYmVyT2ZJdGVtcygpOwotICAg
IC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgd2lsbCBsaWtlbHkgbW92ZSB0byBhICJwYXRoIGFw
cGxpZXIiLWxpa2UgbW9kZWwsIHVudGlsIHRoZW4gUGF0aFRyYXZlcnNhbFN0YXRlIGlzIGxlc3Mg
dXNlZnVsIGFzIHdlIGNvdWxkIGp1c3QgdXNlIGxvY2FscwotICAgIFBhdGhUcmF2ZXJzYWxTdGF0
ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExl
bmd0aCk7Ci0gICAgdHJhdmVyc2FsU3RhdGUubV9kZXNpcmVkTGVuZ3RoID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChsZW5ndGgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsK
LSAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0oaSwgZWMpLmdldCgpOwotICAg
ICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZmxvYXQgc2VnbWVu
dExlbmd0aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSkgewot
ICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNW
R1BhdGhTZWdNb3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdNb3ZldG9B
YnMqPihzZWdtZW50KTsKLSAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0
ZS5tb3ZlVG8oRmxvYXRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0FiczoKLSAg
ICAgICAgewotICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyogbGluZVRvID0gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgc2VnbWVu
dExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmxpbmVUbyhGbG9hdFBvaW50KGxpbmVUby0+eCgpLCBs
aW5lVG8tPnkoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgotICAgICAgICB7Ci0gICAgICAgICAgICBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljQWJzKiBjdXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZl
cnNhbFN0YXRlLmN1YmljQmV6aWVyVG8oRmxvYXRQb2ludChjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRv
LT55MSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2lu
dChjdXJ2ZVRvLT54MigpLCBjdXJ2ZVRvLT55MigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQ
YXRoOgotICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmNsb3NlU3Vi
cGF0aCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGggbm9ybWFsaXpl
ZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExlbmd0aCArPSBzZWdtZW50TGVuZ3RoOwotICAg
ICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6
VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQotICAgICAgICAgICAgJiYgKHRyYXZlcnNhbFN0YXRl
Lm1fdG90YWxMZW5ndGggPj0gdHJhdmVyc2FsU3RhdGUubV9kZXNpcmVkTGVuZ3RoKSkgewotICAg
ICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4OwotICAgICAgICB9
Ci0gICAgICAgIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4Kys7Ci0gICAgfQotCi0gICAg
Ly8gVGhlIFNWRyBzcGVjIGlzIHVuY2xlYXIgYXMgdG8gd2hhdCB0byByZXR1cm4gd2hlbiB0aGUg
ZGlzdGFuY2UgaXMgbm90IG9uIHRoZSBwYXRoLgotICAgIC8vIFdlYktpdC9PcGVyYS9GRiBhbGwg
cmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlzdGFuY2UgZXhjZWVkcyB0aGUg
YWN0dWFsIHBhdGggbGVuZ3RoOgotICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX3NlZ21lbnRJ
bmRleCA/IHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4IC0gMSA6IDA7Ci19Ci0KIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDY1
MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xp
c3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpc3QoYXR0cmlidXRlTmFtZSkpOyB9CiAgICAgdmlydHVh
bCB+U1ZHUGF0aFNlZ0xpc3QoKTsKIAotICAgIHVuc2lnbmVkIGdldFBhdGhTZWdBdExlbmd0aChk
b3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQogcHJpdmF0ZToKICAgICBTVkdQYXRoU2VnTGlzdChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmgJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3Qo
U1ZHUGF0aFNlZ0xpc3QqIHBhdGhTZWdMaXN0KSB7IG1fcGF0aFNlZ0xpc3QgPSBwYXRoU2VnTGlz
dDsgfQorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0aFNlZ21lbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcXVpdEVhcmxpZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBj
bGVhbnVwKCkgeyBtX3BhdGhTZWdMaXN0ID0gMDsgfQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NW
R1BhdGhTdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgcHVi
bGljOgogICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YW51cCgpIHsgbV9zdHJpbmdCdWlsZGVyLmNsZWFyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmV4
dFBhdGhTZWdtZW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcmVzdWx0KCkgeyByZXR1cm4gbV9zdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKENvbmNhdEFkZGluZ1NwYWNlc0JldHdlZW5JbmRpdmlkdWFsU3RyaW5ncyk7IH0K
IAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCkKKyAgICA6IG1fdHJhdmVyc2FsU3RhdGUoMCkKKyAg
ICAsIG1fZGVzaXJlZExlbmd0aCgwKQoreworfQorCit2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCwgUGF0
aENvb3JkaW5hdGVNb2RlIG1vZGUpCit7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUpOwor
ICAgIEFTU0VSVChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgIG1fdHJhdmVyc2Fs
U3RhdGUtPm1fdG90YWxMZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+bW92ZVRvKHRhcmdldFBv
aW50KTsKK30KKwordm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG8oY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQorewor
ICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBBU1NFUlQobW9kZSA9PSBBYnNvbHV0
ZUNvb3JkaW5hdGVzKTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLT5tX3RvdGFsTGVuZ3RoICs9IG1f
dHJhdmVyc2FsU3RhdGUtPmxpbmVUbyh0YXJnZXRQb2ludCk7Cit9CisKK3ZvaWQgU1ZHUGF0aFRy
YXZlcnNhbFN0YXRlQnVpbGRlcjo6Y3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
MSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCit7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3Rh
dGUpOworICAgIEFTU0VSVChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpOworICAgIG1fdHJh
dmVyc2FsU3RhdGUtPm1fdG90YWxMZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+Y3ViaWNCZXpp
ZXJUbyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQpOworfQorCit2b2lkIFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0aCgpCit7CisgICAgQVNTRVJUKG1fdHJhdmVyc2Fs
U3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90YWxMZW5ndGggKz0gbV90cmF2ZXJz
YWxTdGF0ZS0+Y2xvc2VTdWJwYXRoKCk7Cit9CisKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlcjo6c2V0RGVzaXJlZExlbmd0aChmbG9hdCBkZXNpcmVkTGVuZ3RoKQoreworICAgIEFT
U0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLT5tX2Rlc2lyZWRM
ZW5ndGggPSBkZXNpcmVkTGVuZ3RoOworfQorCitib29sIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXI6OnF1aXRFYXJsaWVyKCkKK3sKKyAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7Cisg
ICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUtPm1fYWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0
ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKTsKKyAgICByZXR1cm4gKG1fdHJhdmVyc2FsU3Rh
dGUtPm1fdG90YWxMZW5ndGggPj0gbV90cmF2ZXJzYWxTdGF0ZS0+bV9kZXNpcmVkTGVuZ3RoKTsK
K30KKwordm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpuZXh0UGF0aFNlZ21lbnQo
KQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBtX3RyYXZlcnNhbFN0YXRl
LT5tX3NlZ21lbnRJbmRleCsrOworfQorCit1bnNpZ25lZCBsb25nIFNWR1BhdGhUcmF2ZXJzYWxT
dGF0ZUJ1aWxkZXI6OmdldFNWR1BhdGhTZWcoKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0
YXRlKTsKKyAgICByZXR1cm4gbV90cmF2ZXJzYWxTdGF0ZS0+bV9zZWdtZW50SW5kZXg7Cit9CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFRy
YXZlcnNhbFN0YXRlQnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0
aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcl9oCisjZGVm
aW5lIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXJfaAorCisjaWYgRU5BQkxFKFNWRykKKyNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCisj
aW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIg
eworcHVibGljOgorICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIoKTsKKworICAgIHVu
c2lnbmVkIGxvbmcgZ2V0U1ZHUGF0aFNlZygpOworICAgIHZvaWQgc2V0Q3VycmVudFRyYXZlcnNh
bFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZSogdHJhdmVyc2FsU3RhdGUpIHsgbV90cmF2ZXJzYWxT
dGF0ZSA9IHRyYXZlcnNhbFN0YXRlOyB9CisgICAgdm9pZCBzZXREZXNpcmVkTGVuZ3RoKGZsb2F0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbmV4dFBhdGhTZWdtZW50KCk7CisgICAgdmlydHVhbCBib29s
IHF1aXRFYXJsaWVyKCk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFudXAoKSB7IG1fdHJhdmVyc2Fs
U3RhdGUgPSAwOyB9CisKK3ByaXZhdGU6CisgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25n
L05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgorICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3Qg
RmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOworICAgIHZpcnR1
YWwgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpOworICAgIHZp
cnR1YWwgdm9pZCBjbG9zZVBhdGgoKTsKKworcHJpdmF0ZToKKyAgICAvLyBOb3QgdXNlZCBmb3Ig
UGF0aFRyYXZlcnNhbFN0YXRlLgorICAgIHZpcnR1YWwgdm9pZCBsaW5lVG9Ib3Jpem9udGFsKGZs
b2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbGluZVRvVmVydGljYWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWNTbW9v
dGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1
YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGlu
YXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjdXJ2
ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXJjVG8oZmxvYXQs
IGZsb2F0LCBmbG9hdCwgYm9vbCwgYm9vbCwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGlu
YXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgUGF0aFRyYXZlcnNhbFN0
YXRlKiBtX3RyYXZlcnNhbFN0YXRlOworICAgIGZsb2F0IG1fZGVzaXJlZExlbmd0aDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYg
Ly8gU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64420</attachid>
            <date>2010-08-14 10:11:52 -0700</date>
            <delta_ts>2010-08-16 06:16:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44009-20100814191149.patch</filename>
            <type>text/plain</type>
            <size>30217</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTM2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMDgtMTQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
U1ZHUGF0aFBhcnNlciBsb2dpYyB0byB0cmF2ZXJzZSBzdGF0ZXMgb2YgYSBQYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDAwOQorCisgICAgICAg
IE1vdmUgdGhlIGdldFBhdGhTZWdBdExlbmd0aCBsb2dpYyBmcm9tIFNWR1BhdGhTZWdMaXN0IHRv
IGEgbmV3IFNWR1BhdGhQYXJzZXIgQ29uc3VtZXIuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCBhIFNWR1BhdGhTZWcgYXQgYSBnaXZlbiBsZW5ndGggb2YgU1ZHUGF0aEJ5dGVTdHJlYW1z
LCBhcworICAgICAgICB3ZWxsIGFzIG9mIFNWR1BhdGhTZWdMaXN0cy4KKyAgICAgICAgSXQgaXMg
YWxzbyBwb3NzaWJsZSB0byB1c2UgdW5hbHRlcmVkIFNWRyBwYXRoIGRhdGEsIGluc3RlYWQgb2Yg
anVzdCBub3JtYWxpemVkIHBhdGggZGF0YS4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmluYWwgcHJl
cGFyYXRpb24gdG8gcHJvdmlkZSBub3JtYWxpemVkIGFuZCB1bmFsdGVyZWQgU1ZHUGF0aFNlZ0xp
c3RzCisgICAgICAgIG9uIFNWR1BhdGhFbGVtZW50LgorCisgICAgICAgICogQW5kcm9pZC5tazoK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnVp
bGRlcjo6bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCdWlsZGVy
OjpxdWl0RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpuZXh0UGF0aFNl
Z21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyOjpxdWl0
RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhDb25zdW1lci5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6
Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFG
cm9tU291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3Ro
RnJvbVNWR1BhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3Rvcnku
aDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU2VnTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxkZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6bmV4dFBhdGhTZWdtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRlcjo6cXVpdEVhcmxpZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om5leHRQYXRoU2VnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cXVpdEVhcmxpZXIpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcDogQWRkZWQuIE5ldyBDb25zdW1lciBmb3IgU1ZH
UGF0aFBhcnNlci4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXI6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y2xvc2VQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnNldERlc2lyZWRMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6cXVpdEVh
cmxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXI6OmdldFNWR1BhdGhTZWcpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlcjo6c2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsZWFudXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvSG9yaXpvbnRhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpsaW5lVG9WZXJ0
aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpj
dXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmFyY1RvKToKKwogMjAxMC0w
OC0xNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAcGFyb2dhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvQW5k
cm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY1MzYz
KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC04OTYsNiArODk2LDcg
QEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3ZnL1NWR1BhdGhT
ZWdNb3ZldG8uY3BwIFwKIAlzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIFwKIAlzdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAgXAorCXN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
LmNwcCBcCiAJc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBcCiAJc3ZnL1NWR1BvaW50TGlzdC5j
cHAgXAogCXN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2NTM2
MykKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MDIsNiAr
MTcwMiw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHUGF0aFNlZ01vdmV0by5j
cHAKICAgICAgICAgc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAogICAgICAgICBzdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAKKyAgICAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKICAgICAgICAgc3Zn
L1NWR1BvaW50TGlzdC5jcHAKICAgICAgICAgc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMzIsNiArNDEzMiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmlu
Z1NvdXJjZS5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaCBcCisJV2Vi
Q29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgXAorCVdlYkNvcmUvc3Zn
L1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIFwKIAlXZWJD
b3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTM2MykKKysrIFdl
YkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zODgxLDYgKzM4ODEsOCBAQAog
ICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdz
dmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIu
aCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQb2ludExp
c3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjUzNjMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC0yODgxLDYgKzI4ODEsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfU1ZHPTEpIHsKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKICAgICAgICAg
c3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU3RyaW5n
U291cmNlLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcvU1ZH
UG9pbnRMaXN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2NTM2MykKKysrIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5
NDY5LDYgKzQ5NDY5LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZH
UGF0dGVybkVsZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjUzNjQpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTQ5OSw2ICsxNDk5LDggQEAKIAkJODRCNkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhT
ZWdMaXN0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEI2Qjk3NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCAq
LzsgfTsKIAkJODRCREExNkIxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCAq
LzsgfTsKIAkJODRCREExNkMxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRC
REExNkExMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oICovOyB9
OworCQk4NEM1QjJGQTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NEM1QjJGODEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5j
cHAgKi87IH07CisJCTg0QzVCMkZCMTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5oICovOyB9OwogCQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5k
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRD
Njc4NEExMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmNwcCAqLzsgfTsKIAkJODRD
Njc4NEQxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEM2Nzg0QjEyMTQ4MTQ3MDBBOTI5MDIg
LyogU1ZHUGF0aEJsZW5kZXIuaCAqLzsgfTsKIAkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0IC8q
IEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNw
cCAqLzsgfTsKQEAgLTczNTMsNiArNzM1NSw4IEBACiAJCTg0QjZCOTc2MTIwRjEzRTUwMEI4RUZB
RiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QkRBMTZBMTEzNThE
MkEwMERCRjY0QyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg0QzVCMkY4MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QzY3
ODRBMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0QzY3ODRCMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQgLyog
QWZmaW5lVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEFmZmluZVRyYW5zZm9ybS5jcHA7IHBhdGggPSB0cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQxOSw2ICsxNTQyMyw4IEBACiAJ
CQkJODQxOUQyQjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmggKi8s
CiAJCQkJODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3Bw
ICovLAogCQkJCTg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291cmNl
LmggKi8sCisJCQkJODRDNUIyRjgxMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhUcmF2ZXJzYWxT
dGF0ZUJ1aWxkZXIuY3BwICovLAorCQkJCTg0QzVCMkY5MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggKi8sCiAJCQkJQjIyMjc4RjEwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGMjBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGMzBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaWRsICovLApAQCAtMTk4OTcsNiArMTk5MDMsNyBA
QAogCQkJCTg0MzAwQkQ4MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAvKiBT
VkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEM1QjJGQjEyMTZEQzgx
MDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjU1OTk5NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUG9pbnRMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM2OCw2ICsyMjM3NSw3IEBACiAJ
CQkJQjIyMjdBODMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODQxOUQyQjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MzAwQkRBMTIwQzlBRUQwMDIxOTU0QSAv
KiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QzVCMkZBMTIx
NkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRv
LmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNW
R1BvaW50TGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seUVsZW1lbnQuY3BwIgpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoQnVpbGRlci5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogICAgIFNWR1Bh
dGhCdWlsZGVyKCk7CiAKICAgICB2b2lkIHNldEN1cnJlbnRQYXRoKFBhdGgqIHBhdGgpIHsgbV9w
YXRoID0gcGF0aDsgfQorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0aFNlZ21lbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcXVpdEVhcmxpZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3BhdGggPSAwOyB9CiAKIHByaXZhdGU6CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkocmV2aXNpb24gNjUzNjMpCisrKyBXZWJD
b3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyKCk7CiAKICAg
ICB2b2lkIHNldEN1cnJlbnRCeXRlU3RyZWFtKFNWR1BhdGhCeXRlU3RyZWFtKiBieXRlU3RyZWFt
KSB7IG1fYnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmV4dFBh
dGhTZWdtZW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIHsgbV9ieXRlU3RyZWFtID0gMDsg
fQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHJldmlzaW9uIDY1MzYzKQor
KysgV2ViQ29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDggQEAgZW51bSBQYXRoUGFyc2luZ01vZGUgewogCiBjbGFzcyBTVkdQYXRoQ29uc3VtZXIg
OiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0
aFNlZ21lbnQoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgPSAwOwogCiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksOSArNjksMTIgQEAgRmxvYXRQb2ludCBTVkdQYXRo
RWxlbWVudDo6Z2V0UG9pbnRBdExlbgogICAgIHJldHVybiB0b1BhdGhEYXRhKCkucG9pbnRBdExl
bmd0aChsZW5ndGgsIG9rKTsKIH0KIAotdW5zaWduZWQgbG9uZyBTVkdQYXRoRWxlbWVudDo6Z2V0
UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCit1bnNpZ25l
ZCBsb25nIFNWR1BhdGhFbGVtZW50OjpnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKQog
ewotICAgIHJldHVybiBwYXRoU2VnTGlzdCgpLT5nZXRQYXRoU2VnQXRMZW5ndGgobGVuZ3RoLCBl
Yyk7CisgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFj
dG9yeTo6c2VsZigpOworICAgIHVuc2lnbmVkIGxvbmcgcGF0aFNlZyA9IDA7CisgICAgZmFjdG9y
eS0+Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhTZWdMaXN0KHBhdGhTZWdMaXN0KCks
IGxlbmd0aCwgcGF0aFNlZyk7CisgICAgcmV0dXJuIHBhdGhTZWc7CiB9CiAKIFBhc3NSZWZQdHI8
U1ZHUGF0aFNlZ0Nsb3NlUGF0aD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVNWR1BhdGhTZWdDbG9z
ZVBhdGgoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KICAgICAgICAgZmxvYXQgZ2V0VG90YWxM
ZW5ndGgoKTsKICAgICAgICAgRmxvYXRQb2ludCBnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3Rh
bmNlKTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlz
dGFuY2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2Vn
QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1BhdGhTZWdDbG9zZVBhdGg+IGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGgoKTsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gY3JlYXRlU1ZHUGF0aFNlZ01v
dmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw3IEBAIG1vZHVsZSBzdmcgewogCiAgICAgICAgIGZsb2F0IGdl
dFRvdGFsTGVuZ3RoKCk7CiAgICAgICAgIFNWR1BvaW50IGdldFBvaW50QXRMZW5ndGgoaW4gZmxv
YXQgZGlzdGFuY2UpOwotICAgICAgICB1bnNpZ25lZCBsb25nIGdldFBhdGhTZWdBdExlbmd0aChp
biBmbG9hdCBkaXN0YW5jZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24sIFNWR0V4
Y2VwdGlvbik7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGluIGZs
b2F0IGRpc3RhbmNlKTsKIAogICAgICAgICBTVkdQYXRoU2VnQ2xvc2VQYXRoIGNyZWF0ZVNWR1Bh
dGhTZWdDbG9zZVBhdGgoKTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDY1
MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2Niw2ICszNjYsOSBAQCBib29sIFNWR1BhdGhQYXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fY29uc3VtZXItPnF1aXRFYXJsaWVyKCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKwogICAgICAgICBtX2xhc3RDb21tYW5kID0gY29tbWFuZDsKIAogICAgICAgICBp
ZiAoIW1fc291cmNlLT5oYXNNb3JlRGF0YSgpKQpAQCAtMzgyLDYgKzM4NSw4IEBAIGJvb2wgU1ZH
UGF0aFBhcnNlcjo6cGFyc2VQYXRoRGF0YUZyb21Tb3UKICAgICAgICAgICAgICYmIG1fbGFzdENv
bW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnMKICAgICAgICAgICAgICYm
IG1fbGFzdENvbW1hbmQgIT0gUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWwpCiAgICAg
ICAgICAgICBtX2NvbnRyb2xQb2ludCA9IG1fY3VycmVudFBvaW50OworCisgICAgICAgIG1fY29u
c3VtZXItPm5leHRQYXRoU2VnbWVudCgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDY1MzYzKQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFj
dG9yeS5oIgogCisjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aEJsZW5kZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgogI2luY2x1ZGUgIlNW
R1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNW
R1BhdGhTZWdMaXN0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCIK
ICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFRyYXZl
cnNhbFN0YXRlQnVpbGRlci5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzQsNiArNzYsMTcgQEAgc3RhdGljIFNWR1BhdGhTdHJpbmdCdWls
ZGVyKiBnbG9iYWxTVkdQYQogICAgIHJldHVybiBzX2J1aWxkZXI7CiB9CiAKK3N0YXRpYyBTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyKFBhdGhUcmF2ZXJzYWxTdGF0ZSogdHJhdmVyc2FsU3RhdGUsIGZsb2F0IGxlbmd0aCkKK3sK
KyAgICBzdGF0aWMgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogc19idWlsZGVyID0gMDsK
KyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3IFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXI7CisKKyAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRUcmF2ZXJzYWxT
dGF0ZSh0cmF2ZXJzYWxTdGF0ZSk7CisgICAgc19idWlsZGVyLT5zZXREZXNpcmVkTGVuZ3RoKGxl
bmd0aCk7CisgICAgcmV0dXJuIHNfYnVpbGRlcjsKK30KKwogc3RhdGljIFNWR1BhdGhQYXJzZXIq
IGdsb2JhbFNWR1BhdGhQYXJzZXIoU1ZHUGF0aFNvdXJjZSogc291cmNlLCBTVkdQYXRoQ29uc3Vt
ZXIqIGNvbnN1bWVyKQogewogICAgIHN0YXRpYyBTVkdQYXRoUGFyc2VyKiBzX3BhcnNlciA9IDA7
CkBAIC0yNTMsNiArMjY2LDIzIEBAIGJvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5p
bWF0ZWQKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6Omdl
dFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnTGlzdCogcGF0
aFNlZ0xpc3QsIGZsb2F0IGxlbmd0aCwgdW5zaWduZWQgbG9uZyYgcGF0aFNlZykKK3sKKyAgICBB
U1NFUlQocGF0aFNlZ0xpc3QpOworICAgIGlmICghcGF0aFNlZ0xpc3QtPm51bWJlck9mSXRlbXMo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAKKworICAgIE93blB0cjxQYXRoVHJhdmVyc2FsU3Rh
dGU+IHRyYXZlcnNhbFN0YXRlID0gYWRvcHRQdHIobmV3IFBhdGhUcmF2ZXJzYWxTdGF0ZShQYXRo
VHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExlbmd0aCkpOworICAgIFNWR1BhdGhU
cmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBnbG9iYWxTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLmdldCgpLCBsZW5ndGgpOworCisgICAgT3duUHRyPFNW
R1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2VnTGlzdFNvdXJjZTo6Y3JlYXRl
KHBhdGhTZWdMaXN0KTsKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJzZXIgPSBnbG9iYWxTVkdQYXRo
UGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CisgICAgYm9vbCBvayA9IHBhcnNlci0+cGFy
c2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcpOworICAgIHBhdGhTZWcgPSBi
dWlsZGVyLT5nZXRTVkdQYXRoU2VnKCk7CisgICAgcGFyc2VyLT5jbGVhbnVwKCk7CisgICAgcmV0
dXJuIG9rOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNl
ckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9y
eS5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBi
dWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVTdHJlYW0qLCBTVkdQYXRo
Qnl0ZVN0cmVhbSosIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mLCBmbG9hdCk7CiAKKyAgICBi
b29sIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnTGlz
dCosIGZsb2F0LCB1bnNpZ25lZCBsb25nJik7CisKIHByaXZhdGU6CiAgICAgU1ZHUGF0aFBhcnNl
ckZhY3RvcnkoKTsKICAgICB+U1ZHUGF0aFBhcnNlckZhY3RvcnkoKTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsMTQgKzI1LDYgQEAK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCiAKLSNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAi
UGF0aFRyYXZlcnNhbFN0YXRlLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5oIgot
I2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG8uaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRv
LmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oIgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQpAQCAtNDMsNTkgKzM2LDYgQEAgU1ZHUGF0aFNlZ0xpc3Q6On5T
VkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQYXRo
U2VnQXRMZW5ndGgoZG91YmxlIGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8g
RklYTUUgOiB0byBiZSB1c2VmdWwgdGhpcyB3aWxsIG5lZWQgdG8gc3VwcG9ydCBub24tbm9ybWFs
aXplZCBTVkdQYXRoU2VnTGlzdHMKLSAgICBpbnQgbGVuID0gbnVtYmVyT2ZJdGVtcygpOwotICAg
IC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgd2lsbCBsaWtlbHkgbW92ZSB0byBhICJwYXRoIGFw
cGxpZXIiLWxpa2UgbW9kZWwsIHVudGlsIHRoZW4gUGF0aFRyYXZlcnNhbFN0YXRlIGlzIGxlc3Mg
dXNlZnVsIGFzIHdlIGNvdWxkIGp1c3QgdXNlIGxvY2FscwotICAgIFBhdGhUcmF2ZXJzYWxTdGF0
ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRyYXZlcnNhbFNlZ21lbnRBdExl
bmd0aCk7Ci0gICAgdHJhdmVyc2FsU3RhdGUubV9kZXNpcmVkTGVuZ3RoID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChsZW5ndGgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsK
LSAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0oaSwgZWMpLmdldCgpOwotICAg
ICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZmxvYXQgc2VnbWVu
dExlbmd0aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoc2VnbWVudC0+cGF0aFNlZ1R5cGUoKSkgewot
ICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNW
R1BhdGhTZWdNb3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0PFNWR1BhdGhTZWdNb3ZldG9B
YnMqPihzZWdtZW50KTsKLSAgICAgICAgICAgIHNlZ21lbnRMZW5ndGggPSB0cmF2ZXJzYWxTdGF0
ZS5tb3ZlVG8oRmxvYXRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRvLT55KCkpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0FiczoKLSAg
ICAgICAgewotICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0FicyogbGluZVRvID0gc3RhdGlj
X2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgc2VnbWVu
dExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmxpbmVUbyhGbG9hdFBvaW50KGxpbmVUby0+eCgpLCBs
aW5lVG8tPnkoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgotICAgICAgICB7Ci0gICAgICAgICAgICBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljQWJzKiBjdXJ2ZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZl
cnNhbFN0YXRlLmN1YmljQmV6aWVyVG8oRmxvYXRQb2ludChjdXJ2ZVRvLT54MSgpLCBjdXJ2ZVRv
LT55MSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2lu
dChjdXJ2ZVRvLT54MigpLCBjdXJ2ZVRvLT55MigpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54KCksIGN1cnZlVG8tPnkoKSkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQ
YXRoOgotICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmNsb3NlU3Vi
cGF0aCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdvcmtzIHdpdGggbm9ybWFsaXpl
ZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExlbmd0aCArPSBzZWdtZW50TGVuZ3RoOwotICAg
ICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6
VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQotICAgICAgICAgICAgJiYgKHRyYXZlcnNhbFN0YXRl
Lm1fdG90YWxMZW5ndGggPj0gdHJhdmVyc2FsU3RhdGUubV9kZXNpcmVkTGVuZ3RoKSkgewotICAg
ICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4OwotICAgICAgICB9
Ci0gICAgICAgIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4Kys7Ci0gICAgfQotCi0gICAg
Ly8gVGhlIFNWRyBzcGVjIGlzIHVuY2xlYXIgYXMgdG8gd2hhdCB0byByZXR1cm4gd2hlbiB0aGUg
ZGlzdGFuY2UgaXMgbm90IG9uIHRoZSBwYXRoLgotICAgIC8vIFdlYktpdC9PcGVyYS9GRiBhbGwg
cmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlzdGFuY2UgZXhjZWVkcyB0aGUg
YWN0dWFsIHBhdGggbGVuZ3RoOgotICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX3NlZ21lbnRJ
bmRleCA/IHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4IC0gMSA6IDA7Ci19Ci0KIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDY1
MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xp
c3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpc3QoYXR0cmlidXRlTmFtZSkpOyB9CiAgICAgdmlydHVh
bCB+U1ZHUGF0aFNlZ0xpc3QoKTsKIAotICAgIHVuc2lnbmVkIGdldFBhdGhTZWdBdExlbmd0aChk
b3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQogcHJpdmF0ZToKICAgICBTVkdQYXRoU2VnTGlzdChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xp
c3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmgJKHJldmlzaW9uIDY1MzYzKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogICAgIFNWR1Bh
dGhTZWdMaXN0QnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRDdXJyZW50U1ZHUGF0aFNlZ0xpc3Qo
U1ZHUGF0aFNlZ0xpc3QqIHBhdGhTZWdMaXN0KSB7IG1fcGF0aFNlZ0xpc3QgPSBwYXRoU2VnTGlz
dDsgfQorICAgIHZpcnR1YWwgdm9pZCBuZXh0UGF0aFNlZ21lbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgcXVpdEVhcmxpZXIoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBj
bGVhbnVwKCkgeyBtX3BhdGhTZWdMaXN0ID0gMDsgfQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2NTM2MykKKysrIFdlYkNvcmUvc3ZnL1NW
R1BhdGhTdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgcHVi
bGljOgogICAgIFNWR1BhdGhTdHJpbmdCdWlsZGVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YW51cCgpIHsgbV9zdHJpbmdCdWlsZGVyLmNsZWFyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmV4
dFBhdGhTZWdtZW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcmVzdWx0KCkgeyByZXR1cm4gbV9zdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKENvbmNhdEFkZGluZ1NwYWNlc0JldHdlZW5JbmRpdmlkdWFsU3RyaW5ncyk7IH0K
IAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0
YXRlQnVpbGRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKCkKKyAgICA6IG1fdHJhdmVyc2FsU3RhdGUoMCkKKyAg
ICAsIG1fZGVzaXJlZExlbmd0aCgwKQoreworfQorCit2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXI6Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCwgUGF0
aENvb3JkaW5hdGVNb2RlKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBt
X3RyYXZlcnNhbFN0YXRlLT5tX3RvdGFsTGVuZ3RoICs9IG1fdHJhdmVyc2FsU3RhdGUtPm1vdmVU
byh0YXJnZXRQb2ludCk7Cit9CisKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
bGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUp
Cit7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUt
Pm1fdG90YWxMZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+bGluZVRvKHRhcmdldFBvaW50KTsK
K30KKwordm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZs
b2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCit7CisgICAgQVNTRVJU
KG1fdHJhdmVyc2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90YWxMZW5ndGgg
Kz0gbV90cmF2ZXJzYWxTdGF0ZS0+Y3ViaWNCZXppZXJUbyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0
UG9pbnQpOworfQorCit2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0
aCgpCit7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3Rh
dGUtPm1fdG90YWxMZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+Y2xvc2VTdWJwYXRoKCk7Cit9
CisKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6c2V0RGVzaXJlZExlbmd0aChm
bG9hdCBkZXNpcmVkTGVuZ3RoKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAg
ICBtX3RyYXZlcnNhbFN0YXRlLT5tX2Rlc2lyZWRMZW5ndGggPSBkZXNpcmVkTGVuZ3RoOworfQor
Citib29sIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OnF1aXRFYXJsaWVyKCkKK3sKKyAg
ICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUt
Pm1fYWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3Ro
KTsKKyAgICByZXR1cm4gKG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90YWxMZW5ndGggPj0gbV90cmF2
ZXJzYWxTdGF0ZS0+bV9kZXNpcmVkTGVuZ3RoKTsKK30KKwordm9pZCBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyOjpuZXh0UGF0aFNlZ21lbnQoKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNh
bFN0YXRlKTsKKyAgICBtX3RyYXZlcnNhbFN0YXRlLT5tX3NlZ21lbnRJbmRleCsrOworfQorCit1
bnNpZ25lZCBsb25nIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmdldFNWR1BhdGhTZWco
KQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICByZXR1cm4gbV90cmF2ZXJz
YWxTdGF0ZS0+bV9zZWdtZW50SW5kZXg7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcp
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0
aFRyYXZlcnNhbFN0YXRlQnVpbGRlcl9oCisjZGVmaW5lIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1
aWxkZXJfaAorCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5j
bHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCisjaW5jbHVkZSAiU1ZHUGF0aENvbnN1bWVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlciA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgeworcHVibGljOgorICAgIFNWR1BhdGhUcmF2
ZXJzYWxTdGF0ZUJ1aWxkZXIoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgZ2V0U1ZHUGF0aFNlZygp
OworICAgIHZvaWQgc2V0Q3VycmVudFRyYXZlcnNhbFN0YXRlKFBhdGhUcmF2ZXJzYWxTdGF0ZSog
dHJhdmVyc2FsU3RhdGUpIHsgbV90cmF2ZXJzYWxTdGF0ZSA9IHRyYXZlcnNhbFN0YXRlOyB9Cisg
ICAgdm9pZCBzZXREZXNpcmVkTGVuZ3RoKGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbmV4dFBh
dGhTZWdtZW50KCk7CisgICAgdmlydHVhbCBib29sIHF1aXRFYXJsaWVyKCk7CisgICAgdmlydHVh
bCB2b2lkIGNsZWFudXAoKSB7IG1fdHJhdmVyc2FsU3RhdGUgPSAwOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJpc25nL05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgor
ICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQ
YXRoQ29vcmRpbmF0ZU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQ
b2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSk7CisgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJp
Yyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBQYXRoQ29vcmRpbmF0ZU1vZGUpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhdGgoKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBOb3QgdXNlZCBmb3IgUGF0aFRyYXZlcnNhbFN0YXRlLgorICAgIHZp
cnR1YWwgdm9pZCBsaW5lVG9Ib3Jpem9udGFsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGluZVRvVmVydGljYWwo
ZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgYXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwgYm9vbCwgYm9vbCwg
Y29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorCisgICAgUGF0aFRyYXZlcnNhbFN0YXRlKiBtX3RyYXZlcnNhbFN0YXRlOworICAg
IGZsb2F0IG1fZGVzaXJlZExlbmd0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTVkcpCisjZW5kaWYgLy8gU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVp
bGRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64488</attachid>
            <date>2010-08-16 06:16:15 -0700</date>
            <delta_ts>2010-08-18 01:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44009-20100816151613.patch</filename>
            <type>text/plain</type>
            <size>30294</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTQxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTAtMDgtMTYgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
U1ZHUGF0aFBhcnNlciBsb2dpYyB0byB0cmF2ZXJzZSBzdGF0ZXMgb2YgYSBQYXRoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDAwOQorCisgICAgICAg
IE1vdmUgdGhlIGdldFBhdGhzZWdBdExlbmd0aCBsb2dpYyBmcm9tIFNWR1BhdGhTZWdMaXN0IGlu
dG8gYSBuZXcgU1ZHUGF0aENvbnN1bWVyCisgICAgICAgIGNsYXNzOiBTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyLgorICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBnZXQgYSBTVkdQYXRoU2Vn
IGF0IGEgZ2l2ZW4gbGVuZ3RoIGZvciBTVkdQYXRoQnl0ZVN0cmVhbXMgYW5kIFNWR1BhdGhTZWdM
aXN0cy4KKyAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgdW5hbHRlcmVkIFNWRyBw
YXRoIGRhdGEsIGluc3RlYWQgb2YganVzdCBub3JtYWxpemVkIHBhdGggZGF0YS4KKyAgICAgICAg
VGhpcyBpcyB0aGUgZmluYWwgcHJlcGFyYXRpb24gdG8gcHJvdmlkZSBub3JtYWxpemVkIGFuZCB1
bmFsdGVyZWQgU1ZHUGF0aFNlZ0xpc3RzCisgICAgICAgIG9uIFNWR1BhdGhFbGVtZW50LgorCisg
ICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9T
VkdBbGxJbk9uZS5jcHA6CisgICAgICAgICogc3ZnL1NWR1BhdGhCdWlsZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoQnVpbGRlcjo6bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhCdWlsZGVyOjpxdWl0RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyOjpuZXh0UGF0aFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyOjpxdWl0RWFybGllcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhDb25z
dW1lci5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaWRsOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQ
YXJzZXI6OnBhcnNlUGF0aERhdGFGcm9tU291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBh
cnNlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyRmFjdG9yeTo6
Z2V0U1ZHUGF0aFNlZ0F0TGVuZ3RoRnJvbVNWR1BhdGhTZWdMaXN0KToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFBhcnNlckZhY3RvcnkuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRo
U2VnTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVpbGRl
cjo6bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0QnVp
bGRlcjo6cXVpdEVhcmxpZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om5leHRQYXRoU2VnbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cXVpdEVhcmxpZXIp
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcDogQWRkZWQu
IE5ldyBDb25zdW1lciBmb3IgU1ZHUGF0aFBhcnNlci4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bW92ZVRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmxpbmVUbyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRv
Q3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
Y2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXI6OnNldERlc2lyZWRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlcjo6cXVpdEVhcmxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRy
YXZlcnNhbFN0YXRlQnVpbGRlcjo6bmV4dFBhdGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmdldFNWR1BhdGhTZWcpOgorICAgICAgICAq
IHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6c2V0Q3VycmVudFRyYXZlcnNhbFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNs
ZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6
bGluZVRvSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6Y3VydmVUb1F1YWRyYXRpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXI6OmFyY1RvKToKKwogMjAxMC0wNy0yOCAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUv
QW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY1
NDE5KQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC04OTcsNiArODk3
LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJc3ZnL1NWR1Bh
dGhTZWdNb3ZldG8uY3BwIFwKIAlzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwIFwKIAlzdmcv
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAgXAorCXN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWls
ZGVyLmNwcCBcCiAJc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBcCiAJc3ZnL1NWR1BvaW50TGlz
dC5jcHAgXAogCXN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2
NTQxOSkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3MDgs
NiArMTcwOCw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHUGF0aFNlZ01vdmV0
by5jcHAKICAgICAgICAgc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAogICAgICAgICBzdmcv
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKKyAgICAgICAgc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXIuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKICAgICAgICAg
c3ZnL1NWR1BvaW50TGlzdC5jcHAKICAgICAgICAgc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApJbmRl
eDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCShyZXZpc2lvbiA2NTQxOSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxMzQsNiArNDEzNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0aFN0
cmluZ1NvdXJjZS5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuaCBcCisJ
V2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5jcHAgXAorCVdlYkNvcmUv
c3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIFwKIAlX
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA2NTQxOSkKKysr
IFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zODg1LDYgKzM4ODUsOCBA
QAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQYXRo
U3RyaW5nU291cmNlLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxk
ZXIuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQb2lu
dExpc3QuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjU0MTkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC0yODgzLDYgKzI4ODMsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfU1ZHPTEpIHsKICAgICAgICAgc3ZnL1NWR1BhdGhTZWdNb3ZldG8uY3BwIFwKICAgICAg
ICAgc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoU3Ry
aW5nU291cmNlLmNwcCBcCisgICAgICAgIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVy
LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgXAogICAgICAgICBzdmcv
U1ZHUG9pbnRMaXN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAgXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2NTQxOSkKKysr
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ5NDc3LDYgKzQ5NDc3LDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdc
U1ZHUGF0dGVybkVsZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjU0MTkpCisrKyBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTQ5OSw2ICsxNDk5LDggQEAKIAkJODRCNkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1Bh
dGhTZWdMaXN0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEI2Qjk3NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2Uu
aCAqLzsgfTsKIAkJODRCREExNkIxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCAqLzsgfTsKIAkJODRCREExNkMxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODRCREExNkExMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oICov
OyB9OworCQk4NEM1QjJGQTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NEM1QjJGODEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRl
ci5jcHAgKi87IH07CisJCTg0QzVCMkZCMTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVy
c2FsU3RhdGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlci5oICovOyB9OwogCQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJs
ZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODRDNjc4NEExMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmNwcCAqLzsgfTsKIAkJ
ODRDNjc4NEQxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEM2Nzg0QjEyMTQ4MTQ3MDBBOTI5
MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCAqLzsgfTsKIAkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0
IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3Jt
LmNwcCAqLzsgfTsKQEAgLTczNTUsNiArNzM1Nyw4IEBACiAJCTg0QjZCOTc2MTIwRjEzRTUwMEI4
RUZBRiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NEJEQTE2OTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QkRBMTZBMTEz
NThEMkEwMERCRjY0QyAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QzVCMkY4MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NEM1QjJGOTEyMTZEQzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0
QzY3ODRBMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg0QzY3ODRCMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxl
bmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoQmxlbmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEQwQzQwMzExMTVGMUQ0MDAxOEFBMzQg
LyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEFmZmluZVRyYW5zZm9ybS5jcHA7IHBhdGggPSB0cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQyNSw2ICsxNTQyOSw4IEBA
CiAJCQkJODQxOUQyQjgxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmgg
Ki8sCiAJCQkJODQzMDBCRDkxMjBDOUFFRDAwMjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2Uu
Y3BwICovLAogCQkJCTg0MzAwQkQ1MTIwQzlBQUMwMDIxOTU0QSAvKiBTVkdQYXRoU3RyaW5nU291
cmNlLmggKi8sCisJCQkJODRDNUIyRjgxMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhUcmF2ZXJz
YWxTdGF0ZUJ1aWxkZXIuY3BwICovLAorCQkJCTg0QzVCMkY5MTIxNkRDODEwMDg4QjUzQSAvKiBT
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmggKi8sCiAJCQkJQjIyMjc4RjEwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGMjBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGMzBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaWRsICovLApAQCAtMTk5MDMsNiArMTk5MDks
NyBAQAogCQkJCTg0MzAwQkQ4MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRoU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NDE5RDJCQTEyMEUwQzc2MDAxNDFGOEYgLyogU1ZHUGF0aFN0cmlu
Z0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MzAwQkQ2MTIwQzlBQUMwMDIxOTU0QSAv
KiBTVkdQYXRoU3RyaW5nU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEM1QjJGQjEyMTZE
QzgxMDA4OEI1M0EgLyogU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTk5NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUG9pbnRM
aWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM3NSw2ICsyMjM4Miw3IEBA
CiAJCQkJQjIyMjdBODMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdNb3ZldG8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODQxOUQyQjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJp
bmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MzAwQkRBMTIwQzlBRUQwMDIxOTU0
QSAvKiBTVkdQYXRoU3RyaW5nU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QzVCMkZB
MTIxNkRDODEwMDg4QjUzQSAvKiBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyMjI3QTg3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QThFMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9u
ZS5jcHAJKHJldmlzaW9uIDY1NDE5KQorKysgV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92
ZXRvLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAiCiAjaW5jbHVkZSAi
U1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAiCisjaW5jbHVkZSAiU1ZHUGF0aFRyYXZlcnNhbFN0YXRl
QnVpbGRlci5jcHAiCiAjaW5jbHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuY3BwIgogI2luY2x1ZGUg
IlNWR1BvaW50TGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seUVsZW1lbnQuY3BwIgpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoQnVpbGRlci5oCShyZXZpc2lvbiA2NTQxOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhC
dWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHVibGljOgogICAgIFNW
R1BhdGhCdWlsZGVyKCk7CiAKICAgICB2b2lkIHNldEN1cnJlbnRQYXRoKFBhdGgqIHBhdGgpIHsg
bV9wYXRoID0gcGF0aDsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQYXRoU2VnbWVudENv
dW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3BhdGggPSAwOyB9CiAKIHBy
aXZhdGU6CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkocmV2aXNp
b24gNjU0MTkpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCBwdWJsaWM6CiAgICAgU1ZHUGF0aEJ5dGVTdHJl
YW1CdWlsZGVyKCk7CiAKICAgICB2b2lkIHNldEN1cnJlbnRCeXRlU3RyZWFtKFNWR1BhdGhCeXRl
U3RyZWFtKiBieXRlU3RyZWFtKSB7IG1fYnl0ZVN0cmVhbSA9IGJ5dGVTdHJlYW07IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBjb250aW51ZUNvbnN1bWluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgY2xlYW51cCgpIHsgbV9ieXRlU3RyZWFtID0gMDsgfQogCiBwcml2YXRlOgpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUGF0aENvbnN1bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aENvbnN1bWVyLmgJKHJldmlzaW9uIDY1NDE5KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aENv
bnN1bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBQYXRoUGFyc2lu
Z01vZGUgewogCiBjbGFzcyBTVkdQYXRoQ29uc3VtZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewog
cHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYW51cCgpID0gMDsKIAogcHVibGljOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAkocmV2aXNpb24gNjU0MTkpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDkgKzY5LDEyIEBAIEZsb2F0UG9pbnQgU1ZHUGF0aEVsZW1lbnQ6
OmdldFBvaW50QXRMZW4KICAgICByZXR1cm4gdG9QYXRoRGF0YSgpLnBvaW50QXRMZW5ndGgobGVu
Z3RoLCBvayk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgU1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdB
dExlbmd0aChmbG9hdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQordW5zaWduZWQgbG9uZyBT
VkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkKIHsKLSAgICBy
ZXR1cm4gcGF0aFNlZ0xpc3QoKS0+Z2V0UGF0aFNlZ0F0TGVuZ3RoKGxlbmd0aCwgZWMpOworICAg
IFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNl
bGYoKTsKKyAgICB1bnNpZ25lZCBsb25nIHBhdGhTZWcgPSAwOworICAgIGZhY3RvcnktPmdldFNW
R1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2VnTGlzdChwYXRoU2VnTGlzdCgpLCBsZW5ndGgs
IHBhdGhTZWcpOworICAgIHJldHVybiBwYXRoU2VnOwogfQogCiBQYXNzUmVmUHRyPFNWR1BhdGhT
ZWdDbG9zZVBhdGg+IFNWR1BhdGhFbGVtZW50OjpjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKCkK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNjU0MTkpCisrKyBXZWJDb3JlL3N2Zy9T
VkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAgICAgICAgIGZsb2F0IGdldFRvdGFsTGVuZ3RoKCk7
CiAgICAgICAgIEZsb2F0UG9pbnQgZ2V0UG9pbnRBdExlbmd0aChmbG9hdCBkaXN0YW5jZSk7Ci0g
ICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0UGF0aFNlZ0F0TGVuZ3Ro
KGZsb2F0IGRpc3RhbmNlKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2Vn
Q2xvc2VQYXRoPiBjcmVhdGVTVkdQYXRoU2VnQ2xvc2VQYXRoKCk7CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR1BhdGhTZWdNb3ZldG9BYnM+IGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9BYnMo
ZmxvYXQgeCwgZmxvYXQgeSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaWRsCShyZXZpc2lvbiA2
NTQxOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzcsOCArMzcsNyBAQCBtb2R1bGUgc3ZnIHsKIAogICAgICAgICBmbG9hdCBnZXRUb3RhbExl
bmd0aCgpOwogICAgICAgICBTVkdQb2ludCBnZXRQb2ludEF0TGVuZ3RoKGluIGZsb2F0IGRpc3Rh
bmNlKTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2VnQXRMZW5ndGgoaW4gZmxvYXQg
ZGlzdGFuY2UpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uLCBTVkdFeGNlcHRpb24p
OworICAgICAgICB1bnNpZ25lZCBsb25nIGdldFBhdGhTZWdBdExlbmd0aChpbiBmbG9hdCBkaXN0
YW5jZSk7CiAKICAgICAgICAgU1ZHUGF0aFNlZ0Nsb3NlUGF0aCBjcmVhdGVTVkdQYXRoU2VnQ2xv
c2VQYXRoKCk7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCShyZXZpc2lvbiA2NTQxOSkKKysr
IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiAr
MzY2LDkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRhRnJvbVNvdQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAg
IGlmICghbV9jb25zdW1lci0+Y29udGludWVDb25zdW1pbmcoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgIG1fbGFzdENvbW1hbmQgPSBjb21tYW5kOwogCiAgICAgICAgIGlm
ICghbV9zb3VyY2UtPmhhc01vcmVEYXRhKCkpCkBAIC0zODIsNiArMzg1LDggQEAgYm9vbCBTVkdQ
YXRoUGFyc2VyOjpwYXJzZVBhdGhEYXRhRnJvbVNvdQogICAgICAgICAgICAgJiYgbV9sYXN0Q29t
bWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicwogICAgICAgICAgICAgJiYg
bV9sYXN0Q29tbWFuZCAhPSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbCkKICAgICAg
ICAgICAgIG1fY29udHJvbFBvaW50ID0gbV9jdXJyZW50UG9pbnQ7CisKKyAgICAgICAgbV9jb25z
dW1lci0+aW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpOwogICAgIH0KIAogICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDY1
NDE5KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRo
UGFyc2VyRmFjdG9yeS5oIgogCisjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAjaW5j
bHVkZSAiU1ZHUGF0aEJsZW5kZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgogI2lu
Y2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIlNWR1BhdGhTZWdMaXN0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCisjaW5jbHVkZSAiU1ZH
UGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsNiArNzYsMTcgQEAgc3RhdGljIFNWR1BhdGhT
dHJpbmdCdWlsZGVyKiBnbG9iYWxTVkdQYQogICAgIHJldHVybiBzX2J1aWxkZXI7CiB9CiAKK3N0
YXRpYyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKiBnbG9iYWxTVkdQYXRoVHJhdmVyc2Fs
U3RhdGVCdWlsZGVyKFBhdGhUcmF2ZXJzYWxTdGF0ZSYgdHJhdmVyc2FsU3RhdGUsIGZsb2F0IGxl
bmd0aCkKK3sKKyAgICBzdGF0aWMgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlciogc19idWls
ZGVyID0gMDsKKyAgICBpZiAoIXNfYnVpbGRlcikKKyAgICAgICAgc19idWlsZGVyID0gbmV3IFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI7CisKKyAgICBzX2J1aWxkZXItPnNldEN1cnJlbnRU
cmF2ZXJzYWxTdGF0ZSgmdHJhdmVyc2FsU3RhdGUpOworICAgIHNfYnVpbGRlci0+c2V0RGVzaXJl
ZExlbmd0aChsZW5ndGgpOworICAgIHJldHVybiBzX2J1aWxkZXI7Cit9CisKIHN0YXRpYyBTVkdQ
YXRoUGFyc2VyKiBnbG9iYWxTVkdQYXRoUGFyc2VyKFNWR1BhdGhTb3VyY2UqIHNvdXJjZSwgU1ZH
UGF0aENvbnN1bWVyKiBjb25zdW1lcikKIHsKICAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlciogc19w
YXJzZXIgPSAwOwpAQCAtMjUzLDYgKzI2NiwyMyBAQCBib29sIFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpidWlsZEFuaW1hdGVkCiAgICAgcmV0dXJuIG9rOwogfQogCitib29sIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aFNlZ0xpc3QoU1ZHUGF0aFNl
Z0xpc3QqIHBhdGhTZWdMaXN0LCBmbG9hdCBsZW5ndGgsIHVuc2lnbmVkIGxvbmcmIHBhdGhTZWcp
Cit7CisgICAgQVNTRVJUKHBhdGhTZWdMaXN0KTsKKyAgICBpZiAoIXBhdGhTZWdMaXN0LT5udW1i
ZXJPZkl0ZW1zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsgCisKKyAgICBQYXRoVHJhdmVyc2Fs
U3RhdGUgdHJhdmVyc2FsU3RhdGUoUGF0aFRyYXZlcnNhbFN0YXRlOjpUcmF2ZXJzYWxTZWdtZW50
QXRMZW5ndGgpOworICAgIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIqIGJ1aWxkZXIgPSBn
bG9iYWxTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyKHRyYXZlcnNhbFN0YXRlLCBsZW5ndGgp
OworCisgICAgT3duUHRyPFNWR1BhdGhTZWdMaXN0U291cmNlPiBzb3VyY2UgPSBTVkdQYXRoU2Vn
TGlzdFNvdXJjZTo6Y3JlYXRlKHBhdGhTZWdMaXN0KTsKKyAgICBTVkdQYXRoUGFyc2VyKiBwYXJz
ZXIgPSBnbG9iYWxTVkdQYXRoUGFyc2VyKHNvdXJjZS5nZXQoKSwgYnVpbGRlcik7CisgICAgYm9v
bCBvayA9IHBhcnNlci0+cGFyc2VQYXRoRGF0YUZyb21Tb3VyY2UoTm9ybWFsaXplZFBhcnNpbmcp
OworICAgIHBhdGhTZWcgPSBidWlsZGVyLT5nZXRTVkdQYXRoU2VnKCk7CisgICAgcGFyc2VyLT5j
bGVhbnVwKCk7CisgICAgcmV0dXJuIG9rOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoUGFyc2VyRmFjdG9yeS5oCShyZXZpc2lvbiA2NTQxOSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1BhdGhQYXJzZXJGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5
dGVTdHJlYW0qLCBTVkdQYXRoQnl0ZVN0cmVhbSosIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4m
LCBmbG9hdCk7CiAKKyAgICBib29sIGdldFNWR1BhdGhTZWdBdExlbmd0aEZyb21TVkdQYXRoU2Vn
TGlzdChTVkdQYXRoU2VnTGlzdCosIGZsb2F0LCB1bnNpZ25lZCBsb25nJik7CisKIHByaXZhdGU6
CiAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkoKTsKICAgICB+U1ZHUGF0aFBhcnNlckZhY3Rvcnko
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHJldmlzaW9uIDY1NDE5KQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjQsMTQgKzI1LDYgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0LmgiCiAKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJGbG9hdFBv
aW50LmgiCi0jaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCi0jaW5jbHVkZSAiU1ZHUGF0
aFNlZ0Nsb3NlUGF0aC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG8uaCIKLSNpbmNsdWRl
ICJTVkdQYXRoU2VnTGluZXRvLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5o
IgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlz
dChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQpAQCAtNDMsNTkgKzM2LDYgQEAg
U1ZHUGF0aFNlZ0xpc3Q6On5TVkdQYXRoU2VnTGlzdCgpCiB7CiB9CiAKLXVuc2lnbmVkIFNWR1Bh
dGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlIGxlbmd0aCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgLy8gRklYTUUgOiB0byBiZSB1c2VmdWwgdGhpcyB3aWxsIG5lZWQgdG8g
c3VwcG9ydCBub24tbm9ybWFsaXplZCBTVkdQYXRoU2VnTGlzdHMKLSAgICBpbnQgbGVuID0gbnVt
YmVyT2ZJdGVtcygpOwotICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgd2lsbCBsaWtlbHkg
bW92ZSB0byBhICJwYXRoIGFwcGxpZXIiLWxpa2UgbW9kZWwsIHVudGlsIHRoZW4gUGF0aFRyYXZl
cnNhbFN0YXRlIGlzIGxlc3MgdXNlZnVsIGFzIHdlIGNvdWxkIGp1c3QgdXNlIGxvY2FscwotICAg
IFBhdGhUcmF2ZXJzYWxTdGF0ZSB0cmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3RhdGU6OlRy
YXZlcnNhbFNlZ21lbnRBdExlbmd0aCk7Ci0gICAgdHJhdmVyc2FsU3RhdGUubV9kZXNpcmVkTGVu
Z3RoID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChsZW5ndGgpOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IGdldEl0ZW0o
aSwgZWMpLmdldCgpOwotICAgICAgICBpZiAoZWMpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgZmxvYXQgc2VnbWVudExlbmd0aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAoc2VnbWVudC0+
cGF0aFNlZ1R5cGUoKSkgewotICAgICAgICBjYXNlIFBhdGhTZWdNb3ZlVG9BYnM6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIFNWR1BhdGhTZWdNb3ZldG9BYnMqIG1vdmVUbyA9IHN0YXRpY19jYXN0
PFNWR1BhdGhTZWdNb3ZldG9BYnMqPihzZWdtZW50KTsKLSAgICAgICAgICAgIHNlZ21lbnRMZW5n
dGggPSB0cmF2ZXJzYWxTdGF0ZS5tb3ZlVG8oRmxvYXRQb2ludChtb3ZlVG8tPngoKSwgbW92ZVRv
LT55KCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUGF0
aFNlZ0xpbmVUb0FiczoKLSAgICAgICAgewotICAgICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0Fi
cyogbGluZVRvID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aFNlZ0xpbmV0b0Ficyo+KHNlZ21lbnQpOwot
ICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmxpbmVUbyhGbG9hdFBv
aW50KGxpbmVUby0+eCgpLCBsaW5lVG8tPnkoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKiBjdXJ2ZVRvID0gc3RhdGljX2Nh
c3Q8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyo+KHNlZ21lbnQpOwotICAgICAgICAgICAgc2Vn
bWVudExlbmd0aCA9IHRyYXZlcnNhbFN0YXRlLmN1YmljQmV6aWVyVG8oRmxvYXRQb2ludChjdXJ2
ZVRvLT54MSgpLCBjdXJ2ZVRvLT55MSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54MigpLCBjdXJ2ZVRvLT55MigpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2ludChjdXJ2ZVRvLT54KCks
IGN1cnZlVG8tPnkoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgotICAgICAgICAgICAgc2VnbWVudExlbmd0aCA9IHRyYXZl
cnNhbFN0YXRlLmNsb3NlU3VicGF0aCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBGSVhNRTogVGhpcyBvbmx5IHdv
cmtzIHdpdGggbm9ybWFsaXplZC9wcm9jZXNzZWQgcGF0aCBkYXRhLgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgdHJhdmVyc2FsU3RhdGUubV90b3RhbExlbmd0aCArPSBz
ZWdtZW50TGVuZ3RoOwotICAgICAgICBpZiAoKHRyYXZlcnNhbFN0YXRlLm1fYWN0aW9uID09IFBh
dGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKQotICAgICAgICAgICAg
JiYgKHRyYXZlcnNhbFN0YXRlLm1fdG90YWxMZW5ndGggPj0gdHJhdmVyc2FsU3RhdGUubV9kZXNp
cmVkTGVuZ3RoKSkgewotICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVu
dEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4
Kys7Ci0gICAgfQotCi0gICAgLy8gVGhlIFNWRyBzcGVjIGlzIHVuY2xlYXIgYXMgdG8gd2hhdCB0
byByZXR1cm4gd2hlbiB0aGUgZGlzdGFuY2UgaXMgbm90IG9uIHRoZSBwYXRoLgotICAgIC8vIFdl
YktpdC9PcGVyYS9GRiBhbGwgcmV0dXJuIHRoZSBsYXN0IHBhdGggc2VnbWVudCBpZiB0aGUgZGlz
dGFuY2UgZXhjZWVkcyB0aGUgYWN0dWFsIHBhdGggbGVuZ3RoOgotICAgIHJldHVybiB0cmF2ZXJz
YWxTdGF0ZS5tX3NlZ21lbnRJbmRleCA/IHRyYXZlcnNhbFN0YXRlLm1fc2VnbWVudEluZGV4IC0g
MSA6IDA7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0LmgJKHJldmlzaW9uIDY1NDE5KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpc3QoYXR0cmlidXRlTmFt
ZSkpOyB9CiAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpc3QoKTsKIAotICAgIHVuc2lnbmVkIGdl
dFBhdGhTZWdBdExlbmd0aChkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQogcHJpdmF0ZToKICAg
ICBTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJik7CiB9OwpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDY1NDE5KQorKysgV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAg
cHVibGljOgogICAgIFNWR1BhdGhTZWdMaXN0QnVpbGRlcigpOwogCiAgICAgdm9pZCBzZXRDdXJy
ZW50U1ZHUGF0aFNlZ0xpc3QoU1ZHUGF0aFNlZ0xpc3QqIHBhdGhTZWdMaXN0KSB7IG1fcGF0aFNl
Z0xpc3QgPSBwYXRoU2VnTGlzdDsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRQYXRoU2Vn
bWVudENvdW50KCkgeyB9CisgICAgdmlydHVhbCBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3BhdGhTZWdMaXN0
ID0gMDsgfQogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oCShy
ZXZpc2lvbiA2NTQxOSkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgcHVibGljOgogICAgIFNWR1BhdGhTdHJpbmdC
dWlsZGVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIHsgbV9zdHJpbmdCdWlsZGVy
LmNsZWFyKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgp
IHsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIHsgcmV0dXJuIHRydWU7
IH0KICAgICBTdHJpbmcgcmVzdWx0KCkgeyByZXR1cm4gbV9zdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KENvbmNhdEFkZGluZ1NwYWNlc0JldHdlZW5JbmRpdmlkdWFsU3RyaW5ncyk7IH0KIAogcHJpdmF0
ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZH
KQorI2luY2x1ZGUgIlNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpTVkdQYXRoVHJhdmVy
c2FsU3RhdGVCdWlsZGVyKCkKKyAgICA6IG1fdHJhdmVyc2FsU3RhdGUoMCkKKyAgICAsIG1fZGVz
aXJlZExlbmd0aCgwKQoreworfQorCit2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6
Om1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCwgUGF0aENvb3JkaW5h
dGVNb2RlKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBtX3RyYXZlcnNh
bFN0YXRlLT5tX3RvdGFsTGVuZ3RoICs9IG1fdHJhdmVyc2FsU3RhdGUtPm1vdmVUbyh0YXJnZXRQ
b2ludCk7Cit9CisKK3ZvaWQgU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6bGluZVRvKGNv
bnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCit7CisgICAg
QVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90YWxM
ZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+bGluZVRvKHRhcmdldFBvaW50KTsKK30KKwordm9p
ZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQm
IHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUpCit7CisgICAgQVNTRVJUKG1fdHJhdmVy
c2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90YWxMZW5ndGggKz0gbV90cmF2
ZXJzYWxTdGF0ZS0+Y3ViaWNCZXppZXJUbyhwb2ludDEsIHBvaW50MiwgdGFyZ2V0UG9pbnQpOwor
fQorCit2b2lkIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNsb3NlUGF0aCgpCit7Cisg
ICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUpOworICAgIG1fdHJhdmVyc2FsU3RhdGUtPm1fdG90
YWxMZW5ndGggKz0gbV90cmF2ZXJzYWxTdGF0ZS0+Y2xvc2VTdWJwYXRoKCk7Cit9CisKK3ZvaWQg
U1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlcjo6c2V0RGVzaXJlZExlbmd0aChmbG9hdCBkZXNp
cmVkTGVuZ3RoKQoreworICAgIEFTU0VSVChtX3RyYXZlcnNhbFN0YXRlKTsKKyAgICBtX3RyYXZl
cnNhbFN0YXRlLT5tX2Rlc2lyZWRMZW5ndGggPSBkZXNpcmVkTGVuZ3RoOworfQorCitib29sIFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXI6OmNvbnRpbnVlQ29uc3VtaW5nKCkKK3sKKyAgICBB
U1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7CisgICAgQVNTRVJUKG1fdHJhdmVyc2FsU3RhdGUtPm1f
YWN0aW9uID09IFBhdGhUcmF2ZXJzYWxTdGF0ZTo6VHJhdmVyc2FsU2VnbWVudEF0TGVuZ3RoKTsK
KyAgICByZXR1cm4gbV90cmF2ZXJzYWxTdGF0ZS0+bV90b3RhbExlbmd0aCA8IG1fdHJhdmVyc2Fs
U3RhdGUtPm1fZGVzaXJlZExlbmd0aDsKK30KKwordm9pZCBTVkdQYXRoVHJhdmVyc2FsU3RhdGVC
dWlsZGVyOjppbmNyZW1lbnRQYXRoU2VnbWVudENvdW50KCkKK3sKKyAgICBBU1NFUlQobV90cmF2
ZXJzYWxTdGF0ZSk7CisgICAgKyttX3RyYXZlcnNhbFN0YXRlLT5tX3NlZ21lbnRJbmRleDsKK30K
KwordW5zaWduZWQgbG9uZyBTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyOjpnZXRTVkdQYXRo
U2VnKCkKK3sKKyAgICBBU1NFUlQobV90cmF2ZXJzYWxTdGF0ZSk7CisgICAgcmV0dXJuIG1fdHJh
dmVyc2FsU3RhdGUtPm1fc2VnbWVudEluZGV4OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNhbFN0YXRlQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNW
R1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXJfaAorI2RlZmluZSBTVkdQYXRoVHJhdmVyc2FsU3Rh
dGVCdWlsZGVyX2gKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgor
I2luY2x1ZGUgIlBhdGhUcmF2ZXJzYWxTdGF0ZS5oIgorI2luY2x1ZGUgIlNWR1BhdGhDb25zdW1l
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR1BhdGhUcmF2ZXJzYWxTdGF0
ZUJ1aWxkZXIgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKK3B1YmxpYzoKKyAgICBTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyKCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGdldFNWR1BhdGhT
ZWcoKTsKKyAgICB2b2lkIHNldEN1cnJlbnRUcmF2ZXJzYWxTdGF0ZShQYXRoVHJhdmVyc2FsU3Rh
dGUqIHRyYXZlcnNhbFN0YXRlKSB7IG1fdHJhdmVyc2FsU3RhdGUgPSB0cmF2ZXJzYWxTdGF0ZTsg
fQorICAgIHZvaWQgc2V0RGVzaXJlZExlbmd0aChmbG9hdCk7CisgICAgdmlydHVhbCB2b2lkIGlu
Y3JlbWVudFBhdGhTZWdtZW50Q291bnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25z
dW1pbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cCgpIHsgbV90cmF2ZXJzYWxTdGF0ZSA9
IDA7IH0KKworcHJpdmF0ZToKKyAgICAvLyBVc2VkIGluIFVuYWx0ZXJlZFBhcmlzbmcvTm9ybWFs
aXplZFBhcnNpbmcgbW9kZXMuCisgICAgdmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBv
aW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSk7CisgICAgdmlydHVhbCB2b2lk
IGxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSk7CisgICAgdmlydHVhbCB2
b2lkIGNsb3NlUGF0aCgpOworCitwcml2YXRlOgorICAgIC8vIE5vdCB1c2VkIGZvciBQYXRoVHJh
dmVyc2FsU3RhdGUuCisgICAgdmlydHVhbCB2b2lkIGxpbmVUb0hvcml6b250YWwoZmxvYXQsIFBh
dGhDb29yZGluYXRlTW9kZSkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBsaW5lVG9WZXJ0aWNhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGlj
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2Rl
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFk
cmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQs
IGZsb2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2Rl
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICBQYXRoVHJhdmVyc2FsU3RhdGUqIG1f
dHJhdmVyc2FsU3RhdGU7CisgICAgZmxvYXQgbV9kZXNpcmVkTGVuZ3RoOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyNlbmRpZiAvLyBTVkdQ
YXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyX2gK
</data>
<flag name="review"
          id="53065"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>