<?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>46987</bug_id>
          
          <creation_ts>2010-10-01 09:18:17 -0700</creation_ts>
          <short_desc>Font sizes are rounded to the nearest 1px</short_desc>
          <delta_ts>2023-10-02 18:24:25 -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>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=260870</see_also>
          <bug_file_loc>http://www.chatative.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gaurav Misra">keyvez</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>andreas</cc>
    
    <cc>ap</cc>
    
    <cc>ashley</cc>
    
    <cc>boisseau.simon</cc>
    
    <cc>dev.maksim.genov</cc>
    
    <cc>dino</cc>
    
    <cc>eae</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>graouts</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonasmunk</cc>
    
    <cc>jond</cc>
    
    <cc>jonlee554</cc>
    
    <cc>jrajeshwar</cc>
    
    <cc>laurens.von.assel</cc>
    
    <cc>leviw</cc>
    
    <cc>me</cc>
    
    <cc>michael</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ohad</cc>
    
    <cc>shanebdavis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ssaviano</cc>
    
    <cc>surma</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xiao.hk1997</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288287</commentid>
    <comment_count>0</comment_count>
    <who name="Gaurav Misra">keyvez</who>
    <bug_when>2010-10-01 09:18:17 -0700</bug_when>
    <thetext>Fractional font sizes are ignored in safari and used only upto 1 decimal place in chrome. Firefox reads up to 3 decimal places making the font sizes render perfectly.

Use case:
On chatative.com I need every line to fit across the screen. Firefox fits every line exactly on the screen due to its proper handling of fractional font sizes and safari and chrome show the text slightly off the right edge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722510</commentid>
    <comment_count>1</comment_count>
      <attachid>164498</attachid>
    <who name="Ohad Eder-Pressman">ohad</who>
    <bug_when>2012-09-17 23:34:57 -0700</bug_when>
    <thetext>Created attachment 164498
test-case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722512</commentid>
    <comment_count>2</comment_count>
    <who name="Ohad Eder-Pressman">ohad</who>
    <bug_when>2012-09-17 23:36:02 -0700</bug_when>
    <thetext>I confirm this is not working on Webkit. I can confirm that fractional/non-integer word-spacing is supported on IE (I tested PC IE 9.0.8112.16421IC) and Firefox-for-Mac (I tested Mac Firefox 10.0.2).

See http://ohad-etc.s3.amazonaws.com/eReader%20content%20bugs/test3/index.html for screenshots of all major browsers and how they handle this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945873</commentid>
    <comment_count>3</comment_count>
    <who name="Jonas Munk">jonasmunk</who>
    <bug_when>2013-11-01 02:37:04 -0700</bug_when>
    <thetext>I realize that this is something done in order to be compatible with small font sizes in older IE versions in the past.

Maybe having a CSS property to trigger &quot;perfect&quot; font-size is a good first step - like font smoothing.

I find it especially annoying when animating the font-size since I know webkit has good font rendering support.

I guess it complicates calculating the layout.

Can you elaborate on that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430087</commentid>
    <comment_count>4</comment_count>
    <who name="">jrajeshwar</who>
    <bug_when>2018-06-05 07:36:04 -0700</bug_when>
    <thetext>Fractional font sizes are still being dropped/rounded as of Safari 11.1 / Webkit 605.1.15

Test cases:

Canvas: http://jsfiddle.net/w6xh4mu5/5/
HTML: http://jsfiddle.net/64hwk8bt/1/
SVG: http://jsfiddle.net/osLr6zdv/1/

Firefox, Chrome, and Edge all support fractional font sizes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430287</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-05 17:05:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/40829933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434194</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-06-18 15:24:48 -0700</bug_when>
    <thetext>Yeah, we purposely round the font sizes so that we get a higher hit rate in our various caches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434199</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-06-18 15:27:24 -0700</bug_when>
    <thetext>See FontDescription::computedPixelSize()

https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/FontDescription.h#L66

unsigned computedPixelSize() const { return unsigned(m_computedSize + 0.5f); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457867</commentid>
    <comment_count>8</comment_count>
      <attachid>349244</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-07 22:38:18 -0700</bug_when>
    <thetext>Created attachment 349244
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457868</commentid>
    <comment_count>9</comment_count>
      <attachid>349245</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-07 22:42:21 -0700</bug_when>
    <thetext>Created attachment 349245
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457871</commentid>
    <comment_count>10</comment_count>
      <attachid>349247</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-07 22:47:03 -0700</bug_when>
    <thetext>Created attachment 349247
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472121</commentid>
    <comment_count>11</comment_count>
    <who name="Shane Brinkman-Davis Delamore">shanebdavis</who>
    <bug_when>2018-10-25 11:11:40 -0700</bug_when>
    <thetext>I&apos;d like to add my vote for getting this fixed.

This is an important bug for my company. We use HTMLCanvas extensively. When using fractional font-sizes combined with transformation matrices, this bug leads to large rendering errors:

jsFiddle: http://jsfiddle.net/w6xh4mu5/26/

Fail: 
- Safari Version 12.0 (14606.1.36.1.9)

All other major browsers render fractional fonts correctly:

- Chrome 70.0.3538.77
- Microsoft Edge 42.17134.1.0
- Firefox 63.0 
- Opera 56.0.3051.52
- Internet Explorer 11 (yes, even IE11 renders correctly!)

NOTES

In some cases our apps could multiply the font-size and scale the matrix down, but if we are, say, stroking an outline, or if the x/y scale ratio is not 1:1, this technique doesn&apos;t work.

Does rounding the font-size (before scaling) actually meaningfully increase cache-hits in the HTMLCanvas context? The rendered pixels are different as the scale changes anyway. Caching is good and all, but it should never lead to errors greater than about a pixel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780478</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 11:41:23 -0700</bug_when>
    <thetext>*** Bug 228545 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781588</commentid>
    <comment_count>13</comment_count>
    <who name="Ashley Gullen">ashley</who>
    <bug_when>2021-08-03 05:50:58 -0700</bug_when>
    <thetext>This appears to be causing issues for us too: if you smoothly scale or zoom text, it jumps around. Worse, it looks like measureText() does use fractional sizes, but when you draw text it doesn&apos;t use a fractional size, which throws off our word wrap code and causes the edges of text to be cut off. If this is some kind of limitation in Safari, then measureText() should at least implement the same restriction, otherwise you can get text measurements that do not match what will be drawn.

Ref: https://github.com/Scirra/Construct-3-bugs/issues/4978
Sample video: https://photos.app.goo.gl/hN3CE6KtwbbLoeuq5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781589</commentid>
    <comment_count>14</comment_count>
    <who name="Ashley Gullen">ashley</who>
    <bug_when>2021-08-03 05:55:38 -0700</bug_when>
    <thetext>Actually I&apos;m not sure what measureText() does, maybe it is the same, but either way this interacts badly with our word wrap code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873102</commentid>
    <comment_count>15</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-05-31 13:35:50 -0700</bug_when>
    <thetext>I am able to reproduce bug from JSFiddle present in Comment 11 on Safari 15.5 (macOS 15.5). Chrome Canary 104 and Firefox Nightly 103 does not seems to have any issue on the test and matches each other. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893436</commentid>
    <comment_count>16</comment_count>
    <who name="Théophile Avoyne">me</who>
    <bug_when>2022-08-24 01:56:14 -0700</bug_when>
    <thetext>That&apos;s critical to my company as well. We use fractional font sizes to scale up/down printable documents based on the viewport height/width. Resizing is smooth in every browser except Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894719</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-08-29 21:17:16 -0700</bug_when>
    <thetext>*** Bug 244527 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1894720</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-08-29 21:17:44 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3795</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1942518</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2023-03-20 06:20:06 -0700</bug_when>
    <thetext>*** Bug 244994 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1964506</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-06-30 09:39:30 -0700</bug_when>
    <thetext>Committed 265657@main (30e54c675564): &lt;https://commits.webkit.org/265657@main&gt;

Reviewed commits have been landed. Closing PR #3795 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1981931</commentid>
    <comment_count>21</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-10-02 18:18:23 -0700</bug_when>
    <thetext>*** Bug 181504 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1981934</commentid>
    <comment_count>22</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-10-02 18:20:47 -0700</bug_when>
    <thetext>*** Bug 250020 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1981936</commentid>
    <comment_count>23</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-10-02 18:21:36 -0700</bug_when>
    <thetext>*** Bug 149211 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1981940</commentid>
    <comment_count>24</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-10-02 18:24:25 -0700</bug_when>
    <thetext>*** Bug 249962 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>164498</attachid>
            <date>2012-09-17 23:34:57 -0700</date>
            <delta_ts>2018-09-07 22:37:27 -0700</delta_ts>
            <desc>test-case</desc>
            <filename>url.txt</filename>
            <type>text/plain</type>
            <size>74</size>
            <attacher name="Ohad Eder-Pressman">ohad</attacher>
            
              <data encoding="base64">aHR0cDovL29oYWQtZXRjLnMzLmFtYXpvbmF3cy5jb20vZVJlYWRlciUyMGNvbnRlbnQlMjBidWdz
L3Rlc3QzL2luZGV4Lmh0bWw=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349244</attachid>
            <date>2018-09-07 22:38:18 -0700</date>
            <delta_ts>2018-09-07 22:42:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-46987-20180907223818.patch</filename>
            <type>text/plain</type>
            <size>38895</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0MzE3ZjkxODIyMTc3
YjhlOTIyNDEwZDcyMTQ1ZDRmYmY5NDk5My4uZTdiYjg3NzJiZWVjZDIxODg1NjEzODk2MGI2MGNi
N2NhM2IxMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE4LTA5LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhY3Rpb25h
bCBmb250IHNpemVzIGFyZSBpbXByb3Blcmx5IGhhbmRsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvc2ltcGxlL1NpbXBsZUxp
bmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6U2ltcGxlTGluZUJyZWFr
ZXI6OmFkanVzdFNwbGl0UG9zaXRpb25XaXRoSHlwaGVuYXRpb24gY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKToKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9w
ZXJ0eSk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Rm9udERlc2NyaXB0aW9uS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnBpeGVsU2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkUGl4ZWxTaXpl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpmb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU2l6ZUZvckZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RlcHBlckNvbnRyb2xTaXplRm9yRm9udCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNv
bHVtbkdhcCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2x1bW5HYXAg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZE92ZXJoYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlS
dW46OmdldE92ZXJoYW5nIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURp
cmVjdGlvbkxpbmVCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdpZHRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNvbnRyb2xTaXplRm9yRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpoeXBoZW5Qb3NpdGlvbkZvckZyYWdtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0
cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpzdHJldGNoVmVydGlj
YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRl
ZExpbmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRTaG91bGRCZVBhaW50ZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxp
bmVTaGlmdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5n
aW5lU3BhY2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZzo6Y2FsY3VsYXRlQ1NTS2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21FTVNUb1Vz
ZXJVbml0cyBjb25zdCk6CisKIDIwMTgtMDktMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJUQ1J0cFJlY2VpdmVyOjp0cmFjayBzaG91bGQgcmV0dXJuIGEg
TWVkaWFTdHJlYW1UcmFjayByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAyZGM1NzM4MmZiYTk5ZjI0MjRiODZlZmNmMDgyZjYwYjRiYjViMWM1Li4wNjgxNWEx
YjQwYTg0NzVmYTNiZTE5OTFkYWU0OTk4MDM2ZjJhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBh
cgogCiAgICAgLy8gSW1wb3J0YW50OiBJbnRyaW5zaWMgbWFyZ2lucyBnZXQgYWRkZWQgdG8gY29u
dHJvbHMgYmVmb3JlIHRoZSB0aGVtZSBoYXMgYWRqdXN0ZWQgdGhlIHN0eWxlLCBzaW5jZSB0aGUg
dGhlbWUgd2lsbAogICAgIC8vIGFsdGVyIGZvbnRzIGFuZCBoZWlnaHRzL3dpZHRocy4KLSAgICBp
ZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCkgPj0gMTEpIHsKKyAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVu
dD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpID49IDExKSB7CiAgICAgICAg
IC8vIERvbid0IGFwcGx5IGludHJpbnNpYyBtYXJnaW5zIHRvIGltYWdlIGJ1dHRvbnMuIFRoZSBk
ZXNpZ25lciBrbm93cyBob3cgYmlnIHRoZSBpbWFnZXMgYXJlLAogICAgICAgICAvLyBzbyB3ZSBo
YXZlIHRvIHRyZWF0IGFsbCBpbWFnZSBidXR0b25zIGFzIHRob3VnaCB0aGV5IHdlcmUgZXhwbGlj
aXRseSBzaXplZC4KICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkg
fHwgIWRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5pc0ltYWdlQnV0dG9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjI4ZDg0NmY2ODc2
MjhjM2MwMzBmNDcyOWM2YWMyNTEwMjU1MjIyNy4uYmE1OTExY2M1NmJmYWMwYzc5ODNkY2QxN2Fk
YTlhOTk1Nzc2ZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtMTA0NSw5ICsxMDQ1LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZv
ck5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAoIXJlbmRlckJveC5oZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaW50IGJvdHRvbU1hcmdpbiA9IHJlbmRlckJveC5jb2xsYXBz
ZWRNYXJnaW5BZnRlcigpOwotICAgIGludCBmb250U2l6ZSA9IHJlbmRlckJveC5zdHlsZSgpLmZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCk7Ci0gICAgcmV0dXJuIGJvdHRvbU1h
cmdpbiAqIDIgPj0gZm9udFNpemU7CisgICAgYXV0byBib3R0b21NYXJnaW4gPSByZW5kZXJCb3gu
Y29sbGFwc2VkTWFyZ2luQWZ0ZXIoKTsKKyAgICBhdXRvIGZvbnRTaXplID0gcmVuZGVyQm94LnN0
eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0Pihib3R0b21NYXJnaW4pICogMiA+PSBmb250U2l6ZTsKIH0KIAogc3RhdGlj
IGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRF
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCBlMjdkOTUxOTQ4MTliMDJlOTQxNGQ0OWJmYThmYWZmMmVh
MTc2MWRlLi4yMTk4ODNkMmIwMWQ0MmUxZTEwMzZmNzRjYTQ3ZjYyNzQxZGMyZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmb250KCkgY29uc3QKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5k
TGl0ZXJhbCgic21hbGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJl
cihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgc2VyaWFsaXplZEZv
bnQuYXBwZW5kTnVtYmVyKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSk7CiAgICAgc2Vy
aWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L3NpbXBs
ZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy90ZXh0bGF5b3V0L3NpbXBsZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAKaW5kZXggYTJh
NzRlNzc0MDZmMzNkNzQwOTU5Zjc2MWQxZTBhNTE5NTliM2FiYi4uMzE5ZjgzNTA3YjgyZWNjZWFj
MzJkZmVjODU2MTYwYTYxZDkzZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dGxheW91dC9zaW1wbGUvU2ltcGxlTGluZUJyZWFrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQv
c2ltcGxlL1NpbXBsZUxpbmVCcmVha2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFBvc2l0aW9uPiBTaW1wbGVMaW5lQnJlYWtlcjo6YWRqdXN0U3BsaXRQb3Np
dGlvbldpdGhIeXBoZW5hCiAgICAgaWYgKG1fY3VycmVudExpbmUuaGFzQ29udGVudCgpKQogICAg
ICAgICBhZGp1c3RlZEF2YWlsYWJsZVdpZHRoICs9IG1fc3R5bGUuZm9udC5zcGFjZVdpZHRoKCk7
CiAKLSAgICBpZiAoIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVX
aWR0aCwgbV9zdHlsZS5mb250LnBpeGVsU2l6ZSgpKSkKKyAgICBpZiAoIWVub3VnaFdpZHRoRm9y
SHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCwgbV9zdHlsZS5mb250LnNpemUoKSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBGaW5kIHRoZSBzcGxpdCBwb3NpdGlvbiB3
aGVyZSBoeXBoZW4gc3VyZWx5IGZpdHMgKHdlIG1pZ2h0IGJlIGFibGUgdG8gZml0IHRoZSBoeXBo
ZW4gYXQgdGhlIHNwbGl0IHBvc2l0aW9uKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCA0Y2IyOGNjYWExYjA4NGVlNGYwNWVmMTRkM2Y4NDM4
NmJmZjE1MjI0Li4wMmM4NWVhOTQ3ODRlNGU2ODE5ZWUzYTMyMDYyNWM2ZjEyMzBhYTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIFJlZlB0cjxGb250PiBDYWNoZWRTVkdGb250OjpjcmVhdGVGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiBGb250UGxhdGZvcm1EYXRhIENhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVh
dHVyZVNldHRpbmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdz
JiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxp
dGllcyBmb250RmFjZUNhcGFiaWxpdGllcykKIHsKICAgICBpZiAobV9leHRlcm5hbFNWR0RvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSwgYm9sZCwgaXRhbGljKTsKKyAgICAgICAgcmV0dXJuIEZvbnRQbGF0
Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBib2xkLCBpdGFsaWMpOwog
ICAgIHJldHVybiBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVz
Y3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50
U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGM2YjAzNTE3NTk1ZmI2MzU3Mjg1ZTlkNzc4NGViODQxNjdiZTI5
MzguLjZiMzQ0MTI5MzBkNThhMWEzYzdmYzQ1YTIzYWIxN2Q4MzJkZTI4OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgUHJpbnRD
b250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGludCBwYQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImxpbmUtaGVpZ2h0Iikp
CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bGluZUhlaWdodCgpLnZhbHVl
KCkpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImZvbnQtc2l6ZSIpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVk
UGl4ZWxTaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5h
bWUsICJmb250LWZhbWlseSIpKQogICAgICAgICByZXR1cm4gc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmZpcnN0RmFtaWx5KCk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAic2l6ZSIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCBhYWNhZDI4NTJiZWZlOTEwNDA4
MGUzMGQ2ZTc1Y2RkYWQyMTg5YjdiLi42ZGU0NjZlMTg4YzA2MzZhZDRkNmVmMzAzODQwOTM2MTEw
OWYyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMjA2LDcgKzIwNiw3
IEBAIENHUmVjdCBGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50KENHUG9pbnQgcG9pbnQsIGJvb2wq
IGlzUmVwbGFjZWQsIGZsb2F0KiBmb250U2l6CiAjaWYgQ0hFQ0tfRk9OVF9TSVpFCiAgICAgICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogdGV4dFJlbmRlcmVyID0gaGl0UmVuZGVyZXI7IHRleHRS
ZW5kZXJlcjsgdGV4dFJlbmRlcmVyID0gdGV4dFJlbmRlcmVyLT50cmF2ZXJzZU5leHQoaGl0UmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+aXNUZXh0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgKmZvbnRTaXplID0gdGV4dFJlbmRlcmVyLT5mb250KHRydWUp
LnBpeGVsU2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAqZm9udFNpemUgPSB0ZXh0UmVuZGVy
ZXItPmZvbnQodHJ1ZSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg1NjRkYjljMWUwZjI1ZTA4NDY3ZjQ4YTg0MGEyZWEx
YjE4Y2MxY2EuLjIwYjI1ODc4ZTdhNjJlNWI3ZTMxMmQ5ZTBmZjQ2ZjVmYzU4MWZiYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktl
eSgpID0gZGVmYXVsdDsKIAogICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUo
KSkKICAgICAgICAgLCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0KGRlc2NyaXB0aW9uLmZvbnRTZWxl
Y3Rpb25SZXF1ZXN0KCkpCiAgICAgICAgICwgbV9mbGFncyhtYWtlRmxhZ3NLZXkoZGVzY3JpcHRp
b24pKQogICAgICAgICAsIG1fbG9jYWxlKGRlc2NyaXB0aW9uLmxvY2FsZSgpKQpAQCAtMTU1LDcg
KzE1NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNIYXNoVGFibGVE
ZWxldGVkU2l6ZSA9IDB4RkZGRkZGRkZVOwogCiAgICAgLy8gRm9udENhc2NhZGU6OmxvY2FsZSgp
IGlzIGV4cGxpY2l0bHkgbm90IGluY2x1ZGVkIGluIHRoaXMgc3RydWN0LgotICAgIHVuc2lnbmVk
IG1fc2l6ZSB7IDAgfTsKKyAgICBmbG9hdCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlv
blJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKICAgICBzdGQ6OmFycmF5PHVuc2lnbmVk
LCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07CiAgICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggZWFh
MDhlMDEyZmE4NmUyYjM0ZjM3YWViNjJiMjcyNjBlYzM3ZGU4Yy4uMWQzMGI1Yzg2NmZiYzQ1MDFh
NGUzZDdhMmQ5ZDNjYjVkMzE5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xMTMsNyArMTEzLDYgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGVzY3JpcHRpb247IH0KIAotICAgIGludCBwaXhlbFNpemUoKSBjb25zdCB7
IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgpOyB9CiAgICAgZmxv
YXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9y
PiYmID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IDEzZmNkYjNjZjVjM2ZlMzUxOTBlYzNjMTIw
NGQ2M2Y4YWQ0NDIwYzMuLmU0ZGUxZmVhMmUzMjFkY2MwMjdmOWI4MzM3N2JmYWY0YTk0OGY3M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KIAogICAgIGZsb2F0IGNvbXB1dGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0
ZWRTaXplOyB9Ci0gICAgdW5zaWduZWQgY29tcHV0ZWRQaXhlbFNpemUoKSBjb25zdCB7IHJldHVy
biB1bnNpZ25lZChtX2NvbXB1dGVkU2l6ZSArIDAuNWYpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxG
b250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlv
blJlcXVlc3Quc2xvcGU7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGg7IH0KICAgICBGb250U2VsZWN0
aW9uVmFsdWUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC53
ZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBjNDgxMDIwMzZjYjc4YmE2YzU5
ZDAxOTEwMWY5NmMyMzQ0OWU0N2UwLi41Y2YwMzZlNTlmNDQ3YWE4YWExMWEyZTViYTUwOWQxMzE0
MWUxNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyog
Zm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VD
YXBhYmlsaXRpZXMpCiB7Ci0gICAgZmxvYXQgc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNp
emUoKTsKIAogICAgIGF1dG8gZm9udCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgZm9udERlc2Ny
aXB0aW9uLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgZm9udEZh
Y2VDYXBhYmlsaXRpZXMsIHNpemUpOwogCkBAIC0xNDg3LDE1ICsxNDg3LDE1IEBAIFJlZjxGb250
PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpCiAgICAgLy8gTGFzdFJlc29ydCBpcyBndWFyYW50ZWVkIHRvIGJlIG5v
bi1udWxsLgogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUxhc3RSZXNvcnQoKSk7Ci0gICAgYXV0byBmb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0
KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAg
YXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERl
c2NyaXB0b3IuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikp
OwogI2Vsc2UKICAgICAvLyBFdmVuIGlmIEhlbHZldGljYSBkb2Vzbid0IGV4aXN0LCBDVEZvbnRD
cmVhdGVXaXRoTmFtZSB3aWxsIHJldHVybgogICAgIC8vIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBh
IEdyYXBoaWNzRm9udCB3aGljaCByZXByZXNlbnRzIExhc3RSZXNvcnQuCi0gICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikpOwogI2VuZGlmCiAgICAgYm9vbCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlOwogICAgIHN0ZDo6dGllKHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY09ibGlxdWUpID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Lmdl
dCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwotICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGEoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24o
KSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIGZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1E
YXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDc0OWE1ODUwNTc0
MzRmYTNjZmY0YmRkZDU2MTc2MjIzMzlmODdmMWEuLmQ2OWQzOWM3NTVhNmJlOGU2N2UxYTlmMmMx
NTAyZDc2OTk3ODQ0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICBhdXRvIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0
ZXMobV9mb250RGVzY3JpcHRvci5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOwogICAgIEFTU0VS
VChtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKIAotICAgIGludCBzaXplID0gZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCk7CisgICAgYXV0byBzaXplID0gZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkU2l6ZSgpOwogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZvbnRE
ZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpOwogICAgIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJp
YW50ID0gZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOwogICAgIFJldGFpblB0cjxDVEZv
bnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTU3ZjdjNTA3Mjg4NDFkNGQwNTAxYmJjYjIx
MTZlYzZkMTY2ZGE1MC4uZTA5MjY1NGY2MDRkN2UxNWQ4NTRhMzU5NGYxNTYxMDgyNWNmNjhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3
IEBAIFRoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKIAogc3RhdGljIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250
U2l6ZSA9IGZvbnQucGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgp
OwogICAgIGlmIChmb250U2l6ZSA+PSAxNikKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVS
ZWd1bGFyOwogICAgIGlmIChmb250U2l6ZSA+PSAxMSkKQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0
aWMgY29uc3Qgc3RkOjphcnJheTxJbnRTaXplLCAzPiYgc3RlcHBlclNpemVzKCkKIC8vIHNob3Vs
ZCBiZSBlcXVhbCB0byBvciBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdGV4dCBmaWVsZCBo
ZWlnaHQsCiBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250U2l6ZSA9IGZvbnQucGl4ZWxT
aXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgpOwogICAgIGlmIChmb250U2l6
ZSA+PSAxOCkKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVSZWd1bGFyOwogICAgIGlmIChm
b250U2l6ZSA+PSAxMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggMTk0MTQyNzYxM2UyM2MxZTE1NDE0MzM2MzJlN2FlYjQzMWZiM2M1NC4uOTc1
ZTVmZWQ1NGQzNDUwMzQ2ZGE0YmVhNjE1YThjNGJkMGFmZTY0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCBib29s
IFJlbmRlckJsb2NrRmxvdzo6cmVjb21wdXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgoKQog
TGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbHVtbkdhcCgpIGNvbnN0CiB7CiAgICAgaWYg
KHN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCku
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKTsgLy8gIjFlbSIgaXMgcmVjb21t
ZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0Y2hlcyA8cD4gbWFyZ2lucy4KKyAg
ICAgICAgcmV0dXJuIHN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8v
ICIxZW0iIGlzIHJlY29tbWVuZGVkIGFzIHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMg
PHA+IG1hcmdpbnMuCiAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuY29sdW1uR2Fw
KCkubGVuZ3RoKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggNzUxZTgx
MDYxNWEwZTRmZDU5OTJkNDc3ZTY0YzIzMDhhMzE1OTE4MS4uMTQ2ZjY0MDkxYTBiOWEyZDlmNjc4
Nzc4YWI0ZjdhMWRkZDAyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sdW1uR2FwKCkgY29uc3QKICAgICAvLyBnbyB0byB0aGUg
cGFyZW50IGJsb2NrIHRvIGdldCB0aGUgZ2FwLgogICAgIFJlbmRlckJsb2NrRmxvdyYgcGFyZW50
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJlbnQoKSk7CiAgICAgaWYgKHBh
cmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJu
IHBhcmVudEJsb2NrLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUo
KTsgLy8gIjFlbSIgaXMgcmVjb21tZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0
Y2hlcyA8cD4gbWFyZ2lucy4KKyAgICAgICAgcmV0dXJuIHBhcmVudEJsb2NrLnN0eWxlKCkuZm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8vICIxZW0iIGlzIHJlY29tbWVuZGVkIGFz
IHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMgPHA+IG1hcmdpbnMuCiAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHBhcmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkubGVuZ3RoKCks
IHBhcmVudEJsb2NrLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4IDE2MWU5NGE1MThmODk5ZjRjNzIw
MjEwZjEyN2YzNmU1ODBhMDM5NjguLjFjZTUzOTFkMDg2NWE3ZTQ2MGVlZjJiMjQyNjVhOTA5YmRh
ZGEyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRPdmVyaGFuZyhib29sIGZpcnN0TGlu
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJ1YnlCYXNlU3R5bGUgPSBmaXJzdExpbmUg
PyBydWJ5QmFzZS5maXJzdExpbmVTdHlsZSgpIDogcnVieUJhc2Uuc3R5bGUoKTsKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyByZW5kZXJlci0+Zmlyc3RMaW5lU3R5
bGUoKSA6IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRQ
aXhlbFNpemUoKSA8PSBydWJ5QmFzZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAg
IHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgPD0gcnVieUJhc2VTdHlsZS5jb21wdXRl
ZEZvbnRTaXplKCk7CiB9CiAKIHZvaWQgUmVuZGVyUnVieVJ1bjo6Z2V0T3ZlcmhhbmcoYm9vbCBm
aXJzdExpbmUsIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciwgZmxvYXQmIHN0YXJ0T3ZlcmhhbmcsIGZsb2F0JiBlbmRPdmVyaGFuZykgY29uc3QK
QEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmdldE92ZXJoYW5nKGJvb2wg
Zmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbgogICAgIC8vIFdlIGNh
biBvdmVyaGFuZyB0aGUgcnVieSBieSBubyBtb3JlIHRoYW4gaGFsZiB0aGUgd2lkdGggb2YgdGhl
IG5laWdoYm9yaW5nIHRleHQKICAgICAvLyBhbmQgbm8gbW9yZSB0aGFuIGhhbGYgdGhlIGZvbnQg
c2l6ZS4KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcnVieVRleHRTdHlsZSA9IGZpcnN0TGluZSA/
IHJ1YnlUZXh0LT5maXJzdExpbmVTdHlsZSgpIDogcnVieVRleHQtPnN0eWxlKCk7Ci0gICAgZmxv
YXQgaGFsZldpZHRoT2ZGb250U2l6ZSA9IHJ1YnlUZXh0U3R5bGUuY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkgLyAyLjsKKyAgICBmbG9hdCBoYWxmV2lkdGhPZkZvbnRTaXplID0gcnVieVRleHRTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCkgLyAyOwogICAgIGlmIChzdGFydE92ZXJoYW5nKQogICAgICAg
ICBzdGFydE92ZXJoYW5nID0gc3RkOjptaW4oc3RhcnRPdmVyaGFuZywgc3RkOjptaW4oZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnN0YXJ0UmVuZGVyZXIpLm1pbkxvZ2ljYWxXaWR0aCgpLCBoYWxmV2lk
dGhPZkZvbnRTaXplKSk7CiAgICAgaWYgKGVuZE92ZXJoYW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKaW5kZXggZjVjZDlmMTM1MDYxOTg5YThhZTFlMTA4
ODFhNWNiNTllYjE2NWU3Ny4uOTFjOTM5ZGIwMzAyNTk3YTZiMzU2Njc5MDVlMzBmNzI0MDhjNGIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgUmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURpcmVjdGlvbkxp
bmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291CiAgICAgLy8gcnVieSBjaGFyYWN0
ZXIgb24gZWFjaCBzaWRlLgogICAgIGZsb2F0IGluc2V0ID0gKGxvZ2ljYWxXaWR0aCAtIG1heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCkgLyAoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCArIDEpOwog
ICAgIGlmIChleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQotICAgICAgICBpbnNldCA9IHN0ZDo6
bWluPGZsb2F0PigyICogc3R5bGUoKS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSwgaW5zZXQpOwor
ICAgICAgICBpbnNldCA9IHN0ZDo6bWluKDIgKiBzdHlsZSgpLmNvbXB1dGVkRm9udFNpemUoKSwg
aW5zZXQpOwogCiAgICAgbG9naWNhbExlZnQgKz0gaW5zZXQgLyAyOwogICAgIGxvZ2ljYWxXaWR0
aCAtPSBpbnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA1
NDAxM2UzNDc3MjRhYzYzOTgxY2M5MGJiYzJjYThkNWYxZmEwMzFjLi5iNWEwZjYyOGIyMzkwYTY3
ZGJkY2YzNDJhY2EyMjkxM2NhYTRlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVu
dFdpZHRoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAg
ICBoeXBoZW5Mb2NhdGlvbnMucmV2ZXJzZSgpOwogCiAgICAgLy8gRklYTUU6IEJyZWFraW5nIHRo
ZSBzdHJpbmcgYXQgdGhlc2UgcGxhY2VzIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMgaXMgY29tcGxl
dGVseSBicm9rZW4gd2l0aCBjb21wbGV4IHRleHQuCi0gICAgZmxvYXQgbWluaW11bUZyYWdtZW50
V2lkdGhUb0NvbnNpZGVyID0gZm9udC5waXhlbFNpemUoKSAqIDUgLyA0ICsgaHlwaGVuV2lkdGgo
cmVuZGVyZXIsIGZvbnQpOworICAgIGZsb2F0IG1pbmltdW1GcmFnbWVudFdpZHRoVG9Db25zaWRl
ciA9IGZvbnQuc2l6ZSgpICogNSAvIDQgKyBoeXBoZW5XaWR0aChyZW5kZXJlciwgZm9udCk7CiAg
ICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCBoeXBoZW5Mb2NhdGlvbnMuc2l6ZSgpOyArK2spIHsKICAgICAgICAgaW50IGZyYWdtZW50TGVu
Z3RoID0gaHlwaGVuTG9jYXRpb25zW2tdIC0gc3VmZml4U3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggY2I0NjY0NGYzNTg0M2E3Y2E5ZGZjNDJi
MmE5OTcwN2M4Zjk0Njc3Mi4uMmM1OTkxNDBiNWM2NGYyNzdhMDFiZjdlOTAzM2Q2NmJkZjRhMTc4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzU0
LDcgKzM1NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29uCiAgICAgaWYgKCFzdHlsZS53aWR0
aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9u
dFBpeGVsU2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9
KTsKICAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKIH0KQEAgLTQ3NSw3ICs0
NzUsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0CiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9udFBpeGVs
U2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKICAg
ICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKICAgICBzdHlsZS5zZXRCb3JkZXJS
YWRpdXMoeyBzaXplIC8gMiwgc2l6ZSAvIDIgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzczNzVmYTAxOGUwMGNmOWY4NjJmMTQ0MWRiNjkxM2Fk
NzIzMjJmYi4uNzA4YWZjYmVhOGQzOTQ5YWQ1MTU4NzRiZjg4M2YyNWFjOGI4YTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTAzNCw3ICsxMDM0
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvKSBjb25zdAogCiBOU0NvbnRyb2xTaXplIFJlbmRlclRoZW1lTWFjOjpjb250
cm9sU2l6ZUZvckZvbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIGlu
dCBmb250U2l6ZSA9IHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAgIGF1dG8gZm9u
dFNpemUgPSBzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKTsKICAgICBpZiAoZm9udFNpemUg
Pj0gMTYpCiAgICAgICAgIHJldHVybiBOU0NvbnRyb2xTaXplUmVndWxhcjsKICAgICBpZiAoZm9u
dFNpemUgPj0gMTEpCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpz
ZXRGb250RnJvbUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUs
CiAKIE5TQ29udHJvbFNpemUgUmVuZGVyVGhlbWVNYWM6OmNvbnRyb2xTaXplRm9yU3lzdGVtRm9u
dChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgaW50IGZvbnRTaXplID0g
c3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IHN0eWxl
LmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOwogICAgIGlmIChmb250U2l6ZSA+PSBbTlNGb250IHN5
c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemU6TlNDb250cm9sU2l6ZVJlZ3VsYXJdKQogICAgICAg
ICByZXR1cm4gTlNDb250cm9sU2l6ZVJlZ3VsYXI7CiAgICAgaWYgKGZvbnRTaXplID49IFtOU0Zv
bnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpOU0NvbnRyb2xTaXplU21hbGxdKQpAQCAt
MTYyMiw3ICsxNjIyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKICAgICBwYWludE1lbnVM
aXN0QnV0dG9uR3JhZGllbnRzKHJlbmRlcmVyLCBwYWludEluZm8sIGJvdW5kcyk7CiAKICAgICAv
LyBTaW5jZSB3ZSBhY3R1YWxseSBrbm93IHRoZSBzaXplIG9mIHRoZSBjb250cm9sIGhlcmUsIHdl
IHJlc3RyaWN0IHRoZSBmb250IHNjYWxlIHRvIG1ha2Ugc3VyZSB0aGUgYXJyb3dzIHdpbGwgZml0
IHZlcnRpY2FsbHkgaW4gdGhlIGJvdW5kcwotICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0ZDo6bWlu
KHJlbmRlcmVyLnN0eWxlKCkuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBiYXNlRm9udFNpemUs
IGJvdW5kcy5oZWlnaHQoKSAvIChiYXNlQXJyb3dIZWlnaHQgKiAyICsgYmFzZVNwYWNlQmV0d2Vl
bkFycm93cykpOworICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0ZDo6bWluKHJlbmRlcmVyLnN0eWxl
KCkuY29tcHV0ZWRGb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplLCBib3VuZHMuaGVpZ2h0KCkgLyAo
YmFzZUFycm93SGVpZ2h0ICogMiArIGJhc2VTcGFjZUJldHdlZW5BcnJvd3MpKTsKICAgICBmbG9h
dCBjZW50ZXJZID0gYm91bmRzLnkoKSArIGJvdW5kcy5oZWlnaHQoKSAvIDIuMGY7CiAgICAgZmxv
YXQgYXJyb3dIZWlnaHQgPSBiYXNlQXJyb3dIZWlnaHQgKiBmb250U2NhbGU7CiAgICAgZmxvYXQg
YXJyb3dXaWR0aCA9IGJhc2VBcnJvd1dpZHRoICogZm9udFNjYWxlOwpAQCAtMTczMCw3ICsxNzMw
LDcgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lTWFjOjpwb3B1cEludGVybmFsUGFkZGluZ0JveChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnMKICAgICB9CiAKICAgICBpZiAoc3R5bGUuYXBw
ZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgewotICAgICAgICBmbG9hdCBhcnJvd1dp
ZHRoID0gYmFzZUFycm93V2lkdGggKiAoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBi
YXNlRm9udFNpemUpOworICAgICAgICBmbG9hdCBhcnJvd1dpZHRoID0gYmFzZUFycm93V2lkdGgg
KiAoc3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplKTsKICAgICAgICAgZmxv
YXQgcmlnaHRQYWRkaW5nID0gY2VpbGYoYXJyb3dXaWR0aCArIChhcnJvd1BhZGRpbmdCZWZvcmUg
KyBhcnJvd1BhZGRpbmdBZnRlciArIHBhZGRpbmdCZWZvcmVTZXBhcmF0b3IpICogc3R5bGUuZWZm
ZWN0aXZlWm9vbSgpKTsKICAgICAgICAgZmxvYXQgbGVmdFBhZGRpbmcgPSBzdHlsZWRQb3B1cFBh
ZGRpbmdMZWZ0ICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpOwogICAgICAgICBpZiAoc3R5bGUuZGly
ZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgUG9w
dXBNZW51U3R5bGU6OlBvcHVwTWVudVNpemUgUmVuZGVyVGhlbWVNYWM6OnBvcHVwTWVudVNpemUo
Y29uc3QgUmVuZGVyU3R5bGUmIHMKIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBF
bGVtZW50KikgY29uc3QKIHsKLSAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS5jb21wdXRlZEZv
bnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6ZTsKKyAgICBmbG9hdCBmb250U2NhbGUgPSBzdHls
ZS5jb21wdXRlZEZvbnRTaXplKCkgLyBiYXNlRm9udFNpemU7CiAKICAgICBzdHlsZS5yZXNldFBh
ZGRpbmcoKTsKICAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoSW50U2l6ZShpbnQoYmFzZUJvcmRl
clJhZGl1cyArIGZvbnRTY2FsZSAtIDEpLCBpbnQoYmFzZUJvcmRlclJhZGl1cyArIGZvbnRTY2Fs
ZSAtIDEpKSk7IC8vIEZJWE1FOiBSb3VuZCB1cD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAppbmRleCAxOTk5NzY0Nzg5ZGI1NzA2MGZmMjQxYzU5YmVkYTliZWZj
OTA3NWRjLi4yNWVhNzQyY2Y1ODQ0YWMwMDVhZDdjMzdjNWFmMTAwM2VhMTJhYzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMDI2LDcgKzEwMjYs
NyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5s
aW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpbwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50TGluZVN0eWxlID0gZmlyc3RMaW5lID8gcGFyZW50LT5maXJzdExpbmVTdHlsZSgpIDog
cGFyZW50LT5zdHlsZSgpOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHBhcmVu
dExpbmVTdHlsZS5mb250Q2FzY2FkZSgpOwogICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgIGludCBmb250U2l6ZSA9IGZv
bnQucGl4ZWxTaXplKCk7CisgICAgICAgIGF1dG8gZm9udFNpemUgPSBmb250LnBpeGVsU2l6ZSgp
OwogCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQtPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4
IGUwYzdiZWE3MWEwY2YwN2FmM2ViMDQyYWY3MjNhOTk2Y2Q1M2M4YmIuLmU0YTliN2Q0MmE1NzFl
MmQ1OGZhMDUwNDRmZDM3OGY2N2IzOGUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gaHlwaGVuUG9zaXRpb25Gb3JGcmFnbWVudChTcGxpdEZyYWdtZW50
RGF0YSBzcGxpdAogICAgIGF1dG8gYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVdp
ZHRoIC0gc3R5bGUuaHlwaGVuU3RyaW5nV2lkdGg7CiAgICAgaWYgKCFsaW5lLmlzRW1wdHkoKSkK
ICAgICAgICAgYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCArPSBzdHlsZS5mb250LnNwYWNlV2lkdGgo
KTsKLSAgICBpZiAoIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVX
aWR0aCwgc3R5bGUuZm9udC5waXhlbFNpemUoKSkpCisgICAgaWYgKCFlbm91Z2hXaWR0aEZvckh5
cGhlbmF0aW9uKGFkanVzdGVkQXZhaWxhYmxlV2lkdGgsIHN0eWxlLmZvbnQuc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIG1pZ2h0IGJlIGFibGUgdG8g
Zml0IHRoZSBoeXBoZW4gYXQgdGhlIHNwbGl0IHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA5OGU4OGRjNDgw
NWQ2YTVkYTdhYTU0MjA1ZGRiMTZlNzQxNjk4OTgwLi41YTY3ZGFkNjZjZDdjMjNkZDg0ZDcwYWI4
ZTVjOGM0MTdkNTFhMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgVGV4dERlY29y
YXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4s
IGNvbnN0IEZsCiAgICAgVU5VU0VEX1BBUkFNKHRleHRPcmlnaW4pOwogI2VuZGlmCiAgICAgQVNT
RVJUKG1fZm9udCk7Ci0gICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0RGVj
b3JhdGlvblN0cm9rZVRoaWNrbmVzcyhtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUo
KSk7CisgICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0
cm9rZVRoaWNrbmVzcyhtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkpOwogICAgIG1fY29u
dGV4dC5zZXRTdHJva2VUaGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3MpOwogICAgIEZs
b2F0UG9pbnQgbG9jYWxPcmlnaW4gPSBib3hPcmlnaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggZmQ5MTljZjU0MWU4MTJjMjli
ZTU4ZjhmZTA1MjEwYjdiODY3YTc1NS4uOWI5OTg3YzdmYTk4YjliYjJjNTdjY2M0YTg0NWM5YzEw
NGUzZjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0LmgKQEAgLTY2OCw3ICs2NjgsNyBAQCBpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhS
ZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbQogICAg
IGZsb2F0IGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRoKHRleHQsIGZvbnQpOwogCiAg
ICAgZmxvYXQgbWF4UHJlZml4V2lkdGggPSBhdmFpbGFibGVXaWR0aCAtIHhQb3MgLSBoeXBoZW5X
aWR0aCAtIGxhc3RTcGFjZVdvcmRTcGFjaW5nOwotICAgIGlmICghZW5vdWdoV2lkdGhGb3JIeXBo
ZW5hdGlvbihtYXhQcmVmaXhXaWR0aCwgZm9udC5waXhlbFNpemUoKSkpCisgICAgaWYgKCFlbm91
Z2hXaWR0aEZvckh5cGhlbmF0aW9uKG1heFByZWZpeFdpZHRoLCBmb250LnNpemUoKSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRleHQuc3R5bGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um93LmNwcAppbmRleCAwNTA1ZWYwYWVlMmQ3MTQzZDZmZTRhZGMyMjk2NjNiMzlhZDJlNWQ0Li5l
ZTA0ZDZmYjBiNzcxMzgxODJkZDRiYTIwNWNiNGZiYzc5ODU5YjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm93OjpzdHJldGNoVmVydGljYWxPcGVyYXRvcnNB
bmRMYXlvdXRDaGlsZHJlbigpCiAgICAgfQogICAgIGlmIChzdHJldGNoQXNjZW50ICsgc3RyZXRj
aERlc2NlbnQgPD0gMCkgewogICAgICAgICAvLyBXZSBlbnN1cmUgYSBtaW5pbWFsIHN0cmV0Y2gg
c2l6ZS4KLSAgICAgICAgc3RyZXRjaEFzY2VudCA9IHN0eWxlKCkuY29tcHV0ZWRGb250UGl4ZWxT
aXplKCk7CisgICAgICAgIHN0cmV0Y2hBc2NlbnQgPSBzdHlsZSgpLmNvbXB1dGVkRm9udFNpemUo
KTsKICAgICAgICAgc3RyZXRjaERlc2NlbnQgPSAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzgwOTdkMjIxMjkzMGUw
MDUzMzAxNWRmNGZlODdjMjlkYjY5MDczMy4uNWY0NWU5YmRmZjY4MTg2NTc4NDI2YThmZmE1YjU4
ZGJjN2RmNThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0xNTMzLDExICsxNTMzLDYgQEAgZmxvYXQgUmVuZGVyU3R5bGU6OmNvbXB1
dGVkRm9udFNpemUoKSBjb25zdAogICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRl
ZFNpemUoKTsKIH0KIAotdW5zaWduZWQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFBpeGVsU2l6
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxT
aXplKCk7Ci19Ci0KIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+d29yZFNwYWNpbmc7CkBAIC0x
NTk0LDcgKzE1ODksNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CiAKICAgICBp
ZiAobGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJldHVybiBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgobGgsIGNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJu
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChsaCwgY29tcHV0ZWRGb250U2l6ZSgpKTsKIAogICAgIHJl
dHVybiBjbGFtcFRvPGludD4obGgudmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGEyMDg1MDBmMDdiZmVkZTdjMmM4YzdiZWFm
MjcwODhhMDU1NzcyMzcuLjZiMjAzYjI1ODJmNWE2MTk0ODY5ODU2MzgwMTViNDg4ZGE2ZTQ1MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0z
NTQsNyArMzU0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIGZsb2F0IHNwZWNp
ZmllZEZvbnRTaXplKCkgY29uc3Q7CiAgICAgZmxvYXQgY29tcHV0ZWRGb250U2l6ZSgpIGNvbnN0
OwotICAgIHVuc2lnbmVkIGNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpIGNvbnN0OworICAgIGZsb2F0
IGNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpIGNvbnN0OwogICAgIHN0ZDo6cGFpcjxGb250T3JpZW50
YXRpb24sIE5vbkNKS0dseXBoT3JpZW50YXRpb24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7
CiAKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggODkyMjAyMTUxODM2YjkxYTdm
NGI5MWNlOTE4MjgyZjRlY2M3OWNlZi4uYTVjZDQ4OTM3NjcwMzY1NTcyOGNhMzQwZTNiNGY2ZWE4
ZjhiYmE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCkBAIC0xNzAsOSArMTcwLDkgQEAgTGF5b3V0UmVjdCBTVkdJbmxpbmVUZXh0
Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQK
IAogc3RhdGljIGlubGluZSBib29sIHRleHRTaG91bGRCZVBhaW50ZWQoY29uc3QgUmVuZGVyU1ZH
SW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyKQogewotICAgIC8vIEZvbnRDYXNjYWRlOjpwaXhlbFNp
emUoKSwgcmV0dXJucyBGb250RGVzY3JpcHRpb246OmNvbXB1dGVkUGl4ZWxTaXplKCksIHdoaWNo
IHJldHVybnMgImludCh4ICsgMC41KSIuCisgICAgLy8gRm9udENhc2NhZGU6OnNpemUoKSwgcmV0
dXJucyBGb250RGVzY3JpcHRpb246OmNvbXB1dGVkUGl4ZWxTaXplKCksIHdoaWNoIHJldHVybnMg
ImludCh4ICsgMC41KSIuCiAgICAgLy8gSWYgdGhlIGFic29sdXRlIGZvbnQgc2l6ZSBvbiBzY3Jl
ZW4gaXMgYmVsb3cgeD0wLjUsIGRvbid0IHJlbmRlciBhbnl0aGluZy4KLSAgICByZXR1cm4gdGV4
dFJlbmRlcmVyLnNjYWxlZEZvbnQoKS5waXhlbFNpemUoKTsKKyAgICByZXR1cm4gdGV4dFJlbmRl
cmVyLnNjYWxlZEZvbnQoKS5zaXplKCk7CiB9CiAKIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFp
bnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuY3BwCmluZGV4IDBiNjNkNmNkZmZiNTVhNDJlYTkwNDU5OGEwMWQxZTZlMjlhZWYyZmEu
LjcwYTA5ZTJmM2QxOGVlNjlkNmM3ZTk1YTk1NjdiNWI0NzAwMzFhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJh
c2VsaW5lOjpjYWxjdWxhdGVCYXNlbGluZVNoaWZ0KGNvbnN0IFNWR1JlbmRlclN0eWxlJgogICAg
IGlmIChzdHlsZS5iYXNlbGluZVNoaWZ0KCkgPT0gQmFzZWxpbmVTaGlmdDo6TGVuZ3RoKSB7CiAg
ICAgICAgIGF1dG8gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoID0gc3R5bGUuYmFzZWxpbmVTaGlm
dFZhbHVlKCk7CiAgICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudW5pdFR5cGUo
KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKLSAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNo
aWZ0VmFsdWVMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsK
KyAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudmFsdWVBc1BlcmNl
bnRhZ2UoKSAqIG1fZm9udC5zaXplKCk7CiAKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KGNvbnRleHQpOwogICAgICAgICByZXR1cm4gYmFzZWxpbmVTaGlmdFZhbHVlTGVu
Z3RoLnZhbHVlKGxlbmd0aENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcAppbmRleCA0OGQ4
MGFlOTkyNmUwNjNkOWVmMjE5MjQyZDNkZTc4MTc4ZWNlNGU1Li4xZDdhMzZmZThjODhjMzg5OWFl
YTk2NGZmOWUwZTIzNDgwOTdiYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCBmbG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2Vy
bmluZ0FuZFNwYWNpbmcoY29uc3QgU1ZHUmVuZGVyUwogICAgIGZsb2F0IGtlcm5pbmcgPSAwOwog
ICAgIGF1dG8ga2VybmluZ0xlbmd0aCA9IHN0eWxlLT5rZXJuaW5nKCk7CiAgICAgaWYgKGtlcm5p
bmdMZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKLSAgICAgICAga2Vy
bmluZyA9IGtlcm5pbmdMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNp
emUoKTsKKyAgICAgICAga2VybmluZyA9IGtlcm5pbmdMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2Uo
KSAqIG1fZm9udC5zaXplKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dChjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5n
TGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGlu
ZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMTM2ZjMxYThlYmI5MGJjYzI4ZGEwNzY5ODY3MzBjMTdj
OTgyMzExOC4uZWM5YjcwYmY2YzljMjY2ODYzNDNmMTIwNDY3YjI2NDYyY2I1YmRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCkBAIC0xMTAsNyArMTEw
LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJl
bmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbi5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBHbHlwaE92ZXJmbG93KCk7CiAKLSAgICBmbG9hdCBzdHJva2VU
aGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29tcHV0
ZWRGb250UGl4ZWxTaXplKCkpOworICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IHRleHREZWNv
cmF0aW9uU3Ryb2tlVGhpY2tuZXNzKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkpOwogICAg
IGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlID0gMDsKICAgICBmbG9hdCBzdGVwOwogICAgIGZs
b2F0IHdhdnlPZmZzZXQgPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlz
dWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBj
b25zdCBJCiAgICAgR2x5cGhPdmVyZmxvdyBvdmVyZmxvd1Jlc3VsdDsKICAgICAKICAgICBpZiAo
ZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpIHsKLSAgICAgICAg
Z2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMobGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
LCBjb250cm9sUG9pbnREaXN0YW5jZSwgc3RlcCk7CisgICAgICAgIGdldFdhdnlTdHJva2VQYXJh
bWV0ZXJzKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGNvbnRyb2xQb2ludERpc3RhbmNl
LCBzdGVwKTsKICAgICAgICAgd2F2eU9mZnNldCA9IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigp
OwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5sZWZ0ID0gc3Ryb2tlVGhpY2tuZXNzOwogICAgICAg
ICBvdmVyZmxvd1Jlc3VsdC5yaWdodCA9IHN0cm9rZVRoaWNrbmVzczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCAyOWMyYmUwMmRmNzQ5ZTU2N2RlODIw
ODQ4OTBhYjk3MmNmNGRhMzI2Li40MmQ2OGU1ZjE4MjFhNWQ2NDk1MTNiYzY5NDFmZThlYWUwMzUx
ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0y
MTcsNyArMjE3LDcgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2RvY3VtZW50RWxlbWVudFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUuc3R5bGUpOwogICAgICAgICBzY29wZSgpLnN0eWxl
UmVzb2x2ZXIuc2V0T3ZlcnJpZGVEb2N1bWVudEVsZW1lbnRTdHlsZShtX2RvY3VtZW50RWxlbWVu
dFN0eWxlLmdldCgpKTsKIAotICAgICAgICBpZiAodXBkYXRlLmNoYW5nZSAhPSBOb0NoYW5nZSAm
JiBleGlzdGluZ1N0eWxlICYmIGV4aXN0aW5nU3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
ICE9IHVwZGF0ZS5zdHlsZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCkpIHsKKyAgICAgICAgaWYg
KHVwZGF0ZS5jaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgZXhpc3RpbmdTdHlsZSAmJiBleGlzdGluZ1N0
eWxlLT5jb21wdXRlZEZvbnRTaXplKCkgIT0gdXBkYXRlLnN0eWxlLT5jb21wdXRlZEZvbnRTaXpl
KCkpIHsKICAgICAgICAgICAgIC8vICJyZW0iIHVuaXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgZG9j
dW1lbnQgZWxlbWVudCdzIGZvbnQgc2l6ZSBzbyB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBldmVyeXRo
aW5nLgogICAgICAgICAgICAgLy8gSW4gcHJhY3RpY2UgdGhpcyBpcyByYXJlLgogICAgICAgICAg
ICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKaW5kZXggMDgwMDAxNzZi
YWMwZmI5MGZlYTM1MGZmZDYyZTU2ZWM0YmJjMTI5ZS4uZTcwZjYwNWVlYmRiNWZkYzlhM2Q1OTc3
ZjYwNjJmYTA0MmIwMzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNw
cApAQCAtMjQxLDcgKzI0MSw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0
Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FTVMoZmxvYXQgdmFsdWUpCiAgICAgaWYgKCFz
dHlsZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICBmbG9hdCBmb250U2l6ZSA9IHN0eWxlLT5jb21wdXRlZEZvbnRQaXhlbFNpemUoKTsKKyAg
ICBhdXRvIGZvbnRTaXplID0gc3R5bGUtPmNvbXB1dGVkRm9udFNpemUoKTsKICAgICBpZiAoIWZv
bnRTaXplKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsK
IApAQCAtMjU0LDcgKzI1NCw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0
Ojpjb252ZXJ0VmFsdWVGcm9tRU1TVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUpCiAgICAgaWYgKCFz
dHlsZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICByZXR1cm4gdmFsdWUgKiBzdHlsZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAg
cmV0dXJuIHZhbHVlICogc3R5bGUtPmNvbXB1dGVkRm9udFNpemUoKTsKIH0KIAogRXhjZXB0aW9u
T3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb0VY
UyhmbG9hdCB2YWx1ZSkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349245</attachid>
            <date>2018-09-07 22:42:21 -0700</date>
            <delta_ts>2018-09-07 22:47:01 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-46987-20180907224221.patch</filename>
            <type>text/plain</type>
            <size>38890</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0MzE3ZjkxODIyMTc3
YjhlOTIyNDEwZDcyMTQ1ZDRmYmY5NDk5My4uZTdiYjg3NzJiZWVjZDIxODg1NjEzODk2MGI2MGNi
N2NhM2IxMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE4LTA5LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhY3Rpb25h
bCBmb250IHNpemVzIGFyZSBpbXByb3Blcmx5IGhhbmRsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvc2ltcGxlL1NpbXBsZUxp
bmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6U2ltcGxlTGluZUJyZWFr
ZXI6OmFkanVzdFNwbGl0UG9zaXRpb25XaXRoSHlwaGVuYXRpb24gY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKToKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9w
ZXJ0eSk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Rm9udERlc2NyaXB0aW9uS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnBpeGVsU2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkUGl4ZWxTaXpl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpmb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU2l6ZUZvckZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RlcHBlckNvbnRyb2xTaXplRm9yRm9udCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNv
bHVtbkdhcCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2x1bW5HYXAg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZE92ZXJoYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlS
dW46OmdldE92ZXJoYW5nIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURp
cmVjdGlvbkxpbmVCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdpZHRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNvbnRyb2xTaXplRm9yRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpoeXBoZW5Qb3NpdGlvbkZvckZyYWdtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0
cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpzdHJldGNoVmVydGlj
YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRl
ZExpbmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRTaG91bGRCZVBhaW50ZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxp
bmVTaGlmdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5n
aW5lU3BhY2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZzo6Y2FsY3VsYXRlQ1NTS2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21FTVNUb1Vz
ZXJVbml0cyBjb25zdCk6CisKIDIwMTgtMDktMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJUQ1J0cFJlY2VpdmVyOjp0cmFjayBzaG91bGQgcmV0dXJuIGEg
TWVkaWFTdHJlYW1UcmFjayByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAyZGM1NzM4MmZiYTk5ZjI0MjRiODZlZmNmMDgyZjYwYjRiYjViMWM1Li4wNjgxNWEx
YjQwYTg0NzVmYTNiZTE5OTFkYWU0OTk4MDM2ZjJhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBh
cgogCiAgICAgLy8gSW1wb3J0YW50OiBJbnRyaW5zaWMgbWFyZ2lucyBnZXQgYWRkZWQgdG8gY29u
dHJvbHMgYmVmb3JlIHRoZSB0aGVtZSBoYXMgYWRqdXN0ZWQgdGhlIHN0eWxlLCBzaW5jZSB0aGUg
dGhlbWUgd2lsbAogICAgIC8vIGFsdGVyIGZvbnRzIGFuZCBoZWlnaHRzL3dpZHRocy4KLSAgICBp
ZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCkgPj0gMTEpIHsKKyAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVu
dD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpID49IDExKSB7CiAgICAgICAg
IC8vIERvbid0IGFwcGx5IGludHJpbnNpYyBtYXJnaW5zIHRvIGltYWdlIGJ1dHRvbnMuIFRoZSBk
ZXNpZ25lciBrbm93cyBob3cgYmlnIHRoZSBpbWFnZXMgYXJlLAogICAgICAgICAvLyBzbyB3ZSBo
YXZlIHRvIHRyZWF0IGFsbCBpbWFnZSBidXR0b25zIGFzIHRob3VnaCB0aGV5IHdlcmUgZXhwbGlj
aXRseSBzaXplZC4KICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkg
fHwgIWRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5pc0ltYWdlQnV0dG9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjI4ZDg0NmY2ODc2
MjhjM2MwMzBmNDcyOWM2YWMyNTEwMjU1MjIyNy4uYmE1OTExY2M1NmJmYWMwYzc5ODNkY2QxN2Fk
YTlhOTk1Nzc2ZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtMTA0NSw5ICsxMDQ1LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZv
ck5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAoIXJlbmRlckJveC5oZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaW50IGJvdHRvbU1hcmdpbiA9IHJlbmRlckJveC5jb2xsYXBz
ZWRNYXJnaW5BZnRlcigpOwotICAgIGludCBmb250U2l6ZSA9IHJlbmRlckJveC5zdHlsZSgpLmZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCk7Ci0gICAgcmV0dXJuIGJvdHRvbU1h
cmdpbiAqIDIgPj0gZm9udFNpemU7CisgICAgYXV0byBib3R0b21NYXJnaW4gPSByZW5kZXJCb3gu
Y29sbGFwc2VkTWFyZ2luQWZ0ZXIoKTsKKyAgICBhdXRvIGZvbnRTaXplID0gcmVuZGVyQm94LnN0
eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0Pihib3R0b21NYXJnaW4pICogMiA+PSBmb250U2l6ZTsKIH0KIAogc3RhdGlj
IGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRF
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCBlMjdkOTUxOTQ4MTliMDJlOTQxNGQ0OWJmYThmYWZmMmVh
MTc2MWRlLi4yMTk4ODNkMmIwMWQ0MmUxZTEwMzZmNzRjYTQ3ZjYyNzQxZGMyZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmb250KCkgY29uc3QKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5k
TGl0ZXJhbCgic21hbGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJl
cihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgc2VyaWFsaXplZEZv
bnQuYXBwZW5kTnVtYmVyKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSk7CiAgICAgc2Vy
aWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L3NpbXBs
ZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy90ZXh0bGF5b3V0L3NpbXBsZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAKaW5kZXggYTJh
NzRlNzc0MDZmMzNkNzQwOTU5Zjc2MWQxZTBhNTE5NTliM2FiYi4uMzE5ZjgzNTA3YjgyZWNjZWFj
MzJkZmVjODU2MTYwYTYxZDkzZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dGxheW91dC9zaW1wbGUvU2ltcGxlTGluZUJyZWFrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQv
c2ltcGxlL1NpbXBsZUxpbmVCcmVha2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFBvc2l0aW9uPiBTaW1wbGVMaW5lQnJlYWtlcjo6YWRqdXN0U3BsaXRQb3Np
dGlvbldpdGhIeXBoZW5hCiAgICAgaWYgKG1fY3VycmVudExpbmUuaGFzQ29udGVudCgpKQogICAg
ICAgICBhZGp1c3RlZEF2YWlsYWJsZVdpZHRoICs9IG1fc3R5bGUuZm9udC5zcGFjZVdpZHRoKCk7
CiAKLSAgICBpZiAoIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVX
aWR0aCwgbV9zdHlsZS5mb250LnBpeGVsU2l6ZSgpKSkKKyAgICBpZiAoIWVub3VnaFdpZHRoRm9y
SHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCwgbV9zdHlsZS5mb250LnNpemUoKSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBGaW5kIHRoZSBzcGxpdCBwb3NpdGlvbiB3
aGVyZSBoeXBoZW4gc3VyZWx5IGZpdHMgKHdlIG1pZ2h0IGJlIGFibGUgdG8gZml0IHRoZSBoeXBo
ZW4gYXQgdGhlIHNwbGl0IHBvc2l0aW9uKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCA0Y2IyOGNjYWExYjA4NGVlNGYwNWVmMTRkM2Y4NDM4
NmJmZjE1MjI0Li4wMmM4NWVhOTQ3ODRlNGU2ODE5ZWUzYTMyMDYyNWM2ZjEyMzBhYTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIFJlZlB0cjxGb250PiBDYWNoZWRTVkdGb250OjpjcmVhdGVGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiBGb250UGxhdGZvcm1EYXRhIENhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVh
dHVyZVNldHRpbmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdz
JiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxp
dGllcyBmb250RmFjZUNhcGFiaWxpdGllcykKIHsKICAgICBpZiAobV9leHRlcm5hbFNWR0RvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSwgYm9sZCwgaXRhbGljKTsKKyAgICAgICAgcmV0dXJuIEZvbnRQbGF0
Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBib2xkLCBpdGFsaWMpOwog
ICAgIHJldHVybiBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVz
Y3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50
U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGM2YjAzNTE3NTk1ZmI2MzU3Mjg1ZTlkNzc4NGViODQxNjdiZTI5
MzguLjZiMzQ0MTI5MzBkNThhMWEzYzdmYzQ1YTIzYWIxN2Q4MzJkZTI4OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgUHJpbnRD
b250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGludCBwYQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImxpbmUtaGVpZ2h0Iikp
CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bGluZUhlaWdodCgpLnZhbHVl
KCkpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImZvbnQtc2l6ZSIpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVk
UGl4ZWxTaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5h
bWUsICJmb250LWZhbWlseSIpKQogICAgICAgICByZXR1cm4gc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmZpcnN0RmFtaWx5KCk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAic2l6ZSIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCBhYWNhZDI4NTJiZWZlOTEwNDA4
MGUzMGQ2ZTc1Y2RkYWQyMTg5YjdiLi42ZGU0NjZlMTg4YzA2MzZhZDRkNmVmMzAzODQwOTM2MTEw
OWYyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMjA2LDcgKzIwNiw3
IEBAIENHUmVjdCBGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50KENHUG9pbnQgcG9pbnQsIGJvb2wq
IGlzUmVwbGFjZWQsIGZsb2F0KiBmb250U2l6CiAjaWYgQ0hFQ0tfRk9OVF9TSVpFCiAgICAgICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogdGV4dFJlbmRlcmVyID0gaGl0UmVuZGVyZXI7IHRleHRS
ZW5kZXJlcjsgdGV4dFJlbmRlcmVyID0gdGV4dFJlbmRlcmVyLT50cmF2ZXJzZU5leHQoaGl0UmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+aXNUZXh0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgKmZvbnRTaXplID0gdGV4dFJlbmRlcmVyLT5mb250KHRydWUp
LnBpeGVsU2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAqZm9udFNpemUgPSB0ZXh0UmVuZGVy
ZXItPmZvbnQodHJ1ZSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg1NjRkYjljMWUwZjI1ZTA4NDY3ZjQ4YTg0MGEyZWEx
YjE4Y2MxY2EuLjIwYjI1ODc4ZTdhNjJlNWI3ZTMxMmQ5ZTBmZjQ2ZjVmYzU4MWZiYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktl
eSgpID0gZGVmYXVsdDsKIAogICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUo
KSkKICAgICAgICAgLCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0KGRlc2NyaXB0aW9uLmZvbnRTZWxl
Y3Rpb25SZXF1ZXN0KCkpCiAgICAgICAgICwgbV9mbGFncyhtYWtlRmxhZ3NLZXkoZGVzY3JpcHRp
b24pKQogICAgICAgICAsIG1fbG9jYWxlKGRlc2NyaXB0aW9uLmxvY2FsZSgpKQpAQCAtMTU1LDcg
KzE1NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNIYXNoVGFibGVE
ZWxldGVkU2l6ZSA9IDB4RkZGRkZGRkZVOwogCiAgICAgLy8gRm9udENhc2NhZGU6OmxvY2FsZSgp
IGlzIGV4cGxpY2l0bHkgbm90IGluY2x1ZGVkIGluIHRoaXMgc3RydWN0LgotICAgIHVuc2lnbmVk
IG1fc2l6ZSB7IDAgfTsKKyAgICBmbG9hdCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlv
blJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKICAgICBzdGQ6OmFycmF5PHVuc2lnbmVk
LCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07CiAgICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggZWFh
MDhlMDEyZmE4NmUyYjM0ZjM3YWViNjJiMjcyNjBlYzM3ZGU4Yy4uMWQzMGI1Yzg2NmZiYzQ1MDFh
NGUzZDdhMmQ5ZDNjYjVkMzE5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xMTMsNyArMTEzLDYgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGVzY3JpcHRpb247IH0KIAotICAgIGludCBwaXhlbFNpemUoKSBjb25zdCB7
IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgpOyB9CiAgICAgZmxv
YXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9y
PiYmID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IDEzZmNkYjNjZjVjM2ZlMzUxOTBlYzNjMTIw
NGQ2M2Y4YWQ0NDIwYzMuLmU0ZGUxZmVhMmUzMjFkY2MwMjdmOWI4MzM3N2JmYWY0YTk0OGY3M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KIAogICAgIGZsb2F0IGNvbXB1dGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0
ZWRTaXplOyB9Ci0gICAgdW5zaWduZWQgY29tcHV0ZWRQaXhlbFNpemUoKSBjb25zdCB7IHJldHVy
biB1bnNpZ25lZChtX2NvbXB1dGVkU2l6ZSArIDAuNWYpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxG
b250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlv
blJlcXVlc3Quc2xvcGU7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGg7IH0KICAgICBGb250U2VsZWN0
aW9uVmFsdWUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC53
ZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBjNDgxMDIwMzZjYjc4YmE2YzU5
ZDAxOTEwMWY5NmMyMzQ0OWU0N2UwLi41Y2YwMzZlNTlmNDQ3YWE4YWExMWEyZTViYTUwOWQxMzE0
MWUxNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyog
Zm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VD
YXBhYmlsaXRpZXMpCiB7Ci0gICAgZmxvYXQgc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNp
emUoKTsKIAogICAgIGF1dG8gZm9udCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgZm9udERlc2Ny
aXB0aW9uLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgZm9udEZh
Y2VDYXBhYmlsaXRpZXMsIHNpemUpOwogCkBAIC0xNDg3LDE1ICsxNDg3LDE1IEBAIFJlZjxGb250
PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpCiAgICAgLy8gTGFzdFJlc29ydCBpcyBndWFyYW50ZWVkIHRvIGJlIG5v
bi1udWxsLgogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUxhc3RSZXNvcnQoKSk7Ci0gICAgYXV0byBmb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0
KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAg
YXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERl
c2NyaXB0b3IuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikp
OwogI2Vsc2UKICAgICAvLyBFdmVuIGlmIEhlbHZldGljYSBkb2Vzbid0IGV4aXN0LCBDVEZvbnRD
cmVhdGVXaXRoTmFtZSB3aWxsIHJldHVybgogICAgIC8vIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBh
IEdyYXBoaWNzRm9udCB3aGljaCByZXByZXNlbnRzIExhc3RSZXNvcnQuCi0gICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikpOwogI2VuZGlmCiAgICAgYm9vbCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlOwogICAgIHN0ZDo6dGllKHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY09ibGlxdWUpID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Lmdl
dCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwotICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGEoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24o
KSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIGZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1E
YXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDc0OWE1ODUwNTc0
MzRmYTNjZmY0YmRkZDU2MTc2MjIzMzlmODdmMWEuLmQ2OWQzOWM3NTVhNmJlOGU2N2UxYTlmMmMx
NTAyZDc2OTk3ODQ0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICBhdXRvIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0
ZXMobV9mb250RGVzY3JpcHRvci5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOwogICAgIEFTU0VS
VChtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKIAotICAgIGludCBzaXplID0gZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCk7CisgICAgYXV0byBzaXplID0gZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkU2l6ZSgpOwogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZvbnRE
ZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpOwogICAgIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJp
YW50ID0gZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOwogICAgIFJldGFpblB0cjxDVEZv
bnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTU3ZjdjNTA3Mjg4NDFkNGQwNTAxYmJjYjIx
MTZlYzZkMTY2ZGE1MC4uZTA5MjY1NGY2MDRkN2UxNWQ4NTRhMzU5NGYxNTYxMDgyNWNmNjhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3
IEBAIFRoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKIAogc3RhdGljIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250
U2l6ZSA9IGZvbnQucGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgp
OwogICAgIGlmIChmb250U2l6ZSA+PSAxNikKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVS
ZWd1bGFyOwogICAgIGlmIChmb250U2l6ZSA+PSAxMSkKQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0
aWMgY29uc3Qgc3RkOjphcnJheTxJbnRTaXplLCAzPiYgc3RlcHBlclNpemVzKCkKIC8vIHNob3Vs
ZCBiZSBlcXVhbCB0byBvciBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdGV4dCBmaWVsZCBo
ZWlnaHQsCiBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250U2l6ZSA9IGZvbnQucGl4ZWxT
aXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgpOwogICAgIGlmIChmb250U2l6
ZSA+PSAxOCkKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVSZWd1bGFyOwogICAgIGlmIChm
b250U2l6ZSA+PSAxMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggMTk0MTQyNzYxM2UyM2MxZTE1NDE0MzM2MzJlN2FlYjQzMWZiM2M1NC4uOTc1
ZTVmZWQ1NGQzNDUwMzQ2ZGE0YmVhNjE1YThjNGJkMGFmZTY0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCBib29s
IFJlbmRlckJsb2NrRmxvdzo6cmVjb21wdXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgoKQog
TGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbHVtbkdhcCgpIGNvbnN0CiB7CiAgICAgaWYg
KHN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCku
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKTsgLy8gIjFlbSIgaXMgcmVjb21t
ZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0Y2hlcyA8cD4gbWFyZ2lucy4KKyAg
ICAgICAgcmV0dXJuIHN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8v
ICIxZW0iIGlzIHJlY29tbWVuZGVkIGFzIHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMg
PHA+IG1hcmdpbnMuCiAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuY29sdW1uR2Fw
KCkubGVuZ3RoKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggNzUxZTgx
MDYxNWEwZTRmZDU5OTJkNDc3ZTY0YzIzMDhhMzE1OTE4MS4uMTQ2ZjY0MDkxYTBiOWEyZDlmNjc4
Nzc4YWI0ZjdhMWRkZDAyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sdW1uR2FwKCkgY29uc3QKICAgICAvLyBnbyB0byB0aGUg
cGFyZW50IGJsb2NrIHRvIGdldCB0aGUgZ2FwLgogICAgIFJlbmRlckJsb2NrRmxvdyYgcGFyZW50
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJlbnQoKSk7CiAgICAgaWYgKHBh
cmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJu
IHBhcmVudEJsb2NrLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUo
KTsgLy8gIjFlbSIgaXMgcmVjb21tZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0
Y2hlcyA8cD4gbWFyZ2lucy4KKyAgICAgICAgcmV0dXJuIHBhcmVudEJsb2NrLnN0eWxlKCkuZm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8vICIxZW0iIGlzIHJlY29tbWVuZGVkIGFz
IHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMgPHA+IG1hcmdpbnMuCiAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHBhcmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkubGVuZ3RoKCks
IHBhcmVudEJsb2NrLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4IDE2MWU5NGE1MThmODk5ZjRjNzIw
MjEwZjEyN2YzNmU1ODBhMDM5NjguLjFjZTUzOTFkMDg2NWE3ZTQ2MGVlZjJiMjQyNjVhOTA5YmRh
ZGEyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRPdmVyaGFuZyhib29sIGZpcnN0TGlu
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJ1YnlCYXNlU3R5bGUgPSBmaXJzdExpbmUg
PyBydWJ5QmFzZS5maXJzdExpbmVTdHlsZSgpIDogcnVieUJhc2Uuc3R5bGUoKTsKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyByZW5kZXJlci0+Zmlyc3RMaW5lU3R5
bGUoKSA6IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRQ
aXhlbFNpemUoKSA8PSBydWJ5QmFzZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAg
IHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgPD0gcnVieUJhc2VTdHlsZS5jb21wdXRl
ZEZvbnRTaXplKCk7CiB9CiAKIHZvaWQgUmVuZGVyUnVieVJ1bjo6Z2V0T3ZlcmhhbmcoYm9vbCBm
aXJzdExpbmUsIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciwgZmxvYXQmIHN0YXJ0T3ZlcmhhbmcsIGZsb2F0JiBlbmRPdmVyaGFuZykgY29uc3QK
QEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmdldE92ZXJoYW5nKGJvb2wg
Zmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbgogICAgIC8vIFdlIGNh
biBvdmVyaGFuZyB0aGUgcnVieSBieSBubyBtb3JlIHRoYW4gaGFsZiB0aGUgd2lkdGggb2YgdGhl
IG5laWdoYm9yaW5nIHRleHQKICAgICAvLyBhbmQgbm8gbW9yZSB0aGFuIGhhbGYgdGhlIGZvbnQg
c2l6ZS4KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcnVieVRleHRTdHlsZSA9IGZpcnN0TGluZSA/
IHJ1YnlUZXh0LT5maXJzdExpbmVTdHlsZSgpIDogcnVieVRleHQtPnN0eWxlKCk7Ci0gICAgZmxv
YXQgaGFsZldpZHRoT2ZGb250U2l6ZSA9IHJ1YnlUZXh0U3R5bGUuY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkgLyAyLjsKKyAgICBmbG9hdCBoYWxmV2lkdGhPZkZvbnRTaXplID0gcnVieVRleHRTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCkgLyAyOwogICAgIGlmIChzdGFydE92ZXJoYW5nKQogICAgICAg
ICBzdGFydE92ZXJoYW5nID0gc3RkOjptaW4oc3RhcnRPdmVyaGFuZywgc3RkOjptaW4oZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnN0YXJ0UmVuZGVyZXIpLm1pbkxvZ2ljYWxXaWR0aCgpLCBoYWxmV2lk
dGhPZkZvbnRTaXplKSk7CiAgICAgaWYgKGVuZE92ZXJoYW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKaW5kZXggZjVjZDlmMTM1MDYxOTg5YThhZTFlMTA4
ODFhNWNiNTllYjE2NWU3Ny4uOTFjOTM5ZGIwMzAyNTk3YTZiMzU2Njc5MDVlMzBmNzI0MDhjNGIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgUmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURpcmVjdGlvbkxp
bmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291CiAgICAgLy8gcnVieSBjaGFyYWN0
ZXIgb24gZWFjaCBzaWRlLgogICAgIGZsb2F0IGluc2V0ID0gKGxvZ2ljYWxXaWR0aCAtIG1heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCkgLyAoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCArIDEpOwog
ICAgIGlmIChleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQotICAgICAgICBpbnNldCA9IHN0ZDo6
bWluPGZsb2F0PigyICogc3R5bGUoKS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSwgaW5zZXQpOwor
ICAgICAgICBpbnNldCA9IHN0ZDo6bWluKDIgKiBzdHlsZSgpLmNvbXB1dGVkRm9udFNpemUoKSwg
aW5zZXQpOwogCiAgICAgbG9naWNhbExlZnQgKz0gaW5zZXQgLyAyOwogICAgIGxvZ2ljYWxXaWR0
aCAtPSBpbnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA1
NDAxM2UzNDc3MjRhYzYzOTgxY2M5MGJiYzJjYThkNWYxZmEwMzFjLi5iNWEwZjYyOGIyMzkwYTY3
ZGJkY2YzNDJhY2EyMjkxM2NhYTRlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVu
dFdpZHRoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAg
ICBoeXBoZW5Mb2NhdGlvbnMucmV2ZXJzZSgpOwogCiAgICAgLy8gRklYTUU6IEJyZWFraW5nIHRo
ZSBzdHJpbmcgYXQgdGhlc2UgcGxhY2VzIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMgaXMgY29tcGxl
dGVseSBicm9rZW4gd2l0aCBjb21wbGV4IHRleHQuCi0gICAgZmxvYXQgbWluaW11bUZyYWdtZW50
V2lkdGhUb0NvbnNpZGVyID0gZm9udC5waXhlbFNpemUoKSAqIDUgLyA0ICsgaHlwaGVuV2lkdGgo
cmVuZGVyZXIsIGZvbnQpOworICAgIGZsb2F0IG1pbmltdW1GcmFnbWVudFdpZHRoVG9Db25zaWRl
ciA9IGZvbnQuc2l6ZSgpICogNSAvIDQgKyBoeXBoZW5XaWR0aChyZW5kZXJlciwgZm9udCk7CiAg
ICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCBoeXBoZW5Mb2NhdGlvbnMuc2l6ZSgpOyArK2spIHsKICAgICAgICAgaW50IGZyYWdtZW50TGVu
Z3RoID0gaHlwaGVuTG9jYXRpb25zW2tdIC0gc3VmZml4U3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggY2I0NjY0NGYzNTg0M2E3Y2E5ZGZjNDJi
MmE5OTcwN2M4Zjk0Njc3Mi4uMmM1OTkxNDBiNWM2NGYyNzdhMDFiZjdlOTAzM2Q2NmJkZjRhMTc4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzU0
LDcgKzM1NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29uCiAgICAgaWYgKCFzdHlsZS53aWR0
aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9u
dFBpeGVsU2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9
KTsKICAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKIH0KQEAgLTQ3NSw3ICs0
NzUsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0CiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9udFBpeGVs
U2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKICAg
ICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKICAgICBzdHlsZS5zZXRCb3JkZXJS
YWRpdXMoeyBzaXplIC8gMiwgc2l6ZSAvIDIgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzczNzVmYTAxOGUwMGNmOWY4NjJmMTQ0MWRiNjkxM2Fk
NzIzMjJmYi4uNzA4YWZjYmVhOGQzOTQ5YWQ1MTU4NzRiZjg4M2YyNWFjOGI4YTRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTAzNCw3ICsxMDM0
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvKSBjb25zdAogCiBOU0NvbnRyb2xTaXplIFJlbmRlclRoZW1lTWFjOjpjb250
cm9sU2l6ZUZvckZvbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIGlu
dCBmb250U2l6ZSA9IHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAgIGF1dG8gZm9u
dFNpemUgPSBzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKTsKICAgICBpZiAoZm9udFNpemUg
Pj0gMTYpCiAgICAgICAgIHJldHVybiBOU0NvbnRyb2xTaXplUmVndWxhcjsKICAgICBpZiAoZm9u
dFNpemUgPj0gMTEpCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpz
ZXRGb250RnJvbUNvbnRyb2xTaXplKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUs
CiAKIE5TQ29udHJvbFNpemUgUmVuZGVyVGhlbWVNYWM6OmNvbnRyb2xTaXplRm9yU3lzdGVtRm9u
dChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgaW50IGZvbnRTaXplID0g
c3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IHN0eWxl
LmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOwogICAgIGlmIChmb250U2l6ZSA+PSBbTlNGb250IHN5
c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemU6TlNDb250cm9sU2l6ZVJlZ3VsYXJdKQogICAgICAg
ICByZXR1cm4gTlNDb250cm9sU2l6ZVJlZ3VsYXI7CiAgICAgaWYgKGZvbnRTaXplID49IFtOU0Zv
bnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpOU0NvbnRyb2xTaXplU21hbGxdKQpAQCAt
MTYyMiw3ICsxNjIyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKICAgICBwYWludE1lbnVM
aXN0QnV0dG9uR3JhZGllbnRzKHJlbmRlcmVyLCBwYWludEluZm8sIGJvdW5kcyk7CiAKICAgICAv
LyBTaW5jZSB3ZSBhY3R1YWxseSBrbm93IHRoZSBzaXplIG9mIHRoZSBjb250cm9sIGhlcmUsIHdl
IHJlc3RyaWN0IHRoZSBmb250IHNjYWxlIHRvIG1ha2Ugc3VyZSB0aGUgYXJyb3dzIHdpbGwgZml0
IHZlcnRpY2FsbHkgaW4gdGhlIGJvdW5kcwotICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0ZDo6bWlu
KHJlbmRlcmVyLnN0eWxlKCkuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBiYXNlRm9udFNpemUs
IGJvdW5kcy5oZWlnaHQoKSAvIChiYXNlQXJyb3dIZWlnaHQgKiAyICsgYmFzZVNwYWNlQmV0d2Vl
bkFycm93cykpOworICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0ZDo6bWluKHJlbmRlcmVyLnN0eWxl
KCkuY29tcHV0ZWRGb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplLCBib3VuZHMuaGVpZ2h0KCkgLyAo
YmFzZUFycm93SGVpZ2h0ICogMiArIGJhc2VTcGFjZUJldHdlZW5BcnJvd3MpKTsKICAgICBmbG9h
dCBjZW50ZXJZID0gYm91bmRzLnkoKSArIGJvdW5kcy5oZWlnaHQoKSAvIDIuMGY7CiAgICAgZmxv
YXQgYXJyb3dIZWlnaHQgPSBiYXNlQXJyb3dIZWlnaHQgKiBmb250U2NhbGU7CiAgICAgZmxvYXQg
YXJyb3dXaWR0aCA9IGJhc2VBcnJvd1dpZHRoICogZm9udFNjYWxlOwpAQCAtMTczMCw3ICsxNzMw
LDcgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lTWFjOjpwb3B1cEludGVybmFsUGFkZGluZ0JveChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnMKICAgICB9CiAKICAgICBpZiAoc3R5bGUuYXBw
ZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgewotICAgICAgICBmbG9hdCBhcnJvd1dp
ZHRoID0gYmFzZUFycm93V2lkdGggKiAoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBi
YXNlRm9udFNpemUpOworICAgICAgICBmbG9hdCBhcnJvd1dpZHRoID0gYmFzZUFycm93V2lkdGgg
KiAoc3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gYmFzZUZvbnRTaXplKTsKICAgICAgICAgZmxv
YXQgcmlnaHRQYWRkaW5nID0gY2VpbGYoYXJyb3dXaWR0aCArIChhcnJvd1BhZGRpbmdCZWZvcmUg
KyBhcnJvd1BhZGRpbmdBZnRlciArIHBhZGRpbmdCZWZvcmVTZXBhcmF0b3IpICogc3R5bGUuZWZm
ZWN0aXZlWm9vbSgpKTsKICAgICAgICAgZmxvYXQgbGVmdFBhZGRpbmcgPSBzdHlsZWRQb3B1cFBh
ZGRpbmdMZWZ0ICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpOwogICAgICAgICBpZiAoc3R5bGUuZGly
ZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgUG9w
dXBNZW51U3R5bGU6OlBvcHVwTWVudVNpemUgUmVuZGVyVGhlbWVNYWM6OnBvcHVwTWVudVNpemUo
Y29uc3QgUmVuZGVyU3R5bGUmIHMKIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBF
bGVtZW50KikgY29uc3QKIHsKLSAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS5jb21wdXRlZEZv
bnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6ZTsKKyAgICBmbG9hdCBmb250U2NhbGUgPSBzdHls
ZS5jb21wdXRlZEZvbnRTaXplKCkgLyBiYXNlRm9udFNpemU7CiAKICAgICBzdHlsZS5yZXNldFBh
ZGRpbmcoKTsKICAgICBzdHlsZS5zZXRCb3JkZXJSYWRpdXMoSW50U2l6ZShpbnQoYmFzZUJvcmRl
clJhZGl1cyArIGZvbnRTY2FsZSAtIDEpLCBpbnQoYmFzZUJvcmRlclJhZGl1cyArIGZvbnRTY2Fs
ZSAtIDEpKSk7IC8vIEZJWE1FOiBSb3VuZCB1cD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAppbmRleCAxOTk5NzY0Nzg5ZGI1NzA2MGZmMjQxYzU5YmVkYTliZWZj
OTA3NWRjLi4xNzVhZjBhMzI5N2VkYjJmYmM1NDQwNTgxN2IzZTUxZjZjZjNmYmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMDI2LDcgKzEwMjYs
NyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5s
aW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpbwogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50TGluZVN0eWxlID0gZmlyc3RMaW5lID8gcGFyZW50LT5maXJzdExpbmVTdHlsZSgpIDog
cGFyZW50LT5zdHlsZSgpOwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHBhcmVu
dExpbmVTdHlsZS5mb250Q2FzY2FkZSgpOwogICAgICAgICBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgIGludCBmb250U2l6ZSA9IGZv
bnQucGl4ZWxTaXplKCk7CisgICAgICAgIGF1dG8gZm9udFNpemUgPSBmb250LnNpemUoKTsKIAog
ICAgICAgICBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uID0gcGFyZW50LT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBlMGM3
YmVhNzFhMGNmMDdhZjNlYjA0MmFmNzIzYTk5NmNkNTNjOGJiLi5lNGE5YjdkNDJhNTcxZTJkNThm
YTA1MDQ0ZmQzNzhmNjdiMzhlMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCkBAIC02MzAsNyArNjMwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGh5cGhlblBvc2l0aW9uRm9yRnJhZ21lbnQoU3BsaXRGcmFnbWVudERhdGEg
c3BsaXQKICAgICBhdXRvIGFkanVzdGVkQXZhaWxhYmxlV2lkdGggPSBhdmFpbGFibGVXaWR0aCAt
IHN0eWxlLmh5cGhlblN0cmluZ1dpZHRoOwogICAgIGlmICghbGluZS5pc0VtcHR5KCkpCiAgICAg
ICAgIGFkanVzdGVkQXZhaWxhYmxlV2lkdGggKz0gc3R5bGUuZm9udC5zcGFjZVdpZHRoKCk7Ci0g
ICAgaWYgKCFlbm91Z2hXaWR0aEZvckh5cGhlbmF0aW9uKGFkanVzdGVkQXZhaWxhYmxlV2lkdGgs
IHN0eWxlLmZvbnQucGl4ZWxTaXplKCkpKQorICAgIGlmICghZW5vdWdoV2lkdGhGb3JIeXBoZW5h
dGlvbihhZGp1c3RlZEF2YWlsYWJsZVdpZHRoLCBzdHlsZS5mb250LnNpemUoKSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBXZSBtaWdodCBiZSBhYmxlIHRvIGZpdCB0
aGUgaHlwaGVuIGF0IHRoZSBzcGxpdCBwb3NpdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKaW5kZXggOThlODhkYzQ4MDVkNmE1
ZGE3YWE1NDIwNWRkYjE2ZTc0MTY5ODk4MC4uNWE2N2RhZDY2Y2Q3YzIzZGQ4NGQ3MGFiOGU1Yzhj
NDE3ZDUxYTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25z
dCBGbAogICAgIFVOVVNFRF9QQVJBTSh0ZXh0T3JpZ2luKTsKICNlbmRpZgogICAgIEFTU0VSVCht
X2ZvbnQpOwotICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gdGV4dERlY29yYXRp
b25TdHJva2VUaGlja25lc3MobV9saW5lU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwor
ICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VU
aGlja25lc3MobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpKTsKICAgICBtX2NvbnRleHQu
c2V0U3Ryb2tlVGhpY2tuZXNzKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKICAgICBGbG9hdFBv
aW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCmluZGV4IGZkOTE5Y2Y1NDFlODEyYzI5YmU1OGY4
ZmUwNTIxMGI3Yjg2N2E3NTUuLjliOTk4N2M3ZmE5OGI5YmIyYzU3Y2NjNGE4NDVjOWMxMDRlM2Yw
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4
dC5oCkBAIC02NjgsNyArNjY4LDcgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVy
VGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b20KICAgICBmbG9h
dCBoeXBoZW5XaWR0aCA9IG1lYXN1cmVIeXBoZW5XaWR0aCh0ZXh0LCBmb250KTsKIAogICAgIGZs
b2F0IG1heFByZWZpeFdpZHRoID0gYXZhaWxhYmxlV2lkdGggLSB4UG9zIC0gaHlwaGVuV2lkdGgg
LSBsYXN0U3BhY2VXb3JkU3BhY2luZzsKLSAgICBpZiAoIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRp
b24obWF4UHJlZml4V2lkdGgsIGZvbnQucGl4ZWxTaXplKCkpKQorICAgIGlmICghZW5vdWdoV2lk
dGhGb3JIeXBoZW5hdGlvbihtYXhQcmVmaXhXaWR0aCwgZm9udC5zaXplKCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0ZXh0LnN0eWxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5j
cHAKaW5kZXggMDUwNWVmMGFlZTJkNzE0M2Q2ZmU0YWRjMjI5NjYzYjM5YWQyZTVkNC4uZWUwNGQ2
ZmIwYjc3MTM4MTgyZGQ0YmEyMDVjYjRmYmM3OTg1OWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtOTAsNyArOTAs
NyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvdzo6c3RyZXRjaFZlcnRpY2FsT3BlcmF0b3JzQW5kTGF5
b3V0Q2hpbGRyZW4oKQogICAgIH0KICAgICBpZiAoc3RyZXRjaEFzY2VudCArIHN0cmV0Y2hEZXNj
ZW50IDw9IDApIHsKICAgICAgICAgLy8gV2UgZW5zdXJlIGEgbWluaW1hbCBzdHJldGNoIHNpemUu
Ci0gICAgICAgIHN0cmV0Y2hBc2NlbnQgPSBzdHlsZSgpLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
OworICAgICAgICBzdHJldGNoQXNjZW50ID0gc3R5bGUoKS5jb21wdXRlZEZvbnRTaXplKCk7CiAg
ICAgICAgIHN0cmV0Y2hEZXNjZW50ID0gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDM4MDk3ZDIyMTI5MzBlMDA1MzMw
MTVkZjRmZTg3YzI5ZGI2OTA3MzMuLjVmNDVlOWJkZmY2ODE4NjU3ODQyNmE4ZmZhNWI1OGRiYzdk
ZjU4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcApAQCAtMTUzMywxMSArMTUzMyw2IEBAIGZsb2F0IFJlbmRlclN0eWxlOjpjb21wdXRlZEZv
bnRTaXplKCkgY29uc3QKICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXpl
KCk7CiB9CiAKLXVuc2lnbmVkIFJlbmRlclN0eWxlOjpjb21wdXRlZEZvbnRQaXhlbFNpemUoKSBj
b25zdAotewotICAgIHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgp
OwotfQotCiBjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjp3b3JkU3BhY2luZygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPndvcmRTcGFjaW5nOwpAQCAtMTU5NCw3
ICsxNTg5LDcgQEAgaW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MoKS5saW5lU3BhY2luZygpOwogCiAgICAgaWYgKGxo
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKGxoLCBjb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgICAgIHJldHVybiBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobGgsIGNvbXB1dGVkRm9udFNpemUoKSk7CiAKICAgICByZXR1cm4g
Y2xhbXBUbzxpbnQ+KGxoLnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhMjA4NTAwZjA3YmZlZGU3YzJjOGM3YmVhZjI3MDg4
YTA1NTc3MjM3Li42YjIwM2IyNTgyZjVhNjE5NDg2OTg1NjM4MDE1YjQ4OGRhNmU0NTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzU0LDcg
KzM1NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250Q2FzY2FkZURl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24oKSBjb25zdDsKICAgICBmbG9hdCBzcGVjaWZpZWRG
b250U2l6ZSgpIGNvbnN0OwogICAgIGZsb2F0IGNvbXB1dGVkRm9udFNpemUoKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCBjb21wdXRlZEZvbnRQaXhlbFNpemUoKSBjb25zdDsKKyAgICBmbG9hdCBjb21w
dXRlZEZvbnRQaXhlbFNpemUoKSBjb25zdDsKICAgICBzdGQ6OnBhaXI8Rm9udE9yaWVudGF0aW9u
LCBOb25DSktHbHlwaE9yaWVudGF0aW9uPiBmb250QW5kR2x5cGhPcmllbnRhdGlvbigpOwogCiAj
aWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IDg5MjIwMjE1MTgzNmI5MWE3ZjRiOTFj
ZTkxODI4MmY0ZWNjNzljZWYuLmE1Y2Q0ODkzNzY3MDM2NTU3MjhjYTM0MGUzYjRmNmVhOGY4YmJh
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcApAQCAtMTcwLDkgKzE3MCw5IEBAIExheW91dFJlY3QgU1ZHSW5saW5lVGV4dEJveDo6
bG9jYWxTZWxlY3Rpb25SZWN0KHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkCiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCB0ZXh0U2hvdWxkQmVQYWludGVkKGNvbnN0IFJlbmRlclNWR0lubGlu
ZVRleHQmIHRleHRSZW5kZXJlcikKIHsKLSAgICAvLyBGb250Q2FzY2FkZTo6cGl4ZWxTaXplKCks
IHJldHVybnMgRm9udERlc2NyaXB0aW9uOjpjb21wdXRlZFBpeGVsU2l6ZSgpLCB3aGljaCByZXR1
cm5zICJpbnQoeCArIDAuNSkiLgorICAgIC8vIEZvbnRDYXNjYWRlOjpzaXplKCksIHJldHVybnMg
Rm9udERlc2NyaXB0aW9uOjpjb21wdXRlZFBpeGVsU2l6ZSgpLCB3aGljaCByZXR1cm5zICJpbnQo
eCArIDAuNSkiLgogICAgIC8vIElmIHRoZSBhYnNvbHV0ZSBmb250IHNpemUgb24gc2NyZWVuIGlz
IGJlbG93IHg9MC41LCBkb24ndCByZW5kZXIgYW55dGhpbmcuCi0gICAgcmV0dXJuIHRleHRSZW5k
ZXJlci5zY2FsZWRGb250KCkucGl4ZWxTaXplKCk7CisgICAgcmV0dXJuIHRleHRSZW5kZXJlci5z
Y2FsZWRGb250KCkuc2l6ZSgpOwogfQogCiB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50U2Vs
ZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmNwcAppbmRleCAwYjYzZDZjZGZmYjU1YTQyZWE5MDQ1OThhMDFkMWU2ZTI5YWVmMmZhLi43MGEw
OWUyZjNkMThlZTY5ZDZjN2U5NWE5NTY3YjViNDcwMDMxYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIGZsb2F0IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGlu
ZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdChjb25zdCBTVkdSZW5kZXJTdHlsZSYKICAgICBpZiAo
c3R5bGUuYmFzZWxpbmVTaGlmdCgpID09IEJhc2VsaW5lU2hpZnQ6Okxlbmd0aCkgewogICAgICAg
ICBhdXRvIGJhc2VsaW5lU2hpZnRWYWx1ZUxlbmd0aCA9IHN0eWxlLmJhc2VsaW5lU2hpZnRWYWx1
ZSgpOwogICAgICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnVuaXRUeXBlKCkgPT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVTaGlmdFZh
bHVlTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CisgICAg
ICAgICAgICByZXR1cm4gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdl
KCkgKiBtX2ZvbnQuc2l6ZSgpOwogCiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dChjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lU2hpZnRWYWx1ZUxlbmd0aC52
YWx1ZShsZW5ndGhDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAKaW5kZXggNDhkODBhZTk5
MjZlMDYzZDllZjIxOTI0MmQzZGU3ODE3OGVjZTRlNS4uMWQ3YTM2ZmU4Yzg4YzM4OTlhZWE5NjRm
ZjllMGUyMzQ4MDk3YmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmc6OmNhbGN1bGF0ZUNTU0tlcm5pbmdB
bmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclMKICAgICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBh
dXRvIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+a2VybmluZygpOwogICAgIGlmIChrZXJuaW5nTGVu
Z3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgIGtlcm5pbmcg
PSBrZXJuaW5nTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7
CisgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBt
X2ZvbnQuc2l6ZSgpOwogICAgIGVsc2UgewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0
aENvbnRleHQoY29udGV4dEVsZW1lbnQpOwogICAgICAgICBrZXJuaW5nID0ga2VybmluZ0xlbmd0
aC52YWx1ZShsZW5ndGhDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCmluZGV4IDEzNmYzMWE4ZWJiOTBiY2MyOGRhMDc2OTg2NzMwYzE3Yzk4MjMx
MTguLmVjOWI3MGJmNmM5YzI2Njg2MzQzZjEyMDQ2N2IyNjQ2MmNiNWJkYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJT
dHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYgKGRlY29yYXRpb24uaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3MobGluZVN0eWxlLmNvbXB1dGVkRm9u
dFBpeGVsU2l6ZSgpKTsKKyAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlv
blN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpKTsKICAgICBmbG9h
dCBjb250cm9sUG9pbnREaXN0YW5jZSA9IDA7CiAgICAgZmxvYXQgc3RlcDsKICAgICBmbG9hdCB3
YXZ5T2Zmc2V0ID0gMDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92
ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3Qg
SQogICAgIEdseXBoT3ZlcmZsb3cgb3ZlcmZsb3dSZXN1bHQ7CiAgICAgCiAgICAgaWYgKGRlY29y
YXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7Ci0gICAgICAgIGdldFdh
dnlTdHJva2VQYXJhbWV0ZXJzKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSwgY29u
dHJvbFBvaW50RGlzdGFuY2UsIHN0ZXApOworICAgICAgICBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVy
cyhsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBjb250cm9sUG9pbnREaXN0YW5jZSwgc3Rl
cCk7CiAgICAgICAgIHdhdnlPZmZzZXQgPSB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKTsKICAg
ICAgICAgb3ZlcmZsb3dSZXN1bHQubGVmdCA9IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgb3Zl
cmZsb3dSZXN1bHQucmlnaHQgPSBzdHJva2VUaGlja25lc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggMjljMmJlMDJkZjc0OWU1NjdkZTgyMDg0ODkw
YWI5NzJjZjRkYTMyNi4uNDJkNjhlNWYxODIxYTVkNjQ5NTEzYmM2OTQxZmU4ZWFlMDM1MWYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMjE3LDcg
KzIxNyw3IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKICAgICAgICAgc2NvcGUoKS5zdHlsZVJlc29s
dmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUobV9kb2N1bWVudEVsZW1lbnRTdHls
ZS5nZXQoKSk7CiAKLSAgICAgICAgaWYgKHVwZGF0ZS5jaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgZXhp
c3RpbmdTdHlsZSAmJiBleGlzdGluZ1N0eWxlLT5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAhPSB1
cGRhdGUuc3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKSB7CisgICAgICAgIGlmICh1cGRh
dGUuY2hhbmdlICE9IE5vQ2hhbmdlICYmIGV4aXN0aW5nU3R5bGUgJiYgZXhpc3RpbmdTdHlsZS0+
Y29tcHV0ZWRGb250U2l6ZSgpICE9IHVwZGF0ZS5zdHlsZS0+Y29tcHV0ZWRGb250U2l6ZSgpKSB7
CiAgICAgICAgICAgICAvLyAicmVtIiB1bml0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50
IGVsZW1lbnQncyBmb250IHNpemUgc28gd2UgbmVlZCB0byByZWNvbXB1dGUgZXZlcnl0aGluZy4K
ICAgICAgICAgICAgIC8vIEluIHByYWN0aWNlIHRoaXMgaXMgcmFyZS4KICAgICAgICAgICAgIHNj
b3BlKCkuc3R5bGVSZXNvbHZlci5pbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCmluZGV4IDA4MDAwMTc2YmFjMGZi
OTBmZWEzNTBmZmQ2MmU1NmVjNGJiYzEyOWUuLmU3MGY2MDVlZWJkYjVmZGM5YTNkNTk3N2Y2MDYy
ZmEwNDJiMDM0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKQEAg
LTI0MSw3ICsyNDEsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29u
dmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TKGZsb2F0IHZhbHVlKQogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAg
ZmxvYXQgZm9udFNpemUgPSBzdHlsZS0+Y29tcHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAgYXV0
byBmb250U2l6ZSA9IHN0eWxlLT5jb21wdXRlZEZvbnRTaXplKCk7CiAgICAgaWYgKCFmb250U2l6
ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29u
dmVydFZhbHVlRnJvbUVNU1RvVXNlclVuaXRzKGZsb2F0IHZhbHVlKQogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwogCi0gICAg
cmV0dXJuIHZhbHVlICogc3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAgIHJldHVy
biB2YWx1ZSAqIHN0eWxlLT5jb21wdXRlZEZvbnRTaXplKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPGZs
b2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFMoZmxv
YXQgdmFsdWUpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349247</attachid>
            <date>2018-09-07 22:47:03 -0700</date>
            <delta_ts>2022-08-29 21:18:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-46987-20180907224702.patch</filename>
            <type>text/plain</type>
            <size>41020</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA0MzE3ZjkxODIyMTc3
YjhlOTIyNDEwZDcyMTQ1ZDRmYmY5NDk5My4uZTdiYjg3NzJiZWVjZDIxODg1NjEzODk2MGI2MGNi
N2NhM2IxMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDE4LTA5LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhY3Rpb25h
bCBmb250IHNpemVzIGFyZSBpbXByb3Blcmx5IGhhbmRsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2OTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZvbnQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvc2ltcGxlL1NpbXBsZUxp
bmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6U2ltcGxlTGluZUJyZWFr
ZXI6OmFkanVzdFNwbGl0UG9zaXRpb25XaXRoSHlwaGVuYXRpb24gY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKToKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VQcm9w
ZXJ0eSk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Rm9udERlc2NyaXB0aW9uS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnBpeGVsU2l6ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmNvbXB1dGVkUGl4ZWxTaXpl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpsYXN0UmVzb3J0
RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpmb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU2l6ZUZvckZvbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RlcHBlckNvbnRyb2xTaXplRm9yRm9udCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNv
bHVtbkdhcCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb2x1bW5HYXAg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZE92ZXJoYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlS
dW46OmdldE92ZXJoYW5nIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURp
cmVjdGlvbkxpbmVCb3VuZHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdpZHRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6YWRqdXN0Q2hlY2tib3hTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OmNvbnRyb2xTaXplRm9yRm9udCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpoeXBoZW5Qb3NpdGlvbkZvckZyYWdtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0
cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpzdHJldGNoVmVydGlj
YWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjb21wdXRl
ZExpbmVIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRTaG91bGRCZVBhaW50ZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxp
bmVTaGlmdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5n
aW5lU3BhY2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZzo6Y2FsY3VsYXRlQ1NTS2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21FTVNUb1Vz
ZXJVbml0cyBjb25zdCk6CisKIDIwMTgtMDktMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJUQ1J0cFJlY2VpdmVyOjp0cmFjayBzaG91bGQgcmV0dXJuIGEg
TWVkaWFTdHJlYW1UcmFjayByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAyZGM1NzM4MmZiYTk5ZjI0MjRiODZlZmNmMDgyZjYwYjRiYjViMWM1Li4wNjgxNWEx
YjQwYTg0NzVmYTNiZTE5OTFkYWU0OTk4MDM2ZjJhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHBh
cgogCiAgICAgLy8gSW1wb3J0YW50OiBJbnRyaW5zaWMgbWFyZ2lucyBnZXQgYWRkZWQgdG8gY29u
dHJvbHMgYmVmb3JlIHRoZSB0aGVtZSBoYXMgYWRqdXN0ZWQgdGhlIHN0eWxlLCBzaW5jZSB0aGUg
dGhlbWUgd2lsbAogICAgIC8vIGFsdGVyIGZvbnRzIGFuZCBoZWlnaHRzL3dpZHRocy4KLSAgICBp
ZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCkgPj0gMTEpIHsKKyAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVu
dD4oZWxlbWVudCkgJiYgc3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpID49IDExKSB7CiAgICAgICAg
IC8vIERvbid0IGFwcGx5IGludHJpbnNpYyBtYXJnaW5zIHRvIGltYWdlIGJ1dHRvbnMuIFRoZSBk
ZXNpZ25lciBrbm93cyBob3cgYmlnIHRoZSBpbWFnZXMgYXJlLAogICAgICAgICAvLyBzbyB3ZSBo
YXZlIHRvIHRyZWF0IGFsbCBpbWFnZSBidXR0b25zIGFzIHRob3VnaCB0aGV5IHdlcmUgZXhwbGlj
aXRseSBzaXplZC4KICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkg
fHwgIWRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KS5pc0ltYWdlQnV0dG9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjI4ZDg0NmY2ODc2
MjhjM2MwMzBmNDcyOWM2YWMyNTEwMjU1MjIyNy4uYmE1OTExY2M1NmJmYWMwYzc5ODNkY2QxN2Fk
YTlhOTk1Nzc2ZTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtMTA0NSw5ICsxMDQ1LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZv
ck5vZGUoTm9kZSYgbm9kZSkKICAgICBpZiAoIXJlbmRlckJveC5oZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaW50IGJvdHRvbU1hcmdpbiA9IHJlbmRlckJveC5jb2xsYXBz
ZWRNYXJnaW5BZnRlcigpOwotICAgIGludCBmb250U2l6ZSA9IHJlbmRlckJveC5zdHlsZSgpLmZv
bnREZXNjcmlwdGlvbigpLmNvbXB1dGVkUGl4ZWxTaXplKCk7Ci0gICAgcmV0dXJuIGJvdHRvbU1h
cmdpbiAqIDIgPj0gZm9udFNpemU7CisgICAgYXV0byBib3R0b21NYXJnaW4gPSByZW5kZXJCb3gu
Y29sbGFwc2VkTWFyZ2luQWZ0ZXIoKTsKKyAgICBhdXRvIGZvbnRTaXplID0gcmVuZGVyQm94LnN0
eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0Pihib3R0b21NYXJnaW4pICogMiA+PSBmb250U2l6ZTsKIH0KIAogc3RhdGlj
IGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRF
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCBlMjdkOTUxOTQ4MTliMDJlOTQxNGQ0OWJmYThmYWZmMmVh
MTc2MWRlLi4yMTk4ODNkMmIwMWQ0MmUxZTEwMzZmNzRjYTQ3ZjYyNzQxZGMyZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpmb250KCkgY29uc3QKICAgICBpZiAoZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkg
PT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbCkKICAgICAgICAgc2VyaWFsaXplZEZvbnQuYXBwZW5k
TGl0ZXJhbCgic21hbGwtY2FwcyAiKTsKIAotICAgIHNlcmlhbGl6ZWRGb250LmFwcGVuZE51bWJl
cihmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSk7CisgICAgc2VyaWFsaXplZEZv
bnQuYXBwZW5kTnVtYmVyKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSk7CiAgICAgc2Vy
aWFsaXplZEZvbnQuYXBwZW5kTGl0ZXJhbCgicHgiKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBmb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L3NpbXBs
ZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy90ZXh0bGF5b3V0L3NpbXBsZS9TaW1wbGVMaW5lQnJlYWtlci5jcHAKaW5kZXggYTJh
NzRlNzc0MDZmMzNkNzQwOTU5Zjc2MWQxZTBhNTE5NTliM2FiYi4uMzE5ZjgzNTA3YjgyZWNjZWFj
MzJkZmVjODU2MTYwYTYxZDkzZGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dGxheW91dC9zaW1wbGUvU2ltcGxlTGluZUJyZWFrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQv
c2ltcGxlL1NpbXBsZUxpbmVCcmVha2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFBvc2l0aW9uPiBTaW1wbGVMaW5lQnJlYWtlcjo6YWRqdXN0U3BsaXRQb3Np
dGlvbldpdGhIeXBoZW5hCiAgICAgaWYgKG1fY3VycmVudExpbmUuaGFzQ29udGVudCgpKQogICAg
ICAgICBhZGp1c3RlZEF2YWlsYWJsZVdpZHRoICs9IG1fc3R5bGUuZm9udC5zcGFjZVdpZHRoKCk7
CiAKLSAgICBpZiAoIWVub3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVX
aWR0aCwgbV9zdHlsZS5mb250LnBpeGVsU2l6ZSgpKSkKKyAgICBpZiAoIWVub3VnaFdpZHRoRm9y
SHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCwgbV9zdHlsZS5mb250LnNpemUoKSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBGaW5kIHRoZSBzcGxpdCBwb3NpdGlvbiB3
aGVyZSBoeXBoZW4gc3VyZWx5IGZpdHMgKHdlIG1pZ2h0IGJlIGFibGUgdG8gZml0IHRoZSBoeXBo
ZW4gYXQgdGhlIHNwbGl0IHBvc2l0aW9uKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCA0Y2IyOGNjYWExYjA4NGVlNGYwNWVmMTRkM2Y4NDM4
NmJmZjE1MjI0Li4wMmM4NWVhOTQ3ODRlNGU2ODE5ZWUzYTMyMDYyNWM2ZjEyMzBhYTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIFJlZlB0cjxGb250PiBDYWNoZWRTVkdGb250OjpjcmVhdGVGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjCiBGb250UGxhdGZvcm1EYXRhIENhY2hl
ZFNWR0ZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVh
dHVyZVNldHRpbmdzJiBmb250RmFjZUZlYXR1cmVzLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdz
JiBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxp
dGllcyBmb250RmFjZUNhcGFiaWxpdGllcykKIHsKICAgICBpZiAobV9leHRlcm5hbFNWR0RvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSwgYm9sZCwgaXRhbGljKTsKKyAgICAgICAgcmV0dXJuIEZvbnRQbGF0
Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBib2xkLCBpdGFsaWMpOwog
ICAgIHJldHVybiBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVz
Y3JpcHRpb24sIGJvbGQsIGl0YWxpYywgZm9udEZhY2VGZWF0dXJlcywgZm9udEZhY2VWYXJpYW50
U2V0dGluZ3MsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCmluZGV4IGM2YjAzNTE3NTk1ZmI2MzU3Mjg1ZTlkNzc4NGViODQxNjdiZTI5
MzguLjZiMzQ0MTI5MzBkNThhMWEzYzdmYzQ1YTIzYWIxN2Q4MzJkZTI4OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgUHJpbnRD
b250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGludCBwYQogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImxpbmUtaGVpZ2h0Iikp
CiAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihzdHlsZS0+bGluZUhlaWdodCgpLnZhbHVl
KCkpOwogICAgIGlmICghc3RyY21wKHByb3BlcnR5TmFtZSwgImZvbnQtc2l6ZSIpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVk
UGl4ZWxTaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpKTsKICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5h
bWUsICJmb250LWZhbWlseSIpKQogICAgICAgICByZXR1cm4gc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmZpcnN0RmFtaWx5KCk7CiAgICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAic2l6ZSIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCBhYWNhZDI4NTJiZWZlOTEwNDA4
MGUzMGQ2ZTc1Y2RkYWQyMTg5YjdiLi42ZGU0NjZlMTg4YzA2MzZhZDRkNmVmMzAzODQwOTM2MTEw
OWYyZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtMjA2LDcgKzIwNiw3
IEBAIENHUmVjdCBGcmFtZTo6cmVuZGVyUmVjdEZvclBvaW50KENHUG9pbnQgcG9pbnQsIGJvb2wq
IGlzUmVwbGFjZWQsIGZsb2F0KiBmb250U2l6CiAjaWYgQ0hFQ0tfRk9OVF9TSVpFCiAgICAgICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogdGV4dFJlbmRlcmVyID0gaGl0UmVuZGVyZXI7IHRleHRS
ZW5kZXJlcjsgdGV4dFJlbmRlcmVyID0gdGV4dFJlbmRlcmVyLT50cmF2ZXJzZU5leHQoaGl0UmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRSZW5kZXJlci0+aXNUZXh0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgKmZvbnRTaXplID0gdGV4dFJlbmRlcmVyLT5mb250KHRydWUp
LnBpeGVsU2l6ZSgpOworICAgICAgICAgICAgICAgICAgICAqZm9udFNpemUgPSB0ZXh0UmVuZGVy
ZXItPmZvbnQodHJ1ZSkuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDg1NjRkYjljMWUwZjI1ZTA4NDY3ZjQ4YTg0MGEyZWEx
YjE4Y2MxY2EuLjIwYjI1ODc4ZTdhNjJlNWI3ZTMxMmQ5ZTBmZjQ2ZjVmYzU4MWZiYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03MSw3ICs3
MSw3IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktl
eSgpID0gZGVmYXVsdDsKIAogICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUo
KSkKICAgICAgICAgLCBtX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0KGRlc2NyaXB0aW9uLmZvbnRTZWxl
Y3Rpb25SZXF1ZXN0KCkpCiAgICAgICAgICwgbV9mbGFncyhtYWtlRmxhZ3NLZXkoZGVzY3JpcHRp
b24pKQogICAgICAgICAsIG1fbG9jYWxlKGRlc2NyaXB0aW9uLmxvY2FsZSgpKQpAQCAtMTU1LDcg
KzE1NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNIYXNoVGFibGVE
ZWxldGVkU2l6ZSA9IDB4RkZGRkZGRkZVOwogCiAgICAgLy8gRm9udENhc2NhZGU6OmxvY2FsZSgp
IGlzIGV4cGxpY2l0bHkgbm90IGluY2x1ZGVkIGluIHRoaXMgc3RydWN0LgotICAgIHVuc2lnbmVk
IG1fc2l6ZSB7IDAgfTsKKyAgICBmbG9hdCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlv
blJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKICAgICBzdGQ6OmFycmF5PHVuc2lnbmVk
LCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07CiAgICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggZWFh
MDhlMDEyZmE4NmUyYjM0ZjM3YWViNjJiMjcyNjBlYzM3ZGU4Yy4uMWQzMGI1Yzg2NmZiYzQ1MDFh
NGUzZDdhMmQ5ZDNjYjVkMzE5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xMTMsNyArMTEzLDYgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGVzY3JpcHRpb247IH0KIAotICAgIGludCBwaXhlbFNpemUoKSBjb25zdCB7
IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFBpeGVsU2l6ZSgpOyB9CiAgICAgZmxv
YXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgp
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9y
PiYmID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IDEzZmNkYjNjZjVjM2ZlMzUxOTBlYzNjMTIw
NGQ2M2Y4YWQ0NDIwYzMuLmU0ZGUxZmVhMmUzMjFkY2MwMjdmOWI4MzM3N2JmYWY0YTk0OGY3M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oCkBAIC02Myw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KIAogICAgIGZsb2F0IGNvbXB1dGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0
ZWRTaXplOyB9Ci0gICAgdW5zaWduZWQgY29tcHV0ZWRQaXhlbFNpemUoKSBjb25zdCB7IHJldHVy
biB1bnNpZ25lZChtX2NvbXB1dGVkU2l6ZSArIDAuNWYpOyB9CiAgICAgc3RkOjpvcHRpb25hbDxG
b250U2VsZWN0aW9uVmFsdWU+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlv
blJlcXVlc3Quc2xvcGU7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGg7IH0KICAgICBGb250U2VsZWN0
aW9uVmFsdWUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250U2VsZWN0aW9uUmVxdWVzdC53
ZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBjNDgxMDIwMzZjYjc4YmE2YzU5
ZDAxOTEwMWY5NmMyMzQ0OWU0N2UwLi41Y2YwMzZlNTlmNDQ3YWE4YWExMWEyZTViYTUwOWQxMzE0
MWUxNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyog
Zm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyogZm9udEZhY2VWYXJp
YW50U2V0dGluZ3MsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgZm9udEZhY2VD
YXBhYmlsaXRpZXMpCiB7Ci0gICAgZmxvYXQgc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNp
emUoKTsKIAogICAgIGF1dG8gZm9udCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgZm9udERlc2Ny
aXB0aW9uLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZVZhcmlhbnRTZXR0aW5ncywgZm9udEZh
Y2VDYXBhYmlsaXRpZXMsIHNpemUpOwogCkBAIC0xNDg3LDE1ICsxNDg3LDE1IEBAIFJlZjxGb250
PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpCiAgICAgLy8gTGFzdFJlc29ydCBpcyBndWFyYW50ZWVkIHRvIGJlIG5v
bi1udWxsLgogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDExMDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCiAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUxhc3RSZXNvcnQoKSk7Ci0gICAgYXV0byBmb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0
KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAg
YXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERl
c2NyaXB0b3IuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikp
OwogI2Vsc2UKICAgICAvLyBFdmVuIGlmIEhlbHZldGljYSBkb2Vzbid0IGV4aXN0LCBDVEZvbnRD
cmVhdGVXaXRoTmFtZSB3aWxsIHJldHVybgogICAgIC8vIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBh
IEdyYXBoaWNzRm9udCB3aGljaCByZXByZXNlbnRzIExhc3RSZXNvcnQuCi0gICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBudWxscHRyKSk7CisgICAgYXV0byBmb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwgbnVsbHB0cikpOwogI2VuZGlmCiAgICAgYm9vbCBz
eW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlOwogICAgIHN0ZDo6dGllKHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY09ibGlxdWUpID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Lmdl
dCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwotICAgIEZvbnRQbGF0Zm9y
bURhdGEgcGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGEoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24o
KSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSk7CiAgICAgcmV0dXJuIGZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1E
YXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDc0OWE1ODUwNTc0
MzRmYTNjZmY0YmRkZDU2MTc2MjIzMzlmODdmMWEuLmQ2OWQzOWM3NTVhNmJlOGU2N2UxYTlmMmMx
NTAyZDc2OTk3ODQ0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICBhdXRvIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0
ZXMobV9mb250RGVzY3JpcHRvci5nZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOwogICAgIEFTU0VS
VChtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKIAotICAgIGludCBzaXplID0gZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCk7CisgICAgYXV0byBzaXplID0gZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkU2l6ZSgpOwogICAgIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGZvbnRE
ZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpOwogICAgIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJp
YW50ID0gZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOwogICAgIFJldGFpblB0cjxDVEZv
bnRSZWY+IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggOTU3ZjdjNTA3Mjg4NDFkNGQwNTAxYmJjYjIx
MTZlYzZkMTY2ZGE1MC4uZTA5MjY1NGY2MDRkN2UxNWQ4NTRhMzU5NGYxNTYxMDgyNWNmNjhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3
IEBAIFRoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKIAogc3RhdGljIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250
U2l6ZSA9IGZvbnQucGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgp
OwogICAgIGlmIChmb250U2l6ZSA+PSAxNikKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVS
ZWd1bGFyOwogICAgIGlmIChmb250U2l6ZSA+PSAxMSkKQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0
aWMgY29uc3Qgc3RkOjphcnJheTxJbnRTaXplLCAzPiYgc3RlcHBlclNpemVzKCkKIC8vIHNob3Vs
ZCBiZSBlcXVhbCB0byBvciBsZXNzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgdGV4dCBmaWVsZCBo
ZWlnaHQsCiBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250KQogewotICAgIGludCBmb250U2l6ZSA9IGZvbnQucGl4ZWxT
aXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgpOwogICAgIGlmIChmb250U2l6
ZSA+PSAxOCkKICAgICAgICAgcmV0dXJuIE5TQ29udHJvbFNpemVSZWd1bGFyOwogICAgIGlmIChm
b250U2l6ZSA+PSAxMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggMTk0MTQyNzYxM2UyM2MxZTE1NDE0MzM2MzJlN2FlYjQzMWZiM2M1NC4uOTc1
ZTVmZWQ1NGQzNDUwMzQ2ZGE0YmVhNjE1YThjNGJkMGFmZTY0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM2OSw3ICszNjksNyBAQCBib29s
IFJlbmRlckJsb2NrRmxvdzo6cmVjb21wdXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgoKQog
TGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbHVtbkdhcCgpIGNvbnN0CiB7CiAgICAgaWYg
KHN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCku
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUoKTsgLy8gIjFlbSIgaXMgcmVjb21t
ZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0Y2hlcyA8cD4gbWFyZ2lucy4KKyAg
ICAgICAgcmV0dXJuIHN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8v
ICIxZW0iIGlzIHJlY29tbWVuZGVkIGFzIHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMg
PHA+IG1hcmdpbnMuCiAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuY29sdW1uR2Fw
KCkubGVuZ3RoKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggNzUxZTgx
MDYxNWEwZTRmZDU5OTJkNDc3ZTY0YzIzMDhhMzE1OTE4MS4uMTQ2ZjY0MDkxYTBiOWEyZDlmNjc4
Nzc4YWI0ZjdhMWRkZDAyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Y29sdW1uR2FwKCkgY29uc3QKICAgICAvLyBnbyB0byB0aGUg
cGFyZW50IGJsb2NrIHRvIGdldCB0aGUgZ2FwLgogICAgIFJlbmRlckJsb2NrRmxvdyYgcGFyZW50
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpwYXJlbnQoKSk7CiAgICAgaWYgKHBh
cmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkuaXNOb3JtYWwoKSkKLSAgICAgICAgcmV0dXJu
IHBhcmVudEJsb2NrLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRQaXhlbFNpemUo
KTsgLy8gIjFlbSIgaXMgcmVjb21tZW5kZWQgYXMgdGhlIG5vcm1hbCBnYXAgc2V0dGluZy4gTWF0
Y2hlcyA8cD4gbWFyZ2lucy4KKyAgICAgICAgcmV0dXJuIHBhcmVudEJsb2NrLnN0eWxlKCkuZm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7IC8vICIxZW0iIGlzIHJlY29tbWVuZGVkIGFz
IHRoZSBub3JtYWwgZ2FwIHNldHRpbmcuIE1hdGNoZXMgPHA+IG1hcmdpbnMuCiAgICAgcmV0dXJu
IHZhbHVlRm9yTGVuZ3RoKHBhcmVudEJsb2NrLnN0eWxlKCkuY29sdW1uR2FwKCkubGVuZ3RoKCks
IHBhcmVudEJsb2NrLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4IDE2MWU5NGE1MThmODk5ZjRjNzIw
MjEwZjEyN2YzNmU1ODBhMDM5NjguLjFjZTUzOTFkMDg2NWE3ZTQ2MGVlZjJiMjQyNjVhOTA5YmRh
ZGEyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRPdmVyaGFuZyhib29sIGZpcnN0TGlu
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJ1YnlCYXNlU3R5bGUgPSBmaXJzdExpbmUg
PyBydWJ5QmFzZS5maXJzdExpbmVTdHlsZSgpIDogcnVieUJhc2Uuc3R5bGUoKTsKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyByZW5kZXJlci0+Zmlyc3RMaW5lU3R5
bGUoKSA6IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRQ
aXhlbFNpemUoKSA8PSBydWJ5QmFzZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAg
IHJldHVybiBzdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgPD0gcnVieUJhc2VTdHlsZS5jb21wdXRl
ZEZvbnRTaXplKCk7CiB9CiAKIHZvaWQgUmVuZGVyUnVieVJ1bjo6Z2V0T3ZlcmhhbmcoYm9vbCBm
aXJzdExpbmUsIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciwgZmxvYXQmIHN0YXJ0T3ZlcmhhbmcsIGZsb2F0JiBlbmRPdmVyaGFuZykgY29uc3QK
QEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmdldE92ZXJoYW5nKGJvb2wg
Zmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbgogICAgIC8vIFdlIGNh
biBvdmVyaGFuZyB0aGUgcnVieSBieSBubyBtb3JlIHRoYW4gaGFsZiB0aGUgd2lkdGggb2YgdGhl
IG5laWdoYm9yaW5nIHRleHQKICAgICAvLyBhbmQgbm8gbW9yZSB0aGFuIGhhbGYgdGhlIGZvbnQg
c2l6ZS4KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcnVieVRleHRTdHlsZSA9IGZpcnN0TGluZSA/
IHJ1YnlUZXh0LT5maXJzdExpbmVTdHlsZSgpIDogcnVieVRleHQtPnN0eWxlKCk7Ci0gICAgZmxv
YXQgaGFsZldpZHRoT2ZGb250U2l6ZSA9IHJ1YnlUZXh0U3R5bGUuY29tcHV0ZWRGb250UGl4ZWxT
aXplKCkgLyAyLjsKKyAgICBmbG9hdCBoYWxmV2lkdGhPZkZvbnRTaXplID0gcnVieVRleHRTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCkgLyAyOwogICAgIGlmIChzdGFydE92ZXJoYW5nKQogICAgICAg
ICBzdGFydE92ZXJoYW5nID0gc3RkOjptaW4oc3RhcnRPdmVyaGFuZywgc3RkOjptaW4oZG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnN0YXJ0UmVuZGVyZXIpLm1pbkxvZ2ljYWxXaWR0aCgpLCBoYWxmV2lk
dGhPZkZvbnRTaXplKSk7CiAgICAgaWYgKGVuZE92ZXJoYW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5VGV4dC5jcHAKaW5kZXggZjVjZDlmMTM1MDYxOTg5YThhZTFlMTA4
ODFhNWNiNTllYjE2NWU3Ny4uOTFjOTM5ZGIwMzAyNTk3YTZiMzU2Njc5MDVlMzBmNzI0MDhjNGIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgUmVuZGVyUnVieVRleHQ6OmFkanVzdElubGluZURpcmVjdGlvbkxp
bmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291CiAgICAgLy8gcnVieSBjaGFyYWN0
ZXIgb24gZWFjaCBzaWRlLgogICAgIGZsb2F0IGluc2V0ID0gKGxvZ2ljYWxXaWR0aCAtIG1heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCkgLyAoZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCArIDEpOwog
ICAgIGlmIChleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQotICAgICAgICBpbnNldCA9IHN0ZDo6
bWluPGZsb2F0PigyICogc3R5bGUoKS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSwgaW5zZXQpOwor
ICAgICAgICBpbnNldCA9IHN0ZDo6bWluKDIgKiBzdHlsZSgpLmNvbXB1dGVkRm9udFNpemUoKSwg
aW5zZXQpOwogCiAgICAgbG9naWNhbExlZnQgKz0gaW5zZXQgLyAyOwogICAgIGxvZ2ljYWxXaWR0
aCAtPSBpbnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA1
NDAxM2UzNDc3MjRhYzYzOTgxY2M5MGJiYzJjYThkNWYxZmEwMzFjLi5iNWEwZjYyOGIyMzkwYTY3
ZGJkY2YzNDJhY2EyMjkxM2NhYTRlNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVu
dFdpZHRoKFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAg
ICBoeXBoZW5Mb2NhdGlvbnMucmV2ZXJzZSgpOwogCiAgICAgLy8gRklYTUU6IEJyZWFraW5nIHRo
ZSBzdHJpbmcgYXQgdGhlc2UgcGxhY2VzIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMgaXMgY29tcGxl
dGVseSBicm9rZW4gd2l0aCBjb21wbGV4IHRleHQuCi0gICAgZmxvYXQgbWluaW11bUZyYWdtZW50
V2lkdGhUb0NvbnNpZGVyID0gZm9udC5waXhlbFNpemUoKSAqIDUgLyA0ICsgaHlwaGVuV2lkdGgo
cmVuZGVyZXIsIGZvbnQpOworICAgIGZsb2F0IG1pbmltdW1GcmFnbWVudFdpZHRoVG9Db25zaWRl
ciA9IGZvbnQuc2l6ZSgpICogNSAvIDQgKyBoeXBoZW5XaWR0aChyZW5kZXJlciwgZm9udCk7CiAg
ICAgZmxvYXQgbWF4RnJhZ21lbnRXaWR0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgayA9IDA7IGsg
PCBoeXBoZW5Mb2NhdGlvbnMuc2l6ZSgpOyArK2spIHsKICAgICAgICAgaW50IGZyYWdtZW50TGVu
Z3RoID0gaHlwaGVuTG9jYXRpb25zW2tdIC0gc3VmZml4U3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggY2I0NjY0NGYzNTg0M2E3Y2E5ZGZjNDJi
MmE5OTcwN2M4Zjk0Njc3Mi4uMmM1OTkxNDBiNWM2NGYyNzdhMDFiZjdlOTAzM2Q2NmJkZjRhMTc4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzU0
LDcgKzM1NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdENoZWNrYm94U3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29uCiAgICAgaWYgKCFzdHlsZS53aWR0
aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9u
dFBpeGVsU2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9
KTsKICAgICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKIH0KQEAgLTQ3NSw3ICs0
NzUsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0CiAgICAgaWYgKCFzdHlsZS53aWR0aCgpLmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgIXN0eWxlLmhlaWdodCgpLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpbnQgc2l6ZSA9IHN0ZDo6bWF4KHN0eWxlLmNvbXB1dGVkRm9udFBpeGVs
U2l6ZSgpLCAxMFUpOworICAgIGludCBzaXplID0gc3RkOjptYXgoc3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpLCAxMC4wZik7CiAgICAgc3R5bGUuc2V0V2lkdGgoeyBzaXplLCBGaXhlZCB9KTsKICAg
ICBzdHlsZS5zZXRIZWlnaHQoeyBzaXplLCBGaXhlZCB9KTsKICAgICBzdHlsZS5zZXRCb3JkZXJS
YWRpdXMoeyBzaXplIC8gMiwgc2l6ZSAvIDIgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYzczNzVmYTAxOGUwMGNmOWY4NjJmMTQ0MWRiNjkxM2Fk
NzIzMjJmYi4uMzIyMzE5Mzk1ZDFjNWNjZmFkMzVkNmRlMjI1NTE2MDZhYmQyZTdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTAzNCw3ICsxMDM0
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvKSBjb25zdAogCiBOU0NvbnRyb2xTaXplIFJlbmRlclRoZW1lTWFjOjpjb250
cm9sU2l6ZUZvckZvbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIGlu
dCBmb250U2l6ZSA9IHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAgIGF1dG8gZm9u
dFNpemUgPSBzdHlsZS5jb21wdXRlZEZvbnRTaXplKCk7CiAgICAgaWYgKGZvbnRTaXplID49IDE2
KQogICAgICAgICByZXR1cm4gTlNDb250cm9sU2l6ZVJlZ3VsYXI7CiAgICAgaWYgKGZvbnRTaXpl
ID49IDExKQpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0Rm9u
dEZyb21Db250cm9sU2l6ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLAogCiBO
U0NvbnRyb2xTaXplIFJlbmRlclRoZW1lTWFjOjpjb250cm9sU2l6ZUZvclN5c3RlbUZvbnQoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewotICAgIGludCBmb250U2l6ZSA9IHN0eWxl
LmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpOworICAgIGF1dG8gZm9udFNpemUgPSBzdHlsZS5jb21w
dXRlZEZvbnRTaXplKCk7CiAgICAgaWYgKGZvbnRTaXplID49IFtOU0ZvbnQgc3lzdGVtRm9udFNp
emVGb3JDb250cm9sU2l6ZTpOU0NvbnRyb2xTaXplUmVndWxhcl0pCiAgICAgICAgIHJldHVybiBO
U0NvbnRyb2xTaXplUmVndWxhcjsKICAgICBpZiAoZm9udFNpemUgPj0gW05TRm9udCBzeXN0ZW1G
b250U2l6ZUZvckNvbnRyb2xTaXplOk5TQ29udHJvbFNpemVTbWFsbF0pCkBAIC0xNjIyLDcgKzE2
MjIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIHBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudHMocmVuZGVyZXIsIHBhaW50SW5mbywgYm91bmRzKTsKIAogICAgIC8vIFNpbmNlIHdl
IGFjdHVhbGx5IGtub3cgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wgaGVyZSwgd2UgcmVzdHJpY3Qg
dGhlIGZvbnQgc2NhbGUgdG8gbWFrZSBzdXJlIHRoZSBhcnJvd3Mgd2lsbCBmaXQgdmVydGljYWxs
eSBpbiB0aGUgYm91bmRzCi0gICAgZmxvYXQgZm9udFNjYWxlID0gc3RkOjptaW4ocmVuZGVyZXIu
c3R5bGUoKS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6ZSwgYm91bmRzLmhl
aWdodCgpIC8gKGJhc2VBcnJvd0hlaWdodCAqIDIgKyBiYXNlU3BhY2VCZXR3ZWVuQXJyb3dzKSk7
CisgICAgZmxvYXQgZm9udFNjYWxlID0gc3RkOjptaW4ocmVuZGVyZXIuc3R5bGUoKS5jb21wdXRl
ZEZvbnRTaXplKCkgLyBiYXNlRm9udFNpemUsIGJvdW5kcy5oZWlnaHQoKSAvIChiYXNlQXJyb3dI
ZWlnaHQgKiAyICsgYmFzZVNwYWNlQmV0d2VlbkFycm93cykpOwogICAgIGZsb2F0IGNlbnRlclkg
PSBib3VuZHMueSgpICsgYm91bmRzLmhlaWdodCgpIC8gMi4wZjsKICAgICBmbG9hdCBhcnJvd0hl
aWdodCA9IGJhc2VBcnJvd0hlaWdodCAqIGZvbnRTY2FsZTsKICAgICBmbG9hdCBhcnJvd1dpZHRo
ID0gYmFzZUFycm93V2lkdGggKiBmb250U2NhbGU7CkBAIC0xNzMwLDcgKzE3MzAsNyBAQCBMZW5n
dGhCb3ggUmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkgY29ucwogICAgIH0KIAogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkg
PT0gTWVudWxpc3RCdXR0b25QYXJ0KSB7Ci0gICAgICAgIGZsb2F0IGFycm93V2lkdGggPSBiYXNl
QXJyb3dXaWR0aCAqIChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6
ZSk7CisgICAgICAgIGZsb2F0IGFycm93V2lkdGggPSBiYXNlQXJyb3dXaWR0aCAqIChzdHlsZS5j
b21wdXRlZEZvbnRTaXplKCkgLyBiYXNlRm9udFNpemUpOwogICAgICAgICBmbG9hdCByaWdodFBh
ZGRpbmcgPSBjZWlsZihhcnJvd1dpZHRoICsgKGFycm93UGFkZGluZ0JlZm9yZSArIGFycm93UGFk
ZGluZ0FmdGVyICsgcGFkZGluZ0JlZm9yZVNlcGFyYXRvcikgKiBzdHlsZS5lZmZlY3RpdmVab29t
KCkpOwogICAgICAgICBmbG9hdCBsZWZ0UGFkZGluZyA9IHN0eWxlZFBvcHVwUGFkZGluZ0xlZnQg
KiBzdHlsZS5lZmZlY3RpdmVab29tKCk7CiAgICAgICAgIGlmIChzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpSVEwpCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBQb3B1cE1lbnVTdHls
ZTo6UG9wdXBNZW51U2l6ZSBSZW5kZXJUaGVtZU1hYzo6cG9wdXBNZW51U2l6ZShjb25zdCBSZW5k
ZXJTdHlsZSYgcwogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBj
b25zdAogewotICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6
ZSgpIC8gYmFzZUZvbnRTaXplOworICAgIGZsb2F0IGZvbnRTY2FsZSA9IHN0eWxlLmNvbXB1dGVk
Rm9udFNpemUoKSAvIGJhc2VGb250U2l6ZTsKIAogICAgIHN0eWxlLnJlc2V0UGFkZGluZygpOwog
ICAgIHN0eWxlLnNldEJvcmRlclJhZGl1cyhJbnRTaXplKGludChiYXNlQm9yZGVyUmFkaXVzICsg
Zm9udFNjYWxlIC0gMSksIGludChiYXNlQm9yZGVyUmFkaXVzICsgZm9udFNjYWxlIC0gMSkpKTsg
Ly8gRklYTUU6IFJvdW5kIHVwPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCmluZGV4IDE5OTk3NjQ3ODlkYjU3MDYwZmYyNDFjNTliZWRhOWJlZmM5MDc1ZGMuLjE3
NWFmMGEzMjk3ZWRiMmZiYzU0NDA1ODE3YjNlNTFmNmNmM2ZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEwMjYsNyArMTAyNiw3IEBAIExheW91
dFVuaXQgUm9vdElubGluZUJveDo6dmVydGljYWxQb3NpdGlvbkZvckJveChJbmxpbmVCb3gqIGJv
eCwgVmVydGljYWxQb3NpdGlvCiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRMaW5l
U3R5bGUgPSBmaXJzdExpbmUgPyBwYXJlbnQtPmZpcnN0TGluZVN0eWxlKCkgOiBwYXJlbnQtPnN0
eWxlKCk7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gcGFyZW50TGluZVN0eWxl
LmZvbnRDYXNjYWRlKCk7CiAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9
IGZvbnQuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgaW50IGZvbnRTaXplID0gZm9udC5waXhlbFNp
emUoKTsKKyAgICAgICAgYXV0byBmb250U2l6ZSA9IGZvbnQuc2l6ZSgpOwogCiAgICAgICAgIExp
bmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24gPSBwYXJlbnQtPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGUwYzdiZWE3MWEwY2Yw
N2FmM2ViMDQyYWY3MjNhOTk2Y2Q1M2M4YmIuLmU0YTliN2Q0MmE1NzFlMmQ1OGZhMDUwNDRmZDM3
OGY2N2IzOGUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gaHlwaGVuUG9zaXRpb25Gb3JGcmFnbWVudChTcGxpdEZyYWdtZW50RGF0YSBzcGxpdAogICAg
IGF1dG8gYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVdpZHRoIC0gc3R5bGUuaHlw
aGVuU3RyaW5nV2lkdGg7CiAgICAgaWYgKCFsaW5lLmlzRW1wdHkoKSkKICAgICAgICAgYWRqdXN0
ZWRBdmFpbGFibGVXaWR0aCArPSBzdHlsZS5mb250LnNwYWNlV2lkdGgoKTsKLSAgICBpZiAoIWVu
b3VnaFdpZHRoRm9ySHlwaGVuYXRpb24oYWRqdXN0ZWRBdmFpbGFibGVXaWR0aCwgc3R5bGUuZm9u
dC5waXhlbFNpemUoKSkpCisgICAgaWYgKCFlbm91Z2hXaWR0aEZvckh5cGhlbmF0aW9uKGFkanVz
dGVkQXZhaWxhYmxlV2lkdGgsIHN0eWxlLmZvbnQuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIG1pZ2h0IGJlIGFibGUgdG8gZml0IHRoZSBoeXBoZW4g
YXQgdGhlIHNwbGl0IHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA5OGU4OGRjNDgwNWQ2YTVkYTdhYTU0MjA1
ZGRiMTZlNzQxNjk4OTgwLi4yYTM4NTRiNzA0MGVmNDdlODVjZTM3M2JkODNkNzNmYjE1OWE3ZmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpw
YWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAg
VU5VU0VEX1BBUkFNKHRleHRPcmlnaW4pOwogI2VuZGlmCiAgICAgQVNTRVJUKG1fZm9udCk7Ci0g
ICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRo
aWNrbmVzcyhtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgZmxvYXQg
dGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyht
X2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkpOwogICAgIG1fY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3MpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4gPSBib3hPcmlnaW47CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBj
b25zdCBGbAogICAgICAgICBhdXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHlsZVRv
U3Ryb2tlU3R5bGUoc3R5bGUpOwogCiAgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlOjpXYXZ5KQotICAgICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29u
dGV4dCwgc3RhcnQsIGVuZCwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIG1fbGluZVN0eWxlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKKyAgICAgICAgICAgIHN0cm9rZVdhdnlUZXh0RGVjb3Jh
dGlvbihtX2NvbnRleHQsIHN0YXJ0LCBlbmQsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBtX2xp
bmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkpOwogICAgICAgICBlbHNlIGlmIChkZWNvcmF0aW9u
ID09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3Jh
dGlvbjo6T3ZlcmxpbmUpIHsKICNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9J
TkspCiAgICAgICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpID09
IFRleHREZWNvcmF0aW9uU2tpcDo6SW5rIHx8IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tp
cCgpID09IFRleHREZWNvcmF0aW9uU2tpcDo6QXV0bykgJiYgbV9pc0hvcml6b250YWwpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXgg
ZmQ5MTljZjU0MWU4MTJjMjliZTU4ZjhmZTA1MjEwYjdiODY3YTc1NS4uOWI5OTg3YzdmYTk4Yjli
YjJjNTdjY2M0YTg0NWM5YzEwNGUzZjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTY2OCw3ICs2NjgsNyBAQCBpbmxpbmUgdm9p
ZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgQXRvbQogICAgIGZsb2F0IGh5cGhlbldpZHRoID0gbWVhc3VyZUh5cGhlbldpZHRo
KHRleHQsIGZvbnQpOwogCiAgICAgZmxvYXQgbWF4UHJlZml4V2lkdGggPSBhdmFpbGFibGVXaWR0
aCAtIHhQb3MgLSBoeXBoZW5XaWR0aCAtIGxhc3RTcGFjZVdvcmRTcGFjaW5nOwotICAgIGlmICgh
ZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihtYXhQcmVmaXhXaWR0aCwgZm9udC5waXhlbFNpemUo
KSkpCisgICAgaWYgKCFlbm91Z2hXaWR0aEZvckh5cGhlbmF0aW9uKG1heFByZWZpeFdpZHRoLCBm
b250LnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRleHQuc3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCAwNTA1ZWYwYWVlMmQ3MTQzZDZmZTRhZGMy
Mjk2NjNiMzlhZDJlNWQ0Li5lZTA0ZDZmYjBiNzcxMzgxODJkZDRiYTIwNWNiNGZiYzc5ODU5YjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm93OjpzdHJldGNo
VmVydGljYWxPcGVyYXRvcnNBbmRMYXlvdXRDaGlsZHJlbigpCiAgICAgfQogICAgIGlmIChzdHJl
dGNoQXNjZW50ICsgc3RyZXRjaERlc2NlbnQgPD0gMCkgewogICAgICAgICAvLyBXZSBlbnN1cmUg
YSBtaW5pbWFsIHN0cmV0Y2ggc2l6ZS4KLSAgICAgICAgc3RyZXRjaEFzY2VudCA9IHN0eWxlKCku
Y29tcHV0ZWRGb250UGl4ZWxTaXplKCk7CisgICAgICAgIHN0cmV0Y2hBc2NlbnQgPSBzdHlsZSgp
LmNvbXB1dGVkRm9udFNpemUoKTsKICAgICAgICAgc3RyZXRjaERlc2NlbnQgPSAwOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5k
ZXggMzgwOTdkMjIxMjkzMGUwMDUzMzAxNWRmNGZlODdjMjlkYjY5MDczMy4uNWY0NWU5YmRmZjY4
MTg2NTc4NDI2YThmZmE1YjU4ZGJjN2RmNThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xNTMzLDExICsxNTMzLDYgQEAgZmxvYXQg
UmVuZGVyU3R5bGU6OmNvbXB1dGVkRm9udFNpemUoKSBjb25zdAogICAgIHJldHVybiBmb250RGVz
Y3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKIH0KIAotdW5zaWduZWQgUmVuZGVyU3R5bGU6OmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZvbnREZXNjcmlwdGlv
bigpLmNvbXB1dGVkUGl4ZWxTaXplKCk7Ci19Ci0KIGNvbnN0IExlbmd0aCYgUmVuZGVyU3R5bGU6
OndvcmRTcGFjaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+
d29yZFNwYWNpbmc7CkBAIC0xNTk0LDcgKzE1ODksNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1
dGVkTGluZUhlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcygpLmxpbmVT
cGFjaW5nKCk7CiAKICAgICBpZiAobGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAg
IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGgsIGNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsaCwgY29tcHV0ZWRGb250
U2l6ZSgpKTsKIAogICAgIHJldHVybiBjbGFtcFRvPGludD4obGgudmFsdWUoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGEyMDg1MDBm
MDdiZmVkZTdjMmM4YzdiZWFmMjcwODhhMDU1NzcyMzcuLmIyMzU1YWMyODUzNmY4MDk4NGRjNzVm
ZDhlZGM3YmE5MDBhMWNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC0zNTQsNyArMzU0LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0
OwogICAgIGZsb2F0IHNwZWNpZmllZEZvbnRTaXplKCkgY29uc3Q7CiAgICAgZmxvYXQgY29tcHV0
ZWRGb250U2l6ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
IGNvbnN0OwogICAgIHN0ZDo6cGFpcjxGb250T3JpZW50YXRpb24sIE5vbkNKS0dseXBoT3JpZW50
YXRpb24+IGZvbnRBbmRHbHlwaE9yaWVudGF0aW9uKCk7CiAKICNpZiBFTkFCTEUoVkFSSUFUSU9O
X0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggODkyMjAyMTUxODM2YjkxYTdmNGI5MWNlOTE4MjgyZjRlY2M3OWNlZi4u
YTVjZDQ4OTM3NjcwMzY1NTcyOGNhMzQwZTNiNGY2ZWE4ZjhiYmE0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0xNzAsOSAr
MTcwLDkgQEAgTGF5b3V0UmVjdCBTVkdJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3Qo
dW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQKIAogc3RhdGljIGlubGluZSBib29sIHRl
eHRTaG91bGRCZVBhaW50ZWQoY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVy
KQogewotICAgIC8vIEZvbnRDYXNjYWRlOjpwaXhlbFNpemUoKSwgcmV0dXJucyBGb250RGVzY3Jp
cHRpb246OmNvbXB1dGVkUGl4ZWxTaXplKCksIHdoaWNoIHJldHVybnMgImludCh4ICsgMC41KSIu
CisgICAgLy8gRm9udENhc2NhZGU6OnNpemUoKSwgcmV0dXJucyBGb250RGVzY3JpcHRpb246OmNv
bXB1dGVkUGl4ZWxTaXplKCksIHdoaWNoIHJldHVybnMgImludCh4ICsgMC41KSIuCiAgICAgLy8g
SWYgdGhlIGFic29sdXRlIGZvbnQgc2l6ZSBvbiBzY3JlZW4gaXMgYmVsb3cgeD0wLjUsIGRvbid0
IHJlbmRlciBhbnl0aGluZy4KLSAgICByZXR1cm4gdGV4dFJlbmRlcmVyLnNjYWxlZEZvbnQoKS5w
aXhlbFNpemUoKTsKKyAgICByZXR1cm4gdGV4dFJlbmRlcmVyLnNjYWxlZEZvbnQoKS5zaXplKCk7
CiB9CiAKIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCmluZGV4IDBiNjNkNmNk
ZmZiNTVhNDJlYTkwNDU5OGEwMWQxZTZlMjlhZWYyZmEuLjcwYTA5ZTJmM2QxOGVlNjlkNmM3ZTk1
YTk1NjdiNWI0NzAwMzFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lOjpjYWxjdWxhdGVCYXNlbGlu
ZVNoaWZ0KGNvbnN0IFNWR1JlbmRlclN0eWxlJgogICAgIGlmIChzdHlsZS5iYXNlbGluZVNoaWZ0
KCkgPT0gQmFzZWxpbmVTaGlmdDo6TGVuZ3RoKSB7CiAgICAgICAgIGF1dG8gYmFzZWxpbmVTaGlm
dFZhbHVlTGVuZ3RoID0gc3R5bGUuYmFzZWxpbmVTaGlmdFZhbHVlKCk7CiAgICAgICAgIGlmIChi
YXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFn
ZSkKLSAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgudmFsdWVBc1Bl
cmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNl
bGluZVNoaWZ0VmFsdWVMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5zaXplKCk7
CiAKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHQpOwogICAg
ICAgICByZXR1cm4gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
RW5naW5lU3BhY2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmVTcGFjaW5nLmNwcAppbmRleCA0OGQ4MGFlOTkyNmUwNjNkOWVmMjE5MjQyZDNk
ZTc4MTc4ZWNlNGU1Li4xZDdhMzZmZThjODhjMzg5OWFlYTk2NGZmOWUwZTIzNDgwOTdiYWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdp
bmVTcGFjaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRM
YXlvdXRFbmdpbmVTcGFjaW5nLmNwcApAQCAtNDIsNyArNDIsNyBAQCBmbG9hdCBTVkdUZXh0TGF5
b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2VybmluZ0FuZFNwYWNpbmcoY29uc3QgU1ZH
UmVuZGVyUwogICAgIGZsb2F0IGtlcm5pbmcgPSAwOwogICAgIGF1dG8ga2VybmluZ0xlbmd0aCA9
IHN0eWxlLT5rZXJuaW5nKCk7CiAgICAgaWYgKGtlcm5pbmdMZW5ndGgudW5pdFR5cGUoKSA9PSBM
ZW5ndGhUeXBlUGVyY2VudGFnZSkKLSAgICAgICAga2VybmluZyA9IGtlcm5pbmdMZW5ndGgudmFs
dWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhlbFNpemUoKTsKKyAgICAgICAga2VybmluZyA9
IGtlcm5pbmdMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5zaXplKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxl
bWVudCk7CiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyRmlyc3RMZXR0ZXIuY3BwCmluZGV4IDhmZDAyMWQxODM4
YTFiYTlhZTUwMDg3NjA5NjRjNjUzNGNjOWMyYTguLmFjYjg3MjczNmEzMjc4MTI5Y2Q4MWFmNTdh
YTk0OWI1Y2U3MWI0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlckZpcnN0TGV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgc3RhdGljIFJlbmRlclN0eWxlIHN0eWxlRm9yRmlyc3RMZXR0ZXIoY29u
c3QgUmVuZGVyQmxvY2smIGZpcnN0TGV0dGVyQmxvY2ssIGNvbnMKICAgICAgICAgLy8gU2V0IHRo
ZSBmb250IHRvIGJlIG9uZSBsaW5lIHRvbyBiaWcgYW5kIHRoZW4gcmF0Y2hldCBiYWNrIHRvIGdl
dCB0byBhIHByZWNpc2UgZml0LiBXZSBjYW4ndCBqdXN0IHNldCB0aGUgZGVzaXJlZCBmb250IHNp
emUgYmFzZWQgb2ZmIGZvbnQgaGVpZ2h0IG1ldHJpY3MKICAgICAgICAgLy8gYmVjYXVzZSBtYW55
IGZvbnRzIGJha2UgYXNjZW50IGludG8gdGhlIGZvbnQgbWV0cmljcy4gVGhlcmVmb3JlIHdlIGhh
dmUgdG8gbG9vayBhdCBhY3R1YWwgbWVhc3VyZWQgY2FwIGhlaWdodCB2YWx1ZXMgaW4gb3JkZXIg
dG8ga25vdyB3aGVuIHdlIGhhdmUgYSBnb29kIGZpdC4KICAgICAgICAgYXV0byBuZXdGb250RGVz
Y3JpcHRpb24gPSBmaXJzdExldHRlclN0eWxlLmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBm
bG9hdCBjYXBSYXRpbyA9IGZpcnN0TGV0dGVyU3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdENhcEhl
aWdodCgpIC8gZmlyc3RMZXR0ZXJTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKTsKKyAgICAg
ICAgZmxvYXQgY2FwUmF0aW8gPSBmaXJzdExldHRlclN0eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRD
YXBIZWlnaHQoKSAvIGZpcnN0TGV0dGVyU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpOwogICAgICAg
ICBmbG9hdCBzdGFydGluZ0ZvbnRTaXplID0gKChmaXJzdExldHRlclN0eWxlLmluaXRpYWxMZXR0
ZXJIZWlnaHQoKSAtIDEpICogbGluZUhlaWdodCArIHBhcmFncmFwaC0+c3R5bGUoKS5mb250TWV0
cmljcygpLmNhcEhlaWdodCgpKSAvIGNhcFJhdGlvOwogICAgICAgICBuZXdGb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZShzdGFydGluZ0ZvbnRTaXplKTsKICAgICAgICAgbmV3Rm9udERl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdGFydGluZ0ZvbnRTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDEzNmYzMWE4ZWJiOTBiY2My
OGRhMDc2OTg2NzMwYzE3Yzk4MjMxMTguLmVjOWI3MGJmNmM5YzI2Njg2MzQzZjEyMDQ2N2IyNjQ2
MmNiNWJkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYgKGRl
Y29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwogCi0g
ICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3Mo
bGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKKyAgICBmbG9hdCBzdHJva2VUaGlj
a25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29tcHV0ZWRG
b250U2l6ZSgpKTsKICAgICBmbG9hdCBjb250cm9sUG9pbnREaXN0YW5jZSA9IDA7CiAgICAgZmxv
YXQgc3RlcDsKICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gMDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBH
bHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5
bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogICAgIEdseXBoT3ZlcmZsb3cgb3ZlcmZsb3dSZXN1bHQ7
CiAgICAgCiAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpX
YXZ5KSB7Ci0gICAgICAgIGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGxpbmVTdHlsZS5jb21wdXRl
ZEZvbnRQaXhlbFNpemUoKSwgY29udHJvbFBvaW50RGlzdGFuY2UsIHN0ZXApOworICAgICAgICBn
ZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBjb250
cm9sUG9pbnREaXN0YW5jZSwgc3RlcCk7CiAgICAgICAgIHdhdnlPZmZzZXQgPSB3YXZ5T2Zmc2V0
RnJvbURlY29yYXRpb24oKTsKICAgICAgICAgb3ZlcmZsb3dSZXN1bHQubGVmdCA9IHN0cm9rZVRo
aWNrbmVzczsKICAgICAgICAgb3ZlcmZsb3dSZXN1bHQucmlnaHQgPSBzdHJva2VUaGlja25lc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggMjljMmJl
MDJkZjc0OWU1NjdkZTgyMDg0ODkwYWI5NzJjZjRkYTMyNi4uNDJkNjhlNWYxODIxYTVkNjQ5NTEz
YmM2OTQxZmU4ZWFlMDM1MWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgbV9kb2N1bWVudEVs
ZW1lbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLnN0eWxlKTsKICAgICAg
ICAgc2NvcGUoKS5zdHlsZVJlc29sdmVyLnNldE92ZXJyaWRlRG9jdW1lbnRFbGVtZW50U3R5bGUo
bV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQoKSk7CiAKLSAgICAgICAgaWYgKHVwZGF0ZS5jaGFu
Z2UgIT0gTm9DaGFuZ2UgJiYgZXhpc3RpbmdTdHlsZSAmJiBleGlzdGluZ1N0eWxlLT5jb21wdXRl
ZEZvbnRQaXhlbFNpemUoKSAhPSB1cGRhdGUuc3R5bGUtPmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgp
KSB7CisgICAgICAgIGlmICh1cGRhdGUuY2hhbmdlICE9IE5vQ2hhbmdlICYmIGV4aXN0aW5nU3R5
bGUgJiYgZXhpc3RpbmdTdHlsZS0+Y29tcHV0ZWRGb250U2l6ZSgpICE9IHVwZGF0ZS5zdHlsZS0+
Y29tcHV0ZWRGb250U2l6ZSgpKSB7CiAgICAgICAgICAgICAvLyAicmVtIiB1bml0cyBhcmUgcmVs
YXRpdmUgdG8gdGhlIGRvY3VtZW50IGVsZW1lbnQncyBmb250IHNpemUgc28gd2UgbmVlZCB0byBy
ZWNvbXB1dGUgZXZlcnl0aGluZy4KICAgICAgICAgICAgIC8vIEluIHByYWN0aWNlIHRoaXMgaXMg
cmFyZS4KICAgICAgICAgICAgIHNjb3BlKCkuc3R5bGVSZXNvbHZlci5pbnZhbGlkYXRlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3Bw
CmluZGV4IDA4MDAwMTc2YmFjMGZiOTBmZWEzNTBmZmQ2MmU1NmVjNGJiYzEyOWUuLmU3MGY2MDVl
ZWJkYjVmZGM5YTNkNTk3N2Y2MDYyZmEwNDJiMDM0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TKGZsb2F0IHZh
bHVlKQogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OwogCi0gICAgZmxvYXQgZm9udFNpemUgPSBzdHlsZS0+Y29tcHV0ZWRGb250
UGl4ZWxTaXplKCk7CisgICAgYXV0byBmb250U2l6ZSA9IHN0eWxlLT5jb21wdXRlZEZvbnRTaXpl
KCk7CiAgICAgaWYgKCFmb250U2l6ZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbUVNU1RvVXNlclVuaXRzKGZsb2F0IHZh
bHVlKQogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OwogCi0gICAgcmV0dXJuIHZhbHVlICogc3R5bGUtPmNvbXB1dGVkRm9udFBp
eGVsU2l6ZSgpOworICAgIHJldHVybiB2YWx1ZSAqIHN0eWxlLT5jb21wdXRlZEZvbnRTaXplKCk7
CiB9CiAKIEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVG
cm9tVXNlclVuaXRzVG9FWFMoZmxvYXQgdmFsdWUpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>