<?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>144712</bug_id>
          
          <creation_ts>2015-05-06 14:52:01 -0700</creation_ts>
          <short_desc>Clean up TextRun constructors</short_desc>
          <delta_ts>2015-05-07 18:52:04 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092325</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 14:52:01 -0700</bug_when>
    <thetext>Simplify TextRun to only accept StringViews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092326</commentid>
    <comment_count>1</comment_count>
      <attachid>252521</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 14:52:23 -0700</bug_when>
    <thetext>Created attachment 252521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092329</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 14:55:33 -0700</bug_when>
    <thetext>I&apos;m not sure that this is actually better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092330</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 14:57:59 -0700</bug_when>
    <thetext>Attachment 252521 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092403</commentid>
    <comment_count>4</comment_count>
      <attachid>252537</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 16:45:35 -0700</bug_when>
    <thetext>Created attachment 252537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092404</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 16:47:54 -0700</bug_when>
    <thetext>Attachment 252537 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092409</commentid>
    <comment_count>6</comment_count>
      <attachid>252539</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 17:00:36 -0700</bug_when>
    <thetext>Created attachment 252539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092410</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 17:02:09 -0700</bug_when>
    <thetext>Attachment 252539 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092412</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 17:05:00 -0700</bug_when>
    <thetext>I&apos;m not really sure that this is much better either</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092424</commentid>
    <comment_count>9</comment_count>
      <attachid>252543</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 17:32:43 -0700</bug_when>
    <thetext>Created attachment 252543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092425</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 17:34:39 -0700</bug_when>
    <thetext>Attachment 252543 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092426</commentid>
    <comment_count>11</comment_count>
      <attachid>252544</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 17:38:13 -0700</bug_when>
    <thetext>Created attachment 252544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092427</commentid>
    <comment_count>12</comment_count>
      <attachid>252545</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 17:41:29 -0700</bug_when>
    <thetext>Created attachment 252545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092450</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 19:10:46 -0700</bug_when>
    <thetext>Committed r183904: &lt;http://trac.webkit.org/changeset/183904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092608</commentid>
    <comment_count>14</comment_count>
      <attachid>252545</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-07 09:23:14 -0700</bug_when>
    <thetext>Comment on attachment 252545
Patch

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

&gt; Source/WebCore/platform/graphics/TextRun.h:57
&gt; +    explicit TextRun(StringView s, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
&gt; +        : m_text(s)
&gt; +        , m_charactersLength(s.length())

I suggest we consider a variable name other than &quot;s&quot; for this.

&gt; Source/WebCore/platform/graphics/TextRun.h:76
&gt; +    explicit TextRun(const String&amp; s)
&gt; +        : TextRun(StringView(s))
&gt;      {
&gt;      }

We should remove this overload if the performance characteristic of converting the String each time to a StringView is acceptable. If we remove the other overloads below, then this will just automatically do the right thing with explicitly writing code.

&gt; Source/WebCore/platform/graphics/TextRun.h:81
&gt; +    TextRun(const LChar* c, unsigned len)
&gt; +        : TextRun(StringView(c, len))
&gt;      {
&gt;      }

If these overloads are not a performance problem, then I suggest we return to this class and remove them entirely, making the StringView at the call sites. I don’t think we need a convenience that builds a StringView for the caller. Moving the code that makes the StringView back to the call site will also help us make things more elegant in future refactoring.

Also, &quot;c&quot; and &quot;len&quot;? Those don’t sound like WebKit project argument names.

&gt; Source/WebCore/platform/graphics/TextRun.h:86
&gt; +    TextRun(const UChar* c, unsigned len)
&gt; +        : TextRun(StringView(c, len))
&gt;      {
&gt;      }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092694</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 12:18:57 -0700</bug_when>
    <thetext>Please see https://bugs.webkit.org/show_bug.cgi?id=144752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092695</commentid>
    <comment_count>16</comment_count>
      <attachid>252545</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 12:19:19 -0700</bug_when>
    <thetext>Comment on attachment 252545
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/TextRun.h:81
&gt;&gt;      }
&gt; 
&gt; If these overloads are not a performance problem, then I suggest we return to this class and remove them entirely, making the StringView at the call sites. I don’t think we need a convenience that builds a StringView for the caller. Moving the code that makes the StringView back to the call site will also help us make things more elegant in future refactoring.
&gt; 
&gt; Also, &quot;c&quot; and &quot;len&quot;? Those don’t sound like WebKit project argument names.

It&apos;s funny you should mention this - A previous version of this patch (https://bugs.webkit.org/attachment.cgi?id=252539&amp;action=review) did exactly that, but I moved away from it because I thought that littering up the call sites with StringView() calls was just added noise (https://bugs.webkit.org/show_bug.cgi?id=144712#c8)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092975</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 18:52:04 -0700</bug_when>
    <thetext>Addressed comments in https://bugs.webkit.org/show_bug.cgi?id=144752</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252521</attachid>
            <date>2015-05-06 14:52:23 -0700</date>
            <delta_ts>2015-05-06 16:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506145106.patch</filename>
            <type>text/plain</type>
            <size>33618</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uOWJkMTk3NWE1MjgzMDIxZDAxMzQ3YmU5YzVmOGFk
MjU2NDAzNjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
VGV4dFJ1biB0byBvbmx5IGFjY2VwdCBTdHJpbmdWaWV3cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3aWR0aFdpdGhG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFRleHRSdW5JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpcFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6dW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3JCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojp0cmltbWVkUHJlZldpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRG
cmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6
OnBhaW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKToKKwog
MjAxNS0wNS0wNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhIGNvbnRyb2wgdm9sdW1lIHNsaWRlciBpcyBvcGFxdWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGQ2ZGEzYjM1OWMxMjA3
MmUyMjFjZjhhYWIyMTBmOWViYzViZmJmYzguLjJlNDA5NGZkOGM5ZWEwZTRhZTBkZjgxZjNiOTdi
MmZjMWE4ZjEwMzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgU3RyaW5nIE1hdGhNTE1lbmNsb3NlRWxl
bWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHBh
ZGRpbmc7CiAgICAgU3RyaW5nIGNsb3NpbmdCcmFjZSA9ICIpIjsKLSAgICBUZXh0UnVuIHJ1bihj
bG9zaW5nQnJhY2UuaW1wbCgpLCBjbG9zaW5nQnJhY2UubGVuZ3RoKCkpOworICAgIFRleHRSdW4g
cnVuKChTdHJpbmdWaWV3KGNsb3NpbmdCcmFjZSkpKTsKICAgICBOb2RlKiBub2RlID0gcGFyZW50
Tm9kZSgpOwogICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmZvbnRDYXNj
YWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcAppbmRleCA2NmFmYmVhM2QxZGI2NDE1MzYyYmQxNWYxNjFjMzUzYmMzNjk4
NWQ2Li41ODBiZTA5NzUzNjQ5NDA2ZDNlYjEyM2NhY2I3MTJiM2Y0NDE2MDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaQogCiBzdGF0aWMgZmxv
YXQgc3RyaW5nV2lkdGgoY29uc3QgRm9udENhc2NhZGUmIHJlbmRlcmVyLCBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGRpc2FibGVSb3VuZGluZ0hhY2tzKQog
ewotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgVGV4dFJ1biBydW4o
U3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICBpZiAoZGlzYWJsZVJvdW5kaW5n
SGFja3MpCiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogICAgIHJldHVybiBy
ZW5kZXJlci53aWR0aChydW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5oCmluZGV4IDdlNGZlN2NmOGE1Y2Y4MzdmZTU5OTU5ZmNjZWQ2ZDYzN2IxMTM5MzQuLjUy
NDc0M2JiYjMzOTc2YWVhOWE5MWRhM2U3NmZiNDQyMmJmYzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTUyLDYwICs1Miw2IEBAIHB1YmxpYzoK
IAogICAgIHR5cGVkZWYgdW5zaWduZWQgUm91bmRpbmdIYWNrczsKIAotICAgIFRleHRSdW4oY29u
c3QgTENoYXIqIGMsIHVuc2lnbmVkIGxlbiwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lv
biA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3MgPSBS
dW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQoYywgbGVuKQotICAg
ICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChsZW4pCi0gICAgICAgICwgbV90YWJTaXplKDApCi0g
ICAgICAgICwgbV94cG9zKHhwb3MpCi0gICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNo
KDEpCi0gICAgICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICAgICAsIG1fZXhwYW5z
aW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3IpCi0gICAgICAgICwgbV9hbGxvd1RhYnMoZmFs
c2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fZGlyZWN0
aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQotICAgICAgICAsIG1fY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkKLSAgICAgICAgLCBtX2Fw
cGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBSdW5Sb3VuZGluZykgJiYgc19hbGxvd3NS
b3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fYXBwbHlXb3JkUm91bmRpbmcoKHJvdW5kaW5nSGFj
a3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBt
X2Rpc2FibGVTcGFjaW5nKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0UnVuKGNvbnN0
IFVDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24g
PSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVu
Um91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KGMsIGxlbikKLSAgICAg
ICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgobGVuKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAg
ICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgx
KQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAgLCBtX2V4cGFuc2lv
bkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxsb3dUYWJzKGZhbHNl
KQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBtX2NoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAgICAgICwgbV9hcHBs
eVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91
bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tz
ICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IFRl
eHRSdW4oY29uc3QgU3RyaW5nJiBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0g
MCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJv
dW5kaW5nIHwgV29yZFJvdW5kaW5nKQotICAgICAgICA6IG1fdGV4dChTdHJpbmdWaWV3KHMpKQot
ICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChzLmxlbmd0aCgpKQotICAgICAgICAsIG1fdGFi
U2l6ZSgwKQotICAgICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgxKQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAg
LCBtX2V4cGFuc2lvbkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxs
b3dUYWJzKGZhbHNlKQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAg
LCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBt
X2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAg
ICAgICwgbV9hcHBseVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYm
IHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChy
b3VuZGluZ0hhY2tzICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0g
ICAgICAgICwgbV9kaXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCiAgICAgZXhw
bGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHMsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0g
UnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCiAgICAgICAgIDogbV90ZXh0KHMpCiAgICAgICAg
ICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHMubGVuZ3RoKCkpCkBAIC0yMTMsNyArMTU5LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIG1feHBvcyBpcyB0aGUgeCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUg
bGVmdCBzdGFydCBvZiB0aGUgdGV4dCBsaW5lLCBub3QgcmVsYXRpdmUgdG8gdGhlIGxlZnQKICAg
ICAvLyBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jay4gSW4gdGhlIGNhc2Ugb2YgcmlnaHQg
YWxpZ25tZW50IG9yIGNlbnRlciBhbGlnbm1lbnQsIGxlZnQgc3RhcnQgb2YKLSAgICAvLyB0aGUg
dGV4dCBsaW5lIGlzIG5vdCB0aGUgc2FtZSBhcyBsZWZ0IHN0YXJ0IG9mIHRoZSBjb250YWluaW5n
IGJsb2NrLgorICAgIC8vIHRoZSB0ZXh0IGxpbmUgaXMgbm90IHRoZSBzYW1lIGFzIGxlZnQgc3Rh
cnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIFRoaXMgdmFyaWFibGUgaXMgb25seSB1c2VkCisg
ICAgLy8gdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBcdAogICAgIGZsb2F0IG1feHBvczsgIAog
ICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggMzUzZWY4ZDIzODU0ZDlhNmY1MTE0Mzc0
NDQ2NWJjYWIyYmZlNGI5My4uNjZiMWViODY3NjNjYzkwZjE3YTQ1MjBmY2JmNTBiNzM2NWZjMGNm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0x
OTIsNyArMTkyLDcgQEAgc3RhdGljIGZsb2F0IHdpZHRoV2l0aEZvbnQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNGb250ICpmb250KQogICAgIAogICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKSkgewogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSkpOwotICAgICAgICBUZXh0UnVuIHJ1bihidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwor
ICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwog
ICAgICAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKICAgICAgICAgcmV0dXJuIHdlYkNv
cmVGb250LndpZHRoKHJ1bik7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9u
dCwgTlNDb2xvciAqCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEs
IC0xKTsKICAgICAgICAgICAgIAogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSksIEFudGlhbGlhc2VkKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0YSgp
LCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAKICAgICAg
ICAgQ0dGbG9hdCByZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxs
aXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcApp
bmRleCA0NjlmN2VmZWU4N2Y3NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li5hYTQ4NTM4ZmQ2
NTYzMzMyMWNiODI4NjczMjAxZGNmMWYzZTc1ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
TGEKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5
IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAgICBjb250ZXh0LT5kcmF3
VGV4dChmb250LCBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZv
bnQsIG1fc3RyLCBsaW5lU3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCBMYXlvdXRQb2lu
dCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHls
ZS5mb250TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwg
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBTdHJpbmdW
aWV3KG1fc3RyKSwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9p
bnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5
bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxh
ciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgp
CiAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKICAgICAvLyBGSVhN
RTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1
biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0
KHgoKSwgeSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2Nr
KCksIDAsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygp
KTsKLSAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiksIHNlbGVjdGlvblJlY3QpOworICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygp
LCBmb250LCBTdHJpbmdWaWV3KG1fc3RyKSwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSwgc2VsZWN0aW9uUmVjdCk7CiAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb25hbCBwaXhl
bCBzbmFwcGluZyBpbnN0ZWFkLgogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlv
blJlY3QpOwogfQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0
ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlv
dXRSZWN0KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9v
dEJveC5zZWxlY3Rpb25Ub3AoKSwgMCwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7Ci0gICAg
VGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCks
IGZvbnQsIG1fc3RyLCBzdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZvbnQs
IFN0cmluZ1ZpZXcobV9zdHIpLCBzdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CiAgICAg
Zm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3QsIDAsIC0x
KTsKICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRp
bmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMGFlNjRkMzVkNTlkNTNl
NDAxYjE0NDEyMTVmNTdhMGI2Y2Y5ZGY1Li4xZTBlZWU2ZDM4OTY0M2IwN2M4MDdhZWY2OTkxYzQ2
YTRlOTIwMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTM2NzQsMjMgKzM2NzQsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuICJSZW5kZXJCbG9jayI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5J
bnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRl
ID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKLQotICAgIFRleHRSdW4gcnVu
KGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9uLCB0ZXh0RGlyZWN0aW9uLCBkaXJl
Y3Rpb25hbE92ZXJyaWRlKTsKLSAgICBpZiAoZm9udC5wcmltYXJ5Rm9udCgpLmlzU1ZHRm9udCgp
KSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8gRklYTUU6IFRocmVhZCBhIFJlbmRlck9i
amVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcmVmZXJlbmNlIGFueXRo
aW5nLgotICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJ1bjsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIFN0
cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CiAgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKQEAgLTM3MDAsNyArMzY4NCw3IEBA
IHN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoUmVuZGVyT2Jq
ZWN0KiBjb250ZXh0LCBjb25zdCBGb250CiAgICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJl
Y3Rpb25PdmVycmlkZSkKICAgICAgICAgICAgIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVy
cmlkZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICB9Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFj
dGVycywgbGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFs
T3ZlcnJpZGUpOworICAgIFRleHRSdW4gcnVuKHN0cmluZ1ZpZXcsIDAsIDAsIGV4cGFuc2lvbiwg
dGV4dERpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSk7CiAgICAgaWYgKGZvbnQucHJpbWFy
eUZvbnQoKS5pc1NWR0ZvbnQoKSkgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7IC8vIEZJWE1F
OiBUaHJlYWQgYSBSZW5kZXJPYmplY3QmIHRvIHRoaXMgcG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0
byBkZXJlZmVyZW5jZSBhbnl0aGluZy4KICAgICAgICAgcnVuLnNldFJlbmRlcmluZ0NvbnRleHQo
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqY29udGV4dCkpOwpAQCAtMzcwOSwz
OCArMzY5MywxNiBAQCBzdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udAogICAgIHJldHVybiBydW47CiB9
CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b24pCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250
LCBjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOwotfQotCiBUZXh0UnVuIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFJlbmRlclRleHQqIHRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAgIGlmICh0ZXh0
LT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250
ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0ZXJzOCgpLCB0ZXh0LT50ZXh0TGVuZ3RoKCksIHN0eWxl
LCBleHBhbnNpb24pOwotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczE2KCksIHRleHQtPnRleHRMZW5ndGgoKSwgc3R5bGUs
IGV4cGFuc2lvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oY29udGV4dCwgZm9udCwg
dGV4dC0+c3RyaW5nVmlldygpLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0KIAogVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb24pCiB7Ci0gICAgQVNTRVJUKG9mZnNldCArIGxlbmd0aCA8PSB0ZXh0LT50
ZXh0TGVuZ3RoKCkpOwotICAgIGlmICh0ZXh0LT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0ZXJzOCgp
ICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOwotICAgIHJldHVybiBjb25zdHJ1
Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczE2KCkgKyBv
ZmZzZXQsIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbik7Ci19Ci0KLVRleHRSdW4gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCi17Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgaWYgKCFsZW5ndGgg
fHwgc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKGNvbnRleHQsIGZvbnQsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHN0eWxlLCBl
eHBhbnNpb24sIGZsYWdzKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNv
bnRleHQsIGZvbnQsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5z
aW9uLCBmbGFncyk7CisgICAgdW5zaWduZWQgc3RvcCA9IG9mZnNldCArIGxlbmd0aDsKKyAgICBB
U1NFUlQoc3RvcCA8PSB0ZXh0LT50ZXh0TGVuZ3RoKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuKGNvbnRleHQsIGZvbnQsIHRleHQtPnN0cmluZ1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5
bGUsIGV4cGFuc2lvbik7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudCwgRURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKaW5kZXggN2YxOTM0MGFhYWFjYTY4NGVkZmRhNjE1NzgyYWQ2MjE0YmZkNDdjZi4uOWNlNmY3
MmU4MzY2Y2IyYzQzZTJlOWM1NjJjODUwMGUzZDk5MjE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBvYmotPmlzRmxvYXRpbmcoKSB8fCAob2JqLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAm
JiAhb2JqLT5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpICYmICFvYmotPmNv
bnRhaW5lcigpLT5pc1JlbmRlcklubGluZSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgU3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKIAogICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFJlbmRlclRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsCkBAIC0yMTIsMTUg
KzIxMiw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4o
UmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJlbmRlclRl
eHQqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBG
b3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRl
eHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJl
bmRlclRleHQqLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFJlbmRlclN0eWxlJiwKLSAgICAgICAg
RXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGlu
Z0V4cGFuc2lvbik7Ci0KLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRl
ck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
KTsKLQotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0g
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwogICAgIAog
ICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdp
bmF0aW9uU3RydXQoTGF5b3V0VW5pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGQzNDBkOGVjZWQwOWZiMTUzNDVhNmIxMmE0NWQ4ZTJhNmY2
OTRlOTAuLjU2NmIxYTNhMWUzYjlmNTZlZTMwY2UwY2ZiODk3NzdiNDdhOWY2MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zOTkzLDcgKzM5
OTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3RyaXBUcmFpbGluZ1NwYWNlKGZsb2F0JiBpbmxp
bmVNYXgsIGZsb2F0JiBpbmxpbmVNaW4sIFJlbmRlcgogICAgICAgICBSZW5kZXJUZXh0JiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnRyYWlsaW5nU3BhY2VDaGlsZCk7CiAgICAg
ICAgIGNvbnN0IFVDaGFyIHNwYWNlID0gJyAnOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IHJlbmRlclRleHQuc3R5bGUoKS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBp
Z25vcmVzIGZpcnN0LWxpbmUuCi0gICAgICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRo
KFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZyZW5kZXJUZXh0LCBmb250LCAmc3BhY2Us
IDEsIHJlbmRlclRleHQuc3R5bGUoKSkpOworICAgICAgICBmbG9hdCBzcGFjZVdpZHRoID0gZm9u
dC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmcmVuZGVyVGV4dCwgZm9udCwg
U3RyaW5nVmlldygmc3BhY2UsIDEpLCByZW5kZXJUZXh0LnN0eWxlKCkpKTsKICAgICAgICAgaW5s
aW5lTWF4IC09IHNwYWNlV2lkdGggKyBmb250LndvcmRTcGFjaW5nKCk7CiAgICAgICAgIGlmIChp
bmxpbmVNaW4gPiBpbmxpbmVNYXgpCiAgICAgICAgICAgICBpbmxpbmVNaW4gPSBpbmxpbmVNYXg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCmluZGV4IGZjNjUwYzliNDBjZDc0NWU3ZTBiMzc0MTUzMDk0YmQ2MzkxYjAzMTIuLmY4NTFh
OTE1MTNmMTViMmE4ZDM2MGI3MzAwMDJmNzUzYjk2ZjAxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xOTgxLDggKzE5
ODEsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdygp
CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAg
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZWxsaXBzaXNT
dHIsICgmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKSk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZp
cnN0TGluZUZvbnQgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgZmxvYXQg
Zmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgoY29uc3RydWN0VGV4
dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCAmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBmaXJzdExp
bmVTdHlsZSgpKSk7Ci0gICAgZmxvYXQgZWxsaXBzaXNXaWR0aCA9IChmb250ID09IGZpcnN0TGlu
ZUZvbnQpID8gZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA6IGZvbnQud2lkdGgoY29uc3RydWN0VGV4
dFJ1bih0aGlzLCBmb250LCAmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBzdHlsZSgpKSk7CisgICAg
ZmxvYXQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgoY29uc3Ry
dWN0VGV4dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCBTdHJpbmdWaWV3KGVsbGlwc2lzU3RyKSwg
Zmlyc3RMaW5lU3R5bGUoKSkpOworICAgIGZsb2F0IGVsbGlwc2lzV2lkdGggPSAoZm9udCA9PSBm
aXJzdExpbmVGb250KSA/IGZpcnN0TGluZUVsbGlwc2lzV2lkdGggOiBmb250LndpZHRoKGNvbnN0
cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldyhlbGxpcHNpc1N0ciksIHN0eWxlKCkp
KTsKIAogICAgIC8vIEZvciBMVFIgdGV4dCB0cnVuY2F0aW9uLCB3ZSB3YW50IHRvIGdldCB0aGUg
cmlnaHQgZWRnZSBvZiBvdXIgcGFkZGluZyBib3gsIGFuZCB0aGVuIHdlIHdhbnQgdG8gc2VlCiAg
ICAgLy8gaWYgdGhlIHJpZ2h0IGVkZ2Ugb2YgYSBsaW5lIGJveCBleGNlZWRzIHRoYXQuICBGb3Ig
UlRMLCB3ZSB1c2UgdGhlIGxlZnQgZWRnZSBvZiB0aGUgcGFkZGluZyBib3ggYW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCmluZGV4IDUyYjRhM2Y1NTYyN2IxYmNjZWYyMWQ1MWUyMTMyNmQ0Y2E5MmUyZDMuLmVh
MDc5ZmY1NmI1NmQ0ZjgyZjIzMmMxZWUxYjI2ODhiMDVkZTk5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CkBAIC05OTYsMTAgKzk5NiwxMCBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICBM
YXlvdXRVbml0IHRvdGFsV2lkdGg7CiAgICAgICAgIElubGluZUJveCogYW5jaG9yQm94ID0gbGFz
dExpbmUtPmxhc3RDaGlsZCgpOwogICAgICAgICBpZiAoYW5jaG9yQm94ICYmIGFuY2hvckJveC0+
cmVuZGVyZXIoKS5zdHlsZSgpLmlzTGluaygpKQotICAgICAgICAgICAgdG90YWxXaWR0aCA9IGFu
Y2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4odGhp
cywgZm9udCwgZWxsaXBzaXNBbmRTcGFjZSwgMiwgc3R5bGUoKSkpOworICAgICAgICAgICAgdG90
YWxXaWR0aCA9IGFuY2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVj
dFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldyhlbGxpcHNpc0FuZFNwYWNlLCAyKSwgc3R5
bGUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFuY2hvckJveCA9IG51bGxwdHI7
Ci0gICAgICAgICAgICB0b3RhbFdpZHRoID0gZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKHRo
aXMsIGZvbnQsICZob3Jpem9udGFsRWxsaXBzaXMsIDEsIHN0eWxlKCkpKTsKKyAgICAgICAgICAg
IHRvdGFsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3Ry
aW5nVmlldygmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKSwgc3R5bGUoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gU2VlIGlmIHRoaXMgd2lkdGggY2FuIGJlIGFjY29tbW9kYXRlZCBvbiB0aGUg
bGFzdCB2aXNpYmxlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDc4Mzg3ODkyOTYwYmE0NTYyNGE5YmU1YzU0MWM1NmU0
YzU1NjViOWMuLjYwZWE2NDZlNDc3NTRmOWY0M2I1NTQyYTk5YTg0MTU4ZWIwYTlhMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApA
QCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgRmxvYXRSZWN0
IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250
Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiKTsKKyAgICBUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KCIiKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAgIGlmICghZ2V0UmVwbGFjZW1l
bnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCBy
ZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzM5NSw3IEBAIExheW91dFJlY3QgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKGNvbnN0IExheW91dFBv
CiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93
UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiLCAwKTsKKyAg
ICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KCIiKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAg
IGlmIChnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVu
dFJlY3QsIGluZGljYXRvclJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVjdCwgZm9u
dCwgcnVuLCB0ZXh0V2lkdGgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdChpbmRpY2F0b3JS
ZWN0KTsKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0lu
VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgRmxvYXRQb2ludCYgcG9pbgogICAgIEZs
b2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwogICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAg
ICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1bigiIik7CisgICAgVGV4dFJ1biBy
dW4oU3RyaW5nVmlldygiIikpOwogICAgIGZsb2F0IHRleHRXaWR0aDsKICAgICByZXR1cm4gZ2V0
UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoSW50UG9pbnQoKSwgY29udGVudFJlY3QsIGluZGljYXRv
clJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVjdCwgZm9udCwgcnVuLCB0ZXh0V2lk
dGgpCiAgICAgICAgICYmIGluZGljYXRvclJlY3QuY29udGFpbnMocG9pbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDMwNjNlOGM2M2E2
ZGUxNTE0MGQ2YjI0OTEzNmNjNmNiMGM3MWIyMDAuLjIzM2FkM2Q3MmYyYTQ1NDRmNmM1MjE1M2Zi
ZjI2OWVjZmExMDcxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKQEAgLTE2MzQsNyArMTYzNCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgICAgICAgICAgICAgIFRleHRSdW4g
cnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0LCBz
dHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwg
RGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBpdGVtV2lk
dGggPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2Vb
Ml0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07
Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0
aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBzdWZmaXhTcGFjZSwg
Miwgc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3VmZml4U3BhY2VXaWR0
aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwg
U3RyaW5nVmlldyhzdWZmaXhTcGFjZSwgMiksIHN0eWxlKCkpKTsKICAgICAgICAgICAgICAgICBs
b2dpY2FsV2lkdGggPSBpdGVtV2lkdGggKyBzdWZmaXhTcGFjZVdpZHRoOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODYxLDcgKzE4NjEsNyBAQCBGbG9hdFJlY3QgUmVu
ZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAgICAgICAgICAgIFRleHRS
dW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0
LCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lv
biwgRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgICAgICAgICBmbG9hdCBpdGVtV2lkdGggPSBm
b250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgbGlz
dE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpLCAnICcgfTsKLSAgICAgICAg
ICAgIGZsb2F0IHN1ZmZpeFNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSk7CisgICAg
ICAgICAgICBmbG9hdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBTdHJpbmdWaWV3KHN1ZmZpeFNwYWNlLCAyKSwg
c3R5bGUoKSkpOwogICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGl0
ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGgsIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTg0
M2RhMWY1ZTA2MGY0ODg0ZDhmNjIxNDRjMDgwYzY2N2I3MzdlYi4uMjM2YzZlNTRkZTk1NDIyMjJl
YTI1MDU1ZmM4YzQwMjBhZjU0NmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZX
aWR0aHMoZmxvYXQgbGVhZFdpZHRoLAogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9
IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4K
ICAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsKICAgICAgICAgICAgIGNvbnN0IFVDaGFy
IHNwYWNlID0gJyAnOwotICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgo
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgJnNwYWNlLCAxLCBzdHls
ZSkpOworICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldygmc3BhY2UsIDEpLCBz
dHlsZSkpOwogICAgICAgICAgICAgbWF4VyAtPSBzcGFjZVdpZHRoOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1heFcgKz0gZm9udC53b3JkU3BhY2luZygpOwpAQCAtNzE0LDcgKzcxNCw3
IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4g
a2VybmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0
aGVpciB0cmFpbGluZwogICAgIC8vIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KLSAg
ICBmbG9hdCB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVz
KCkgJiBLZXJuaW5nID8gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0
aGlzLCBmb250LCAmc3BhY2UsIDEsIHN0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgd29yZFNwYWNp
bmcgOiAwOworICAgIGZsb2F0IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSBmb250LnR5cGVzZXR0
aW5nRmVhdHVyZXMoKSAmIEtlcm5pbmcgPyBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIFN0cmluZ1ZpZXcoJnNwYWNlLCAxKSwgc3R5bGUpLCAmZmFs
bGJhY2tGb250cykgKyB3b3JkU3BhY2luZyA6IDA7CiAKICAgICAvLyBJZiBhdXRvbWF0aWMgaHlw
aGVuYXRpb24gaXMgYWxsb3dlZCwgd2Uga2VlcCB0cmFjayBvZiB0aGUgd2lkdGggb2YgdGhlIHdp
ZGVzdCB3b3JkIChvciB3b3JkCiAgICAgLy8gZnJhZ21lbnQpIGVuY291bnRlcmVkIHNvIGZhciwg
YW5kIG9ubHkgdHJ5IGh5cGhlbmF0aW5nIHdvcmRzIHRoYXQgYXJlIHdpZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDVlMmVkMzA0MWRk
NDczZDRkYzQ5MWIyNzkxMmEwNzNlNDFkYTAxYmQuLmY1Zjk0MjUxZWJiZDc5OTE1ZmJhZDM4NjAy
MDFmNTMxOWU4ZDkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIGNhblVzZUZvcihjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIuaXNDb21iaW5lVGV4
dCgpIHx8IHRleHRSZW5kZXJlci5pc0NvdW50ZXIoKSB8fCB0ZXh0UmVuZGVyZXIuaXNRdW90ZSgp
IHx8IHRleHRSZW5kZXJlci5pc1RleHRGcmFnbWVudCgpCiAgICAgICAgICAgICB8fCB0ZXh0UmVu
ZGVyZXIuaXNTVkdJbmxpbmVUZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKFRleHRSdW4odGV4dFJlbmRlcmVy
LnRleHQoKSkpICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCisgICAgICAgIGlmIChzdHlsZS5mb250
Q2FzY2FkZSgpLmNvZGVQYXRoKFRleHRSdW4oU3RyaW5nVmlldyh0ZXh0UmVuZGVyZXIudGV4dCgp
KSkpICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmICghY2FuVXNlRm9yVGV4dCh0ZXh0UmVuZGVyZXIsIHByaW1hcnlGb250KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAK
aW5kZXggN2FmNzg1YmNiMTUzYzU0MWNjN2U4MzBhMzkyOTM3NWQ5ZGZmNmZkNC4uMTM4NjBlNzc5
ZmYxNzY1YTZhYmY1ZDAxNjg5ZWE5MDEzYzBhOWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxl
OjpTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLCBwcmVzZXJ2ZU5ld2xpbmUo
c3R5bGUucHJlc2VydmVOZXdsaW5lKCkpCiAgICAgLCB3cmFwTGluZXMoc3R5bGUuYXV0b1dyYXAo
KSkKICAgICAsIGJyZWFrV29yZE9uT3ZlcmZsb3coc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gQnJl
YWtPdmVyZmxvd1dyYXAgJiYgKHdyYXBMaW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUpKQotICAgICwg
c3BhY2VXaWR0aChmb250LndpZHRoKFRleHRSdW4oJnNwYWNlLCAxKSkpCisgICAgLCBzcGFjZVdp
ZHRoKGZvbnQud2lkdGgoVGV4dFJ1bihTdHJpbmdWaWV3KCZzcGFjZSwgMSkpKSkKICAgICAsIHRh
YldpZHRoKGNvbGxhcHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCiAgICAgLCBs
b2NhbGUoc3R5bGUubG9jYWxlKCkpCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAgZmxvYXQgVGV4dEZy
YWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgc2Vn
bWVudCwgdW5zaWcKICAgICBib29sIG1lYXN1cmVXaXRoRW5kU3BhY2UgPSBtX3N0eWxlLmNvbGxh
cHNlV2hpdGVzcGFjZSAmJiBzZWdtZW50VG8gPCBzZWdtZW50LnRleHQubGVuZ3RoKCkgJiYgc2Vn
bWVudC50ZXh0W3NlZ21lbnRUb10gPT0gJyAnOwogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNl
KQogICAgICAgICArK3NlZ21lbnRUbzsKLSAgICBUZXh0UnVuIHJ1bihzZWdtZW50LnRleHQuY2hh
cmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpICsgc2VnbWVudEZyb20sIHNlZ21lbnRUbyAtIHNlZ21l
bnRGcm9tKTsKKyAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHNlZ21lbnQudGV4dC5jaGFyYWN0
ZXJzPENoYXJhY3RlclR5cGU+KCkgKyBzZWdtZW50RnJvbSwgc2VnbWVudFRvIC0gc2VnbWVudEZy
b20pKTsKICAgICBydW4uc2V0WFBvcyh4UG9zaXRpb24pOwogICAgIHJ1bi5zZXRUYWJTaXplKCEh
bV9zdHlsZS50YWJXaWR0aCwgbV9zdHlsZS50YWJXaWR0aCk7CiAgICAgZmxvYXQgd2lkdGggPSBt
X3N0eWxlLmZvbnQud2lkdGgocnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwCmluZGV4IDEyNzQ2ZjY0NWNmYWIyN2ViOGQ5NTkzNTViYmVjOWI2Yjk4OTZjMmMuLmU0
Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3RleHRQ
YWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xvcik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4o
Jm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oU3Ry
aW5nVmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKICAgICAgICAgICAgIFRl
eHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1bi5nZXQoKSA6IG1fdGV4dFJ1bjsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgp
ICsgbV9mb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOwogICAgICAg
ICAgICAgaWYgKG1fY29tYmluZWRUZXh0KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3NlbGVj
dGlvblBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKIAotICAgICAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyVGV4dFJ1biwgKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgICAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1biwgKFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyLCAxKSkpOwogICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9
IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogbV90
ZXh0UnVuOwogICAgICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0g
bV9jb21iaW5lZFRleHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qud2lk
dGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkg
OiBtX3RleHRPcmlnaW47CiAgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IGI0ODFh
MjYyNzk1NzBjZWY1MjFlNTlkNTdiYTIxOWQ5NThkYzJkOWYuLjZkNjE0OTczMzcyMzVhOWRlY2Vj
NWYxNjU2YjYyMDU4NDhmY2VlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC03NDAsNyArNzQwLDcgQEAgaW5saW5lIGJvb2wgQnJl
YWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMsIGJvb2wKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFibGVkIGFu
ZCBUZXh0TGF5b3V0IGlzbid0IHVzZWQsIGluIHdoaWNoIGNhc2Ugd2UgbWVhc3VyZQogICAgIC8v
IHdvcmRzIHdpdGggdGhlaXIgdHJhaWxpbmcgc3BhY2UsIHRoZW4gc3VidHJhY3QgaXRzIHdpZHRo
LgogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7Ci0gICAgZmxvYXQgd29y
ZFRyYWlsaW5nU3BhY2VXaWR0aCA9IChmb250LnR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmIEtlcm5p
bmcpICYmICF0ZXh0TGF5b3V0ID8gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bigmcmVuZGVyVGV4dCwgZm9udCwgJnNwYWNlLCAxLCBzdHlsZSksICZmYWxsYmFja0ZvbnRz
KSArIHdvcmRTcGFjaW5nIDogMDsKKyAgICBmbG9hdCB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0g
KGZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpICYgS2VybmluZykgJiYgIXRleHRMYXlvdXQgPyBm
b250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZyZW5kZXJUZXh0LCBmb250
LCBTdHJpbmdWaWV3KCZzcGFjZSwgMSksIHN0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgd29yZFNw
YWNpbmcgOiAwOwogCiAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IG1fcmVuZGVyVGV4dEluZm8u
bGluZUJyZWFrSXRlcmF0b3IubGFzdENoYXJhY3RlcigpOwogICAgIFVDaGFyIHNlY29uZFRvTGFz
dENoYXJhY3RlciA9IG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3Iuc2Vjb25kVG9M
YXN0Q2hhcmFjdGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggYjIwOGQ0NTZmN2Y1MGZhMDA0ZjM1NTk0
NzU2ZmU3YWVlNmUyMjJiNC4uOWJlZWI5MjFkNDE2ZTA1NzMwOWI2ZWYyOTI0NDQ5YmU0MDZiZmM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmlj
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKCkKICAgICA6IG1f
dGV4dCgwKQotICAgICwgbV9ydW4oc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPigwKSwgMCkKKyAg
ICAsIG1fcnVuKFN0cmluZ1ZpZXcoKSkKICAgICAsIG1fdGV4dFBvc2l0aW9uKDApCiAgICAgLCBt
X2lzQ29tcGxleFRleHQoZmFsc2UpCiAgICAgLCBtX3RvdGFsV2lkdGgoMCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252537</attachid>
            <date>2015-05-06 16:45:35 -0700</date>
            <delta_ts>2015-05-06 16:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506164418.patch</filename>
            <type>text/plain</type>
            <size>34812</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uOWJkMTk3NWE1MjgzMDIxZDAxMzQ3YmU5YzVmOGFk
MjU2NDAzNjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
VGV4dFJ1biB0byBvbmx5IGFjY2VwdCBTdHJpbmdWaWV3cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3aWR0aFdpdGhG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFRleHRSdW5JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpcFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6dW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3JCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojp0cmltbWVkUHJlZldpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRG
cmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6
OnBhaW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKToKKwog
MjAxNS0wNS0wNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhIGNvbnRyb2wgdm9sdW1lIHNsaWRlciBpcyBvcGFxdWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGQ2ZGEzYjM1OWMxMjA3
MmUyMjFjZjhhYWIyMTBmOWViYzViZmJmYzguLjJlNDA5NGZkOGM5ZWEwZTRhZTBkZjgxZjNiOTdi
MmZjMWE4ZjEwMzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgU3RyaW5nIE1hdGhNTE1lbmNsb3NlRWxl
bWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHBh
ZGRpbmc7CiAgICAgU3RyaW5nIGNsb3NpbmdCcmFjZSA9ICIpIjsKLSAgICBUZXh0UnVuIHJ1bihj
bG9zaW5nQnJhY2UuaW1wbCgpLCBjbG9zaW5nQnJhY2UubGVuZ3RoKCkpOworICAgIFRleHRSdW4g
cnVuKChTdHJpbmdWaWV3KGNsb3NpbmdCcmFjZSkpKTsKICAgICBOb2RlKiBub2RlID0gcGFyZW50
Tm9kZSgpOwogICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmZvbnRDYXNj
YWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcAppbmRleCA2NmFmYmVhM2QxZGI2NDE1MzYyYmQxNWYxNjFjMzUzYmMzNjk4
NWQ2Li41ODBiZTA5NzUzNjQ5NDA2ZDNlYjEyM2NhY2I3MTJiM2Y0NDE2MDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaQogCiBzdGF0aWMgZmxv
YXQgc3RyaW5nV2lkdGgoY29uc3QgRm9udENhc2NhZGUmIHJlbmRlcmVyLCBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGRpc2FibGVSb3VuZGluZ0hhY2tzKQog
ewotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgVGV4dFJ1biBydW4o
U3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICBpZiAoZGlzYWJsZVJvdW5kaW5n
SGFja3MpCiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogICAgIHJldHVybiBy
ZW5kZXJlci53aWR0aChydW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5oCmluZGV4IDdlNGZlN2NmOGE1Y2Y4MzdmZTU5OTU5ZmNjZWQ2ZDYzN2IxMTM5MzQuLjUy
NDc0M2JiYjMzOTc2YWVhOWE5MWRhM2U3NmZiNDQyMmJmYzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTUyLDYwICs1Miw2IEBAIHB1YmxpYzoK
IAogICAgIHR5cGVkZWYgdW5zaWduZWQgUm91bmRpbmdIYWNrczsKIAotICAgIFRleHRSdW4oY29u
c3QgTENoYXIqIGMsIHVuc2lnbmVkIGxlbiwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lv
biA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3MgPSBS
dW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQoYywgbGVuKQotICAg
ICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChsZW4pCi0gICAgICAgICwgbV90YWJTaXplKDApCi0g
ICAgICAgICwgbV94cG9zKHhwb3MpCi0gICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNo
KDEpCi0gICAgICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICAgICAsIG1fZXhwYW5z
aW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3IpCi0gICAgICAgICwgbV9hbGxvd1RhYnMoZmFs
c2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fZGlyZWN0
aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQotICAgICAgICAsIG1fY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkKLSAgICAgICAgLCBtX2Fw
cGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBSdW5Sb3VuZGluZykgJiYgc19hbGxvd3NS
b3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fYXBwbHlXb3JkUm91bmRpbmcoKHJvdW5kaW5nSGFj
a3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBt
X2Rpc2FibGVTcGFjaW5nKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0UnVuKGNvbnN0
IFVDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24g
PSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVu
Um91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KGMsIGxlbikKLSAgICAg
ICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgobGVuKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAg
ICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgx
KQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAgLCBtX2V4cGFuc2lv
bkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxsb3dUYWJzKGZhbHNl
KQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBtX2NoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAgICAgICwgbV9hcHBs
eVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91
bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tz
ICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IFRl
eHRSdW4oY29uc3QgU3RyaW5nJiBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0g
MCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJv
dW5kaW5nIHwgV29yZFJvdW5kaW5nKQotICAgICAgICA6IG1fdGV4dChTdHJpbmdWaWV3KHMpKQot
ICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChzLmxlbmd0aCgpKQotICAgICAgICAsIG1fdGFi
U2l6ZSgwKQotICAgICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgxKQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAg
LCBtX2V4cGFuc2lvbkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxs
b3dUYWJzKGZhbHNlKQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAg
LCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBt
X2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAg
ICAgICwgbV9hcHBseVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYm
IHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChy
b3VuZGluZ0hhY2tzICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0g
ICAgICAgICwgbV9kaXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCiAgICAgZXhw
bGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHMsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0g
UnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCiAgICAgICAgIDogbV90ZXh0KHMpCiAgICAgICAg
ICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHMubGVuZ3RoKCkpCkBAIC0yMTMsNyArMTU5LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIG1feHBvcyBpcyB0aGUgeCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUg
bGVmdCBzdGFydCBvZiB0aGUgdGV4dCBsaW5lLCBub3QgcmVsYXRpdmUgdG8gdGhlIGxlZnQKICAg
ICAvLyBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jay4gSW4gdGhlIGNhc2Ugb2YgcmlnaHQg
YWxpZ25tZW50IG9yIGNlbnRlciBhbGlnbm1lbnQsIGxlZnQgc3RhcnQgb2YKLSAgICAvLyB0aGUg
dGV4dCBsaW5lIGlzIG5vdCB0aGUgc2FtZSBhcyBsZWZ0IHN0YXJ0IG9mIHRoZSBjb250YWluaW5n
IGJsb2NrLgorICAgIC8vIHRoZSB0ZXh0IGxpbmUgaXMgbm90IHRoZSBzYW1lIGFzIGxlZnQgc3Rh
cnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIFRoaXMgdmFyaWFibGUgaXMgb25seSB1c2VkCisg
ICAgLy8gdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBcdAogICAgIGZsb2F0IG1feHBvczsgIAog
ICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggMzUzZWY4ZDIzODU0ZDlhNmY1MTE0Mzc0
NDQ2NWJjYWIyYmZlNGI5My4uNjZiMWViODY3NjNjYzkwZjE3YTQ1MjBmY2JmNTBiNzM2NWZjMGNm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0x
OTIsNyArMTkyLDcgQEAgc3RhdGljIGZsb2F0IHdpZHRoV2l0aEZvbnQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNGb250ICpmb250KQogICAgIAogICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKSkgewogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSkpOwotICAgICAgICBUZXh0UnVuIHJ1bihidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwor
ICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwog
ICAgICAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKICAgICAgICAgcmV0dXJuIHdlYkNv
cmVGb250LndpZHRoKHJ1bik7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9u
dCwgTlNDb2xvciAqCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEs
IC0xKTsKICAgICAgICAgICAgIAogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSksIEFudGlhbGlhc2VkKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0YSgp
LCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAKICAgICAg
ICAgQ0dGbG9hdCByZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxs
aXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcApp
bmRleCA0NjlmN2VmZWU4N2Y3NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li5hYTQ4NTM4ZmQ2
NTYzMzMyMWNiODI4NjczMjAxZGNmMWYzZTc1ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
TGEKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5
IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KLSAgICBjb250ZXh0LT5kcmF3
VGV4dChmb250LCBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZv
bnQsIG1fc3RyLCBsaW5lU3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pLCBMYXlvdXRQb2lu
dCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHls
ZS5mb250TWV0cmljcygpLmFzY2VudCgpKSk7CisgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwg
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBTdHJpbmdW
aWV3KG1fc3RyKSwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9p
bnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5
bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxh
ciBmaWxsIGNvbG9yLgogICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgp
CiAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IHJvb3QoKTsKICAgICAvLyBGSVhN
RTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1
biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0
KHgoKSwgeSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2Nr
KCksIDAsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0QWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygp
KTsKLSAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiksIHNlbGVjdGlvblJlY3QpOworICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygp
LCBmb250LCBTdHJpbmdWaWV3KG1fc3RyKSwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uKSwgc2VsZWN0aW9uUmVjdCk7CiAgICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb25hbCBwaXhl
bCBzbmFwcGluZyBpbnN0ZWFkLgogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlv
blJlY3QpOwogfQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICAv
LyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0
ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlv
dXRSZWN0KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9v
dEJveC5zZWxlY3Rpb25Ub3AoKSwgMCwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7Ci0gICAg
VGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCks
IGZvbnQsIG1fc3RyLCBzdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZvbnQs
IFN0cmluZ1ZpZXcobV9zdHIpLCBzdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CiAgICAg
Zm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChydW4sIHNlbGVjdGlvblJlY3QsIDAsIC0x
KTsKICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRp
bmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMGFlNjRkMzVkNTlkNTNl
NDAxYjE0NDEyMTVmNTdhMGI2Y2Y5ZGY1Li4xZTBlZWU2ZDM4OTY0M2IwN2M4MDdhZWY2OTkxYzQ2
YTRlOTIwMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTM2NzQsMjMgKzM2NzQsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuICJSZW5kZXJCbG9jayI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5J
bnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRl
ID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKLQotICAgIFRleHRSdW4gcnVu
KGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9uLCB0ZXh0RGlyZWN0aW9uLCBkaXJl
Y3Rpb25hbE92ZXJyaWRlKTsKLSAgICBpZiAoZm9udC5wcmltYXJ5Rm9udCgpLmlzU1ZHRm9udCgp
KSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8gRklYTUU6IFRocmVhZCBhIFJlbmRlck9i
amVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcmVmZXJlbmNlIGFueXRo
aW5nLgotICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJ1bjsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIFN0
cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CiAgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKQEAgLTM3MDAsNyArMzY4NCw3IEBA
IHN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoUmVuZGVyT2Jq
ZWN0KiBjb250ZXh0LCBjb25zdCBGb250CiAgICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJl
Y3Rpb25PdmVycmlkZSkKICAgICAgICAgICAgIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVy
cmlkZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICB9Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFj
dGVycywgbGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFs
T3ZlcnJpZGUpOworICAgIFRleHRSdW4gcnVuKHN0cmluZ1ZpZXcsIDAsIDAsIGV4cGFuc2lvbiwg
dGV4dERpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSk7CiAgICAgaWYgKGZvbnQucHJpbWFy
eUZvbnQoKS5pc1NWR0ZvbnQoKSkgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7IC8vIEZJWE1F
OiBUaHJlYWQgYSBSZW5kZXJPYmplY3QmIHRvIHRoaXMgcG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0
byBkZXJlZmVyZW5jZSBhbnl0aGluZy4KICAgICAgICAgcnVuLnNldFJlbmRlcmluZ0NvbnRleHQo
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqY29udGV4dCkpOwpAQCAtMzcwOSwz
OCArMzY5MywxNiBAQCBzdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udAogICAgIHJldHVybiBydW47CiB9
CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b24pCi17Ci0gICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250
LCBjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOwotfQotCiBUZXh0UnVuIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFJlbmRlclRleHQqIHRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAgIGlmICh0ZXh0
LT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250
ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0ZXJzOCgpLCB0ZXh0LT50ZXh0TGVuZ3RoKCksIHN0eWxl
LCBleHBhbnNpb24pOwotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczE2KCksIHRleHQtPnRleHRMZW5ndGgoKSwgc3R5bGUs
IGV4cGFuc2lvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oY29udGV4dCwgZm9udCwg
dGV4dC0+c3RyaW5nVmlldygpLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0KIAogVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb24pCiB7Ci0gICAgQVNTRVJUKG9mZnNldCArIGxlbmd0aCA8PSB0ZXh0LT50
ZXh0TGVuZ3RoKCkpOwotICAgIGlmICh0ZXh0LT5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0ZXJzOCgp
ICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOwotICAgIHJldHVybiBjb25zdHJ1
Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczE2KCkgKyBv
ZmZzZXQsIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbik7Ci19Ci0KLVRleHRSdW4gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCi17Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgaWYgKCFsZW5ndGgg
fHwgc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKGNvbnRleHQsIGZvbnQsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHN0eWxlLCBl
eHBhbnNpb24sIGZsYWdzKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNv
bnRleHQsIGZvbnQsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5z
aW9uLCBmbGFncyk7CisgICAgdW5zaWduZWQgc3RvcCA9IG9mZnNldCArIGxlbmd0aDsKKyAgICBB
U1NFUlQoc3RvcCA8PSB0ZXh0LT50ZXh0TGVuZ3RoKCkpOworICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuKGNvbnRleHQsIGZvbnQsIHRleHQtPnN0cmluZ1ZpZXcob2Zmc2V0LCBzdG9wKSwgc3R5
bGUsIGV4cGFuc2lvbik7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5v
bnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudCwgRURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKaW5kZXggN2YxOTM0MGFhYWFjYTY4NGVkZmRhNjE1NzgyYWQ2MjE0YmZkNDdjZi4uOWNlNmY3
MmU4MzY2Y2IyYzQzZTJlOWM1NjJjODUwMGUzZDk5MjE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBvYmotPmlzRmxvYXRpbmcoKSB8fCAob2JqLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAm
JiAhb2JqLT5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpICYmICFvYmotPmNv
bnRhaW5lcigpLT5pc1JlbmRlcklubGluZSgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgU3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKIAogICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFJlbmRlclRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsCkBAIC0yMTIsMTUg
KzIxMiw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4o
UmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJlbmRlclRl
eHQqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBG
b3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRl
eHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJl
bmRlclRleHQqLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFJlbmRlclN0eWxlJiwKLSAgICAgICAg
RXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGlu
Z0V4cGFuc2lvbik7Ci0KLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRl
ck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
KTsKLQotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0g
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwogICAgIAog
ICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdp
bmF0aW9uU3RydXQoTGF5b3V0VW5pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGQzNDBkOGVjZWQwOWZiMTUzNDVhNmIxMmE0NWQ4ZTJhNmY2
OTRlOTAuLjU2NmIxYTNhMWUzYjlmNTZlZTMwY2UwY2ZiODk3NzdiNDdhOWY2MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zOTkzLDcgKzM5
OTMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3RyaXBUcmFpbGluZ1NwYWNlKGZsb2F0JiBpbmxp
bmVNYXgsIGZsb2F0JiBpbmxpbmVNaW4sIFJlbmRlcgogICAgICAgICBSZW5kZXJUZXh0JiByZW5k
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKnRyYWlsaW5nU3BhY2VDaGlsZCk7CiAgICAg
ICAgIGNvbnN0IFVDaGFyIHNwYWNlID0gJyAnOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IHJlbmRlclRleHQuc3R5bGUoKS5mb250Q2FzY2FkZSgpOyAvLyBGSVhNRTogVGhpcyBp
Z25vcmVzIGZpcnN0LWxpbmUuCi0gICAgICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRo
KFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZyZW5kZXJUZXh0LCBmb250LCAmc3BhY2Us
IDEsIHJlbmRlclRleHQuc3R5bGUoKSkpOworICAgICAgICBmbG9hdCBzcGFjZVdpZHRoID0gZm9u
dC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigmcmVuZGVyVGV4dCwgZm9udCwg
U3RyaW5nVmlldygmc3BhY2UsIDEpLCByZW5kZXJUZXh0LnN0eWxlKCkpKTsKICAgICAgICAgaW5s
aW5lTWF4IC09IHNwYWNlV2lkdGggKyBmb250LndvcmRTcGFjaW5nKCk7CiAgICAgICAgIGlmIChp
bmxpbmVNaW4gPiBpbmxpbmVNYXgpCiAgICAgICAgICAgICBpbmxpbmVNaW4gPSBpbmxpbmVNYXg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCmluZGV4IGZjNjUwYzliNDBjZDc0NWU3ZTBiMzc0MTUzMDk0YmQ2MzkxYjAzMTIuLmY4NTFh
OTE1MTNmMTViMmE4ZDM2MGI3MzAwMDJmNzUzYjk2ZjAxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xOTgxLDggKzE5
ODEsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdygp
CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAg
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZWxsaXBzaXNT
dHIsICgmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKSk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZp
cnN0TGluZUZvbnQgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgZmxvYXQg
Zmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgoY29uc3RydWN0VGV4
dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCAmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBmaXJzdExp
bmVTdHlsZSgpKSk7Ci0gICAgZmxvYXQgZWxsaXBzaXNXaWR0aCA9IChmb250ID09IGZpcnN0TGlu
ZUZvbnQpID8gZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA6IGZvbnQud2lkdGgoY29uc3RydWN0VGV4
dFJ1bih0aGlzLCBmb250LCAmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBzdHlsZSgpKSk7CisgICAg
ZmxvYXQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgoY29uc3Ry
dWN0VGV4dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCBTdHJpbmdWaWV3KGVsbGlwc2lzU3RyKSwg
Zmlyc3RMaW5lU3R5bGUoKSkpOworICAgIGZsb2F0IGVsbGlwc2lzV2lkdGggPSAoZm9udCA9PSBm
aXJzdExpbmVGb250KSA/IGZpcnN0TGluZUVsbGlwc2lzV2lkdGggOiBmb250LndpZHRoKGNvbnN0
cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldyhlbGxpcHNpc1N0ciksIHN0eWxlKCkp
KTsKIAogICAgIC8vIEZvciBMVFIgdGV4dCB0cnVuY2F0aW9uLCB3ZSB3YW50IHRvIGdldCB0aGUg
cmlnaHQgZWRnZSBvZiBvdXIgcGFkZGluZyBib3gsIGFuZCB0aGVuIHdlIHdhbnQgdG8gc2VlCiAg
ICAgLy8gaWYgdGhlIHJpZ2h0IGVkZ2Ugb2YgYSBsaW5lIGJveCBleGNlZWRzIHRoYXQuICBGb3Ig
UlRMLCB3ZSB1c2UgdGhlIGxlZnQgZWRnZSBvZiB0aGUgcGFkZGluZyBib3ggYW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCmluZGV4IDUyYjRhM2Y1NTYyN2IxYmNjZWYyMWQ1MWUyMTMyNmQ0Y2E5MmUyZDMuLmVh
MDc5ZmY1NmI1NmQ0ZjgyZjIzMmMxZWUxYjI2ODhiMDVkZTk5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CkBAIC05OTYsMTAgKzk5NiwxMCBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICBM
YXlvdXRVbml0IHRvdGFsV2lkdGg7CiAgICAgICAgIElubGluZUJveCogYW5jaG9yQm94ID0gbGFz
dExpbmUtPmxhc3RDaGlsZCgpOwogICAgICAgICBpZiAoYW5jaG9yQm94ICYmIGFuY2hvckJveC0+
cmVuZGVyZXIoKS5zdHlsZSgpLmlzTGluaygpKQotICAgICAgICAgICAgdG90YWxXaWR0aCA9IGFu
Y2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4odGhp
cywgZm9udCwgZWxsaXBzaXNBbmRTcGFjZSwgMiwgc3R5bGUoKSkpOworICAgICAgICAgICAgdG90
YWxXaWR0aCA9IGFuY2hvckJveC0+bG9naWNhbFdpZHRoKCkgKyBmb250LndpZHRoKGNvbnN0cnVj
dFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldyhlbGxpcHNpc0FuZFNwYWNlLCAyKSwgc3R5
bGUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFuY2hvckJveCA9IG51bGxwdHI7
Ci0gICAgICAgICAgICB0b3RhbFdpZHRoID0gZm9udC53aWR0aChjb25zdHJ1Y3RUZXh0UnVuKHRo
aXMsIGZvbnQsICZob3Jpem9udGFsRWxsaXBzaXMsIDEsIHN0eWxlKCkpKTsKKyAgICAgICAgICAg
IHRvdGFsV2lkdGggPSBmb250LndpZHRoKGNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3Ry
aW5nVmlldygmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKSwgc3R5bGUoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gU2VlIGlmIHRoaXMgd2lkdGggY2FuIGJlIGFjY29tbW9kYXRlZCBvbiB0aGUg
bGFzdCB2aXNpYmxlIGxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDc4Mzg3ODkyOTYwYmE0NTYyNGE5YmU1YzU0MWM1NmU0
YzU1NjViOWMuLjYwZWE2NDZlNDc3NTRmOWY0M2I1NTQyYTk5YTg0MTU4ZWIwYTlhMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApA
QCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgRmxvYXRSZWN0
IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250
Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiKTsKKyAgICBUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KCIiKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAgIGlmICghZ2V0UmVwbGFjZW1l
bnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCBy
ZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzM5NSw3IEBAIExheW91dFJlY3QgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKGNvbnN0IExheW91dFBv
CiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93
UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiLCAwKTsKKyAg
ICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KCIiKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAg
IGlmIChnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVu
dFJlY3QsIGluZGljYXRvclJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVjdCwgZm9u
dCwgcnVuLCB0ZXh0V2lkdGgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdChpbmRpY2F0b3JS
ZWN0KTsKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0lu
VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgRmxvYXRQb2ludCYgcG9pbgogICAgIEZs
b2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwogICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAg
ICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1bigiIik7CisgICAgVGV4dFJ1biBy
dW4oU3RyaW5nVmlldygiIikpOwogICAgIGZsb2F0IHRleHRXaWR0aDsKICAgICByZXR1cm4gZ2V0
UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoSW50UG9pbnQoKSwgY29udGVudFJlY3QsIGluZGljYXRv
clJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVjdCwgZm9udCwgcnVuLCB0ZXh0V2lk
dGgpCiAgICAgICAgICYmIGluZGljYXRvclJlY3QuY29udGFpbnMocG9pbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDMwNjNlOGM2M2E2
ZGUxNTE0MGQ2YjI0OTEzNmNjNmNiMGM3MWIyMDAuLjIzM2FkM2Q3MmYyYTQ1NDRmNmM1MjE1M2Zi
ZjI2OWVjZmExMDcxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKQEAgLTE2MzQsNyArMTYzNCw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgICAgICAgICAgICAgIFRleHRSdW4g
cnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0LCBz
dHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwg
RGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBpdGVtV2lk
dGggPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICAgICAgVUNoYXIgc3VmZml4U3BhY2Vb
Ml0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKSwgJyAnIH07
Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0
aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBzdWZmaXhTcGFjZSwg
Miwgc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3VmZml4U3BhY2VXaWR0
aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwg
U3RyaW5nVmlldyhzdWZmaXhTcGFjZSwgMiksIHN0eWxlKCkpKTsKICAgICAgICAgICAgICAgICBs
b2dpY2FsV2lkdGggPSBpdGVtV2lkdGggKyBzdWZmaXhTcGFjZVdpZHRoOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODYxLDcgKzE4NjEsNyBAQCBGbG9hdFJlY3QgUmVu
ZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAgICAgICAgICAgIFRleHRS
dW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0
LCBzdHlsZSgpLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lv
biwgRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgICAgICAgICBmbG9hdCBpdGVtV2lkdGggPSBm
b250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICBVQ2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgbGlz
dE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpLCAnICcgfTsKLSAgICAgICAg
ICAgIGZsb2F0IHN1ZmZpeFNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSk7CisgICAg
ICAgICAgICBmbG9hdCBzdWZmaXhTcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBTdHJpbmdWaWV3KHN1ZmZpeFNwYWNlLCAyKSwg
c3R5bGUoKSkpOwogICAgICAgICAgICAgcmVsYXRpdmVSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGl0
ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGgsIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTg0
M2RhMWY1ZTA2MGY0ODg0ZDhmNjIxNDRjMDgwYzY2N2I3MzdlYi4uMjM2YzZlNTRkZTk1NDIyMjJl
YTI1MDU1ZmM4YzQwMjBhZjU0NmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcApAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6dHJpbW1lZFByZWZX
aWR0aHMoZmxvYXQgbGVhZFdpZHRoLAogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9
IHN0eWxlLmZvbnRDYXNjYWRlKCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4K
ICAgICAgICAgaWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsKICAgICAgICAgICAgIGNvbnN0IFVDaGFy
IHNwYWNlID0gJyAnOwotICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgo
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgJnNwYWNlLCAxLCBzdHls
ZSkpOworICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgU3RyaW5nVmlldygmc3BhY2UsIDEpLCBz
dHlsZSkpOwogICAgICAgICAgICAgbWF4VyAtPSBzcGFjZVdpZHRoOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1heFcgKz0gZm9udC53b3JkU3BhY2luZygpOwpAQCAtNzE0LDcgKzcxNCw3
IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4g
a2VybmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0
aGVpciB0cmFpbGluZwogICAgIC8vIHNwYWNlLCB0aGVuIHN1YnRyYWN0IGl0cyB3aWR0aC4KLSAg
ICBmbG9hdCB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVz
KCkgJiBLZXJuaW5nID8gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0
aGlzLCBmb250LCAmc3BhY2UsIDEsIHN0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgd29yZFNwYWNp
bmcgOiAwOworICAgIGZsb2F0IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSBmb250LnR5cGVzZXR0
aW5nRmVhdHVyZXMoKSAmIEtlcm5pbmcgPyBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIFN0cmluZ1ZpZXcoJnNwYWNlLCAxKSwgc3R5bGUpLCAmZmFs
bGJhY2tGb250cykgKyB3b3JkU3BhY2luZyA6IDA7CiAKICAgICAvLyBJZiBhdXRvbWF0aWMgaHlw
aGVuYXRpb24gaXMgYWxsb3dlZCwgd2Uga2VlcCB0cmFjayBvZiB0aGUgd2lkdGggb2YgdGhlIHdp
ZGVzdCB3b3JkIChvciB3b3JkCiAgICAgLy8gZnJhZ21lbnQpIGVuY291bnRlcmVkIHNvIGZhciwg
YW5kIG9ubHkgdHJ5IGh5cGhlbmF0aW5nIHdvcmRzIHRoYXQgYXJlIHdpZGVyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDVlMmVkMzA0MWRk
NDczZDRkYzQ5MWIyNzkxMmEwNzNlNDFkYTAxYmQuLmY1Zjk0MjUxZWJiZDc5OTE1ZmJhZDM4NjAy
MDFmNTMxOWU4ZDkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIGNhblVzZUZvcihjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIuaXNDb21iaW5lVGV4
dCgpIHx8IHRleHRSZW5kZXJlci5pc0NvdW50ZXIoKSB8fCB0ZXh0UmVuZGVyZXIuaXNRdW90ZSgp
IHx8IHRleHRSZW5kZXJlci5pc1RleHRGcmFnbWVudCgpCiAgICAgICAgICAgICB8fCB0ZXh0UmVu
ZGVyZXIuaXNTVkdJbmxpbmVUZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKFRleHRSdW4odGV4dFJlbmRlcmVy
LnRleHQoKSkpICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCisgICAgICAgIGlmIChzdHlsZS5mb250
Q2FzY2FkZSgpLmNvZGVQYXRoKFRleHRSdW4oU3RyaW5nVmlldyh0ZXh0UmVuZGVyZXIudGV4dCgp
KSkpICE9IEZvbnRDYXNjYWRlOjpTaW1wbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIGlmICghY2FuVXNlRm9yVGV4dCh0ZXh0UmVuZGVyZXIsIHByaW1hcnlGb250KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAK
aW5kZXggN2FmNzg1YmNiMTUzYzU0MWNjN2U4MzBhMzkyOTM3NWQ5ZGZmNmZkNC4uMTM4NjBlNzc5
ZmYxNzY1YTZhYmY1ZDAxNjg5ZWE5MDEzYzBhOWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxl
OjpTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLCBwcmVzZXJ2ZU5ld2xpbmUo
c3R5bGUucHJlc2VydmVOZXdsaW5lKCkpCiAgICAgLCB3cmFwTGluZXMoc3R5bGUuYXV0b1dyYXAo
KSkKICAgICAsIGJyZWFrV29yZE9uT3ZlcmZsb3coc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gQnJl
YWtPdmVyZmxvd1dyYXAgJiYgKHdyYXBMaW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUpKQotICAgICwg
c3BhY2VXaWR0aChmb250LndpZHRoKFRleHRSdW4oJnNwYWNlLCAxKSkpCisgICAgLCBzcGFjZVdp
ZHRoKGZvbnQud2lkdGgoVGV4dFJ1bihTdHJpbmdWaWV3KCZzcGFjZSwgMSkpKSkKICAgICAsIHRh
YldpZHRoKGNvbGxhcHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCiAgICAgLCBs
b2NhbGUoc3R5bGUubG9jYWxlKCkpCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAgZmxvYXQgVGV4dEZy
YWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgc2Vn
bWVudCwgdW5zaWcKICAgICBib29sIG1lYXN1cmVXaXRoRW5kU3BhY2UgPSBtX3N0eWxlLmNvbGxh
cHNlV2hpdGVzcGFjZSAmJiBzZWdtZW50VG8gPCBzZWdtZW50LnRleHQubGVuZ3RoKCkgJiYgc2Vn
bWVudC50ZXh0W3NlZ21lbnRUb10gPT0gJyAnOwogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNl
KQogICAgICAgICArK3NlZ21lbnRUbzsKLSAgICBUZXh0UnVuIHJ1bihzZWdtZW50LnRleHQuY2hh
cmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpICsgc2VnbWVudEZyb20sIHNlZ21lbnRUbyAtIHNlZ21l
bnRGcm9tKTsKKyAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHNlZ21lbnQudGV4dC5jaGFyYWN0
ZXJzPENoYXJhY3RlclR5cGU+KCkgKyBzZWdtZW50RnJvbSwgc2VnbWVudFRvIC0gc2VnbWVudEZy
b20pKTsKICAgICBydW4uc2V0WFBvcyh4UG9zaXRpb24pOwogICAgIHJ1bi5zZXRUYWJTaXplKCEh
bV9zdHlsZS50YWJXaWR0aCwgbV9zdHlsZS50YWJXaWR0aCk7CiAgICAgZmxvYXQgd2lkdGggPSBt
X3N0eWxlLmZvbnQud2lkdGgocnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwCmluZGV4IDEyNzQ2ZjY0NWNmYWIyN2ViOGQ5NTkzNTViYmVjOWI2Yjk4OTZjMmMuLmU0
Mjg2YzA0MTAzY2NiNzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3RleHRQ
YWludFN0eWxlLCBVc2VFbXBoYXNpc01hcmtDb2xvcik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4o
Jm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oU3Ry
aW5nVmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKICAgICAgICAgICAgIFRl
eHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1bi5nZXQoKSA6IG1fdGV4dFJ1bjsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQ
b2ludChib3hPcmlnaW4ueCgpICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgp
ICsgbV9mb250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOwogICAgICAg
ICAgICAgaWYgKG1fY29tYmluZWRUZXh0KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVGV4dFBh
aW50ZXI6OnBhaW50VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3NlbGVj
dGlvblBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKIAotICAgICAgICAgICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyVGV4dFJ1biwgKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgICAg
ICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1biwgKFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyLCAxKSkpOwogICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9
IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogbV90
ZXh0UnVuOwogICAgICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0g
bV9jb21iaW5lZFRleHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qud2lk
dGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkg
OiBtX3RleHRPcmlnaW47CiAgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IGI0ODFh
MjYyNzk1NzBjZWY1MjFlNTlkNTdiYTIxOWQ5NThkYzJkOWYuLjZkNjE0OTczMzcyMzVhOWRlY2Vj
NWYxNjU2YjYyMDU4NDhmY2VlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC03NDAsNyArNzQwLDcgQEAgaW5saW5lIGJvb2wgQnJl
YWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJlbWVu
dHMsIGJvb2wKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFibGVkIGFu
ZCBUZXh0TGF5b3V0IGlzbid0IHVzZWQsIGluIHdoaWNoIGNhc2Ugd2UgbWVhc3VyZQogICAgIC8v
IHdvcmRzIHdpdGggdGhlaXIgdHJhaWxpbmcgc3BhY2UsIHRoZW4gc3VidHJhY3QgaXRzIHdpZHRo
LgogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7Ci0gICAgZmxvYXQgd29y
ZFRyYWlsaW5nU3BhY2VXaWR0aCA9IChmb250LnR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmIEtlcm5p
bmcpICYmICF0ZXh0TGF5b3V0ID8gZm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bigmcmVuZGVyVGV4dCwgZm9udCwgJnNwYWNlLCAxLCBzdHlsZSksICZmYWxsYmFja0ZvbnRz
KSArIHdvcmRTcGFjaW5nIDogMDsKKyAgICBmbG9hdCB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0g
KGZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpICYgS2VybmluZykgJiYgIXRleHRMYXlvdXQgPyBm
b250LndpZHRoKFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZyZW5kZXJUZXh0LCBmb250
LCBTdHJpbmdWaWV3KCZzcGFjZSwgMSksIHN0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgd29yZFNw
YWNpbmcgOiAwOwogCiAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IG1fcmVuZGVyVGV4dEluZm8u
bGluZUJyZWFrSXRlcmF0b3IubGFzdENoYXJhY3RlcigpOwogICAgIFVDaGFyIHNlY29uZFRvTGFz
dENoYXJhY3RlciA9IG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3Iuc2Vjb25kVG9M
YXN0Q2hhcmFjdGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggYjIwOGQ0NTZmN2Y1MGZhMDA0ZjM1NTk0
NzU2ZmU3YWVlNmUyMjJiNC4uOWJlZWI5MjFkNDE2ZTA1NzMwOWI2ZWYyOTI0NDQ5YmU0MDZiZmM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmlj
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKCkKICAgICA6IG1f
dGV4dCgwKQotICAgICwgbV9ydW4oc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPigwKSwgMCkKKyAg
ICAsIG1fcnVuKFN0cmluZ1ZpZXcoKSkKICAgICAsIG1fdGV4dFBvc2l0aW9uKDApCiAgICAgLCBt
X2lzQ29tcGxleFRleHQoZmFsc2UpCiAgICAgLCBtX3RvdGFsV2lkdGgoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDNiMGQwYmJjMmU1
Yjc0NzEzYmYzNjY2NzQxZWFkOWI0MDUwOWI0OWIuLjdiYTZlOTMzZmMwOWY3ZDk5Yjg3NjUwYmQw
YWZhMDVkYmYwNTY1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0
cmluZ0V4dHJhcy5tbQpAQCAtOTMsNyArOTMsNyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0UG9pbnQ6
KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3IgKgog
ICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CiAKICAgICAg
ICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0YShyZWludGVycHJldF9j
YXN0PENURm9udFJlZj4oZm9udCksIFtmb250IHBvaW50U2l6ZV0pLCBmb250U21vb3RoaW5nSXNB
bGxvd2VkID8gQXV0b1Ntb290aGluZyA6IEFudGlhbGlhc2VkKTsKLSAgICAgICAgVGV4dFJ1biBy
dW4oYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmll
dyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hh
Y2tzKCk7CiAKICAgICAgICAgQ0dGbG9hdCByZWQ7CkBAIC0xMzksNyArMTM5LDcgQEAgLSAoZmxv
YXQpX3dlYl93aWR0aFdpdGhGb250OihOU0ZvbnQgKilmb250CiAKICAgICBpZiAoY2FuVXNlRmFz
dFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpIHsKICAgICAgICAgRm9udENhc2NhZGUg
d2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0YShyZWludGVycHJldF9jYXN0PENURm9udFJlZj4o
Zm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRh
dGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0
YSgpLCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAgICAg
ICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0aChydW4pOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252539</attachid>
            <date>2015-05-06 17:00:36 -0700</date>
            <delta_ts>2015-05-06 17:00:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506165919.patch</filename>
            <type>text/plain</type>
            <size>24841</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uOWJkMTk3NWE1MjgzMDIxZDAxMzQ3YmU5YzVmOGFk
MjU2NDAzNjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
VGV4dFJ1biB0byBvbmx5IGFjY2VwdCBTdHJpbmdWaWV3cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3aWR0aFdpdGhG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFRleHRSdW5JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpcFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6dW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3JCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojp0cmltbWVkUHJlZldpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRG
cmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6
OnBhaW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKToKKwog
MjAxNS0wNS0wNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhIGNvbnRyb2wgdm9sdW1lIHNsaWRlciBpcyBvcGFxdWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGQ2ZGEzYjM1OWMxMjA3
MmUyMjFjZjhhYWIyMTBmOWViYzViZmJmYzguLjJlNDA5NGZkOGM5ZWEwZTRhZTBkZjgxZjNiOTdi
MmZjMWE4ZjEwMzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgU3RyaW5nIE1hdGhNTE1lbmNsb3NlRWxl
bWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHBh
ZGRpbmc7CiAgICAgU3RyaW5nIGNsb3NpbmdCcmFjZSA9ICIpIjsKLSAgICBUZXh0UnVuIHJ1bihj
bG9zaW5nQnJhY2UuaW1wbCgpLCBjbG9zaW5nQnJhY2UubGVuZ3RoKCkpOworICAgIFRleHRSdW4g
cnVuKChTdHJpbmdWaWV3KGNsb3NpbmdCcmFjZSkpKTsKICAgICBOb2RlKiBub2RlID0gcGFyZW50
Tm9kZSgpOwogICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmZvbnRDYXNj
YWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJp
bmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcAppbmRleCA2NmFmYmVhM2QxZGI2NDE1MzYyYmQxNWYxNjFjMzUzYmMzNjk4
NWQ2Li41ODBiZTA5NzUzNjQ5NDA2ZDNlYjEyM2NhY2I3MTJiM2Y0NDE2MDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaQogCiBzdGF0aWMgZmxv
YXQgc3RyaW5nV2lkdGgoY29uc3QgRm9udENhc2NhZGUmIHJlbmRlcmVyLCBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGRpc2FibGVSb3VuZGluZ0hhY2tzKQog
ewotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgVGV4dFJ1biBydW4o
U3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICBpZiAoZGlzYWJsZVJvdW5kaW5n
SGFja3MpCiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogICAgIHJldHVybiBy
ZW5kZXJlci53aWR0aChydW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5oCmluZGV4IDdlNGZlN2NmOGE1Y2Y4MzdmZTU5OTU5ZmNjZWQ2ZDYzN2IxMTM5MzQuLjUy
NDc0M2JiYjMzOTc2YWVhOWE5MWRhM2U3NmZiNDQyMmJmYzEwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTUyLDYwICs1Miw2IEBAIHB1YmxpYzoK
IAogICAgIHR5cGVkZWYgdW5zaWduZWQgUm91bmRpbmdIYWNrczsKIAotICAgIFRleHRSdW4oY29u
c3QgTENoYXIqIGMsIHVuc2lnbmVkIGxlbiwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lv
biA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3MgPSBS
dW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQoYywgbGVuKQotICAg
ICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChsZW4pCi0gICAgICAgICwgbV90YWJTaXplKDApCi0g
ICAgICAgICwgbV94cG9zKHhwb3MpCi0gICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNo
KDEpCi0gICAgICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICAgICAsIG1fZXhwYW5z
aW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3IpCi0gICAgICAgICwgbV9hbGxvd1RhYnMoZmFs
c2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fZGlyZWN0
aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQotICAgICAgICAsIG1fY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkKLSAgICAgICAgLCBtX2Fw
cGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBSdW5Sb3VuZGluZykgJiYgc19hbGxvd3NS
b3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fYXBwbHlXb3JkUm91bmRpbmcoKHJvdW5kaW5nSGFj
a3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBt
X2Rpc2FibGVTcGFjaW5nKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0UnVuKGNvbnN0
IFVDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24g
PSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVu
Um91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KGMsIGxlbikKLSAgICAg
ICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgobGVuKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAg
ICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgx
KQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAgLCBtX2V4cGFuc2lv
bkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxsb3dUYWJzKGZhbHNl
KQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX2RpcmVjdGlv
bmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBtX2NoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAgICAgICwgbV9hcHBs
eVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91
bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tz
ICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IFRl
eHRSdW4oY29uc3QgU3RyaW5nJiBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0g
MCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJv
dW5kaW5nIHwgV29yZFJvdW5kaW5nKQotICAgICAgICA6IG1fdGV4dChTdHJpbmdWaWV3KHMpKQot
ICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChzLmxlbmd0aCgpKQotICAgICAgICAsIG1fdGFi
U2l6ZSgwKQotICAgICAgICAsIG1feHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgxKQotICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAg
LCBtX2V4cGFuc2lvbkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxs
b3dUYWJzKGZhbHNlKQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAg
LCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBt
X2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAg
ICAgICwgbV9hcHBseVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYm
IHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChy
b3VuZGluZ0hhY2tzICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0g
ICAgICAgICwgbV9kaXNhYmxlU3BhY2luZyhmYWxzZSkKLSAgICB7Ci0gICAgfQotCiAgICAgZXhw
bGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHMsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0g
UnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCiAgICAgICAgIDogbV90ZXh0KHMpCiAgICAgICAg
ICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHMubGVuZ3RoKCkpCkBAIC0yMTMsNyArMTU5LDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIG1feHBvcyBpcyB0aGUgeCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUg
bGVmdCBzdGFydCBvZiB0aGUgdGV4dCBsaW5lLCBub3QgcmVsYXRpdmUgdG8gdGhlIGxlZnQKICAg
ICAvLyBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jay4gSW4gdGhlIGNhc2Ugb2YgcmlnaHQg
YWxpZ25tZW50IG9yIGNlbnRlciBhbGlnbm1lbnQsIGxlZnQgc3RhcnQgb2YKLSAgICAvLyB0aGUg
dGV4dCBsaW5lIGlzIG5vdCB0aGUgc2FtZSBhcyBsZWZ0IHN0YXJ0IG9mIHRoZSBjb250YWluaW5n
IGJsb2NrLgorICAgIC8vIHRoZSB0ZXh0IGxpbmUgaXMgbm90IHRoZSBzYW1lIGFzIGxlZnQgc3Rh
cnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIFRoaXMgdmFyaWFibGUgaXMgb25seSB1c2VkCisg
ICAgLy8gdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBcdAogICAgIGZsb2F0IG1feHBvczsgIAog
ICAgIGZsb2F0IG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggMzUzZWY4ZDIzODU0ZDlhNmY1MTE0Mzc0
NDQ2NWJjYWIyYmZlNGI5My4uNjZiMWViODY3NjNjYzkwZjE3YTQ1MjBmY2JmNTBiNzM2NWZjMGNm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0x
OTIsNyArMTkyLDcgQEAgc3RhdGljIGZsb2F0IHdpZHRoV2l0aEZvbnQoTlNTdHJpbmcgKnN0cmlu
ZywgTlNGb250ICpmb250KQogICAgIAogICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKSkgewogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSkpOwotICAgICAgICBUZXh0UnVuIHJ1bihidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwor
ICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwog
ICAgICAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKICAgICAgICAgcmV0dXJuIHdlYkNv
cmVGb250LndpZHRoKHJ1bik7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9u
dCwgTlNDb2xvciAqCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEs
IC0xKTsKICAgICAgICAgICAgIAogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250
UGxhdGZvcm1EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Q1RGb250UmVmPihmb250KSwgW2ZvbnQgcG9p
bnRTaXplXSksIEFudGlhbGlhc2VkKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0YSgp
LCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAKICAgICAg
ICAgQ0dGbG9hdCByZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCAwMGFlNjRkMzVkNTlkNTNlNDAxYjE0NDEyMTVmNTdhMGI2Y2Y5ZGY1Li5kMmRkYTRkY2M5
MjU2ZjFmOTFjZjBjMTU2NjMzNjcxNGRjZjI5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKQEAgLTM2NzQsMjMgKzM2NzQsNyBAQCBjb25zdCBjaGFyKiBSZW5k
ZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJSZW5kZXJCbG9jayI7CiB9
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbikKLXsKLSAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRl
cjsKLQotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9u
LCB0ZXh0RGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKLSAgICBpZiAoZm9udC5wcmlt
YXJ5Rm9udCgpLmlzU1ZHRm9udCgpKSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8gRklY
TUU6IFRocmVhZCBhIFJlbmRlck9iamVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBoYXZl
IHRvIGRlcmVmZXJlbmNlIGFueXRoaW5nLgotICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4
dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHJ1bjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Ci1zdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9i
amVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitUZXh0UnVuIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFn
cykKIHsKICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CiAgICAgYm9vbCBk
aXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsK
QEAgLTM3MDAsNyArMzY4NCw3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0
UnVuSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250CiAgICAgICAgIGlm
IChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb25PdmVycmlkZSkKICAgICAgICAgICAgIGRpcmVjdGlv
bmFsT3ZlcnJpZGUgfD0gaXNPdmVycmlkZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICB9Ci0g
ICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRleHRE
aXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUpOworICAgIFRleHRSdW4gcnVuKHN0cmluZ1Zp
ZXcsIDAsIDAsIGV4cGFuc2lvbiwgdGV4dERpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSk7
CiAgICAgaWYgKGZvbnQucHJpbWFyeUZvbnQoKS5pc1NWR0ZvbnQoKSkgewogICAgICAgICBBU1NF
UlQoY29udGV4dCk7IC8vIEZJWE1FOiBUaHJlYWQgYSBSZW5kZXJPYmplY3QmIHRvIHRoaXMgcG9p
bnQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZXJlZmVyZW5jZSBhbnl0aGluZy4KICAgICAgICAgcnVu
LnNldFJlbmRlcmluZ0NvbnRleHQoU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgq
Y29udGV4dCkpOwpAQCAtMzcwOSwzOCArMzY5MywzMSBAQCBzdGF0aWMgaW5saW5lIFRleHRSdW4g
Y29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9u
dAogICAgIHJldHVybiBydW47CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRl
eHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwg
ZXhwYW5zaW9uKTsKLX0KLQotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihS
ZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb24pCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJl
aGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQogewotICAgIHJldHVybiBjb25z
dHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBz
dHlsZSwgZXhwYW5zaW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihjb250ZXh0LCBm
b250LCBTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAog
VGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRl
eHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsKLSAg
ICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50
ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgoKSwgdGV4dC0+dGV4dExlbmd0
aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigpLCB0ZXh0LT50ZXh0TGVuZ3Ro
KCksIHN0eWxlLCBleHBhbnNpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRl
eHQsIGZvbnQsIHRleHQtPnN0cmluZ1ZpZXcoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGgg
PD0gdGV4dC0+dGV4dExlbmd0aCgpKTsKLSAgICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hh
cmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1
cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3Rl
cnMxNigpICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOworICAgIHVuc2lnbmVk
IHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7CisgICAgQVNTRVJUKHN0b3AgPD0gdGV4dC0+dGV4dExl
bmd0aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihjb250ZXh0LCBmb250LCB0ZXh0
LT5zdHJpbmdWaWV3KG9mZnNldCwgc3RvcCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0
UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdz
IGZsYWdzKQorVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmpl
Y3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb24pCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgp
OworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIFN0cmluZ1ZpZXco
Y2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7Cit9CiAKLSAgICBpZiAoIWxl
bmd0aCB8fCBzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
SW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgc3R5
bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOwotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJu
YWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIHN0eWxlLCBl
eHBhbnNpb24sIGZsYWdzKTsKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
UmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
KGNvbnRleHQsIGZvbnQsIFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4
cGFuc2lvbik7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3Vz
V2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCwg
RURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5k
ZXggN2YxOTM0MGFhYWFjYTY4NGVkZmRhNjE1NzgyYWQ2MjE0YmZkNDdjZi4uNjc5NDU3NWIyZTIw
MjkxNzUyYzU5NzI2MGFlMGE5MzJkMjdiODNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKQEAgLTIwNCwyMSArMjA0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG9iai0+aXNGbG9hdGluZygpIHx8IChvYmotPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFv
YmotPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIW9iai0+Y29udGFp
bmVyKCktPmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBUZXh0UnVuIGNv
bnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYs
IFN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZp
b3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4
dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29u
c3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhh
dmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBU
ZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKLQogICAgIHN0YXRpYyBUZXh0UnVu
IGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFJlbmRlclRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFu
c2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBh
bnNpb24pOwotCiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmpl
Y3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4dCosIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAg
IEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRp
bmdFeHBhbnNpb24pOwotCi0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5k
ZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4dCos
IHVuc2lnbmVkIG9mZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
KTsKLQogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0g
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCiAgICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNv
bnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWls
aW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA3ODM4
Nzg5Mjk2MGJhNDU2MjRhOWJlNWM1NDFjNTZlNGM1NTY1YjljLi42MGVhNjQ2ZTQ3NzU0ZjlmNDNi
NTU0MmE5OWE4NDE1OGViMGE5YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludAogICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwogICAgIEZs
b2F0UmVjdCBhcnJvd1JlY3Q7CiAgICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1
bigiIik7CisgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldygiIikpOwogICAgIGZsb2F0IHRleHRX
aWR0aDsKICAgICBpZiAoIWdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KHBhaW50T2Zmc2V0LCBj
b250ZW50UmVjdCwgaW5kaWNhdG9yUmVjdCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0
LCBmb250LCBydW4sIHRleHRXaWR0aCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM5NSw3ICszOTUs
NyBAQCBMYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1bmF2YWlsYWJsZVBsdWdpbklu
ZGljYXRvckJvdW5kcyhjb25zdCBMYXlvdXRQbwogICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRl
eHRSZWN0OwogICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAgICAgRm9udENhc2NhZGUgZm9udDsK
LSAgICBUZXh0UnVuIHJ1bigiIiwgMCk7CisgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldygiIikp
OwogICAgIGZsb2F0IHRleHRXaWR0aDsKICAgICBpZiAoZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0
cnkoYWNjdW11bGF0ZWRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNl
bWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKICAgICAgICAg
cmV0dXJuIExheW91dFJlY3QoaW5kaWNhdG9yUmVjdCk7CkBAIC01ODYsNyArNTg2LDcgQEAgYm9v
bCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNJblVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW4KICAgICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRUZXh0UmVjdDsK
ICAgICBGbG9hdFJlY3QgYXJyb3dSZWN0OwogICAgIEZvbnRDYXNjYWRlIGZvbnQ7Ci0gICAgVGV4
dFJ1biBydW4oIiIpOworICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoIiIpKTsKICAgICBmbG9h
dCB0ZXh0V2lkdGg7CiAgICAgcmV0dXJuIGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KEludFBv
aW50KCksIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBh
cnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKQogICAgICAgICAmJiBpbmRpY2F0b3JSZWN0
LmNvbnRhaW5zKHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcAppbmRleCA1ZTJlZDMwNDFkZDQ3M2Q0ZGM0OTFiMjc5MTJhMDczZTQxZGEwMWJk
Li5mNWY5NDI1MWViYmQ3OTkxNWZiYWQzODYwMjAxZjUzMTllOGQ5MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC0yMDUsNyArMjA1LDcg
QEAgYm9vbCBjYW5Vc2VGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAgICAgICBp
ZiAodGV4dFJlbmRlcmVyLmlzQ29tYmluZVRleHQoKSB8fCB0ZXh0UmVuZGVyZXIuaXNDb3VudGVy
KCkgfHwgdGV4dFJlbmRlcmVyLmlzUXVvdGUoKSB8fCB0ZXh0UmVuZGVyZXIuaXNUZXh0RnJhZ21l
bnQoKQogICAgICAgICAgICAgfHwgdGV4dFJlbmRlcmVyLmlzU1ZHSW5saW5lVGV4dCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoc3R5bGUuZm9udENhc2NhZGUoKS5j
b2RlUGF0aChUZXh0UnVuKHRleHRSZW5kZXJlci50ZXh0KCkpKSAhPSBGb250Q2FzY2FkZTo6U2lt
cGxlKQorICAgICAgICBpZiAoc3R5bGUuZm9udENhc2NhZGUoKS5jb2RlUGF0aChUZXh0UnVuKFN0
cmluZ1ZpZXcodGV4dFJlbmRlcmVyLnRleHQoKSkpKSAhPSBGb250Q2FzY2FkZTo6U2ltcGxlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWNhblVzZUZvclRleHQodGV4
dFJlbmRlcmVyLCBwcmltYXJ5Rm9udCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFn
bWVudEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCmluZGV4IDdhZjc4NWJjYjE1M2M1NDFjYzdlODMw
YTM5MjkzNzVkOWRmZjZmZDQuLjEzODYwZTc3OWZmMTc2NWE2YWJmNWQwMTY4OWVhOTAxM2MwYTlj
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogICAgICwgcHJlc2VydmVOZXdsaW5lKHN0eWxlLnByZXNlcnZlTmV3bGluZSgpKQogICAg
ICwgd3JhcExpbmVzKHN0eWxlLmF1dG9XcmFwKCkpCiAgICAgLCBicmVha1dvcmRPbk92ZXJmbG93
KHN0eWxlLm92ZXJmbG93V3JhcCgpID09IEJyZWFrT3ZlcmZsb3dXcmFwICYmICh3cmFwTGluZXMg
fHwgcHJlc2VydmVOZXdsaW5lKSkKLSAgICAsIHNwYWNlV2lkdGgoZm9udC53aWR0aChUZXh0UnVu
KCZzcGFjZSwgMSkpKQorICAgICwgc3BhY2VXaWR0aChmb250LndpZHRoKFRleHRSdW4oU3RyaW5n
Vmlldygmc3BhY2UsIDEpKSkpCiAgICAgLCB0YWJXaWR0aChjb2xsYXBzZVdoaXRlc3BhY2UgPyAw
IDogc3R5bGUudGFiU2l6ZSgpKQogICAgICwgbG9jYWxlKHN0eWxlLmxvY2FsZSgpKQogewpAQCAt
MTk3LDcgKzE5Nyw3IEBAIGZsb2F0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpydW5XaWR0aChjb25z
dCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNlZ21lbnQsIHVuc2lnCiAgICAgYm9vbCBtZWFzdXJl
V2l0aEVuZFNwYWNlID0gbV9zdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgJiYgc2VnbWVudFRvIDwg
c2VnbWVudC50ZXh0Lmxlbmd0aCgpICYmIHNlZ21lbnQudGV4dFtzZWdtZW50VG9dID09ICcgJzsK
ICAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkKICAgICAgICAgKytzZWdtZW50VG87Ci0gICAg
VGV4dFJ1biBydW4oc2VnbWVudC50ZXh0LmNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKSArIHNl
Z21lbnRGcm9tLCBzZWdtZW50VG8gLSBzZWdtZW50RnJvbSk7CisgICAgVGV4dFJ1biBydW4oU3Ry
aW5nVmlldyhzZWdtZW50LnRleHQuY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpICsgc2VnbWVu
dEZyb20sIHNlZ21lbnRUbyAtIHNlZ21lbnRGcm9tKSk7CiAgICAgcnVuLnNldFhQb3MoeFBvc2l0
aW9uKTsKICAgICBydW4uc2V0VGFiU2l6ZSghIW1fc3R5bGUudGFiV2lkdGgsIG1fc3R5bGUudGFi
V2lkdGgpOwogICAgIGZsb2F0IHdpZHRoID0gbV9zdHlsZS5mb250LndpZHRoKHJ1bik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAppbmRleCAxMjc0NmY2NDVjZmFiMjdl
YjhkOTU5MzU1YmJlYzliNmI5ODk2YzJjLi5lNDI4NmMwNDEwM2NjYjc5YjRlNmU2NmI3YmJiNTQy
NmZjMmQ2ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKQEAg
LTE3MCw3ICsxNzAsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHQoKQogICAgICAgICBp
ZiAoIW1fZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KG1fY29udGV4dCwgbV90ZXh0UGFpbnRTdHlsZSwgVXNlRW1waGFzaXNNYXJrQ29s
b3IpOwogCi0gICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1bj4gb2JqZWN0
UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlciwg
MSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1bj4gb2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuKFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyLCAxKSk7CiAgICAgICAgICAgICBUZXh0UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0g
bV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4uZ2V0KCkg
OiBtX3RleHRSdW47CiAgICAgICAgICAgICBGbG9hdFBvaW50IGVtcGhhc2lzTWFya1RleHRPcmln
aW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIG1fYm94UmVj
dC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSArIG1fZm9udC5mb250TWV0cmljcygpLmFzY2Vu
dCgpKSA6IG1fdGV4dE9yaWdpbjsKICAgICAgICAgICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHQoKQogICAgICAgICBp
ZiAoIW1fZW1waGFzaXNNYXJrLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KG1fY29udGV4dCwgbV9zZWxlY3Rpb25QYWludFN0eWxlLCBVc2VFbXBoYXNpc01h
cmtDb2xvcik7CiAKLSAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChU
ZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4sICgmb2JqZWN0UmVwbGFj
ZW1lbnRDaGFyYWN0ZXIsIDEpKTsKKyAgICAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChUZXh0UnVuLCBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4sIChTdHJp
bmdWaWV3KCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpKTsKICAgICAgICAgICAgIFRl
eHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1biA6IG1fdGV4dFJ1bjsKICAgICAgICAgICAgIEZsb2F0UG9p
bnQgZW1waGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQb2ludChi
b3hPcmlnaW4ueCgpICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgpICsgbV9m
b250LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOwogICAgICAgICAgICAg
aWYgKG1fY29tYmluZWRUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IGIyMDhkNDU2ZjdmNTBmYTAwNGYz
NTU5NDc1NmZlN2FlZTZlMjIyYjQuLjliZWViOTIxZDQxNmUwNTczMDliNmVmMjkyNDQ0OWJlNDA2
YmZjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OlNWR1RleHRNZXRyaWNzQnVpbGRlcigpCiAgICAg
OiBtX3RleHQoMCkKLSAgICAsIG1fcnVuKHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oMCksIDAp
CisgICAgLCBtX3J1bihTdHJpbmdWaWV3KCkpCiAgICAgLCBtX3RleHRQb3NpdGlvbigwKQogICAg
ICwgbV9pc0NvbXBsZXhUZXh0KGZhbHNlKQogICAgICwgbV90b3RhbFdpZHRoKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQppbmRleCAzYjBkMGJi
YzJlNWI3NDcxM2JmMzY2Njc0MWVhZDliNDA1MDliNDliLi43YmE2ZTkzM2ZjMDlmN2Q5OWI4NzY1
MGJkMGFmYTA1ZGJmMDU2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KQEAgLTkzLDcgKzkzLDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBv
aW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9y
ICoKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwogCiAg
ICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0Zm9ybURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxDVEZvbnRSZWY+KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSwgZm9udFNtb290aGlu
Z0lzQWxsb3dlZCA/IEF1dG9TbW9vdGhpbmcgOiBBbnRpYWxpYXNlZCk7Ci0gICAgICAgIFRleHRS
dW4gcnVuKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRp
bmdIYWNrcygpOwogCiAgICAgICAgIENHRmxvYXQgcmVkOwpAQCAtMTM5LDcgKzEzOSw3IEBAIC0g
KGZsb2F0KV93ZWJfd2lkdGhXaXRoRm9udDooTlNGb250ICopZm9udAogCiAgICAgaWYgKGNhblVz
ZUZhc3RSZW5kZXJlcihidWZmZXIuZGF0YSgpLCBsZW5ndGgpKSB7CiAgICAgICAgIEZvbnRDYXNj
YWRlIHdlYkNvcmVGb250KEZvbnRQbGF0Zm9ybURhdGEocmVpbnRlcnByZXRfY2FzdDxDVEZvbnRS
ZWY+KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKGJ1ZmZl
ci5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKSk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwog
ICAgICAgICByZXR1cm4gd2ViQ29yZUZvbnQud2lkdGgocnVuKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252543</attachid>
            <date>2015-05-06 17:32:43 -0700</date>
            <delta_ts>2015-05-06 17:38:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506173126.patch</filename>
            <type>text/plain</type>
            <size>18434</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uOWJkMTk3NWE1MjgzMDIxZDAxMzQ3YmU5YzVmOGFk
MjU2NDAzNjBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
VGV4dFJ1biB0byBvbmx5IGFjY2VwdCBTdHJpbmdWaWV3cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3aWR0aFdpdGhG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFRleHRSdW5JbnRl
cm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dHJpcFRyYWlsaW5nU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjaGVja0xpbmVz
Rm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6dW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3JCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0Ojp0cmltbWVkUHJlZldpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y2Fu
VXNlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRG
cmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6
OnBhaW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyKToKKwog
MjAxNS0wNS0wNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IE1lZGlhIGNvbnRyb2wgdm9sdW1lIHNsaWRlciBpcyBvcGFxdWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGQ2ZGEzYjM1OWMxMjA3
MmUyMjFjZjhhYWIyMTBmOWViYzViZmJmYzguLjk3ZmU4M2JmNzcxMTE5ZmQyYTQ4MWFhMmI4Zjg1
NTVmY2M3ZmZkZWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCkBAIC0xMjksOCArMTI5LDggQEAgdm9pZCBNYXRoTUxNZW5jbG9zZUVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWQK
IFN0cmluZyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmxvbmdEaXZMZWZ0UGFkZGluZygpIGNvbnN0
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBwYWRkaW5nOwotICAgIFN0cmluZyBjbG9zaW5nQnJhY2Ug
PSAiKSI7Ci0gICAgVGV4dFJ1biBydW4oY2xvc2luZ0JyYWNlLmltcGwoKSwgY2xvc2luZ0JyYWNl
Lmxlbmd0aCgpKTsKKyAgICBTdHJpbmcgY2xvc2luZ0JyYWNlKCIpIiwgU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgVGV4dFJ1biBydW4oY2xvc2luZ0JyYWNlKTsKICAgICBOb2Rl
KiBub2RlID0gcGFyZW50Tm9kZSgpOwogICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkp
IHsKICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBub2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLmZvbnRDYXNjYWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKaW5kZXggN2U0ZmU3Y2Y4YTVjZjgzN2ZlNTk5NTlmY2NlZDZkNjM3YjExMzkzNC4u
MjcxMjFlOTBjYmNkYTFkYzhkNDY4NDJhNDNlYjIxYTFjY2NlY2IxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6
CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFJvdW5kaW5nSGFja3M7CiAKLSAgICBUZXh0UnVuKGNv
bnN0IExDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNp
b24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0g
UnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KGMsIGxlbikKLSAg
ICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgobGVuKQorICAgIGV4cGxpY2l0IFRleHRSdW4oU3Ry
aW5nVmlldyBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9y
YmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIsIGJvb2wg
ZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0
aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJvdW5kaW5nIHwgV29y
ZFJvdW5kaW5nKQorICAgICAgICA6IG1fdGV4dChzKQorICAgICAgICAsIG1fY2hhcmFjdGVyc0xl
bmd0aChzLmxlbmd0aCgpKQogICAgICAgICAsIG1fdGFiU2l6ZSgwKQogICAgICAgICAsIG1feHBv
cyh4cG9zKQogICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgxKQpAQCAtNzAsNTcg
KzcwLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVGV4dFJ1bihjb25zdCBVQ2hh
ciogYywgdW5zaWduZWQgbGVuLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5z
aW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJvdW5k
aW5nIHwgV29yZFJvdW5kaW5nKQotICAgICAgICA6IG1fdGV4dChjLCBsZW4pCi0gICAgICAgICwg
bV9jaGFyYWN0ZXJzTGVuZ3RoKGxlbikKLSAgICAgICAgLCBtX3RhYlNpemUoMCkKLSAgICAgICAg
LCBtX3hwb3MoeHBvcykKLSAgICAgICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKLSAg
ICAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgICAgICwgbV9leHBhbnNpb25CZWhh
dmlvcihleHBhbnNpb25CZWhhdmlvcikKLSAgICAgICAgLCBtX2FsbG93VGFicyhmYWxzZSkKLSAg
ICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0gICAgICAgICwgbV9kaXJlY3Rpb25hbE92
ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9y
Q29kZVBhdGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQotICAgICAgICAsIG1fYXBwbHlSdW5S
b3VuZGluZygocm91bmRpbmdIYWNrcyAmIFJ1blJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5n
SGFja3MpCi0gICAgICAgICwgbV9hcHBseVdvcmRSb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFdv
cmRSb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fZGlzYWJs
ZVNwYWNpbmcoZmFsc2UpCisgICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHMpCisg
ICAgICAgIDogVGV4dFJ1bihTdHJpbmdWaWV3KHMpKQogICAgIHsKICAgICB9Ci0gICAgCi0gICAg
ZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHMsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBl
eHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93
VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wg
Y2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hh
Y2tzID0gUnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KFN0cmlu
Z1ZpZXcocykpCi0gICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHMubGVuZ3RoKCkpCi0gICAg
ICAgICwgbV90YWJTaXplKDApCi0gICAgICAgICwgbV94cG9zKHhwb3MpCi0gICAgICAgICwgbV9o
b3Jpem9udGFsR2x5cGhTdHJldGNoKDEpCi0gICAgICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9u
KQotICAgICAgICAsIG1fZXhwYW5zaW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3IpCi0gICAg
ICAgICwgbV9hbGxvd1RhYnMoZmFsc2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9u
KQotICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJyaWRlKQot
ICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5Gb3JDb2Rl
UGF0aCkKLSAgICAgICAgLCBtX2FwcGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBSdW5S
b3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fYXBwbHlXb3Jk
Um91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRp
bmdIYWNrcykKLSAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQorCisgICAgVGV4dFJ1
bihjb25zdCBMQ2hhciogYywgdW5zaWduZWQgbGVuKQorICAgICAgICA6IFRleHRSdW4oU3RyaW5n
VmlldyhjLCBsZW4pKQogICAgIHsKICAgICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmlu
Z1ZpZXcgcywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJl
aGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJp
ZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSLCBib29sIGRp
cmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgg
PSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3MgPSBSdW5Sb3VuZGluZyB8IFdvcmRS
b3VuZGluZykKLSAgICAgICAgOiBtX3RleHQocykKLSAgICAgICAgLCBtX2NoYXJhY3RlcnNMZW5n
dGgocy5sZW5ndGgoKSkKLSAgICAgICAgLCBtX3RhYlNpemUoMCkKLSAgICAgICAgLCBtX3hwb3Mo
eHBvcykKLSAgICAgICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKLSAgICAgICAgLCBt
X2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihleHBh
bnNpb25CZWhhdmlvcikKLSAgICAgICAgLCBtX2FsbG93VGFicyhmYWxzZSkKLSAgICAgICAgLCBt
X2RpcmVjdGlvbihkaXJlY3Rpb24pCi0gICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRp
cmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgo
Y2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQotICAgICAgICAsIG1fYXBwbHlSdW5Sb3VuZGluZygo
cm91bmRpbmdIYWNrcyAmIFJ1blJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0g
ICAgICAgICwgbV9hcHBseVdvcmRSb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGlu
ZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQotICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmco
ZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBVQ2hhciogYywgdW5zaWduZWQgbGVuKQorICAgICAg
ICA6IFRleHRSdW4oU3RyaW5nVmlldyhjLCBsZW4pKQogICAgIHsKICAgICB9CiAKQEAgLTIxMyw3
ICsxNzQsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gbV94cG9zIGlzIHRoZSB4IHBvc2l0aW9uIHJl
bGF0aXZlIHRvIHRoZSBsZWZ0IHN0YXJ0IG9mIHRoZSB0ZXh0IGxpbmUsIG5vdCByZWxhdGl2ZSB0
byB0aGUgbGVmdAogICAgIC8vIHN0YXJ0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiBJbiB0aGUg
Y2FzZSBvZiByaWdodCBhbGlnbm1lbnQgb3IgY2VudGVyIGFsaWdubWVudCwgbGVmdCBzdGFydCBv
ZgotICAgIC8vIHRoZSB0ZXh0IGxpbmUgaXMgbm90IHRoZSBzYW1lIGFzIGxlZnQgc3RhcnQgb2Yg
dGhlIGNvbnRhaW5pbmcgYmxvY2suCisgICAgLy8gdGhlIHRleHQgbGluZSBpcyBub3QgdGhlIHNh
bWUgYXMgbGVmdCBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jay4gVGhpcyB2YXJpYWJsZSBp
cyBvbmx5IHVzZWQKKyAgICAvLyB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIFx0CiAgICAgZmxv
YXQgbV94cG9zOyAgCiAgICAgZmxvYXQgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMGFlNjRkMzVkNTlkNTNl
NDAxYjE0NDEyMTVmNTdhMGI2Y2Y5ZGY1Li5kMmRkYTRkY2M5MjU2ZjFmOTFjZjBjMTU2NjMzNjcx
NGRjZjI5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTM2NzQsMjMgKzM2NzQsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuICJSZW5kZXJCbG9jayI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5J
bnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRl
ID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKLQotICAgIFRleHRSdW4gcnVu
KGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9uLCB0ZXh0RGlyZWN0aW9uLCBkaXJl
Y3Rpb25hbE92ZXJyaWRlKTsKLSAgICBpZiAoZm9udC5wcmltYXJ5Rm9udCgpLmlzU1ZHRm9udCgp
KSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8gRklYTUU6IFRocmVhZCBhIFJlbmRlck9i
amVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcmVmZXJlbmNlIGFueXRo
aW5nLgotICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJ1bjsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIFN0
cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CiAgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKQEAgLTM3MDAsNyArMzY4NCw3IEBA
IHN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoUmVuZGVyT2Jq
ZWN0KiBjb250ZXh0LCBjb25zdCBGb250CiAgICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJl
Y3Rpb25PdmVycmlkZSkKICAgICAgICAgICAgIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVy
cmlkZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICB9Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFj
dGVycywgbGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFs
T3ZlcnJpZGUpOworICAgIFRleHRSdW4gcnVuKHN0cmluZ1ZpZXcsIDAsIDAsIGV4cGFuc2lvbiwg
dGV4dERpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSk7CiAgICAgaWYgKGZvbnQucHJpbWFy
eUZvbnQoKS5pc1NWR0ZvbnQoKSkgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7IC8vIEZJWE1F
OiBUaHJlYWQgYSBSZW5kZXJPYmplY3QmIHRvIHRoaXMgcG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0
byBkZXJlZmVyZW5jZSBhbnl0aGluZy4KICAgICAgICAgcnVuLnNldFJlbmRlcmluZ0NvbnRleHQo
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqY29udGV4dCkpOwpAQCAtMzcwOSwz
OCArMzY5MywzMSBAQCBzdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVy
bmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udAogICAgIHJldHVybiBydW47CiB9
CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMs
IGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxl
bmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b24pCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCog
Y29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4
dFJ1bkZsYWdzIGZsYWdzKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwo
Y29udGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKKyAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihjb250ZXh0LCBmb250LCBTdHJpbmdWaWV3KHN0cmlu
ZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsKLSAgICBpZiAodGV4dC0+aXM4Qml0KCkp
Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwg
dGV4dC0+Y2hhcmFjdGVyczgoKSwgdGV4dC0+dGV4dExlbmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9u
KTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRl
eHQtPmNoYXJhY3RlcnMxNigpLCB0ZXh0LT50ZXh0TGVuZ3RoKCksIHN0eWxlLCBleHBhbnNpb24p
OworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIHRleHQtPnN0cmlu
Z1ZpZXcoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uKQogewotICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gdGV4dC0+dGV4dExlbmd0aCgp
KTsKLSAgICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0
UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bklu
dGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5n
dGgsIHN0eWxlLCBleHBhbnNpb24pOworICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5n
dGg7CisgICAgQVNTRVJUKHN0b3AgPD0gdGV4dC0+dGV4dExlbmd0aCgpKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0VGV4dFJ1bihjb250ZXh0LCBmb250LCB0ZXh0LT5zdHJpbmdWaWV3KG9mZnNldCwg
c3RvcCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQorVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJldHVybiBjb25zdHJ1
Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwg
c3R5bGUsIGV4cGFuc2lvbik7Cit9CiAKLSAgICBpZiAoIWxlbmd0aCB8fCBzdHJpbmcuaXM4Qml0
KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9u
dCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3Mp
OwotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3Ry
aW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKK1Rl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIFN0cmlu
Z1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKIFJlbmRl
ckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5k
RGlzcGxheShjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCwgRURpc3BsYXkgZGlzcGxheSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggN2YxOTM0MGFhYWFjYTY4NGVk
ZmRhNjE1NzgyYWQ2MjE0YmZkNDdjZi4uNjc5NDU3NWIyZTIwMjkxNzUyYzU5NzI2MGFlMGE5MzJk
MjdiODNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwNCwy
MSArMjA0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iai0+aXNGbG9hdGluZygpIHx8
IChvYmotPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFvYmotPnN0eWxlKCkuaXNPcmlnaW5h
bERpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5l
KCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVy
T2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIFN0cmluZ1ZpZXcsIGNvbnN0IFJl
bmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRl
eHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJP
YmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
UmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0
VGV4dFJ1bkZsYWdzKTsKLQogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJlbmRlclRleHQq
LCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCiAgICAgc3RhdGlj
IFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4dCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0g
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCi0gICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4dCosIHVuc2lnbmVkIG9mZnNldCwgY29u
c3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxp
bmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQogICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lv
biB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCiAgICAgc3RhdGljIFRleHRSdW4gY29uc3Ry
dWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAg
ICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlk
TGVhZGluZ0V4cGFuc2lvbik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA3ODM4Nzg5Mjk2MGJhNDU2MjRhOWJlNWM1
NDFjNTZlNGM1NTY1YjljLi4zMTVkYzE0NWRkZmI4NTAxNDVjYTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgIEZs
b2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwogICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAg
ICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1bigiIik7CisgICAgVGV4dFJ1biBy
dW4oZW1wdHlTdHJpbmcoKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAgIGlmICghZ2V0UmVw
bGFjZW1lbnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JS
ZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzM5NSw3IEBAIExheW91dFJlY3QgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKGNvbnN0IExh
eW91dFBvCiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0
IGFycm93UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiLCAw
KTsKKyAgICBUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0V2lkdGg7
CiAgICAgaWYgKGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGFjY3VtdWxhdGVkT2Zmc2V0LCBj
b250ZW50UmVjdCwgaW5kaWNhdG9yUmVjdCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0
LCBmb250LCBydW4sIHRleHRXaWR0aCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KGluZGlj
YXRvclJlY3QpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBGbG9hdFBvaW50JiBwb2luCiAg
ICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVj
dDsKICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiKTsKKyAgICBUZXh0
UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgcmV0dXJu
IGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KEludFBvaW50KCksIGNvbnRlbnRSZWN0LCBpbmRp
Y2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4
dFdpZHRoKQogICAgICAgICAmJiBpbmRpY2F0b3JSZWN0LmNvbnRhaW5zKHBvaW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
LmNwcAppbmRleCBiMjA4ZDQ1NmY3ZjUwZmEwMDRmMzU1OTQ3NTZmZTdhZWU2ZTIyMmI0Li45YmVl
YjkyMWQ0MTZlMDU3MzA5YjZlZjI5MjQ0NDliZTQwNmJmYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0y
OSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
OjpTVkdUZXh0TWV0cmljc0J1aWxkZXIoKQogICAgIDogbV90ZXh0KDApCi0gICAgLCBtX3J1bihz
dGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KDApLCAwKQorICAgICwgbV9ydW4oU3RyaW5nVmlldygp
KQogICAgICwgbV90ZXh0UG9zaXRpb24oMCkKICAgICAsIG1faXNDb21wbGV4VGV4dChmYWxzZSkK
ICAgICAsIG1fdG90YWxXaWR0aCgwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252544</attachid>
            <date>2015-05-06 17:38:13 -0700</date>
            <delta_ts>2015-05-06 17:41:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506173657.patch</filename>
            <type>text/plain</type>
            <size>17204</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uMzUwYmJiNjcyY2U4MzdmNmJjNmZjZWVkNzczZjg1
MzAxNTljMDMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
VGV4dFJ1biBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NDcxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBjb25zdHJ1Y3RvciBmb3J3YXJkaW5nIHRvIG1h
a2UgVGV4dFJ1bidzIGNvbnN0cnVjdG9ycyBtdWNoIHNpbXBsZXIuIEl0IHRoZW4KKyAgICAgICAg
dXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKCkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgVGV4dFJ1biAodmlhIHVz
aW5nIFN0cmluZ1ZpZXdzKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9u
Z0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bkludGVybmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0luVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyKToKKwogMjAxNS0wNS0wNCAgUm9nZXIgRm9uZyAgPHJvZ2VyX2Zv
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIGNvbnRyb2wgdm9sdW1lIHNsaWRlciBpcyBv
cGFxdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQu
Y3BwCmluZGV4IGQ2ZGEzYjM1OWMxMjA3MmUyMjFjZjhhYWIyMTBmOWViYzViZmJmYzguLjk3ZmU4
M2JmNzcxMTE5ZmQyYTQ4MWFhMmI4Zjg1NTVmY2M3ZmZkZWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCkBAIC0xMjksOCArMTI5LDggQEAg
dm9pZCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWQKIFN0cmluZyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6Omxv
bmdEaXZMZWZ0UGFkZGluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBwYWRkaW5nOwot
ICAgIFN0cmluZyBjbG9zaW5nQnJhY2UgPSAiKSI7Ci0gICAgVGV4dFJ1biBydW4oY2xvc2luZ0Jy
YWNlLmltcGwoKSwgY2xvc2luZ0JyYWNlLmxlbmd0aCgpKTsKKyAgICBTdHJpbmcgY2xvc2luZ0Jy
YWNlKCIpIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgVGV4dFJ1biBydW4o
Y2xvc2luZ0JyYWNlKTsKICAgICBOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOwogICAgIGlmIChu
b2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmZvbnRDYXNjYWRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggN2U0ZmU3Y2Y4YTVjZjgzN2Zl
NTk5NTlmY2NlZDZkNjM3YjExMzkzNC4uMjcxMjFlOTBjYmNkYTFkYzhkNDY4NDJhNDNlYjIxYTFj
Y2NlY2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaApA
QCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFJvdW5kaW5n
SGFja3M7CiAKLSAgICBUZXh0UnVuKGNvbnN0IExDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGZsb2F0
IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5z
aW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJy
aWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRp
bmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAg
ICAgIDogbV90ZXh0KGMsIGxlbikKLSAgICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgobGVuKQor
ICAgIGV4cGxpY2l0IFRleHRSdW4oU3RyaW5nVmlldyBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQg
ZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29s
IGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdI
YWNrcyA9IFJ1blJvdW5kaW5nIHwgV29yZFJvdW5kaW5nKQorICAgICAgICA6IG1fdGV4dChzKQor
ICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChzLmxlbmd0aCgpKQogICAgICAgICAsIG1fdGFi
U2l6ZSgwKQogICAgICAgICAsIG1feHBvcyh4cG9zKQogICAgICAgICAsIG1faG9yaXpvbnRhbEds
eXBoU3RyZXRjaCgxKQpAQCAtNzAsNTcgKzcwLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgVGV4dFJ1bihjb25zdCBVQ2hhciogYywgdW5zaWduZWQgbGVuLCBmbG9hdCB4cG9zID0g
MCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZp
b3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZh
bHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUsIFJvdW5kaW5nSGFja3Mg
cm91bmRpbmdIYWNrcyA9IFJ1blJvdW5kaW5nIHwgV29yZFJvdW5kaW5nKQotICAgICAgICA6IG1f
dGV4dChjLCBsZW4pCi0gICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKGxlbikKLSAgICAgICAg
LCBtX3RhYlNpemUoMCkKLSAgICAgICAgLCBtX3hwb3MoeHBvcykKLSAgICAgICAgLCBtX2hvcml6
b250YWxHbHlwaFN0cmV0Y2goMSkKLSAgICAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0g
ICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihleHBhbnNpb25CZWhhdmlvcikKLSAgICAgICAg
LCBtX2FsbG93VGFicyhmYWxzZSkKLSAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0g
ICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAg
ICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KQotICAgICAgICAsIG1fYXBwbHlSdW5Sb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFJ1blJvdW5k
aW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9hcHBseVdvcmRSb3Vu
ZGluZygocm91bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hh
Y2tzKQotICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCisgICAgZXhwbGljaXQgVGV4
dFJ1bihjb25zdCBTdHJpbmcmIHMpCisgICAgICAgIDogVGV4dFJ1bihTdHJpbmdWaWV3KHMpKQog
ICAgIHsKICAgICB9Ci0gICAgCi0gICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHMs
IGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBl
eHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5n
RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25h
bE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwg
Um91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcp
Ci0gICAgICAgIDogbV90ZXh0KFN0cmluZ1ZpZXcocykpCi0gICAgICAgICwgbV9jaGFyYWN0ZXJz
TGVuZ3RoKHMubGVuZ3RoKCkpCi0gICAgICAgICwgbV90YWJTaXplKDApCi0gICAgICAgICwgbV94
cG9zKHhwb3MpCi0gICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoKDEpCi0gICAgICAg
ICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICAgICAsIG1fZXhwYW5zaW9uQmVoYXZpb3Io
ZXhwYW5zaW9uQmVoYXZpb3IpCi0gICAgICAgICwgbV9hbGxvd1RhYnMoZmFsc2UpCi0gICAgICAg
ICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQotICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlk
ZShkaXJlY3Rpb25hbE92ZXJyaWRlKQotICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQ
YXRoKGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkKLSAgICAgICAgLCBtX2FwcGx5UnVuUm91bmRp
bmcoKHJvdW5kaW5nSGFja3MgJiBSdW5Sb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tz
KQotICAgICAgICAsIG1fYXBwbHlXb3JkUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBXb3JkUm91
bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAgICAgLCBtX2Rpc2FibGVTcGFj
aW5nKGZhbHNlKQorCisgICAgVGV4dFJ1bihjb25zdCBMQ2hhciogYywgdW5zaWduZWQgbGVuKQor
ICAgICAgICA6IFRleHRSdW4oU3RyaW5nVmlldyhjLCBsZW4pKQogICAgIHsKICAgICB9CiAKLSAg
ICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgcywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4
cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBj
aGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFj
a3MgPSBSdW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQocykKLSAg
ICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgocy5sZW5ndGgoKSkKLSAgICAgICAgLCBtX3RhYlNp
emUoMCkKLSAgICAgICAgLCBtX3hwb3MoeHBvcykKLSAgICAgICAgLCBtX2hvcml6b250YWxHbHlw
aFN0cmV0Y2goMSkKLSAgICAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgICAgICwg
bV9leHBhbnNpb25CZWhhdmlvcihleHBhbnNpb25CZWhhdmlvcikKLSAgICAgICAgLCBtX2FsbG93
VGFicyhmYWxzZSkKLSAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0gICAgICAgICwg
bV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAgICAgICwgbV9j
aGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQotICAgICAg
ICAsIG1fYXBwbHlSdW5Sb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFJ1blJvdW5kaW5nKSAmJiBz
X2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9hcHBseVdvcmRSb3VuZGluZygocm91
bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQotICAg
ICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCisgICAgVGV4dFJ1bihjb25zdCBVQ2hhciog
YywgdW5zaWduZWQgbGVuKQorICAgICAgICA6IFRleHRSdW4oU3RyaW5nVmlldyhjLCBsZW4pKQog
ICAgIHsKICAgICB9CiAKQEAgLTIxMyw3ICsxNzQsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gbV94
cG9zIGlzIHRoZSB4IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBsZWZ0IHN0YXJ0IG9mIHRoZSB0
ZXh0IGxpbmUsIG5vdCByZWxhdGl2ZSB0byB0aGUgbGVmdAogICAgIC8vIHN0YXJ0IG9mIHRoZSBj
b250YWluaW5nIGJsb2NrLiBJbiB0aGUgY2FzZSBvZiByaWdodCBhbGlnbm1lbnQgb3IgY2VudGVy
IGFsaWdubWVudCwgbGVmdCBzdGFydCBvZgotICAgIC8vIHRoZSB0ZXh0IGxpbmUgaXMgbm90IHRo
ZSBzYW1lIGFzIGxlZnQgc3RhcnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCisgICAgLy8gdGhl
IHRleHQgbGluZSBpcyBub3QgdGhlIHNhbWUgYXMgbGVmdCBzdGFydCBvZiB0aGUgY29udGFpbmlu
ZyBibG9jay4gVGhpcyB2YXJpYWJsZSBpcyBvbmx5IHVzZWQKKyAgICAvLyB0byBjYWxjdWxhdGUg
dGhlIHdpZHRoIG9mIFx0CiAgICAgZmxvYXQgbV94cG9zOyAgCiAgICAgZmxvYXQgbV9ob3Jpem9u
dGFsR2x5cGhTdHJldGNoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCAwMGFlNjRkMzVkNTlkNTNlNDAxYjE0NDEyMTVmNTdhMGI2Y2Y5ZGY1Li5kMmRkYTRk
Y2M5MjU2ZjFmOTFjZjBjMTU2NjMzNjcxNGRjZjI5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM2NzQsMjMgKzM2NzQsNyBAQCBjb25zdCBjaGFyKiBS
ZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJSZW5kZXJCbG9jayI7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGlubGluZSBU
ZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBp
bnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbikKLXsKLSAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7Ci0gICAg
Ym9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxP
cmRlcjsKLQotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5z
aW9uLCB0ZXh0RGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKLSAgICBpZiAoZm9udC5w
cmltYXJ5Rm9udCgpLmlzU1ZHRm9udCgpKSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8g
RklYTUU6IFRocmVhZCBhIFJlbmRlck9iamVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBo
YXZlIHRvIGRlcmVmZXJlbmNlIGFueXRoaW5nLgotICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29u
dGV4dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJ1bjsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRl
ck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENoYXJhY3Rl
clR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitUZXh0UnVu
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBm
bGFncykKIHsKICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CiAgICAgYm9v
bCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRl
cjsKQEAgLTM3MDAsNyArMzY4NCw3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RU
ZXh0UnVuSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250CiAgICAgICAg
IGlmIChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb25PdmVycmlkZSkKICAgICAgICAgICAgIGRpcmVj
dGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVycmlkZShzdHlsZS51bmljb2RlQmlkaSgpKTsKICAgICB9
Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRl
eHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUpOworICAgIFRleHRSdW4gcnVuKHN0cmlu
Z1ZpZXcsIDAsIDAsIGV4cGFuc2lvbiwgdGV4dERpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlk
ZSk7CiAgICAgaWYgKGZvbnQucHJpbWFyeUZvbnQoKS5pc1NWR0ZvbnQoKSkgewogICAgICAgICBB
U1NFUlQoY29udGV4dCk7IC8vIEZJWE1FOiBUaHJlYWQgYSBSZW5kZXJPYmplY3QmIHRvIHRoaXMg
cG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZXJlZmVyZW5jZSBhbnl0aGluZy4KICAgICAgICAg
cnVuLnNldFJlbmRlcmluZ0NvbnRleHQoU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZSgqY29udGV4dCkpOwpAQCAtMzcwOSwzOCArMzY5MywzMSBAQCBzdGF0aWMgaW5saW5lIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3Qg
Rm9udAogICAgIHJldHVybiBydW47CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwg
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQotewotICAgIHJldHVybiBjb25zdHJ1
Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHls
ZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBF
eHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQogewotICAgIHJldHVybiBj
b25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3Ro
LCBzdHlsZSwgZXhwYW5zaW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihjb250ZXh0
LCBmb250LCBTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0K
IAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNv
bnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsK
LSAgICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
SW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgoKSwgdGV4dC0+dGV4dExl
bmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bklu
dGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigpLCB0ZXh0LT50ZXh0TGVu
Z3RoKCksIHN0eWxlLCBleHBhbnNpb24pOworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNv
bnRleHQsIGZvbnQsIHRleHQtPnN0cmluZ1ZpZXcoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAK
IFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAgIEFTU0VSVChvZmZzZXQgKyBsZW5n
dGggPD0gdGV4dC0+dGV4dExlbmd0aCgpKTsKLSAgICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+
Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICBy
ZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJh
Y3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOworICAgIHVuc2ln
bmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7CisgICAgQVNTRVJUKHN0b3AgPD0gdGV4dC0+dGV4
dExlbmd0aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihjb250ZXh0LCBmb250LCB0
ZXh0LT5zdHJpbmdWaWV3KG9mZnNldCwgc3RvcCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1U
ZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZs
YWdzIGZsYWdzKQorVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJP
YmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMQ2hhciogY2hh
cmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24pCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIFN0cmluZ1Zp
ZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7Cit9CiAKLSAgICBpZiAo
IWxlbmd0aCB8fCBzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0
UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwg
c3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOwotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50
ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIHN0eWxl
LCBleHBhbnNpb24sIGZsYWdzKTsKK1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0
UnVuKGNvbnRleHQsIGZvbnQsIFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUs
IGV4cGFuc2lvbik7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJCbG9jazo6Y3JlYXRlQW5vbnlt
b3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVu
dCwgRURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
aW5kZXggN2YxOTM0MGFhYWFjYTY4NGVkZmRhNjE1NzgyYWQ2MjE0YmZkNDdjZi4uNjc5NDU3NWIy
ZTIwMjkxNzUyYzU5NzI2MGFlMGE5MzJkMjdiODNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKQEAgLTIwNCwyMSArMjA0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG9iai0+aXNGbG9hdGluZygpIHx8IChvYmotPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYm
ICFvYmotPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIW9iai0+Y29u
dGFpbmVyKCktPmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBUZXh0UnVu
IGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIFN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICAgICAgRXhwYW5zaW9uQmVo
YXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwg
VGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAgc3RhdGljIFRleHRSdW4g
Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKLQogICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFJlbmRlclRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4
cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdF
eHBhbnNpb24pOwotCiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJP
YmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4dCosIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAg
ICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExl
YWRpbmdFeHBhbnNpb24pOwotCi0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihS
ZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgUmVuZGVyVGV4
dCosIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBFeHBhbnNp
b25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5z
aW9uKTsKLQogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0
KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBp
bnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9y
ID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCiAg
ICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQs
IGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1Ry
YWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA3
ODM4Nzg5Mjk2MGJhNDU2MjRhOWJlNWM1NDFjNTZlNGM1NTY1YjljLi4zMTVkYzE0NWRkZmI4NTAx
NDVjYTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludAogICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwogICAg
IEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAgICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVu
IHJ1bigiIik7CisgICAgVGV4dFJ1biBydW4oZW1wdHlTdHJpbmcoKSk7CiAgICAgZmxvYXQgdGV4
dFdpZHRoOwogICAgIGlmICghZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQs
IGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1Jl
Y3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzM5
NSw3IEBAIExheW91dFJlY3QgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2lu
SW5kaWNhdG9yQm91bmRzKGNvbnN0IExheW91dFBvCiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50
VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250
OwotICAgIFRleHRSdW4gcnVuKCIiLCAwKTsKKyAgICBUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygp
KTsKICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgaWYgKGdldFJlcGxhY2VtZW50VGV4dEdlb21l
dHJ5KGFjY3VtdWxhdGVkT2Zmc2V0LCBjb250ZW50UmVjdCwgaW5kaWNhdG9yUmVjdCwgcmVwbGFj
ZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0LCBmb250LCBydW4sIHRleHRXaWR0aCkpCiAgICAgICAg
IHJldHVybiBMYXlvdXRSZWN0KGluZGljYXRvclJlY3QpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIGJv
b2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihj
b25zdCBGbG9hdFBvaW50JiBwb2luCiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7
CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRl
eHRSdW4gcnVuKCIiKTsKKyAgICBUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9h
dCB0ZXh0V2lkdGg7CiAgICAgcmV0dXJuIGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KEludFBv
aW50KCksIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBh
cnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKQogICAgICAgICAmJiBpbmRpY2F0b3JSZWN0
LmNvbnRhaW5zKHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCBiMjA4ZDQ1NmY3ZjUwZmEwMDRmMzU1
OTQ3NTZmZTdhZWU2ZTIyMmI0Li45YmVlYjkyMWQ0MTZlMDU3MzA5YjZlZjI5MjQ0NDliZTQwNmJm
YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpTVkdUZXh0TWV0cmljc0J1aWxkZXIoKQogICAgIDog
bV90ZXh0KDApCi0gICAgLCBtX3J1bihzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KDApLCAwKQor
ICAgICwgbV9ydW4oU3RyaW5nVmlldygpKQogICAgICwgbV90ZXh0UG9zaXRpb24oMCkKICAgICAs
IG1faXNDb21wbGV4VGV4dChmYWxzZSkKICAgICAsIG1fdG90YWxXaWR0aCgwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252545</attachid>
            <date>2015-05-06 17:41:29 -0700</date>
            <delta_ts>2015-05-06 18:01:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144712-20150506174013.patch</filename>
            <type>text/plain</type>
            <size>18080</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uYjEzODQ4MGQ0MjMyNDE2NTI2OTdhM2RiYTViNWE4
M2QxYjI1ZjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA1LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAg
VGV4dFJ1biBjb25zdHJ1Y3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NDcxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXNlcyBjb25zdHJ1Y3RvciBmb3J3YXJkaW5nIHRvIG1h
a2UgVGV4dFJ1bidzIGNvbnN0cnVjdG9ycyBtdWNoIHNpbXBsZXIuIEl0IHRoZW4KKyAgICAgICAg
dXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKCkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgVGV4dFJ1biAodmlhIHVz
aW5nIFN0cmluZ1ZpZXdzKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9u
Z0RpdkxlZnRQYWRkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0VGV4dFJ1bkludGVybmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0luVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorCiAyMDE1
LTA1LTA0ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVk
aWEgY29udHJvbCB2b2x1bWUgc2xpZGVyIGlzIG9wYXF1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKaW5kZXggZDZkYTNiMzU5YzEyMDcyZTIy
MWNmOGFhYjIxMGY5ZWJjNWJmYmZjOC4uOTdmZTgzYmY3NzExMTlmZDJhNDgxYWEyYjhmODU1NWZj
YzdmZmRlZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3Nl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxl
bWVudC5jcHAKQEAgLTEyOSw4ICsxMjksOCBAQCB2b2lkIE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZAogU3Ry
aW5nIE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6bG9uZ0RpdkxlZnRQYWRkaW5nKCkgY29uc3QKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHBhZGRpbmc7Ci0gICAgU3RyaW5nIGNsb3NpbmdCcmFjZSA9ICIp
IjsKLSAgICBUZXh0UnVuIHJ1bihjbG9zaW5nQnJhY2UuaW1wbCgpLCBjbG9zaW5nQnJhY2UubGVu
Z3RoKCkpOworICAgIFN0cmluZyBjbG9zaW5nQnJhY2UoIikiLCBTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBUZXh0UnVuIHJ1bihjbG9zaW5nQnJhY2UpOwogICAgIE5vZGUqIG5v
ZGUgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkgewog
ICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IG5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkuZm9udENhc2NhZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAppbmRleCA3ZTRmZTdjZjhhNWNmODM3ZmU1OTk1OWZjY2VkNmQ2MzdiMTEzOTM0Li4yNzEy
MWU5MGNiY2RhMWRjOGQ0Njg0MmE0M2ViMjFhMWNjY2VjYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC01Miw5ICs1Miw5IEBAIHB1YmxpYzoKIAog
ICAgIHR5cGVkZWYgdW5zaWduZWQgUm91bmRpbmdIYWNrczsKIAotICAgIFRleHRSdW4oY29uc3Qg
TENoYXIqIGMsIHVuc2lnbmVkIGxlbiwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9
IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
ID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJT
Y2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3MgPSBSdW5S
b3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQoYywgbGVuKQotICAgICAg
ICAsIG1fY2hhcmFjdGVyc0xlbmd0aChsZW4pCisgICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdW
aWV3IHMsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRM
ZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJl
Y3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0g
dHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVuUm91bmRpbmcgfCBXb3JkUm91
bmRpbmcpCisgICAgICAgIDogbV90ZXh0KHMpCisgICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3Ro
KHMubGVuZ3RoKCkpCiAgICAgICAgICwgbV90YWJTaXplKDApCiAgICAgICAgICwgbV94cG9zKHhw
b3MpCiAgICAgICAgICwgbV9ob3Jpem9udGFsR2x5cGhTdHJldGNoKDEpCkBAIC03MCw1NyArNzAs
MTggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBj
LCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24g
fCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwg
Ym9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNv
ZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tzID0gUnVuUm91bmRpbmcg
fCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90ZXh0KGMsIGxlbikKLSAgICAgICAgLCBtX2No
YXJhY3RlcnNMZW5ndGgobGVuKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAgICAgICAsIG1f
eHBvcyh4cG9zKQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgxKQotICAgICAg
ICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAgLCBtX2V4cGFuc2lvbkJlaGF2aW9y
KGV4cGFuc2lvbkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxsb3dUYWJzKGZhbHNlKQotICAgICAg
ICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX2RpcmVjdGlvbmFsT3ZlcnJp
ZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBtX2NoYXJhY3RlclNjYW5Gb3JDb2Rl
UGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAgICAgICwgbV9hcHBseVJ1blJvdW5k
aW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNr
cykKLSAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgV29yZFJv
dW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9kaXNhYmxlU3Bh
Y2luZyhmYWxzZSkKKyAgICBleHBsaWNpdCBUZXh0UnVuKGNvbnN0IFN0cmluZyYgcykKKyAgICAg
ICAgOiBUZXh0UnVuKFN0cmluZ1ZpZXcocykpCiAgICAgewogICAgIH0KLSAgICAKLSAgICBleHBs
aWNpdCBUZXh0UnVuKGNvbnN0IFN0cmluZyYgcywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFu
c2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFp
bGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFy
YWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJvdW5kaW5nSGFja3Mg
PSBSdW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAgOiBtX3RleHQoU3RyaW5nVmll
dyhzKSkKLSAgICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgocy5sZW5ndGgoKSkKLSAgICAgICAg
LCBtX3RhYlNpemUoMCkKLSAgICAgICAgLCBtX3hwb3MoeHBvcykKLSAgICAgICAgLCBtX2hvcml6
b250YWxHbHlwaFN0cmV0Y2goMSkKLSAgICAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0g
ICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihleHBhbnNpb25CZWhhdmlvcikKLSAgICAgICAg
LCBtX2FsbG93VGFicyhmYWxzZSkKLSAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCi0g
ICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCi0gICAg
ICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KQotICAgICAgICAsIG1fYXBwbHlSdW5Sb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFJ1blJvdW5k
aW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9hcHBseVdvcmRSb3Vu
ZGluZygocm91bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hh
Y2tzKQotICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCisKKyAgICBUZXh0UnVuKGNv
bnN0IExDaGFyKiBjLCB1bnNpZ25lZCBsZW4pCisgICAgICAgIDogVGV4dFJ1bihTdHJpbmdWaWV3
KGMsIGxlbikpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFRleHRSdW4oU3RyaW5nVmll
dyBzLCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVh
ZGluZ0V4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0
aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRy
dWUsIFJvdW5kaW5nSGFja3Mgcm91bmRpbmdIYWNrcyA9IFJ1blJvdW5kaW5nIHwgV29yZFJvdW5k
aW5nKQotICAgICAgICA6IG1fdGV4dChzKQotICAgICAgICAsIG1fY2hhcmFjdGVyc0xlbmd0aChz
Lmxlbmd0aCgpKQotICAgICAgICAsIG1fdGFiU2l6ZSgwKQotICAgICAgICAsIG1feHBvcyh4cG9z
KQotICAgICAgICAsIG1faG9yaXpvbnRhbEdseXBoU3RyZXRjaCgxKQotICAgICAgICAsIG1fZXhw
YW5zaW9uKGV4cGFuc2lvbikKLSAgICAgICAgLCBtX2V4cGFuc2lvbkJlaGF2aW9yKGV4cGFuc2lv
bkJlaGF2aW9yKQotICAgICAgICAsIG1fYWxsb3dUYWJzKGZhbHNlKQotICAgICAgICAsIG1fZGly
ZWN0aW9uKGRpcmVjdGlvbikKLSAgICAgICAgLCBtX2RpcmVjdGlvbmFsT3ZlcnJpZGUoZGlyZWN0
aW9uYWxPdmVycmlkZSkKLSAgICAgICAgLCBtX2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChjaGFy
YWN0ZXJTY2FuRm9yQ29kZVBhdGgpCi0gICAgICAgICwgbV9hcHBseVJ1blJvdW5kaW5nKChyb3Vu
ZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKLSAgICAg
ICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgV29yZFJvdW5kaW5nKSAm
JiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCi0gICAgICAgICwgbV9kaXNhYmxlU3BhY2luZyhmYWxz
ZSkKKyAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCB1bnNpZ25lZCBsZW4pCisgICAgICAgIDog
VGV4dFJ1bihTdHJpbmdWaWV3KGMsIGxlbikpCiAgICAgewogICAgIH0KIApAQCAtMjEzLDcgKzE3
NCw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBtX3hwb3MgaXMgdGhlIHggcG9zaXRpb24gcmVsYXRp
dmUgdG8gdGhlIGxlZnQgc3RhcnQgb2YgdGhlIHRleHQgbGluZSwgbm90IHJlbGF0aXZlIHRvIHRo
ZSBsZWZ0CiAgICAgLy8gc3RhcnQgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suIEluIHRoZSBjYXNl
IG9mIHJpZ2h0IGFsaWdubWVudCBvciBjZW50ZXIgYWxpZ25tZW50LCBsZWZ0IHN0YXJ0IG9mCi0g
ICAgLy8gdGhlIHRleHQgbGluZSBpcyBub3QgdGhlIHNhbWUgYXMgbGVmdCBzdGFydCBvZiB0aGUg
Y29udGFpbmluZyBibG9jay4KKyAgICAvLyB0aGUgdGV4dCBsaW5lIGlzIG5vdCB0aGUgc2FtZSBh
cyBsZWZ0IHN0YXJ0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiBUaGlzIHZhcmlhYmxlIGlzIG9u
bHkgdXNlZAorICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgXHQKICAgICBmbG9hdCBt
X3hwb3M7ICAKICAgICBmbG9hdCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2g7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggNmNhZTQ1ZDVlYTMw
ZmI1MGVkZWEwMzU3MThiZTU3OGIwY2JmYmJjNy4uNWUwZGQ2YTVhYzRhYzAzMDIzM2I3MWNiMTE5
OWQ4ODQxOTAzMjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAKQEAgLTE1MCw4ICsxNTAsOCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAg
IH0KIAogICAgIC8vIEZpcnN0IHN0ZXAgaW4gZHJhd2luZyB0aGUgbGluayBkcmFnIGltYWdlIHdp
ZHRoLgotICAgIFRleHRSdW4gbGFiZWxSdW4obGFiZWwuaW1wbCgpKTsKLSAgICBUZXh0UnVuIHVy
bFJ1bih1cmxTdHJpbmcuaW1wbCgpKTsKKyAgICBUZXh0UnVuIGxhYmVsUnVuKGxhYmVsKTsKKyAg
ICBUZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwogICAgIEludFNpemUgbGFiZWxTaXplKGxhYmVs
Rm9udC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkg
KyBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNp
emUud2lkdGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAwMGFlNjRkMzVkNTlkNTNlNDAxYjE0NDEyMTVm
NTdhMGI2Y2Y5ZGY1Li5kMmRkYTRkY2M5MjU2ZjFmOTFjZjBjMTU2NjMzNjcxNGRjZjI5MmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM2NzQsMjMgKzM2
NzQsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuICJSZW5kZXJCbG9jayI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotc3RhdGljIGlubGluZSBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChSZW5k
ZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBDaGFyYWN0
ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24gPSBMVFI7Ci0gICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRs
T3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKLQotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMs
IGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9uLCB0ZXh0RGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJy
aWRlKTsKLSAgICBpZiAoZm9udC5wcmltYXJ5Rm9udCgpLmlzU1ZHRm9udCgpKSB7Ci0gICAgICAg
IEFTU0VSVChjb250ZXh0KTsgLy8gRklYTUU6IFRocmVhZCBhIFJlbmRlck9iamVjdCYgdG8gdGhp
cyBwb2ludCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcmVmZXJlbmNlIGFueXRoaW5nLgotICAgICAg
ICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlKCpjb250ZXh0KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJ1bjsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0
VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVu
RmxhZ3MgZmxhZ3MpCitUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRl
ck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIFN0cmluZ1ZpZXcgc3Ry
aW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24gPSBMVFI7CiAgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3Jk
ZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKQEAgLTM3MDAsNyArMzY4NCw3IEBAIHN0YXRpYyBpbmxp
bmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBjb250ZXh0
LCBjb25zdCBGb250CiAgICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb25PdmVycmlk
ZSkKICAgICAgICAgICAgIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVycmlkZShzdHlsZS51
bmljb2RlQmlkaSgpKTsKICAgICB9Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycywgbGVuZ3Ro
LCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUpOwor
ICAgIFRleHRSdW4gcnVuKHN0cmluZ1ZpZXcsIDAsIDAsIGV4cGFuc2lvbiwgdGV4dERpcmVjdGlv
biwgZGlyZWN0aW9uYWxPdmVycmlkZSk7CiAgICAgaWYgKGZvbnQucHJpbWFyeUZvbnQoKS5pc1NW
R0ZvbnQoKSkgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7IC8vIEZJWE1FOiBUaHJlYWQgYSBS
ZW5kZXJPYmplY3QmIHRvIHRoaXMgcG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZXJlZmVyZW5j
ZSBhbnl0aGluZy4KICAgICAgICAgcnVuLnNldFJlbmRlcmluZ0NvbnRleHQoU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSgqY29udGV4dCkpOwpAQCAtMzcwOSwzOCArMzY5MywzMSBA
QCBzdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9i
amVjdCogY29udGV4dCwgY29uc3QgRm9udAogICAgIHJldHVybiBydW47CiB9CiAKLVRleHRSdW4g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQot
ewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgY2hh
cmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCitUZXh0UnVu
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZs
YWdzKQogewotICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9u
dCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKKyAgICByZXR1cm4gY29u
c3RydWN0VGV4dFJ1bihjb250ZXh0LCBmb250LCBTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxlLCBl
eHBhbnNpb24sIGZsYWdzKTsKIH0KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBSZW5kZXJUZXh0KiB0ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJl
aGF2aW9yIGV4cGFuc2lvbikKIHsKLSAgICBpZiAodGV4dC0+aXM4Qml0KCkpCi0gICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFj
dGVyczgoKSwgdGV4dC0+dGV4dExlbmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1
cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3Rl
cnMxNigpLCB0ZXh0LT50ZXh0TGVuZ3RoKCksIHN0eWxlLCBleHBhbnNpb24pOworICAgIHJldHVy
biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIHRleHQtPnN0cmluZ1ZpZXcoKSwgc3R5
bGUsIGV4cGFuc2lvbik7CiB9CiAKIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
UmVuZGVyVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewotICAg
IEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gdGV4dC0+dGV4dExlbmd0aCgpKTsKLSAgICBpZiAo
dGV4dC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwo
Y29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwgbGVuZ3RoLCBzdHls
ZSwgZXhwYW5zaW9uKTsKLSAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRl
eHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBl
eHBhbnNpb24pOworICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7CisgICAgQVNT
RVJUKHN0b3AgPD0gdGV4dC0+dGV4dExlbmd0aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4
dFJ1bihjb250ZXh0LCBmb250LCB0ZXh0LT5zdHJpbmdWaWV3KG9mZnNldCwgc3RvcCksIHN0eWxl
LCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVu
KFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9y
IGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQorVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250LCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNv
bnRleHQsIGZvbnQsIFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFu
c2lvbik7Cit9CiAKLSAgICBpZiAoIWxlbmd0aCB8fCBzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOwotICAgIHJldHVy
biBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKK1RleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQoreworICAg
IHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKGNvbnRleHQsIGZvbnQsIFN0cmluZ1ZpZXcoY2hhcmFj
dGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5k
ZXJCbG9jazo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyQW5kRGlzcGxheShjb25z
dCBSZW5kZXJPYmplY3QqIHBhcmVudCwgRURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggN2YxOTM0MGFhYWFjYTY4NGVkZmRhNjE1NzgyYWQ2
MjE0YmZkNDdjZi4uNjc5NDU3NWIyZTIwMjkxNzUyYzU5NzI2MGFlMGE5MzJkMjdiODNiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwNCwyMSArMjA0LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iai0+aXNGbG9hdGluZygpIHx8IChvYmotPmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmICFvYmotPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0K
IAorICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIFN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwK
KyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9y
YmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7
CiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRl
eHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBG
b3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdz
KTsKLQogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFJlbmRlclRleHQqLCBjb25zdCBSZW5k
ZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCiAgICAgc3RhdGljIFRleHRSdW4gY29u
c3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgUmVuZGVyVGV4dCosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGlu
Z0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24pOwotCi0gICAgc3RhdGljIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgUmVuZGVyVGV4dCosIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgUmVuZGVyU3R5
bGUmLAotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24g
fCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQogICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVj
dFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAg
ICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExl
YWRpbmdFeHBhbnNpb24pOwotCiAgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihS
ZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5z
aW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgRm9yYmlkTGVhZGluZ0V4cGFu
c2lvbik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcAppbmRleCA3ODM4Nzg5Mjk2MGJhNDU2MjRhOWJlNWM1NDFjNTZlNGM1NTY1
YjljLi4zMTVkYzE0NWRkZmI4NTAxNDVjYTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgIEZsb2F0UmVjdCByZXBs
YWNlbWVudFRleHRSZWN0OwogICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7CiAgICAgRm9udENhc2Nh
ZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1bigiIik7CisgICAgVGV4dFJ1biBydW4oZW1wdHlTdHJp
bmcoKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAgIGlmICghZ2V0UmVwbGFjZW1lbnRUZXh0
R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNl
bWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzk1LDcgKzM5NSw3IEBAIExheW91dFJlY3QgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yQm91bmRzKGNvbnN0IExheW91dFBvCiAgICAg
RmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsK
ICAgICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiLCAwKTsKKyAgICBUZXh0
UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgaWYgKGdl
dFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGFjY3VtdWxhdGVkT2Zmc2V0LCBjb250ZW50UmVjdCwg
aW5kaWNhdG9yUmVjdCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0LCBmb250LCBydW4s
IHRleHRXaWR0aCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KGluZGljYXRvclJlY3QpOwpA
QCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWls
YWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBGbG9hdFBvaW50JiBwb2luCiAgICAgRmxvYXRSZWN0
IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250
Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiKTsKKyAgICBUZXh0UnVuIHJ1bihlbXB0
eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgcmV0dXJuIGdldFJlcGxhY2Vt
ZW50VGV4dEdlb21ldHJ5KEludFBvaW50KCksIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCBy
ZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKQogICAg
ICAgICAmJiBpbmRpY2F0b3JSZWN0LmNvbnRhaW5zKHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCBi
MjA4ZDQ1NmY3ZjUwZmEwMDRmMzU1OTQ3NTZmZTdhZWU2ZTIyMmI0Li45YmVlYjkyMWQ0MTZlMDU3
MzA5YjZlZjI5MjQ0NDliZTQwNmJmYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpTVkdUZXh0TWV0
cmljc0J1aWxkZXIoKQogICAgIDogbV90ZXh0KDApCi0gICAgLCBtX3J1bihzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KDApLCAwKQorICAgICwgbV9ydW4oU3RyaW5nVmlldygpKQogICAgICwgbV90
ZXh0UG9zaXRpb24oMCkKICAgICAsIG1faXNDb21wbGV4VGV4dChmYWxzZSkKICAgICAsIG1fdG90
YWxXaWR0aCgwKQo=
</data>
<flag name="review"
          id="277379"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>