<?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>136502</bug_id>
          
          <creation_ts>2014-09-03 14:40:43 -0700</creation_ts>
          <short_desc>[CSS Font Loading] Add ready attribute to document.fonts</short_desc>
          <delta_ts>2016-06-20 14:40:22 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/csswg/css-font-loading/#font-face-set-ready</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135390</blocked>
    
    <blocked>158884</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Bear Travis">betravis</reporter>
          <assigned_to name="Bear Travis">betravis</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fred.wang</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>syoichi</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033031</commentid>
    <comment_count>0</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-09-03 14:40:43 -0700</bug_when>
    <thetext>document.fonts.ready should result in a promise that resolves when the document finishes loading fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050902</commentid>
    <comment_count>1</comment_count>
      <attachid>242179</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-11-24 15:38:22 -0800</bug_when>
    <thetext>Created attachment 242179
Initial Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051026</commentid>
    <comment_count>2</comment_count>
      <attachid>242206</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-11-25 11:30:56 -0800</bug_when>
    <thetext>Created attachment 242206
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052313</commentid>
    <comment_count>3</comment_count>
      <attachid>242206</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-03 15:41:04 -0800</bug_when>
    <thetext>Comment on attachment 242206
Updated patch

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

&gt; Source/WebCore/css/FontLoader.h:120
&gt; +    OwnPtr&lt;DeferredWrapper&gt; m_ready;

We have so far been able to keep DeferredWrapper in the bindings layer only, and I would prefer to keep it that way.  Instead, what I recommend is having two std::functions (one for success, one for failure) that capture the DeferredWrapper.  See JSSubtleCrypto::generateKey() for an example of how we do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054538</commentid>
    <comment_count>4</comment_count>
      <attachid>243130</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-12-11 10:13:13 -0800</bug_when>
    <thetext>Created attachment 243130
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054582</commentid>
    <comment_count>5</comment_count>
      <attachid>243130</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-11 12:36:18 -0800</bug_when>
    <thetext>Comment on attachment 243130
Updated patch

Looks good. I would like to see a test that calls document.fonts.ready multiple times.  I am not clear whether ready should return the same promise each time it is called, but it should be tested either way (and we should verify with the spec author what the intent is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054615</commentid>
    <comment_count>6</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-12-11 14:02:27 -0800</bug_when>
    <thetext>I can add a test containing multiple ready reads. I&apos;m not clear on when/if the ready attribute must return the same value on read, and have a question out to the style list.

Storing the promise without sharing DeferredWrapper with FontLoader seemed a bit tricky to me, as I couldn&apos;t find an example of code that added a member variable to the JS layer like JSFontLoaderCustom.h would need to. Would that be the right way, and is it possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055790</commentid>
    <comment_count>7</comment_count>
      <attachid>243326</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-12-15 16:01:31 -0800</bug_when>
    <thetext>Created attachment 243326
Updated patch

document.fonts.ready should return the same promise until it has been fulfilled and a font begins loading, at which point document.fonts.ready should return a new, unfulfilled promise. See http://dev.w3.org/csswg/css-font-loading/#FontFaceSet-events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055997</commentid>
    <comment_count>8</comment_count>
      <attachid>243366</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2014-12-16 10:26:42 -0800</bug_when>
    <thetext>Created attachment 243366
Fixing ready test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173181</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-10 11:25:21 -0800</bug_when>
    <thetext>Sam, it looks like he added the test you asked for. Was there anything else you wanted to see here?

Bear: Could you please upload a rebaselined patch we can apply to the tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173319</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-03-10 13:53:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Sam, it looks like he added the test you asked for. Was there anything else
&gt; you wanted to see here?
&gt; 
&gt; Bear: Could you please upload a rebaselined patch we can apply to the tree?

This is done already. (since r196747)

Also, IIRC Bear doesn&apos;t work on WebKit anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242179</attachid>
            <date>2014-11-24 15:38:22 -0800</date>
            <delta_ts>2014-11-25 11:30:54 -0800</delta_ts>
            <desc>Initial Patch</desc>
            <filename>bug-136502-20141124153842.patch</filename>
            <type>text/plain</type>
            <size>14851</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk5ODM5NmU1ZWQxMGNl
Yzg5MTJlMGQ1MDJkYjRkYTQxMDIwNjE5NC4uOTY4MTU1MDcyYWQ2NTQxM2Q0OThjODZmMjZlNTdl
ZjQyNGNmMzk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTExLTI0ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGlu
Z10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1lbnQuZm9udHMucmVhZHkgc2hv
dWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAgICAgICB3aGVuIHRoZSBmb250
IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBmb250cworICAgICAgICAod2hl
dGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgY3JlYXRlcyBhIERlZmVycmVkV3JhcHBlciBwcm9taXNlIHdyYXBwZXIgaW4gSlNG
b250TG9hZGVyQ3VzdG9tLmNwcAorICAgICAgICBhbmQgcGFzc2VzIGl0IGludG8gdGhlIEZvbnRM
b2FkZXIgdG8gYmUgZnVsZmlsbGVkIGF0IGEgbGF0ZXIgdGltZS4KKworICAgICAgICBSZWZhY3Rv
cmVkIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSBkb2N1bWVudC5mb250cy5yZWFkeSByYXRoZXIgdGhh
bgorICAgICAgICBub3RpZnlXaGVuRm9udHNSZWFkeSBjYWxsYmFja3MuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBKU0ZvbnRMb2FkZXJDdXN0b20u
Y3BwCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8c3RkOjpudWxscHRyX3Q+KTogQWRkIGEgbnVs
bAorICAgICAgICByZXNvbHZlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNGb250TG9hZGVyOjpyZWFkeSk6
IEFkZCBhIGdldHRlci9zZXR0ZXIgZm9yIHRoZSByZWFkeQorICAgICAgICBEZWZlcnJlZFdyYXBw
ZXIuCisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dExvYWRlcjo6Rm9udExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpmaXJl
UGVuZGluZ0V2ZW50cyk6IEZ1bGZpbGwgdGhlIHJlYWR5IHByb21pc2UsCisgICAgICAgIHdoZXJl
IGFwcHJvcHJpYXRlLgorICAgICAgICAoV2ViQ29yZTo6Rm9udExvYWRlcjo6bG9hZGluZ0RvbmUp
OiBTdGFydCB0aGUgcGVuZGluZyB0aW1lciBmb3IgdGhlCisgICAgICAgIHJlYWR5IHByb21pc2Us
IGlmIG5lZWQgYmUuCisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuaDoKKyAgICAgICAgKiBjc3Mv
Rm9udExvYWRlci5pZGw6IEFkZCB0aGUgcmVhZHkgYXR0cmlidXRlLgorCiAyMDE0LTExLTIyICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSB0aGUgJy13ZWJraXQt
Ym94LXJlZmxleHQnIENTUyBwcm9wZXJ0eSB0byB0aGUgbmV3IFN0eWxlQnVpbGRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg5
ZmIzYzc3ODFmOGVjMWMwYTY3ODUwZDAyNjEwYzg3ODA1NmZhNWIuLjA2YmRmM2E2NzNjZDMwMTdk
YmE0ZTQyNDEyY2RiNTBmN2QzMmIxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1MzMsNiArNjUzMyw3IEBACiAJCUZENDVB
OTU5MTc1RDQxNzEwMEMyMUVDOCAvKiBQb2x5Z29uU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8q
IFBvbHlnb25TaGFwZS5jcHAgKi87IH07CiAJCUZENDVBOTVBMTc1RDQxNzEwMEMyMUVDOCAvKiBS
ZWN0YW5nbGVTaGFwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDA4QTg3QzE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuY3BwICov
OyB9OwogCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4ODUxNzVEMzky
NjAwMkNEMzYwIC8qIFNoYXBlSW50ZXJ2YWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGRDRBRTE1ODE5OTQzQjE0MDBBODlCRDMgLyogSlNGb250
TG9hZGVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZENEFFMTU3MTk5NDNBNzUwMEE4OUJEMyAvKiBKU0ZvbnRMb2FkZXJDdXN0b20uY3Bw
ICovOyB9OwogCQlGRDRFNUQzQjE5ODMxNzU1MDBEOTNBNzcgLyogSlNGb250TG9hZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEOTZDOUE0MTk4
MzE0QTUwMDg2RTE1NiAvKiBKU0ZvbnRMb2FkZXIuY3BwICovOyB9OwogCQlGRDUzNzM1MjEzN0I2
NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTAxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNw
cCAqLzsgfTsKIAkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDUzNzM1MTEzN0I2NTE4
MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCAqLzsgfTsKQEAgLTE0MTI5LDYgKzE0MTMwLDcgQEAKIAkJ
RkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZGVEZyYW1lTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkQzNTkxOEQxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1UaW1l
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb1BhcmFt
VGltZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDM1OTE4RTEzOERC
MjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1ZGlvUGFyYW1UaW1lbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRDRBRTE1NzE5OTQzQTc1MDBBODlCRDMgLyogSlNGb250TG9hZGVyQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRm9udExvYWRlckN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTM3MzUwMTM3QjY1MTgwMDAw
OERDRSAvKiBaZXJvUG9sZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBaZXJvUG9sZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTM3MzUxMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBaZXJvUG9sZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDUzNzM1NDEz
N0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTAwNSw2ICsyMTAwNyw3IEBACiAJCQkJ
QURFQzc4RjcxOEVFNTMwODAwMTMxNUMyIC8qIEpTRWxlbWVudEN1c3RvbS5oICovLAogCQkJCUJD
RUZBRjREMEMzMTdFNjkwMEZBODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkyRTc1
ODJFRDEyNzY0RjI2MDA2MjYyOEIgLyogSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCAqLywKKwkJCQlG
RDRBRTE1NzE5OTQzQTc1MDBBODlCRDMgLyogSlNGb250TG9hZGVyQ3VzdG9tLmNwcCAqLywKIAkJ
CQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8s
CiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8s
CiAJCQkJQkM5N0U0MkIxMDkxNUIwNjAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwICovLApAQCAtMjgzNzQsNiArMjgzNzcsNyBAQAogCQkJCTg5ODc4NUY0MTIyRTFFQUMw
MDNBQUJEQSAvKiBKU0ZpbGVSZWFkZXJTeW5jLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2RDlE
MjdDMTRFQUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkQ0RTVEM0IxOTgzMTc1NTAwRDkzQTc3IC8qIEpTRm9udExvYWRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRDRBRTE1ODE5OTQzQjE0MDBBODlCRDMgLyogSlNGb250TG9hZGVyQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTE1RUFCMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0dh
aW5Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEY1MDAxMTk0Q0FDM0EwMDgxQkFBRSAv
KiBKU0dhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RjUwMDMxOTRDQUMzQTAwODFC
QUFFIC8qIEpTR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggMGQ2NTZjNTkyN2I1MDQ4Y2Q2MWFjZGUz
NDQ0ZWEzZTg0MmU1OWYyYy4uNTJlM2NiMTkwZjFjY2FjODBiODFjM2FjZDY5NWUxN2JjYzUzNTUx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTgxLDYg
KzgxLDE0IEBAIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikKIH0KIAogdGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZXNvbHZlPHN0ZDo6bnVsbHB0cl90Pihjb25zdCBzdGQ6Om51bGxwdHJfdCYpCit7CisgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKGV4ZWMsIEpTQzo6
anNOdWxsKCkpOworfQorCit0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6
OnJlc29sdmU8U3RyaW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRMb2FkZXJDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250TG9hZGVyQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NjcwMjM4ODEwZDg5ZGIwMTgzNjY1OWRkYmQ2MTRmYTE5OGM2MjcyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250TG9hZGVyQ3VzdG9tLmNwcApAQCAt
MCwwICsxLDI0IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNGb250TG9hZGVy
LmgiCisKKyNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTRm9udExvYWRlcjo6cmVhZHkoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIGlmICghaW1wbCgpLnJlYWR5KCkpCisgICAgICAgIGlt
cGwoKS5zZXRSZWFkeShhZG9wdFB0cihuZXcgRGVmZXJyZWRXcmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCgpKSkpOworICAgIHJldHVybiBpbXBsKCkucmVhZHkoKS0+cHJvbWlzZSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3Bw
CmluZGV4IDkwM2NjZmFlM2ZkZmY1ODI3OGQxZjA4NmNlOTViMjA4OTU3MGRlYWYuLjE3MTFiOTBh
YWVmYTRmYjQ1ZTNkMzg4M2VkYTEzYjFhMDU4ZjRjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRl
ci5jcHAKQEAgLTEyMyw2ICsxMjMsNyBAQCBGb250TG9hZGVyOjpGb250TG9hZGVyKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICAsIG1fbnVtTG9hZGluZ0Zyb21DU1MoMCkKICAgICAsIG1fbnVtTG9h
ZGluZ0Zyb21KUygwKQogICAgICwgbV9wZW5kaW5nRXZlbnRzVGltZXIoKnRoaXMsICZGb250TG9h
ZGVyOjpwZW5kaW5nRXZlbnRzVGltZXJGaXJlZCkKKyAgICAsIG1fcmVhZHlGaXJlZChmYWxzZSkK
IHsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KQEAgLTE2NSw4ICsxNjYsMTAgQEAgdm9pZCBG
b250TG9hZGVyOjpzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiB2b2lk
IEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKIHsKLSAgICBpZiAobV9wZW5kaW5nRXZl
bnRzLmlzRW1wdHkoKSAmJiAhbV9sb2FkaW5nRG9uZUV2ZW50ICYmICFtX2NhbGxiYWNrcy5pc0Vt
cHR5KCkpCisgICAgaWYgKG1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkgJiYgIW1fbG9hZGluZ0Rv
bmVFdmVudCAmJiAhbV9jYWxsYmFja3MuaXNFbXB0eSgpCisgICAgICAgICYmICghbV9yZWFkeSB8
fCBtX3JlYWR5RmlyZWQpKSB7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50Pj4gcGVuZGluZ0V2ZW50czsKICAgICBtX3BlbmRpbmdFdmVudHMuc3dhcChw
ZW5kaW5nRXZlbnRzKTsKQEAgLTE4Niw2ICsxODksMTEgQEAgdm9pZCBGb250TG9hZGVyOjpmaXJl
UGVuZGluZ0V2ZW50cygpCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBj
YWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KQogICAgICAgICAgICAgY2FsbGJhY2tzW2luZGV4XS0+
aGFuZGxlRXZlbnQoKTsKICAgICB9CisKKyAgICBpZiAobV9yZWFkeSAmJiAhbG9hZGluZygpICYm
ICFtX3JlYWR5RmlyZWQpIHsKKyAgICAgICAgbV9yZWFkeUZpcmVkID0gdHJ1ZTsKKyAgICAgICAg
bV9yZWFkeS0+cmVzb2x2ZShudWxscHRyKTsKKyAgICB9CiB9CiAKIHZvaWQgRm9udExvYWRlcjo6
YmVnaW5Gb250TG9hZGluZyhDU1NGb250RmFjZVJ1bGUqIHJ1bGUpCkBAIC0yMjcsOCArMjM1LDEw
IEBAIHZvaWQgRm9udExvYWRlcjo6bG9hZGluZ0RvbmUoKQogewogICAgIGlmIChsb2FkaW5nKCkg
fHwgIW1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgaWYgKCFtX2xvYWRpbmdEb25lRXZlbnQgJiYgbV9jYWxsYmFja3MuaXNFbXB0eSgpICYm
IG1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2xvYWRpbmdEb25lRXZlbnQg
JiYgbV9jYWxsYmFja3MuaXNFbXB0eSgpICYmIG1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5KCkKKyAg
ICAgICAgJiYgKG1fcmVhZHlGaXJlZCB8fCAhbV9yZWFkeSkpIHsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2RvY3VtZW50LT52aWV3KCkpIHsK
ICAgICAgICAgaWYgKHZpZXctPmlzSW5MYXlvdXQoKSB8fCB2aWV3LT5uZWVkc0xheW91dCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250TG9hZGVyLmgKaW5kZXggYjZkNmQ5MTFhMTRjYzRjODgyNjRjYzIzMjI1ZWUz
ODQ0MzUwYzVkMC4uYzNiMmQ0YmM2YTFiZGZjM2JkYmQxZjNjYzlmNWU0Yzk0Y2M2NWZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udExvYWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtODUsNiArODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRXJyb3IoQ1NTRm9udEZhY2VS
dWxlKiwgQ1NTRm9udEZhY2VTb3VyY2UqKTsKICAgICB2b2lkIGxvYWRpbmdEb25lKCk7CiAKKyAg
ICBEZWZlcnJlZFdyYXBwZXIqIHJlYWR5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0UmVhZHkoUGFzc093blB0cjxEZWZlcnJlZFdyYXBwZXI+IHZhbHVlKSB7
IG1fcmVhZHlGaXJlZCA9IGZhbHNlOyBtX3JlYWR5ID0gdmFsdWU7IH0KKwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5TdXNwZW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbnVtTG9hZGluZ0Zy
b21DU1MgJiYgIW1fbnVtTG9hZGluZ0Zyb21KUzsgfQogCiBwcml2YXRlOgpAQCAtMTA4LDYgKzEx
Miw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX2NhbGxi
YWNrczsKICAgICBSZWZQdHI8RXZlbnQ+IG1fbG9hZGluZ0RvbmVFdmVudDsKICAgICBUaW1lciBt
X3BlbmRpbmdFdmVudHNUaW1lcjsKKyAgICBPd25QdHI8RGVmZXJyZWRXcmFwcGVyPiBtX3JlYWR5
OworICAgIGJvb2wgbV9yZWFkeUZpcmVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaWRsIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRMb2FkZXIuaWRsCmluZGV4IGE4MTkwYjhjZTVkNTBkYmNmMjdmMWUyZDAz
ZjAwNjM5MWRhNjhlN2MuLmVlNjlhOTMxZWZiNjc3YmIwYzhjYzFhNjkxNjg1MzkyNzUyMmM4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5pZGwKQEAgLTQxLDYgKzQxLDcgQEAKICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmxvYWRzdGFydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmxvYWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICBb
Q3VzdG9tXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKIAogICAgIGJvb2xlYW4g
Y2hlY2tGb250KERPTVN0cmluZyBmb250LCBbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBE
T01TdHJpbmcgdGV4dCk7CiAgICAgdm9pZCBsb2FkRm9udChEaWN0aW9uYXJ5IHBhcmFtcyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMTM1NDBjMWFmZTc5ODIxNjlkYTAwM2Y2NjNhMmM1OTA0ZDNiOTU3Yy4uMmIxZDU2NDVh
OTgxZjkzNDkwYWUwYzUyYjU4NzA5ZDM4MDMwODEwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE0LTExLTI0ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBb
Q1NTIEZvbnQgTG9hZGluZ10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhbnNpdGlv
biB0ZXN0cyBmcm9tIHVzaW5nIHRoZSBub3RpZnlXaGVuRm9udHNSZWFkeSBjYWxsYmFja3MKKyAg
ICAgICAgdG8gdXNpbmcgZG9jdW1lbnQuZm9udHMucmVhZHkgaW5zdGVhZC4KKworICAgICAgICAq
IGZhc3QvY3NzL2ZvbnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2Nzcy9mb250bG9hZGVyLWV2ZW50cy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2Fk
ZXItbG9hZGluZ2RvbmUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRp
cGxlLWZhY2VzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1m
YW1pbGllcy5odG1sOgorCiAyMDE0LTExLTI0ICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdh
bGlhLmNvbT4KIAogICAgICAgICBBWDogW0FUS10gVW5za2lwIHRoZSBza2lwcGVkIEFUSyB0ZXN0
cyBpbiByb2xlcy1leHBvc2VkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZvbnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Zv
bnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRtbAppbmRleCAzYjBkMTE3ZjVlMGEzMGYzZGY2MDA1
ZjE5ZWRiYjM3YWE4OTIyNjVkLi40ODkxNTA2NmZhMDU3OTQ5MWRjZDJmZmY2MmI2MWMzNDNhZjI0
ZmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2Fk
LWVycm9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1kb3dubG9h
ZC1lcnJvci5odG1sCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAg
IGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2dFdmVudCk7CiAgICAg
ZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBsb2dFdmVudCk7CiAKLSAg
ICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBk
b2N1bWVudC5mb250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgi
ZXZlbnRzWydteWZvbnQxJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwogICAgICAgICBz
aG91bGRCZSgiZXZlbnRzWydteWZvbnQyJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwog
ICAgICAgICBzaG91bGRCZSgiZXZlbnRzWydteWZvbnQzJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJy
b3InXSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVu
dHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwKaW5k
ZXggZjVkOTY4MWE0ZTFlYmE3NzMwZmM1MTI3MGQwODY5NTRhY2QzYTViNC4uZDg2YmNiNzEyNWYx
YTNlZTJkMTIyNjNjYTVmYjcwZjY5NmMzNmEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9m
b250bG9hZGVyLWV2ZW50cy5odG1sCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3Rz
KCkgewogICAgIGRvY3VtZW50LmZvbnRzLm9ubG9hZCA9IGhhbmRsZUV2ZW50OwogICAgIGRvY3Vt
ZW50LmZvbnRzLm9uZXJyb3IgPSBoYW5kbGVFdmVudDsKIAotICAgIGRvY3VtZW50LmZvbnRzLm5v
dGlmeVdoZW5Gb250c1JlYWR5KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5
LnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCdudW1iZXJPZkV2ZW50cycsICc0
Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sCmluZGV4IGExYjE2YWJlZWNlYWY3
OGQ3MWE0YmQ2YjdkMzUyYTBjYTIwYWI4NTUuLmY4NzdhNTU3MzJkMDJlNzFiNzRiMjIwMjZlOGQ3
MTJjYWIxYzdiODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXIt
bG9hZGluZ2RvbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWxv
YWRpbmdkb25lLmh0bWwKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVz
dERpdiwgMCkud2lkdGgnLCAnNDhweCcpOwogICAgIH07CiAKLSAgICBkb2N1bWVudC5mb250cy5u
b3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5mb250cy5yZWFk
eS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBkZWJ1Zygnbm90aWZ5V2hlbkZvbnRzUmVhZHko
KSBjYWxsYmFjaycpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3dpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3REaXYsIDApLndpZHRoJywgJzQ4cHgnKTsKICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11
bHRpcGxlLWZhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRp
cGxlLWZhY2VzLmh0bWwKaW5kZXggNTM4NmM0NjI3MDExMzc3MmQ5ZjQ5N2VkY2M4ZGYxYTFkMDY1
NjEzZS4uMWRhZTE3OTBlMDg0NDRmMjcyZDJlYWRhZTdkODFjOTc0ZWIxNGU1MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbApA
QCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250
cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQpOwogCiAgICAgZG9j
dW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250OiAnMTBweCBUZXN0Rm9udCcsIG9uc3VjY2Vzczog
b25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlm
eVdoZW5Gb250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbih2
ZXJpZnkpOwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwKaW5kZXggMjBl
OTdlYTEzMTg2ZGE0ZTA0YzViYWYxNWU0OWUwNDUwY2MwN2JlZi4uNDE3OGQ2ZGQ1YzhjZmNkMzU2
ZGFlYzE5YmEzZWYyODg4NTc3M2I2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFtaWxpZXMuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBm
dW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQpOwogCiAgICAgZG9jdW1lbnQuZm9udHMubG9hZEZv
bnQoeyBmb250OiAnMTBweCBUZXN0Rm9udDEsIFRlc3RGb250MicsIG9uc3VjY2Vzczogb25zdWNj
ZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5G
b250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkp
OwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242206</attachid>
            <date>2014-11-25 11:30:56 -0800</date>
            <delta_ts>2014-12-11 10:13:11 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-136502-20141125113118.patch</filename>
            <type>text/plain</type>
            <size>19327</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJhYzBmOTY2YWFkN2Uy
NzQ5MzdkY2Y1YWI3YTZhNDQ1ZWZkZDRhZS4uMzYxZWI5YTU0NGE3MmNhNTY4NTJjYzQwZDhlNGRj
ZjJiNjU4NjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTExLTI1ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGlu
Z10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1lbnQuZm9udHMucmVhZHkgc2hv
dWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAgICAgICB3aGVuIHRoZSBmb250
IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBmb250cworICAgICAgICAod2hl
dGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgY3JlYXRlcyBhIERlZmVycmVkV3JhcHBlciBwcm9taXNlIHdyYXBwZXIgaW4gSlNG
b250TG9hZGVyQ3VzdG9tLmNwcAorICAgICAgICBhbmQgcGFzc2VzIGl0IGludG8gdGhlIEZvbnRM
b2FkZXIgdG8gYmUgZnVsZmlsbGVkIGF0IGEgbGF0ZXIgdGltZS4KKworICAgICAgICBSZWZhY3Rv
cmVkIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSBkb2N1bWVudC5mb250cy5yZWFkeSByYXRoZXIgdGhh
bgorICAgICAgICBub3RpZnlXaGVuRm9udHNSZWFkeSBjYWxsYmFja3MuIEFkZGVkIG9uZSBuZXcg
dGVzdCwKKyAgICAgICAgZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS5odG1sIHRvIG1ha2Ugc3Vy
ZSByZWFkeSBpcyByZXNldC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIEpTRm9udExvYWRlckN1c3RvbS5jcHAKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZTxzdGQ6Om51bGxwdHJfdD4pOiBBZGQgYSBudWxsCisgICAgICAgIHJlc29sdmUuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGb250TG9hZGVyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU0ZvbnRMb2FkZXI6OnJlYWR5KTogQWRkIGEgZ2V0dGVyL3NldHRlciBmb3Ig
dGhlIHJlYWR5CisgICAgICAgIERlZmVycmVkV3JhcHBlci4KKyAgICAgICAgKiBjc3MvRm9udExv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpGb250TG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKTogRnVsZmlsbCB0
aGUgcmVhZHkgcHJvbWlzZSwKKyAgICAgICAgd2hlcmUgYXBwcm9wcmlhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpGb250TG9hZGVyOjpsb2FkaW5nRG9uZSk6IFN0YXJ0IHRoZSBwZW5kaW5nIHRpbWVy
IGZvciB0aGUKKyAgICAgICAgcmVhZHkgcHJvbWlzZSwgaWYgbmVlZCBiZS4KKyAgICAgICAgKiBj
c3MvRm9udExvYWRlci5oOgorICAgICAgICAqIGNzcy9Gb250TG9hZGVyLmlkbDogQWRkIHRoZSBy
ZWFkeSBhdHRyaWJ1dGUuCisKIDIwMTQtMTEtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB1c2VyIGNvbnRlbnQgY29udHJvbGxlciB0byBX
ZWJWaWV3R3JvdXAgYW5kIHVzZSBpdCBmb3IgdXNlciBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODlmYjNjNzc4MWY4
ZWMxYzBhNjc4NTBkMDI2MTBjODc4MDU2ZmE1Yi4uMDZiZGYzYTY3M2NkMzAxN2RiYTRlNDI0MTJj
ZGI1MGY3ZDMyYjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjUzMyw2ICs2NTMzLDcgQEAKIAkJRkQ0NUE5NTkxNzVENDE3
MTAwQzIxRUM4IC8qIFBvbHlnb25TaGFwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg3QTE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNo
YXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUExNzVENDE3MTAwQzIxRUM4IC8qIFJlY3RhbmdsZVNo
YXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgKi87IH07CiAJCUZE
NDVBOTVCMTc1RDQxRUUwMEMyMUVDOCAvKiBTaGFwZUludGVydmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA4QTg4NTE3NUQzOTI2MDAyQ0QzNjAg
LyogU2hhcGVJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZENEFFMTU4MTk5NDNCMTQwMEE4OUJEMyAvKiBKU0ZvbnRMb2FkZXJDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ0
QUUxNTcxOTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi87IH07CiAJ
CUZENEU1RDNCMTk4MzE3NTUwMEQ5M0E3NyAvKiBKU0ZvbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ5NkM5QTQxOTgzMTRBNTAwODZF
MTU2IC8qIEpTRm9udExvYWRlci5jcHAgKi87IH07CiAJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERD
RSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDUzNzM1MDEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwICovOyB9Owog
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUxMTM3QjY1MTgwMDAwOERDRSAv
KiBaZXJvUG9sZS5oICovOyB9OwpAQCAtMTQxMjksNiArMTQxMzAsNyBAQAogCQlGRDMxNjBCQTEy
QjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRkZURnJhbWVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDM1OTE4RDEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvUGFyYW1UaW1lbGluZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzU5MThFMTM4REIyMjAwMEUxRUJF
QyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9QYXJhbVRpbWVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZE
NEFFMTU3MTk5NDNBNzUwMEE4OUJEMyAvKiBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250TG9hZGVyQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ1MzczNTAxMzdCNjUxODAwMDA4RENFIC8qIFpl
cm9Qb2xlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFplcm9Qb2xl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ1MzczNTExMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFplcm9Q
b2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZENTM3MzU0MTM3QjY1M0IwMDAw
OERDRSAvKiBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMDA1LDYgKzIxMDA3LDcgQEAKIAkJCQlBREVDNzhGNzE4
RUU1MzA4MDAxMzE1QzIgLyogSlNFbGVtZW50Q3VzdG9tLmggKi8sCiAJCQkJQkNFRkFGNEQwQzMx
N0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTJFNzU4MkVEMTI3NjRG
MjYwMDYyNjI4QiAvKiBKU0ZpbGVSZWFkZXJDdXN0b20uY3BwICovLAorCQkJCUZENEFFMTU3MTk5
NDNBNzUwMEE4OUJEMyAvKiBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwICovLAogCQkJCUZFODBEN0E2
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0U3
QjE5MjBENEU4Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzk3
RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8s
CkBAIC0yODM3NCw2ICsyODM3Nyw3IEBACiAJCQkJODk4Nzg1RjQxMjJFMUVBQzAwM0FBQkRBIC8q
IEpTRmlsZVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjZEOUQyN0MxNEVBQzA4
NjAwOTBENzVFIC8qIEpTRm9jdXNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDRFNUQz
QjE5ODMxNzU1MDBEOTNBNzcgLyogSlNGb250TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZENEFFMTU4MTk5NDNCMTQwMEE4OUJEMyAvKiBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRBMTVFQUIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTR2Fpbk5vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RjUwMDExOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBh
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThGNTAwMzE5NENBQzNBMDA4MUJBQUUgLyogSlNH
YW1lcGFkQnV0dG9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaAppbmRleCAwZDY1NmM1OTI3YjUwNDhjZDYxYWNkZTM0NDRlYTNlODQy
ZTU5ZjJjLi41MmUzY2IxOTBmMWNjYWM4MGI4MWMzYWNkNjk1ZTE3YmNjNTM1NTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtODEsNiArODEsMTQgQEAg
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3Qgc3RkOjpudWxscHRyX3Qm
KQogfQogCiB0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8
c3RkOjpudWxscHRyX3Q+KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK3sKKyAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgIHJlc29sdmUoZXhlYywgSlNDOjpqc051bGwoKSk7
Cit9CisKK3RlbXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxT
dHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ZvbnRMb2FkZXJDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NzAyMzg4MTBk
ODlkYjAxODM2NjU5ZGRiZDYxNGZhMTk4YzYyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZvbnRMb2FkZXJDdXN0b20uY3BwCkBAIC0wLDAgKzEsMjQg
QEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ZvbnRMb2FkZXIuaCIKKworI2lm
IEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0pTVmFsdWUgSlNGb250TG9hZGVyOjpyZWFkeShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkucmVhZHkoKSkKKyAgICAgICAgaW1wbCgpLnNldFJl
YWR5KGFkb3B0UHRyKG5ldyBEZWZlcnJlZFdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpKSk7
CisgICAgcmV0dXJuIGltcGwoKS5yZWFkeSgpLT5wcm9taXNlKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKaW5kZXggOTAz
Y2NmYWUzZmRmZjU4Mjc4ZDFmMDg2Y2U5NWIyMDg5NTcwZGVhZi4uOWI2YWY3N2ZlNWNjNmU2ZjRk
ZDYxZjdkMWY0YWNhZGM3N2UwOGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcApAQCAt
MTIzLDYgKzEyMyw3IEBAIEZvbnRMb2FkZXI6OkZvbnRMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgICwgbV9udW1Mb2FkaW5nRnJvbUNTUygwKQogICAgICwgbV9udW1Mb2FkaW5nRnJvbUpT
KDApCiAgICAgLCBtX3BlbmRpbmdFdmVudHNUaW1lcigqdGhpcywgJkZvbnRMb2FkZXI6OnBlbmRp
bmdFdmVudHNUaW1lckZpcmVkKQorICAgICwgbV9yZWFkeUZpcmVkKGZhbHNlKQogewogICAgIHN1
c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAtMTY1LDcgKzE2Niw3IEBAIHZvaWQgRm9udExvYWRlcjo6
c2NoZWR1bGVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogdm9pZCBGb250TG9hZGVy
OjpmaXJlUGVuZGluZ0V2ZW50cygpCiB7Ci0gICAgaWYgKG1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5
KCkgJiYgIW1fbG9hZGluZ0RvbmVFdmVudCAmJiAhbV9jYWxsYmFja3MuaXNFbXB0eSgpKQorICAg
IGlmICghaGFzUGVuZGluZ05vdGlmaWNhdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4+IHBlbmRpbmdFdmVudHM7CkBAIC0xODYsMTAgKzE4NywxOSBA
QCB2b2lkIEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKICAgICAgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrcy5zaXplKCk7ICsraW5kZXgpCiAgICAgICAg
ICAgICBjYWxsYmFja3NbaW5kZXhdLT5oYW5kbGVFdmVudCgpOwogICAgIH0KKworICAgIGlmICht
X3JlYWR5ICYmICFsb2FkaW5nKCkgJiYgIW1fcmVhZHlGaXJlZCkgeworICAgICAgICBtX3JlYWR5
RmlyZWQgPSB0cnVlOworICAgICAgICBtX3JlYWR5LT5yZXNvbHZlKG51bGxwdHIpOworICAgIH0K
IH0KIAogdm9pZCBGb250TG9hZGVyOjpiZWdpbkZvbnRMb2FkaW5nKENTU0ZvbnRGYWNlUnVsZSog
cnVsZSkKIHsKKyAgICBpZiAoIWxvYWRpbmcoKSAmJiBtX3JlYWR5RmlyZWQgJiYgbV9yZWFkeSkg
eworICAgICAgICBtX3JlYWR5LmNsZWFyKCk7CisgICAgICAgIG1fcmVhZHlGaXJlZCA9IGZhbHNl
OworICAgIH0KICAgICArK21fbnVtTG9hZGluZ0Zyb21DU1M7CiAgICAgaWYgKG1fbnVtTG9hZGlu
Z0Zyb21DU1MgPT0gMSAmJiAhbV9sb2FkaW5nRG9uZUV2ZW50KQogICAgICAgICBzY2hlZHVsZUV2
ZW50KENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpjcmVhdGVGb3JGb250RmFjZVJ1bGUoZXZlbnROYW1l
cygpLmxvYWRpbmdFdmVudCwgcnVsZSkpOwpAQCAtMjI3LDggKzIzNywxMCBAQCB2b2lkIEZvbnRM
b2FkZXI6OmxvYWRpbmdEb25lKCkKIHsKICAgICBpZiAobG9hZGluZygpIHx8ICFtX2RvY3VtZW50
LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9s
b2FkaW5nRG9uZUV2ZW50ICYmIG1fY2FsbGJhY2tzLmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdFdmVu
dHMuaXNFbXB0eSgpKQorICAgIGlmICghbV9sb2FkaW5nRG9uZUV2ZW50ICYmIG1fY2FsbGJhY2tz
LmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpCisgICAgICAgICYmIChtX3Jl
YWR5RmlyZWQgfHwgIW1fcmVhZHkpKSB7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBp
ZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9kb2N1bWVudC0+dmlldygpKSB7CiAgICAgICAgIGlmICh2
aWV3LT5pc0luTGF5b3V0KCkgfHwgdmlldy0+bmVlZHNMYXlvdXQoKSkKQEAgLTI0OCw2ICsyNjAs
MTAgQEAgdm9pZCBGb250TG9hZGVyOjpsb2FkRm9udChjb25zdCBEaWN0aW9uYXJ5JiBwYXJhbXMp
CiAgICAgRm9udCBmb250OwogICAgIGlmICghcmVzb2x2ZUZvbnRTdHlsZShmb250U3RyaW5nLCBm
b250KSkKICAgICAgICAgcmV0dXJuOworICAgIGlmICghbG9hZGluZygpICYmIG1fcmVhZHlGaXJl
ZCAmJiBtX3JlYWR5KSB7CisgICAgICAgIG1fcmVhZHkuY2xlYXIoKTsKKyAgICAgICAgbV9yZWFk
eUZpcmVkID0gZmFsc2U7CisgICAgfQogICAgIFJlZlB0cjxMb2FkRm9udENhbGxiYWNrPiBjYWxs
YmFjayA9IExvYWRGb250Q2FsbGJhY2s6OmNyZWF0ZUZyb21QYXJhbXMocGFyYW1zLCAqdGhpcywg
Zm9udCk7CiAgICAgbV9udW1Mb2FkaW5nRnJvbUpTICs9IGNhbGxiYWNrLT5mYW1pbHlDb3VudCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaAppbmRleCBiNmQ2ZDkxMWExNGNjNGM4ODI2NGNjMjMy
MjVlZTM4NDQzNTBjNWQwLi5kMjdmMDkxNTc4NzQwMDNjZWNhZmI5OWVlYWRhODVjMTlkMzVmOWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CkBAIC04NSw2ICs4Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRFcnJvcihDU1NGb250
RmFjZVJ1bGUqLCBDU1NGb250RmFjZVNvdXJjZSopOwogICAgIHZvaWQgbG9hZGluZ0RvbmUoKTsK
IAorICAgIERlZmVycmVkV3JhcHBlciogcmVhZHkoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5Lmdl
dCgpOyB9CisgICAgdm9pZCBzZXRSZWFkeShQYXNzT3duUHRyPERlZmVycmVkV3JhcHBlcj4gdmFs
dWUpIHsgbV9yZWFkeUZpcmVkID0gZmFsc2U7IG1fcmVhZHkgPSB2YWx1ZTsgfQorCiAgICAgdmly
dHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9udW1Mb2Fk
aW5nRnJvbUNTUyAmJiAhbV9udW1Mb2FkaW5nRnJvbUpTOyB9CiAKIHByaXZhdGU6CkBAIC05NSw2
ICs5OSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIGhhc1BlbmRpbmdOb3RpZmlj
YXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHko
KSB8fCBtX2xvYWRpbmdEb25lRXZlbnQgfHwgIW1fY2FsbGJhY2tzLmlzRW1wdHkoKQorICAgICAg
ICAgICAgfHwgKG1fcmVhZHkgJiYgIW1fcmVhZHlGaXJlZCk7CisgICAgfQogICAgIHZvaWQgcGVu
ZGluZ0V2ZW50c1RpbWVyRmlyZWQoKSB7IGZpcmVQZW5kaW5nRXZlbnRzKCk7IH0KICAgICB2b2lk
IHNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgZmlyZVBlbmRpbmdF
dmVudHMoKTsKQEAgLTEwOCw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
Vm9pZENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2xvYWRpbmdE
b25lRXZlbnQ7CiAgICAgVGltZXIgbV9wZW5kaW5nRXZlbnRzVGltZXI7CisgICAgT3duUHRyPERl
ZmVycmVkV3JhcHBlcj4gbV9yZWFkeTsKKyAgICBib29sIG1fcmVhZHlGaXJlZDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
TG9hZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmlkbAppbmRleCBhODE5
MGI4Y2U1ZDUwZGJjZjI3ZjFlMmQwM2YwMDYzOTFkYTY4ZTdjLi5lZTY5YTkzMWVmYjY3N2JiMGM4
Y2MxYTY5MTY4NTM5Mjc1MjJjODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dExvYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaWRsCkBAIC00
MSw2ICs0MSw3IEBACiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25sb2Fkc3RhcnQ7CiAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25sb2FkOwogICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uZXJyb3I7CisgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2Ug
cmVhZHk7CiAKICAgICBib29sZWFuIGNoZWNrRm9udChET01TdHJpbmcgZm9udCwgW0RlZmF1bHQ9
TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQpOwogICAgIHZvaWQgbG9hZEZvbnQo
RGljdGlvbmFyeSBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI5NTNmMDQ0MmNmYTIzODhjYWM0YWU0YzllMTgy
MTA1NmU2ZjhkNGQuLjFhOGMzYTIzMzc0ZWJkY2M3NWNiMjcxNTE4MjRlYmE1OTY4OTVkZDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNC0xMS0yNSAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0Bn
bWFpbC5jb20+CisKKyAgICAgICAgW0NTUyBGb250IExvYWRpbmddIEFkZCByZWFkeSBhdHRyaWJ1
dGUgdG8gZG9jdW1lbnQuZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRyYW5zaXRpb24gdGVzdHMgZnJvbSB1c2luZyB0aGUgbm90aWZ5V2hlbkZv
bnRzUmVhZHkgY2FsbGJhY2tzCisgICAgICAgIHRvIHVzaW5nIGRvY3VtZW50LmZvbnRzLnJlYWR5
IGluc3RlYWQuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLWNoYWluaW5nLXJlYWR5
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItY2hh
aW5pbmctcmVhZHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1k
b3dubG9hZC1lcnJvci5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItZXZlbnRz
Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sOgor
ICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWw6CisKIDIwMTQt
MTEtMjUgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgdXBsb2FkIHR3byBtaXNzaW5nIHRlc3QgZmlsZXMgaW4gdGhlIGNvbW1pdCBy
MTc0Njc3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFp
bmluZy1yZWFkeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVy
LWNoYWluaW5nLXJlYWR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2EzNjlkODUxNmY2MjNk
YmYyNGRiM2ViZGM5NzYxZTdmYjYyNjk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIHJlc2V0cyBhZnRlciBhZGRpbmcg
bW9yZSBmb250cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1l
bnQuZm9udHMuY2hlY2tGb250KCcxMHB4IFRlc3RGb250MScpIGlzIHRydWUKK1BBU1MgZXZlbnRz
Wydsb2FkaW5nJ10gaXMgMgorUEFTUyBldmVudHNbJ2xvYWRzdGFydCddIGlzIDIKK1BBU1MgZXZl
bnRzWydsb2FkJ10gaXMgMgorUEFTUyBldmVudHNbJ2Vycm9yJ10gaXMgdW5kZWZpbmVkCitQQVNT
IGV2ZW50c1snbG9hZGluZ2RvbmUnXSBpcyAyCitQQVNTIGRvY3VtZW50LmZvbnRzLmNoZWNrRm9u
dCgnMTBweCBUZXN0Rm9udDInKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1jaGFpbmluZy1yZWFkeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZjBlYzEwZmNjYzU4MzA0
Y2UyNmNjNDQ1OWIxMzIwNTMwM2MzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250bG9hZGVyLWNoYWluaW5nLXJlYWR5Lmh0bWwKQEAgLTAsMCArMSw3NSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+CitAZm9udC1mYWNlIHsKKyAgICBmb250
LWZhbWlseTogVGVzdEZvbnQxOworICAgIHNyYzogbG9jYWwoJ0NvdXJpZXIgTmV3Jyk7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgdGhlIHJlYWR5IHByb21p
c2UgcmVzZXRzIGFmdGVyIGFkZGluZyBtb3JlIGZvbnRzLicpOworCit3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK3ZhciBldmVudHMgPSB7fTsKKworZnVuY3Rpb24gY291bnRFdmVudChl
KSB7CisgICAgaWYgKCFldmVudHNbZS50eXBlXSkKKyAgICAgICAgZXZlbnRzW2UudHlwZV0gPSAw
OworICAgIGV2ZW50c1tlLnR5cGVdICs9IDE7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgewor
ICAgIGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRpbmcnLCBjb3VudEV2ZW50
KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2Fkc3RhcnQnLCBjb3Vu
dEV2ZW50KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgY291
bnRFdmVudCk7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBj
b3VudEV2ZW50KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5n
ZG9uZScsIGNvdW50RXZlbnQpOworCisgICAgZG9jdW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250
OiAiMTBweCBUZXN0Rm9udDEiLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywgb25lcnJvcjogb25lcnJv
ciB9KTsKKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKHZlcmlmeTEpOworfQorCitmdW5j
dGlvbiBvbnN1Y2Nlc3MoKSB7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgdGVzdEZh
aWxlZCgiRXhwZWN0ZWQgc3VjY2VzcywgYnV0IG9uZXJyb3IoKSBjYWxsZWQiKTsKK30KKworZnVu
Y3Rpb24gdmVyaWZ5MSgpIHsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZm9udHMuY2hlY2tGb250
KCcxMHB4IFRlc3RGb250MScpIiwgInRydWUiKTsKKyAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcjc3R5bGUnKTsKKyAgICBzdHlsZS50ZXh0Q29udGVudCArPSAiXAorICAg
IEBmb250LWZhY2Uge1wKKyAgICAgICAgZm9udC1mYW1pbHk6IFRlc3RGb250MjtcCisgICAgICAg
IHNyYzogdXJsKC4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zik7XAorICAgICAgICB1bmljb2RlLXJh
bmdlOiB1KzYxLTdhOyAvKiAnYSctJ3onICovXAorICAgIH0iOworICAgIGRvY3VtZW50LmZvbnRz
LmxvYWRGb250KHsgZm9udDogIjEwcHggVGVzdEZvbnQyIiwgb25zdWNjZXNzOiBvbnN1Y2Nlc3Ms
IG9uZXJyb3I6IG9uZXJyb3IgfSk7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJp
ZnkyKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5MigpIHsKKyAgICBzaG91bGRCZSgiZXZlbnRzWyds
b2FkaW5nJ10iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudHNbJ2xvYWRzdGFydCddIiwgIjIi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydsb2FkJ10iLCAiMiIpOworICAgIHNob3VsZEJlKCJl
dmVudHNbJ2Vycm9yJ10iLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUoImV2ZW50c1snbG9h
ZGluZ2RvbmUnXSIsICIyIik7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmZvbnRzLmNoZWNrRm9u
dCgnMTBweCBUZXN0Rm9udDInKSIsICJ0cnVlIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K2lmIChkb2N1bWVudC5mb250cykKKyAgICBydW5UZXN0cygpOworZWxzZSB7CisgICAgdGVzdEZh
aWxlZCgnZG9jdW1lbnQuZm9udHMgZG9lcyBub3QgZXhpc3QnKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZG93bmxvYWQtZXJyb3Iu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRt
bAppbmRleCAzYjBkMTE3ZjVlMGEzMGYzZGY2MDA1ZjE5ZWRiYjM3YWE4OTIyNjVkLi40ODkxNTA2
NmZhMDU3OTQ5MWRjZDJmZmY2MmI2MWMzNDNhZjI0ZmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvZm9udGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sCkBAIC01MSw3ICs1MSw3
IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgIGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBsb2dFdmVudCk7CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0
ZW5lcignZXJyb3InLCBsb2dFdmVudCk7CiAKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVu
Rm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKGZ1
bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgiZXZlbnRzWydteWZvbnQxJ10iLCAiWydsb2Fk
c3RhcnQnLCAnZXJyb3InXSIpOwogICAgICAgICBzaG91bGRCZSgiZXZlbnRzWydteWZvbnQyJ10i
LCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwogICAgICAgICBzaG91bGRCZSgiZXZlbnRzWydt
eWZvbnQzJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwKaW5kZXggZjVkOTY4MWE0ZTFlYmE3NzMwZmM1MTI3
MGQwODY5NTRhY2QzYTViNC4uZDg2YmNiNzEyNWYxYTNlZTJkMTIyNjNjYTVmYjcwZjY5NmMzNmEy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWV2ZW50cy5odG1sCkBAIC0y
OCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgIGRvY3VtZW50LmZvbnRzLm9u
bG9hZCA9IGhhbmRsZUV2ZW50OwogICAgIGRvY3VtZW50LmZvbnRzLm9uZXJyb3IgPSBoYW5kbGVF
dmVudDsKIAotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5Gb250c1JlYWR5KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAg
IHNob3VsZEJlKCdudW1iZXJPZkV2ZW50cycsICc0Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1s
b2FkaW5nZG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1sb2FkaW5n
ZG9uZS5odG1sCmluZGV4IGExYjE2YWJlZWNlYWY3OGQ3MWE0YmQ2YjdkMzUyYTBjYTIwYWI4NTUu
LmY4NzdhNTU3MzJkMDJlNzFiNzRiMjIwMjZlOGQ3MTJjYWIxYzdiODEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2RvbmUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWxvYWRpbmdkb25lLmh0bWwKQEAgLTI4LDcgKzI4
LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygnd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdiwgMCkud2lkdGgnLCAnNDhweCcpOwog
ICAgIH07CiAKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlv
bigpIHsKKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAg
ICBkZWJ1Zygnbm90aWZ5V2hlbkZvbnRzUmVhZHkoKSBjYWxsYmFjaycpOwogICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3REaXYsIDApLndp
ZHRoJywgJzQ4cHgnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwKaW5kZXggNTM4NmM0
NjI3MDExMzc3MmQ5ZjQ5N2VkY2M4ZGYxYTFkMDY1NjEzZS4uMWRhZTE3OTBlMDg0NDRmMjcyZDJl
YWRhZTdkODFjOTc0ZWIxNGU1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1tdWx0aXBsZS1mYWNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Zv
bnRsb2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5n
ZG9uZScsIGNvdW50RXZlbnQpOwogCiAgICAgZG9jdW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250
OiAnMTBweCBUZXN0Rm9udCcsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9y
IH0pOwotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5Gb250c1JlYWR5KHZlcmlmeSk7Cisg
ICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkpOwogfQogCiBmdW5jdGlvbiBvbnN1
Y2Nlc3MoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11
bHRpcGxlLWZhbWlsaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11
bHRpcGxlLWZhbWlsaWVzLmh0bWwKaW5kZXggMjBlOTdlYTEzMTg2ZGE0ZTA0YzViYWYxNWU0OWUw
NDUwY2MwN2JlZi4uNDE3OGQ2ZGQ1YzhjZmNkMzU2ZGFlYzE5YmEzZWYyODg4NTc3M2I2ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGll
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFt
aWxpZXMuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBk
b2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQp
OwogCiAgICAgZG9jdW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250OiAnMTBweCBUZXN0Rm9udDEs
IFRlc3RGb250MicsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwot
ICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5Gb250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkpOwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3Mo
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243130</attachid>
            <date>2014-12-11 10:13:13 -0800</date>
            <delta_ts>2014-12-15 16:01:27 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-136502-20141211101356.patch</filename>
            <type>text/plain</type>
            <size>22462</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAyM2QzNjk5NTdiNTEx
YmViN2U1MzI3ZDNmMjllNmUwOWE3MzhjYy4uMzgxMWFmMzdjY2RlZDM5Nzk4Y2JhODFiMTc3ZThi
MWZjZTlkMWI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTEyLTExICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGlu
Z10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1lbnQuZm9udHMucmVhZHkgc2hv
dWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAgICAgICB3aGVuIHRoZSBmb250
IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBmb250cworICAgICAgICAod2hl
dGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuIFRoaXMgcGF0Y2gK
KyAgICAgICAgcmV0dXJucyBwcm9taXNlcyBvbiB0aGUgSlMgc2lkZSwgYW5kIHJlZ2lzdGVycyBz
dWNjZXNzIGNhbGxiYWNrcworICAgICAgICB3aXRoIHRoZSBGb250TG9hZGVyIHRvIGJlIGZ1bGZp
bGxlZCBhdCBhIGxhdGVyIHRpbWUuIFRoZXNlIHN1Y2Nlc3MKKyAgICAgICAgY2FsbGJhY2tzIHJl
cGxhY2UgdGhlIG9yaWdpbmFsIG5vdGlmeVdoZW5SZWFkeSBvbmVzLgorCisgICAgICAgIFJlZmFj
dG9yZWQgZXhpc3RpbmcgdGVzdHMgdG8gdXNlIGRvY3VtZW50LmZvbnRzLnJlYWR5IHJhdGhlciB0
aGFuCisgICAgICAgIG5vdGlmeVdoZW5Gb250c1JlYWR5IGNhbGxiYWNrcy4gQWRkZWQgb25lIG5l
dyB0ZXN0LAorICAgICAgICBmb250bG9hZGVyLWNoYWluaW5nLXJlYWR5Lmh0bWwgdG8gbWFrZSBz
dXJlIHJlYWR5IGlzIHJlc2V0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOiBBZGQgSlNGb250TG9hZGVyQ3VzdG9tLmNwcAorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpy
ZXNvbHZlPHN0ZDo6bnVsbHB0cl90Pik6IEFkZCBhIG51bGwKKyAgICAgICAgcmVzb2x2ZS4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRMb2FkZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTRm9udExvYWRlcjo6cmVhZHkpOiBBZGQgYSBnZXR0ZXIvc2V0dGVyIGZv
ciB0aGUgcmVhZHkKKyAgICAgICAgcHJvbWlzZS4KKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpGb250TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKTogRnVsZmlsbCB0aGUgcmVh
ZHkgcHJvbWlzZQorICAgICAgICBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpGb250TG9h
ZGVyOjphZGRDYWxsYmFjayk6IEFkZCBhIG1ldGhvZCBmb3IgYWRkaW5nIHRoZQorICAgICAgICBz
dWNjZXNzIGNhbGxiYWNrcy4KKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAq
IGNzcy9Gb250TG9hZGVyLmlkbDogQWRkIHRoZSByZWFkeSBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBu
b3RpZnlXaGVuRm9udHNSZWFkeS4KKwogMjAxNC0xMi0xMSAgUmFkdSBTdGF2aWxhICA8c3Rhdmls
YUBhZG9iZS5jb20+CiAKICAgICAgICAgW1NWRyBNYXNraW5nXSBFbmFibGUgdGhlIHVzZSBvZiA8
bWFzaz4gZWxlbWVudHMgZm9yIC13ZWJraXQtbWFzay1pbWFnZQpAQCAtMzY1LDYgKzM5OSw0MCBA
QAogICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKICAgICAgICAgKFdlYkNv
cmU6OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlQmVmb3JlVGV4dEluc2VydGVkRXZlbnQpOgog
CisyMDE0LTEyLTEwICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ1NTIEZvbnQgTG9hZGluZ10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1l
bnQuZm9udHMucmVhZHkgc2hvdWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAg
ICAgICB3aGVuIHRoZSBmb250IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBm
b250cworICAgICAgICAod2hldGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9y
IG5vdCkuIFRoaXMgcGF0Y2gKKyAgICAgICAgcmV0dXJucyBwcm9taXNlcyBvbiB0aGUgSlMgc2lk
ZSwgYW5kIHJlZ2lzdGVycyBzdWNjZXNzIGNhbGxiYWNrcworICAgICAgICB3aXRoIHRoZSBGb250
TG9hZGVyIHRvIGJlIGZ1bGZpbGxlZCBhdCBhIGxhdGVyIHRpbWUuIFRoZXNlIHN1Y2Nlc3MKKyAg
ICAgICAgY2FsbGJhY2tzIHJlcGxhY2UgdGhlIG9yaWdpbmFsIG5vdGlmeVdoZW5SZWFkeSBvbmVz
LgorCisgICAgICAgIFJlZmFjdG9yZWQgZXhpc3RpbmcgdGVzdHMgdG8gdXNlIGRvY3VtZW50LmZv
bnRzLnJlYWR5IHJhdGhlciB0aGFuCisgICAgICAgIG5vdGlmeVdoZW5Gb250c1JlYWR5IGNhbGxi
YWNrcy4gQWRkZWQgb25lIG5ldyB0ZXN0LAorICAgICAgICBmb250bG9hZGVyLWNoYWluaW5nLXJl
YWR5Lmh0bWwgdG8gbWFrZSBzdXJlIHJlYWR5IGlzIHJlc2V0LgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgSlNGb250TG9hZGVyQ3VzdG9tLmNwcAor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPHN0ZDo6bnVsbHB0cl90Pik6IEFkZCBhIG51bGwKKyAg
ICAgICAgcmVzb2x2ZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZvbnRMb2FkZXJDdXN0b20u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRm9udExvYWRlcjo6cmVhZHkpOiBBZGQg
YSBnZXR0ZXIvc2V0dGVyIGZvciB0aGUgcmVhZHkKKyAgICAgICAgcHJvbWlzZS4KKyAgICAgICAg
KiBjc3MvRm9udExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpGb250
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRz
KTogRnVsZmlsbCB0aGUgcmVhZHkgcHJvbWlzZQorICAgICAgICBjYWxsYmFja3MuCisgICAgICAg
IChXZWJDb3JlOjpGb250TG9hZGVyOjphZGRDYWxsYmFjayk6IEFkZCBhIG1ldGhvZCBmb3IgYWRk
aW5nIHRoZQorICAgICAgICBzdWNjZXNzIGNhbGxiYWNrcy4KKyAgICAgICAgKiBjc3MvRm9udExv
YWRlci5oOgorICAgICAgICAqIGNzcy9Gb250TG9hZGVyLmlkbDogQWRkIHRoZSByZWFkeSBhdHRy
aWJ1dGUgYW5kIHJlbW92ZSBub3RpZnlXaGVuRm9udHNSZWFkeS4KKwogMjAxNC0xMi0xMCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG1pc3Np
bmcgbnVsbCBjaGVjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyYTMzZjE3OTJmNTBmMmY4MzlhODA0ZTBiNTI2NmMyYmQzNWFj
YzI2Li41MmYxODQzMjk1OGQyMjY5N2FlMGYwNjMyYWEzZTczOWRhYTZjMjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTQw
LDYgKzY1NDAsNyBAQAogCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhB
ODdBMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuY3BwICovOyB9OwogCQlGRDQ1QTk1
QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8q
IFJlY3RhbmdsZVNoYXBlLmNwcCAqLzsgfTsKIAkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEMDhBODg1MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZUludGVydmFsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkQ0QUUxNTgxOTk0
M0IxNDAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDRBRTE1NzE5OTQzQTc1MDBBODlCRDMgLyog
SlNGb250TG9hZGVyQ3VzdG9tLmNwcCAqLzsgfTsKIAkJRkQ0RTVEM0IxOTgzMTc1NTAwRDkzQTc3
IC8qIEpTRm9udExvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRDk2QzlBNDE5ODMxNEE1MDA4NkUxNTYgLyogSlNGb250TG9hZGVyLmNwcCAq
LzsgfTsKIAkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZENTM3MzUwMTM3QjY1MTgw
MDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgKi87IH07CiAJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERD
RSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkQ1MzczNTExMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggKi87IH07CkBAIC0x
NDE0NCw2ICsxNDE0NSw3IEBACiAJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGRlRGcmFtZU1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMzU5MThEMTM4REIyMjAwMEUx
RUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9QYXJhbVRpbWVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkQzNTkxOEUxMzhEQjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1UaW1lbGluZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1BhcmFtVGltZWxpbmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQ0QUUxNTcxOTk0M0E3NTAwQTg5QkQzIC8q
IEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRDUzNzM1MDEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWmVyb1BvbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRDUzNzM1MTEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWmVyb1BvbGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkQ1MzczNTQxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEw
MjQsNiArMjEwMjYsNyBAQAogCQkJCUFERUM3OEY3MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1l
bnRDdXN0b20uaCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQxMjc2NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRl
ckN1c3RvbS5jcHAgKi8sCisJCQkJRkQ0QUUxNTcxOTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExv
YWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2Vv
bG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBK
U0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJDOTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBK
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTI4NDA0LDYgKzI4NDA3LDcgQEAK
IAkJCQk4OTg3ODVGNDEyMkUxRUFDMDAzQUFCREEgLyogSlNGaWxlUmVhZGVyU3luYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNkQ5RDI3QzE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENEU1RDNCMTk4MzE3NTUwMEQ5M0E3NyAvKiBKU0Zv
bnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQ0QUUxNTgxOTk0M0IxNDAwQTg5QkQz
IC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBQjEy
QjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThG
NTAwMTE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxOEY1MDAzMTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDBk
NjU2YzU5MjdiNTA0OGNkNjFhY2RlMzQ0NGVhM2U4NDJlNTlmMmMuLjUyZTNjYjE5MGYxY2NhYzgw
YjgxYzNhY2Q2OTVlMTdiY2M1MzU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oCkBAIC04MSw2ICs4MSwxNCBAQCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlamVjdChjb25zdCBzdGQ6Om51bGxwdHJfdCYpCiB9CiAKIHRlbXBsYXRlPD4KK2lubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxzdGQ6Om51bGxwdHJfdD4oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Cisg
ICAgcmVzb2x2ZShleGVjLCBKU0M6OmpzTnVsbCgpKTsKK30KKwordGVtcGxhdGU8PgogaW5saW5l
IHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFN0cmluZz4oY29uc3QgU3RyaW5nJiByZXN1
bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGb250TG9h
ZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM5NWQ3NjIwZTVhNzU0ZTg5N2I0ODk4NTdhZDFmMmJjMTQ1
ODM5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9u
dExvYWRlckN1c3RvbS5jcHAKQEAgLTAsMCArMSwyNCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTRm9udExvYWRlci5oIgorCisjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMp
CisKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTRm9udExvYWRlcjo6cmVhZHkoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGds
b2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11
dGFibGUgeworICAgICAgICB3cmFwcGVyLnJlc29sdmUobnVsbHB0cik7CisgICAgfTsKKyAgICBp
bXBsKCkuYWRkQ2FsbGJhY2soV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjaykpOworICAgIHJldHVy
biB3cmFwcGVyLnByb21pc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAppbmRleCA5MDNjY2ZhZTNmZGZmNTgyNzhkMWYw
ODZjZTk1YjIwODk1NzBkZWFmLi42YTA5MGI0YmJlNjUyYjI1YzJlYWZmZjAzYWI4M2RlY2IwZjI3
NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBGb250TG9hZGVyOjpzY2hlZHVsZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiB2
b2lkIEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKIHsKLSAgICBpZiAobV9wZW5kaW5n
RXZlbnRzLmlzRW1wdHkoKSAmJiAhbV9sb2FkaW5nRG9uZUV2ZW50ICYmICFtX2NhbGxiYWNrcy5p
c0VtcHR5KCkpCisgICAgaWYgKCFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpICYmICFtX2xvYWRp
bmdEb25lRXZlbnQgJiYgIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IHBlbmRpbmdFdmVudHM7CkBAIC0xODEsMTAgKzE4
MSwxMCBAQCB2b2lkIEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKICAgICAgICAgZGlz
cGF0Y2hFdmVudChwZW5kaW5nRXZlbnRzW2luZGV4XS5yZWxlYXNlKCkpOwogCiAgICAgaWYgKGxv
YWRpbmdEb25lICYmICFtX2NhbGxiYWNrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+PiBjYWxsYmFja3M7CisgICAgICAgIFZlY3RvcjxGb250TG9hZGVy
Vm9pZENhbGxiYWNrPiBjYWxsYmFja3M7CiAgICAgICAgIG1fY2FsbGJhY2tzLnN3YXAoY2FsbGJh
Y2tzKTsKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrcy5z
aXplKCk7ICsraW5kZXgpCi0gICAgICAgICAgICBjYWxsYmFja3NbaW5kZXhdLT5oYW5kbGVFdmVu
dCgpOworICAgICAgICAgICAgY2FsbGJhY2tzW2luZGV4XSgpOwogICAgIH0KIH0KIApAQCAtMjE4
LDkgKzIxOCw5IEBAIHZvaWQgRm9udExvYWRlcjo6bG9hZEVycm9yKENTU0ZvbnRGYWNlUnVsZSog
cnVsZSwgQ1NTRm9udEZhY2VTb3VyY2UqIHNvdXJjZSkKICAgICAgICAgbV9sb2FkaW5nRG9uZUV2
ZW50ID0gQ1NTRm9udEZhY2VMb2FkRXZlbnQ6OmNyZWF0ZUZvckZvbnRGYWNlUnVsZShldmVudE5h
bWVzKCkubG9hZGluZ2RvbmVFdmVudCwgcnVsZSk7CiB9CiAKLXZvaWQgRm9udExvYWRlcjo6bm90
aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrKQordm9p
ZCBGb250TG9hZGVyOjphZGRDYWxsYmFjayhGb250TG9hZGVyVm9pZENhbGxiYWNrIGNhbGxiYWNr
KQogewotICAgIG1fY2FsbGJhY2tzLmFwcGVuZChjYWxsYmFjayk7CisgICAgbV9jYWxsYmFja3Mu
YXBwZW5kKFdURjo6bW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIEZvbnRMb2FkZXI6OmxvYWRp
bmdEb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCmluZGV4IGI2ZDZkOTExYTE0Y2M0Yzg4MjY0
Y2MyMzIyNWVlMzg0NDM1MGM1ZDAuLmEwMzM3NWYxNWQ4YjQ4ZDIzZTE5OTNjMzVjOGQ1NjQ4YTNm
ZDBkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaApAQCAtNTEsNiArNTEsOCBAQCBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBGb250TG9hZGVyIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8Rm9udExvYWRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBF
dmVudFRhcmdldCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Rm9udExvYWRlclZvaWRDYWxsYmFjazsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvbnRMb2Fk
ZXI+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWY8Rm9udExvYWRlcj4obmV3IEZvbnRMb2FkZXIoZG9jdW1lbnQpKTsKQEAgLTY3LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZvbnQoY29uc3QgRGljdGlvbmFyeSYpOwogICAg
IHZvaWQgbG9hZEZvbnREb25lKGNvbnN0IExvYWRGb250Q2FsbGJhY2smKTsKIAotICAgIHZvaWQg
bm90aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICB2b2lk
IGFkZENhbGxiYWNrKEZvbnRMb2FkZXJWb2lkQ2FsbGJhY2spOwogCiAgICAgYm9vbCBsb2FkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9udW1Mb2FkaW5nRnJvbUNTUyA+IDAgfHwgbV9udW1Mb2FkaW5n
RnJvbUpTID4gMDsgfQogCkBAIC0xMDUsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX251bUxvYWRpbmdGcm9tQ1NTOwogICAgIHVuc2lnbmVkIG1fbnVtTG9hZGluZ0Zyb21KUzsK
ICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwotICAgIFZlY3RvcjxS
ZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CisgICAgVmVjdG9yPEZvbnRMb2FkZXJW
b2lkQ2FsbGJhY2s+IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxFdmVudD4gbV9sb2FkaW5nRG9u
ZUV2ZW50OwogICAgIFRpbWVyIG1fcGVuZGluZ0V2ZW50c1RpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250TG9hZGVyLmlkbAppbmRleCBhODE5MGI4Y2U1ZDUwZGJjZjI3ZjFlMmQwM2YwMDYzOTFkYTY4
ZTdjLi5jNzZiMmRkNWFhMDY4ODViNWE0YzEyZGIyYjk0OTBlMjFiOGI2YWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRMb2FkZXIuaWRsCkBAIC00MSwxMCArNDEsMTAgQEAKICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmxvYWRzdGFydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmxv
YWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICBbQ3VzdG9tXSBy
ZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKIAogICAgIGJvb2xlYW4gY2hlY2tGb250
KERPTVN0cmluZyBmb250LCBbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcg
dGV4dCk7CiAgICAgdm9pZCBsb2FkRm9udChEaWN0aW9uYXJ5IHBhcmFtcyk7Ci0gICAgdm9pZCBu
b3RpZnlXaGVuRm9udHNSZWFkeShWb2lkQ2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGxvYWRpbmc7CiAKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
RE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjEyZDQ4NzZkMWQyZDUyZTQzYmYwNGFkNmZlM2JmZDRi
ODliZDA2Zi4uNDUxNjlhMDE2MWJkMmUxZWIxMmE4ZGQxODJlZTJjYThkMjZhNTI3NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDE0LTEyLTExICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGdtYWls
LmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGluZ10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0
byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVHJhbnNpdGlvbiB0ZXN0cyBmcm9tIHVzaW5nIHRoZSBub3RpZnlXaGVuRm9udHNS
ZWFkeSBjYWxsYmFja3MKKyAgICAgICAgdG8gdXNpbmcgZG9jdW1lbnQuZm9udHMucmVhZHkgaW5z
dGVhZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFNraXBwaW5nIGFkZGVkIHRlc3Rz
IGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IEVu
YWJsaW5nIGFkZGVkIHRlc3RzIG9uIE1hYy4KKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVy
LWNoYWluaW5nLXJlYWR5LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L2ZvbnRsb2FkZXItY2hhaW5pbmctcmVhZHkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
c3MvZm9udGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2Zv
bnRsb2FkZXItZXZlbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1sb2Fk
aW5nZG9uZS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFj
ZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhbWlsaWVz
Lmh0bWw6CisKIDIwMTQtMTItMTEgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgog
CiAgICAgICAgIFtTVkcgTWFza2luZ10gRW5hYmxlIHRoZSB1c2Ugb2YgPG1hc2s+IGVsZW1lbnRz
IGZvciAtd2Via2l0LW1hc2staW1hZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGU0N2Y1NTQ2MGYz
M2RlYzI0ZWRlZTFkNjFiNjdjMTMzNjliMmU0ZjQuLjc0MGQzZjM3ZWY4MTg1NWM0YWM2NWI3ZmMy
MmU3NzAzNTFlMzU5YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI5LDYgKzEyOSw3IEBAIHdl
YmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlw
bGUtZmFtaWxpZXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nzcy9m
b250bG9hZGVyLXBhZ2UtY2FjaGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzNTM5MCBo
dHRwL3Rlc3RzL3dlYmZvbnQvZm9udGxvYWRlci1sb2FkaW5nLWF0dHJpYnV0ZS5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5pbmctcmVh
ZHkuaHRtbCBbIFNraXAgXQogCiAjIFZhcmlvdXMgZmFpbHVyZXMgZnJvbSB0aGUgVzNDIENTUyBT
aGFwZXMgdGVzdCBzdWl0ZSBpbXBvcnQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250bG9hZGVyLWNoYWluaW5nLXJlYWR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43Y2EzNjlkODUxNmY2MjNkYmYyNGRiM2ViZGM5NzYxZTdmYjYyNjk0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIHJl
c2V0cyBhZnRlciBhZGRpbmcgbW9yZSBmb250cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZG9jdW1lbnQuZm9udHMuY2hlY2tGb250KCcxMHB4IFRlc3RGb250MScpIGlz
IHRydWUKK1BBU1MgZXZlbnRzWydsb2FkaW5nJ10gaXMgMgorUEFTUyBldmVudHNbJ2xvYWRzdGFy
dCddIGlzIDIKK1BBU1MgZXZlbnRzWydsb2FkJ10gaXMgMgorUEFTUyBldmVudHNbJ2Vycm9yJ10g
aXMgdW5kZWZpbmVkCitQQVNTIGV2ZW50c1snbG9hZGluZ2RvbmUnXSBpcyAyCitQQVNTIGRvY3Vt
ZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9udDInKSBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFkeS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3ZjBlYzEwZmNjYzU4MzA0Y2UyNmNjNDQ1OWIxMzIwNTMwM2MzZDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWNoYWluaW5nLXJlYWR5Lmh0bWwK
QEAgLTAsMCArMSw3NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+CitAZm9u
dC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogVGVzdEZvbnQxOworICAgIHNyYzogbG9jYWwoJ0Nv
dXJpZXIgTmV3Jyk7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHRo
YXQgdGhlIHJlYWR5IHByb21pc2UgcmVzZXRzIGFmdGVyIGFkZGluZyBtb3JlIGZvbnRzLicpOwor
Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciBldmVudHMgPSB7fTsKKworZnVu
Y3Rpb24gY291bnRFdmVudChlKSB7CisgICAgaWYgKCFldmVudHNbZS50eXBlXSkKKyAgICAgICAg
ZXZlbnRzW2UudHlwZV0gPSAwOworICAgIGV2ZW50c1tlLnR5cGVdICs9IDE7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3RzKCkgeworICAgIGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWRpbmcnLCBjb3VudEV2ZW50KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVy
KCdsb2Fkc3RhcnQnLCBjb3VudEV2ZW50KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgY291bnRFdmVudCk7CisgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRM
aXN0ZW5lcignZXJyb3InLCBjb3VudEV2ZW50KTsKKyAgICBkb2N1bWVudC5mb250cy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQpOworCisgICAgZG9jdW1lbnQuZm9u
dHMubG9hZEZvbnQoeyBmb250OiAiMTBweCBUZXN0Rm9udDEiLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vz
cywgb25lcnJvcjogb25lcnJvciB9KTsKKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKHZl
cmlmeTEpOworfQorCitmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7Cit9CisKK2Z1bmN0aW9uIG9uZXJy
b3IoKSB7CisgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQgc3VjY2VzcywgYnV0IG9uZXJyb3IoKSBj
YWxsZWQiKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5MSgpIHsKKyAgICBzaG91bGRCZSgiZG9jdW1l
bnQuZm9udHMuY2hlY2tGb250KCcxMHB4IFRlc3RGb250MScpIiwgInRydWUiKTsKKyAgICB2YXIg
c3R5bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3R5bGUnKTsKKyAgICBzdHlsZS50ZXh0
Q29udGVudCArPSAiXAorICAgIEBmb250LWZhY2Uge1wKKyAgICAgICAgZm9udC1mYW1pbHk6IFRl
c3RGb250MjtcCisgICAgICAgIHNyYzogdXJsKC4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zik7XAor
ICAgICAgICB1bmljb2RlLXJhbmdlOiB1KzYxLTdhOyAvKiAnYSctJ3onICovXAorICAgIH0iOwor
ICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDogIjEwcHggVGVzdEZvbnQyIiwgb25z
dWNjZXNzOiBvbnN1Y2Nlc3MsIG9uZXJyb3I6IG9uZXJyb3IgfSk7CisgICAgZG9jdW1lbnQuZm9u
dHMucmVhZHkudGhlbih2ZXJpZnkyKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5MigpIHsKKyAgICBz
aG91bGRCZSgiZXZlbnRzWydsb2FkaW5nJ10iLCAiMiIpOworICAgIHNob3VsZEJlKCJldmVudHNb
J2xvYWRzdGFydCddIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydsb2FkJ10iLCAiMiIp
OworICAgIHNob3VsZEJlKCJldmVudHNbJ2Vycm9yJ10iLCAidW5kZWZpbmVkIik7CisgICAgc2hv
dWxkQmUoImV2ZW50c1snbG9hZGluZ2RvbmUnXSIsICIyIik7CisgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9udDInKSIsICJ0cnVlIik7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK2lmIChkb2N1bWVudC5mb250cykKKyAgICBydW5UZXN0cygpOwor
ZWxzZSB7CisgICAgdGVzdEZhaWxlZCgnZG9jdW1lbnQuZm9udHMgZG9lcyBub3QgZXhpc3QnKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2Fk
ZXItZG93bmxvYWQtZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXIt
ZG93bmxvYWQtZXJyb3IuaHRtbAppbmRleCAzYjBkMTE3ZjVlMGEzMGYzZGY2MDA1ZjE5ZWRiYjM3
YWE4OTIyNjVkLi40ODkxNTA2NmZhMDU3OTQ5MWRjZDJmZmY2MmI2MWMzNDNhZjI0ZmYxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1kb3dubG9hZC1lcnJvci5o
dG1sCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAgIGRvY3VtZW50
LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2dFdmVudCk7CiAgICAgZG9jdW1lbnQu
Zm9udHMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBsb2dFdmVudCk7CiAKLSAgICBkb2N1bWVu
dC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5m
b250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgiZXZlbnRzWydt
eWZvbnQxJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwogICAgICAgICBzaG91bGRCZSgi
ZXZlbnRzWydteWZvbnQyJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwogICAgICAgICBz
aG91bGRCZSgiZXZlbnRzWydteWZvbnQzJ10iLCAiWydsb2Fkc3RhcnQnLCAnZXJyb3InXSIpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwKaW5kZXggZjVkOTY4
MWE0ZTFlYmE3NzMwZmM1MTI3MGQwODY5NTRhY2QzYTViNC4uZDg2YmNiNzEyNWYxYTNlZTJkMTIy
NjNjYTVmYjcwZjY5NmMzNmEyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1ldmVudHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVy
LWV2ZW50cy5odG1sCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3RzKCkgewogICAg
IGRvY3VtZW50LmZvbnRzLm9ubG9hZCA9IGhhbmRsZUV2ZW50OwogICAgIGRvY3VtZW50LmZvbnRz
Lm9uZXJyb3IgPSBoYW5kbGVFdmVudDsKIAotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5G
b250c1JlYWR5KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oZnVu
Y3Rpb24oKSB7CiAgICAgICAgIHNob3VsZEJlKCdudW1iZXJPZkV2ZW50cycsICc0Jyk7CiAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Zm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sCmluZGV4IGExYjE2YWJlZWNlYWY3OGQ3MWE0YmQ2
YjdkMzUyYTBjYTIwYWI4NTUuLmY4NzdhNTU3MzJkMDJlNzFiNzRiMjIwMjZlOGQ3MTJjYWIxYzdi
ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2Rv
bmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWxvYWRpbmdkb25l
Lmh0bWwKQEAgLTI4LDcgKzI4LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdiwgMCku
d2lkdGgnLCAnNDhweCcpOwogICAgIH07CiAKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVu
Rm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKGZ1
bmN0aW9uKCkgewogICAgICAgICBkZWJ1Zygnbm90aWZ5V2hlbkZvbnRzUmVhZHkoKSBjYWxsYmFj
aycpOwogICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3dpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKHRlc3REaXYsIDApLndpZHRoJywgJzQ4cHgnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZh
Y2VzLWRvd25sb2FkLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVy
LW11bHRpcGxlLWZhY2VzLWRvd25sb2FkLWVycm9yLmh0bWwKaW5kZXggNTk2MGE1OWFhZjAyYWFk
ODJhYWYwNjQ1M2I2OGRiYTNjNmMyNzdjMi4uNjU0M2ZjMjhmNDUwNmQ0NzRkMGZiNDcxZmNlNjYy
Njg1YmEyZTk2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1t
dWx0aXBsZS1mYWNlcy1kb3dubG9hZC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMtZG93bmxvYWQtZXJyb3IuaHRtbApAQCAtMzQs
NyArMzQsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQpOwogCiAgICAgZG9jdW1lbnQu
Zm9udHMubG9hZEZvbnQoeyBmb250OiAnMTBweCBUZXN0Rm9udCcsIG9uc3VjY2Vzczogb25zdWNj
ZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwotICAgIGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5G
b250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkp
OwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwKaW5kZXggNTM4NmM0NjI3MDExMzc3
MmQ5ZjQ5N2VkY2M4ZGYxYTFkMDY1NjEzZS4uMWRhZTE3OTBlMDg0NDRmMjcyZDJlYWRhZTdkODFj
OTc0ZWIxNGU1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1t
dWx0aXBsZS1mYWNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXIt
bXVsdGlwbGUtZmFjZXMuaHRtbApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygp
IHsKICAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNv
dW50RXZlbnQpOwogCiAgICAgZG9jdW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250OiAnMTBweCBU
ZXN0Rm9udCcsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwotICAg
IGRvY3VtZW50LmZvbnRzLm5vdGlmeVdoZW5Gb250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9jdW1l
bnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkpOwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZh
bWlsaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZh
bWlsaWVzLmh0bWwKaW5kZXggMjBlOTdlYTEzMTg2ZGE0ZTA0YzViYWYxNWU0OWUwNDUwY2MwN2Jl
Zi4uNDE3OGQ2ZGQ1YzhjZmNkMzU2ZGFlYzE5YmEzZWYyODg4NTc3M2I2ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFtaWxpZXMuaHRt
bApAQCAtMzQsNyArMzQsNyBAQCBmdW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5m
b250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nZG9uZScsIGNvdW50RXZlbnQpOwogCiAgICAg
ZG9jdW1lbnQuZm9udHMubG9hZEZvbnQoeyBmb250OiAnMTBweCBUZXN0Rm9udDEsIFRlc3RGb250
MicsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOwotICAgIGRvY3Vt
ZW50LmZvbnRzLm5vdGlmeVdoZW5Gb250c1JlYWR5KHZlcmlmeSk7CisgICAgZG9jdW1lbnQuZm9u
dHMucmVhZHkudGhlbih2ZXJpZnkpOwogfQogCiBmdW5jdGlvbiBvbnN1Y2Nlc3MoKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGU0ZGYyNWU2MGJkYTli
ZGNmNWFiOTA5YWUxNGZiZWYwODM4ZTY3ZWIuLmJlMzRiMTY1ZGJkMDc3ZjFmNDBjZGFiZGNmMzcy
NTM0OGE0MDYwM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xMTU4LDYgKzExNTgsNyBAQCB3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRs
b2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEzNTM5MCBm
YXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwgWyBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9udGxvYWRlci1wYWdlLWNhY2hlLmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8xMzUzOTAgaHR0cC90ZXN0cy93ZWJmb250L2ZvbnRsb2FkZXItbG9h
ZGluZy1hdHRyaWJ1dGUuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nz
cy9mb250bG9hZGVyLWNoYWluaW5nLXJlYWR5Lmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9i
LzEzNjk5NCBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1jb29raWUuaHRtbCBbIEZhaWx1cmUg
XQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243326</attachid>
            <date>2014-12-15 16:01:31 -0800</date>
            <delta_ts>2014-12-16 10:26:40 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-136502-20141215160219.patch</filename>
            <type>text/plain</type>
            <size>25253</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q0YWJkZTJhOTljYzc5
ZDliOWEwNjJlZTY5OWM3NWYxZDYxZWUyOC4uZmJkOGNiMjZmYWE4NTNkY2E4Y2NjMjk4YTliN2Fm
MTRlNzUyNmM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTEyLTE1ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGlu
Z10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1lbnQuZm9udHMucmVhZHkgc2hv
dWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAgICAgICB3aGVuIHRoZSBmb250
IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBmb250cworICAgICAgICAod2hl
dGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuIFRoZSByZWFkeSBw
cm9taXNlCisgICAgICAgIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSB1bnRpbCBhIGZvbnQgYmVn
aW5zIGxvYWRpbmcgYW5kIHRoZSBjdXJyZW50CisgICAgICAgIHJlYWR5IHByb21pc2UgaGFzIGJl
ZW4gZnVsZmlsbGVkLiBUaGlzIHBhdGNoIHJldHVybnMgcHJvbWlzZXMgb24gdGhlIEpTIHNpZGUs
CisgICAgICAgIGFuZCByZWdpc3RlcnMgYW4gYWJzdHJhY3QgdHlwZSB3aXRoIEZvbnRMb2FkZXIu
IFRoZXNlIHJlYWR5IHByb21pc2UKKyAgICAgICAgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG5vdGlm
eVdoZW5SZWFkeSBjYWxsYmFja3MuCisKKyAgICAgICAgUmVmYWN0b3JlZCBleGlzdGluZyB0ZXN0
cyB0byB1c2UgZG9jdW1lbnQuZm9udHMucmVhZHkgcmF0aGVyIHRoYW4KKyAgICAgICAgbm90aWZ5
V2hlbkZvbnRzUmVhZHkgY2FsbGJhY2tzLiBBZGRlZCBuZXcgdGVzdHMsCisgICAgICAgIGZvbnRs
b2FkZXItY2hhaW5pbmctcmVhZHkuaHRtbCBhbmQKKyAgICAgICAgZm9udGxvYWRlci1tdWx0aXBs
ZS1yZWFkeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZCBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8
c3RkOjpudWxscHRyX3Q+KTogQWRkIGEgbnVsbAorICAgICAgICByZXNvbHZlLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNGb250TG9hZGVyOjpyZWFkeSk6IEFkZCBhIGdldHRlci9zZXR0ZXIgZm9yIHRoZSBy
ZWFkeQorICAgICAgICBzdG9yYWdlIG9iamVjdC4KKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpGb250TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKTogRnVsZmlsbCB0aGUgcmVh
ZHkgcHJvbWlzZQorICAgICAgICB0aHJvdWdoIHRoZSByZWFkeSBzdG9yYWdlIG9iamVjdC4KKyAg
ICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAqIGNzcy9Gb250TG9hZGVyLmlkbDog
QWRkIHRoZSByZWFkeSBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBub3RpZnlXaGVuRm9udHNSZWFkeS4K
KwogMjAxNC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NzI4NC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MmVhMTI1NWIy
NjU3MGFmZGNmZjYyZWRhNTgwMGUyMTJhNzY0Zjg1Li4wMDBjNWU1ZTZkZTE4OTc1NDYzNDFlNTQ0
ODFiNjRiZmNlMDBhYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTM2LDYgKzY1MzYsNyBAQAogCQlGRDQ1QTk1OTE3NUQ0
MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdBMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29u
U2hhcGUuY3BwICovOyB9OwogCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFuZ2xl
U2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLzsgfTsKIAkJ
RkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODg1MTc1RDM5MjYwMDJDRDM2
MCAvKiBTaGFwZUludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkQ0QUUxNTgxOTk0M0IxNDAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDRBRTE1NzE5OTQzQTc1MDBBODlCRDMgLyogSlNGb250TG9hZGVyQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJRkQ0RTVEM0IxOTgzMTc1NTAwRDkzQTc3IC8qIEpTRm9udExvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDk2QzlBNDE5ODMxNEE1MDA4
NkUxNTYgLyogSlNGb250TG9hZGVyLmNwcCAqLzsgfTsKIAkJRkQ1MzczNTIxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZENTM3MzUwMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgKi87IH07
CiAJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTExMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmggKi87IH07CkBAIC0xNDE0MSw2ICsxNDE0Miw3IEBACiAJCUZEMzE2MEJB
MTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGRlRGcmFtZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEMzU5MThEMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9QYXJhbVRpbWVsaW5l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzNTkxOEUxMzhEQjIyMDAwRTFF
QkVDIC8qIEF1ZGlvUGFyYW1UaW1lbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb1BhcmFtVGltZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQ0QUUxNTcxOTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDUzNzM1MDEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWmVyb1Bv
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDUzNzM1MTEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWmVy
b1BvbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ1MzczNTQxMzdCNjUzQjAw
MDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwMjYsNiArMjEwMjgsNyBAQAogCQkJCUFERUM3OEY3
MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlCQ0VGQUY0RDBD
MzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQxMjc2
NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCisJCQkJRkQ0QUUxNTcx
OTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJD
OTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAq
LywKQEAgLTI4Mzk5LDYgKzI4NDAyLDcgQEAKIAkJCQk4OTg3ODVGNDEyMkUxRUFDMDAzQUFCREEg
LyogSlNGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNkQ5RDI3QzE0RUFD
MDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENEU1
RDNCMTk4MzE3NTUwMEQ5M0E3NyAvKiBKU0ZvbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkQ0QUUxNTgxOTk0M0IxNDAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGREExNUVBQjEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThGNTAwMTE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEY1MDAzMTk0Q0FDM0EwMDgxQkFBRSAvKiBK
U0dhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDBkNjU2YzU5MjdiNTA0OGNkNjFhY2RlMzQ0NGVhM2U4
NDJlNTlmMmMuLjUyZTNjYjE5MGYxY2NhYzgwYjgxYzNhY2Q2OTVlMTdiY2M1MzU1MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC04MSw2ICs4MSwxNCBA
QCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpCiB9CiAKIHRlbXBsYXRlPD4KK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZTxzdGQ6Om51bGxwdHJfdD4oY29uc3Qgc3RkOjpudWxscHRyX3QmKQoreworICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgcmVzb2x2ZShleGVjLCBKU0M6OmpzTnVsbCgp
KTsKK30KKwordGVtcGxhdGU8PgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZl
PFN0cmluZz4oY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGb250TG9hZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UzN2RkOTM2
YTk1MDViNjczODlhNTNkMTk2NzcwMzcyZGM0NWRkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw0
MCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRm9udExvYWRlci5oIgorCisj
aWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U0ZvbnRMb2FkZXJSZWFkeSA6IHB1YmxpYyBGb250TG9hZGVyUmVhZHkgeworcHVibGljOgorICAg
IEpTRm9udExvYWRlclJlYWR5KEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9yZWFkeShleGVjU3RhdGUsIGdsb2Jh
bE9iamVjdCkKKyAgICAgICAgLCBtX2ZpcmVkKGZhbHNlKQorICAgIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBmaXJlKCkgb3ZlcnJpZGUgeyBtX3JlYWR5LnJlc29sdmUobnVsbHB0cik7IG1fZmlyZWQg
PSB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0ZpcmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9maXJlZDsgfQorICAgIEpTVmFsdWUgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcmVhZHkucHJvbWlz
ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgRGVmZXJyZWRXcmFwcGVyIG1fcmVhZHk7CisgICAgYm9v
bCBtX2ZpcmVkOworfTsKKworSlNWYWx1ZSBKU0ZvbnRMb2FkZXI6OnJlYWR5KEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICBGb250TG9hZGVyUmVhZHkqIHJlYWR5ID0gaW1wbCgpLnJlYWR5
KCk7CisgICAgaWYgKCFyZWFkeSkgeworICAgICAgICBpbXBsKCkuc2V0UmVhZHkoYWRvcHRSZWYo
bmV3IEpTRm9udExvYWRlclJlYWR5KGV4ZWMsIGdsb2JhbE9iamVjdCgpKSkpOworICAgICAgICBy
ZWFkeSA9IGltcGwoKS5yZWFkeSgpOworICAgIH0KKyAgICBKU0ZvbnRMb2FkZXJSZWFkeSoganNS
ZWFkeSA9IHN0YXRpY19jYXN0PEpTRm9udExvYWRlclJlYWR5ICo+KHJlYWR5KTsKKyAgICByZXR1
cm4ganNSZWFkeS0+cHJvbWlzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCmluZGV4IDkwM2NjZmFlM2ZkZmY1ODI3OGQx
ZjA4NmNlOTViMjA4OTU3MGRlYWYuLjdiYWJkMDllOTRmYzBkZmVmODEwNDNkMzFkZTE5ZmM0Yjlm
NzA0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAK
IHZvaWQgRm9udExvYWRlcjo6ZmlyZVBlbmRpbmdFdmVudHMoKQogewotICAgIGlmIChtX3BlbmRp
bmdFdmVudHMuaXNFbXB0eSgpICYmICFtX2xvYWRpbmdEb25lRXZlbnQgJiYgIW1fY2FsbGJhY2tz
LmlzRW1wdHkoKSkKKyAgICBpZiAoIWhhc1BlbmRpbmdFdmVudHMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IHBlbmRpbmdFdmVudHM7CkBAIC0xODAsMTYg
KzE4MCwxNCBAQCB2b2lkIEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcGVuZGluZ0V2ZW50cy5zaXplKCk7ICsraW5kZXgp
CiAgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgpKTsK
IAotICAgIGlmIChsb2FkaW5nRG9uZSAmJiAhbV9jYWxsYmFja3MuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFZlY3RvcjxSZWZQdHI8Vm9pZENhbGxiYWNrPj4gY2FsbGJhY2tzOwotICAgICAgICBtX2Nh
bGxiYWNrcy5zd2FwKGNhbGxiYWNrcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBjYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KQotICAgICAgICAgICAgY2FsbGJhY2tz
W2luZGV4XS0+aGFuZGxlRXZlbnQoKTsKLSAgICB9CisgICAgaWYgKG1fcmVhZHkgJiYgIW1fcmVh
ZHktPmhhc0ZpcmVkKCkgJiYgIWxvYWRpbmcoKSkKKyAgICAgICAgbV9yZWFkeS0+ZmlyZSgpOwog
fQogCiB2b2lkIEZvbnRMb2FkZXI6OmJlZ2luRm9udExvYWRpbmcoQ1NTRm9udEZhY2VSdWxlKiBy
dWxlKQogeworICAgIGlmIChtX3JlYWR5ICYmIG1fcmVhZHktPmhhc0ZpcmVkKCkpCisgICAgICAg
IG1fcmVhZHkuY2xlYXIoKTsKICAgICArK21fbnVtTG9hZGluZ0Zyb21DU1M7CiAgICAgaWYgKG1f
bnVtTG9hZGluZ0Zyb21DU1MgPT0gMSAmJiAhbV9sb2FkaW5nRG9uZUV2ZW50KQogICAgICAgICBz
Y2hlZHVsZUV2ZW50KENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpjcmVhdGVGb3JGb250RmFjZVJ1bGUo
ZXZlbnROYW1lcygpLmxvYWRpbmdFdmVudCwgcnVsZSkpOwpAQCAtMjE4LDE2ICsyMTYsMTEgQEAg
dm9pZCBGb250TG9hZGVyOjpsb2FkRXJyb3IoQ1NTRm9udEZhY2VSdWxlKiBydWxlLCBDU1NGb250
RmFjZVNvdXJjZSogc291cmNlKQogICAgICAgICBtX2xvYWRpbmdEb25lRXZlbnQgPSBDU1NGb250
RmFjZUxvYWRFdmVudDo6Y3JlYXRlRm9yRm9udEZhY2VSdWxlKGV2ZW50TmFtZXMoKS5sb2FkaW5n
ZG9uZUV2ZW50LCBydWxlKTsKIH0KIAotdm9pZCBGb250TG9hZGVyOjpub3RpZnlXaGVuRm9udHNS
ZWFkeShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCi17Ci0gICAgbV9jYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKLX0KLQogdm9pZCBGb250TG9hZGVyOjpsb2FkaW5nRG9uZSgp
CiB7CiAgICAgaWYgKGxvYWRpbmcoKSB8fCAhbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fbG9hZGluZ0RvbmVFdmVudCAmJiBt
X2NhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHkoKSkKKyAgICBp
ZiAoIWhhc1BlbmRpbmdFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZG9jdW1lbnQtPnZpZXcoKSkgewpAQCAtMjQ4LDYgKzI0MSw4IEBAIHZv
aWQgRm9udExvYWRlcjo6bG9hZEZvbnQoY29uc3QgRGljdGlvbmFyeSYgcGFyYW1zKQogICAgIEZv
bnQgZm9udDsKICAgICBpZiAoIXJlc29sdmVGb250U3R5bGUoZm9udFN0cmluZywgZm9udCkpCiAg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWFkeSAmJiBtX3JlYWR5LT5oYXNGaXJlZCgpKQor
ICAgICAgICBtX3JlYWR5LmNsZWFyKCk7CiAgICAgUmVmUHRyPExvYWRGb250Q2FsbGJhY2s+IGNh
bGxiYWNrID0gTG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlRnJvbVBhcmFtcyhwYXJhbXMsICp0aGlz
LCBmb250KTsKICAgICBtX251bUxvYWRpbmdGcm9tSlMgKz0gY2FsbGJhY2stPmZhbWlseUNvdW50
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCmluZGV4IGI2ZDZkOTExYTE0Y2M0Yzg4MjY0Y2My
MzIyNWVlMzg0NDM1MGM1ZDAuLmM1NDVmOWVmZDE0ODE2ODQ2OTBhNDU3NDZmNTEyODU3MjhjNTll
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgRm9u
dDsKIGNsYXNzIExvYWRGb250Q2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCitjbGFzcyBGb250TG9hZGVyUmVhZHkgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250TG9hZGVy
UmVhZHk+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZGVyUmVhZHkoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmlyZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRmlyZWQoKSA9
IDA7Cit9OworCiBjbGFzcyBGb250TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9u
dExvYWRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9udExvYWRlcj4gY3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTY3LDggKzc0LDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZvbnQo
Y29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgbG9hZEZvbnREb25lKGNvbnN0IExvYWRGb250
Q2FsbGJhY2smKTsKIAotICAgIHZvaWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KTsKLQogICAgIGJvb2wgbG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
TG9hZGluZ0Zyb21DU1MgPiAwIHx8IG1fbnVtTG9hZGluZ0Zyb21KUyA+IDA7IH0KIAogICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtODUsNiArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRXJy
b3IoQ1NTRm9udEZhY2VSdWxlKiwgQ1NTRm9udEZhY2VTb3VyY2UqKTsKICAgICB2b2lkIGxvYWRp
bmdEb25lKCk7CiAKKyAgICBGb250TG9hZGVyUmVhZHkqIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFk
eS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UmVhZHkoUGFzc1JlZlB0cjxGb250TG9hZGVyUmVhZHk+
IHZhbHVlKSB7IG1fcmVhZHkgPSB2YWx1ZTsgfQorCiAgICAgdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9udW1Mb2FkaW5nRnJvbUNTUyAmJiAhbV9u
dW1Mb2FkaW5nRnJvbUpTOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw2ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwZW5kaW5nRXZlbnRzVGltZXJGaXJlZCgpIHsgZmlyZVBlbmRpbmdFdmVu
dHMoKTsgfQogICAgIHZvaWQgc2NoZWR1bGVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAg
Ym9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgeyByZXR1cm4gIW1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5
KCkgfHwgbV9sb2FkaW5nRG9uZUV2ZW50IHx8IChtX3JlYWR5ICYmICFtX3JlYWR5LT5oYXNGaXJl
ZCgpKTsgfQogICAgIHZvaWQgZmlyZVBlbmRpbmdFdmVudHMoKTsKICAgICBib29sIHJlc29sdmVG
b250U3R5bGUoY29uc3QgU3RyaW5nJiwgRm9udCYpOwogCkBAIC0xMDUsNyArMTE0LDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX251bUxvYWRpbmdGcm9tQ1NTOwogICAgIHVuc2lnbmVkIG1f
bnVtTG9hZGluZ0Zyb21KUzsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZl
bnRzOwotICAgIFZlY3RvcjxSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CisgICAg
UmVmUHRyPEZvbnRMb2FkZXJSZWFkeT4gbV9yZWFkeTsKICAgICBSZWZQdHI8RXZlbnQ+IG1fbG9h
ZGluZ0RvbmVFdmVudDsKICAgICBUaW1lciBtX3BlbmRpbmdFdmVudHNUaW1lcjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udExvYWRlci5pZGwKaW5kZXggYTgxOTBiOGNlNWQ1MGRiY2YyN2YxZTJkMDNmMDA2
MzkxZGE2OGU3Yy4uYzc2YjJkZDVhYTA2ODg1YjVhNGMxMmRiMmI5NDkwZTIxYjhiNmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmlkbApAQCAtNDEsMTAgKzQxLDEwIEBACiAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25sb2Fkc3RhcnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25sb2FkOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgW0N1
c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgcmVhZHk7CiAKICAgICBib29sZWFuIGNo
ZWNrRm9udChET01TdHJpbmcgZm9udCwgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9N
U3RyaW5nIHRleHQpOwogICAgIHZvaWQgbG9hZEZvbnQoRGljdGlvbmFyeSBwYXJhbXMpOwotICAg
IHZvaWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb2FkaW5nOwogCiAgICAgdm9pZCBhZGRFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNzNlZGQ4OGY0NDNlYTQzNWY3NzMzMTdk
MGViMDYyZDU1Mjc4Y2YuLmMxY2U2NjZlZTliOTFjMTI4MmY3NTcxOGUwYTY4ZTBjYmFhNTIxMWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNC0xMi0xNSAgQmVhciBUcmF2aXMgIDxiZXRyYXZp
c0BnbWFpbC5jb20+CisKKyAgICAgICAgW0NTUyBGb250IExvYWRpbmddIEFkZCByZWFkeSBhdHRy
aWJ1dGUgdG8gZG9jdW1lbnQuZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNjUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRyYW5zaXRpb24gdGVzdHMgZnJvbSB1c2luZyB0aGUgbm90aWZ5V2hl
bkZvbnRzUmVhZHkgY2FsbGJhY2tzCisgICAgICAgIHRvIHVzaW5nIGRvY3VtZW50LmZvbnRzLnJl
YWR5IGluc3RlYWQuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBhZGRl
ZCB0ZXN0cyBieSBkZWZhdWx0LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zOiBFbmFibGluZyBhZGRlZCB0ZXN0cyBvbiBNYWMuCisgICAgICAgICogZmFzdC9jc3MvZm9u
dGxvYWRlci1jaGFpbmluZy1yZWFkeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5pbmctcmVhZHkuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MvZm9udGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sOgorICAgICAgICAqIGZhc3Qv
Y3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRl
ci1sb2FkaW5nZG9uZS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlw
bGUtZmFjZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZh
bWlsaWVzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFk
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVs
dGlwbGUtcmVhZHkuaHRtbDogQWRkZWQuCisKIDIwMTQtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY2xvbmVOb2RlKHRydWUpIGRvZXMgbm90IGNsb25l
IG5lc3RlZCB0ZW1wbGF0ZSBlbGVtZW50cycgY29udGVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg1MTAyYmM4YmM2NzE2NTExOWFlNjg5ZDI0OGIyNWZmNjAyZWFjYzUuLjQ5Nzc3YzFmMmQxOTcx
YWE0Y2QzZTE4ODE4Y2Q1YzUwNjMzMTEyMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI5LDYg
KzEyOSw4IEBAIHdlYmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBs
ZS1mYWNlcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRs
b2FkZXItbXVsdGlwbGUtZmFtaWxpZXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzNTM5
MCBmYXN0L2Nzcy9mb250bG9hZGVyLXBhZ2UtY2FjaGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzNTM5MCBodHRwL3Rlc3RzL3dlYmZvbnQvZm9udGxvYWRlci1sb2FkaW5nLWF0dHJpYnV0
ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXIt
Y2hhaW5pbmctcmVhZHkuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nz
cy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5Lmh0bWwgWyBTa2lwIF0KIAogIyBWYXJpb3VzIGZh
aWx1cmVzIGZyb20gdGhlIFczQyBDU1MgU2hhcGVzIHRlc3Qgc3VpdGUgaW1wb3J0CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5pbmctcmVhZHktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFk
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NhMzY5ZDg1MTZmNjIzZGJmMjRkYjNlYmRjOTc2
MWU3ZmI2MjY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRs
b2FkZXItY2hhaW5pbmctcmVhZHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Qg
dGhhdCB0aGUgcmVhZHkgcHJvbWlzZSByZXNldHMgYWZ0ZXIgYWRkaW5nIG1vcmUgZm9udHMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmZvbnRzLmNoZWNr
Rm9udCgnMTBweCBUZXN0Rm9udDEnKSBpcyB0cnVlCitQQVNTIGV2ZW50c1snbG9hZGluZyddIGlz
IDIKK1BBU1MgZXZlbnRzWydsb2Fkc3RhcnQnXSBpcyAyCitQQVNTIGV2ZW50c1snbG9hZCddIGlz
IDIKK1BBU1MgZXZlbnRzWydlcnJvciddIGlzIHVuZGVmaW5lZAorUEFTUyBldmVudHNbJ2xvYWRp
bmdkb25lJ10gaXMgMgorUEFTUyBkb2N1bWVudC5mb250cy5jaGVja0ZvbnQoJzEwcHggVGVzdEZv
bnQyJykgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hh
aW5pbmctcmVhZHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5p
bmctcmVhZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2YwZWMxMGZjY2M1ODMwNGNlMjZjYzQ0NTliMTMy
MDUzMDNjM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxv
YWRlci1jaGFpbmluZy1yZWFkeS5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZSBpZD0ic3R5bGUiPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6IFRlc3RG
b250MTsKKyAgICBzcmM6IGxvY2FsKCdDb3VyaWVyIE5ldycpOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIHJlc2V0cyBhZnRl
ciBhZGRpbmcgbW9yZSBmb250cy4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cit2YXIgZXZlbnRzID0ge307CisKK2Z1bmN0aW9uIGNvdW50RXZlbnQoZSkgeworICAgIGlmICgh
ZXZlbnRzW2UudHlwZV0pCisgICAgICAgIGV2ZW50c1tlLnR5cGVdID0gMDsKKyAgICBldmVudHNb
ZS50eXBlXSArPSAxOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBkb2N1bWVudC5m
b250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nJywgY291bnRFdmVudCk7CisgICAgZG9jdW1l
bnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZHN0YXJ0JywgY291bnRFdmVudCk7CisgICAg
ZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGNvdW50RXZlbnQpOworICAg
IGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgY291bnRFdmVudCk7Cisg
ICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3VudEV2
ZW50KTsKKworICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDogIjEwcHggVGVzdEZv
bnQxIiwgb25zdWNjZXNzOiBvbnN1Y2Nlc3MsIG9uZXJyb3I6IG9uZXJyb3IgfSk7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkxKTsKK30KKworZnVuY3Rpb24gb25zdWNjZXNz
KCkgeworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVk
IHN1Y2Nlc3MsIGJ1dCBvbmVycm9yKCkgY2FsbGVkIik7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeTEo
KSB7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9u
dDEnKSIsICJ0cnVlIik7CisgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
I3N0eWxlJyk7CisgICAgc3R5bGUudGV4dENvbnRlbnQgKz0gIlwKKyAgICBAZm9udC1mYWNlIHtc
CisgICAgICAgIGZvbnQtZmFtaWx5OiBUZXN0Rm9udDI7XAorICAgICAgICBzcmM6IHVybCguLi8u
Li9yZXNvdXJjZXMvQWhlbS50dGYpO1wKKyAgICAgICAgdW5pY29kZS1yYW5nZTogdSs2MS03YTsg
LyogJ2EnLSd6JyAqL1wKKyAgICB9IjsKKyAgICBkb2N1bWVudC5mb250cy5sb2FkRm9udCh7IGZv
bnQ6ICIxMHB4IFRlc3RGb250MiIsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVy
cm9yIH0pOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5Mik7Cit9CisKK2Z1
bmN0aW9uIHZlcmlmeTIoKSB7CisgICAgc2hvdWxkQmUoImV2ZW50c1snbG9hZGluZyddIiwgIjIi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydsb2Fkc3RhcnQnXSIsICIyIik7CisgICAgc2hvdWxk
QmUoImV2ZW50c1snbG9hZCddIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydlcnJvcidd
IiwgInVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlKCJldmVudHNbJ2xvYWRpbmdkb25lJ10iLCAi
MiIpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5mb250cy5jaGVja0ZvbnQoJzEwcHggVGVzdEZv
bnQyJykiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitpZiAoZG9jdW1lbnQu
Zm9udHMpCisgICAgcnVuVGVzdHMoKTsKK2Vsc2UgeworICAgIHRlc3RGYWlsZWQoJ2RvY3VtZW50
LmZvbnRzIGRvZXMgbm90IGV4aXN0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwKaW5kZXggM2IwZDEx
N2Y1ZTBhMzBmM2RmNjAwNWYxOWVkYmIzN2FhODkyMjY1ZC4uNDg5MTUwNjZmYTA1Nzk0OTFkY2Qy
ZmZmNjJiNjFjMzQzYWYyNGZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Zv
bnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRtbApAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
bG9nRXZlbnQpOwogICAgIGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywg
bG9nRXZlbnQpOwogCi0gICAgZG9jdW1lbnQuZm9udHMubm90aWZ5V2hlbkZvbnRzUmVhZHkoZnVu
Y3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmdW5jdGlvbigpIHsKICAg
ICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MSddIiwgIlsnbG9hZHN0YXJ0JywgJ2Vycm9y
J10iKTsKICAgICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MiddIiwgIlsnbG9hZHN0YXJ0
JywgJ2Vycm9yJ10iKTsKICAgICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MyddIiwgIlsn
bG9hZHN0YXJ0JywgJ2Vycm9yJ10iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVy
LWV2ZW50cy5odG1sCmluZGV4IGY1ZDk2ODFhNGUxZWJhNzczMGZjNTEyNzBkMDg2OTU0YWNkM2E1
YjQuLmQ4NmJjYjcxMjVmMWEzZWUyZDEyMjYzY2E1ZmI3MGY2OTZjMzZhMjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRtbApAQCAtMjgsNyArMjgsNyBAQCBm
dW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5vbmxvYWQgPSBoYW5kbGVF
dmVudDsKICAgICBkb2N1bWVudC5mb250cy5vbmVycm9yID0gaGFuZGxlRXZlbnQ7CiAKLSAgICBk
b2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1
bWVudC5mb250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgnbnVt
YmVyT2ZFdmVudHMnLCAnNCcpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2RvbmUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2RvbmUuaHRtbAppbmRl
eCBhMWIxNmFiZWVjZWFmNzhkNzFhNGJkNmI3ZDM1MmEwY2EyMGFiODU1Li5mODc3YTU1NzMyZDAy
ZTcxYjc0YjIyMDI2ZThkNzEyY2FiMWM3YjgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9mb250bG9hZGVyLWxvYWRpbmdkb25lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RzKCkgewogICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3dpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3REaXYsIDApLndpZHRoJywgJzQ4cHgnKTsKICAgICB9OwogCi0gICAg
ZG9jdW1lbnQuZm9udHMubm90aWZ5V2hlbkZvbnRzUmVhZHkoZnVuY3Rpb24oKSB7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgZGVidWcoJ25vdGlm
eVdoZW5Gb250c1JlYWR5KCkgY2FsbGJhY2snKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2LCAwKS53aWR0aCcsICc0OHB4Jyk7
CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy1kb3dubG9hZC1lcnJvci5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy1kb3dubG9hZC1lcnJvci5o
dG1sCmluZGV4IDU5NjBhNTlhYWYwMmFhZDgyYWFmMDY0NTNiNjhkYmEzYzZjMjc3YzIuLjY1NDNm
YzI4ZjQ1MDZkNDc0ZDBmYjQ3MWZjZTY2MjY4NWJhMmU5NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMtZG93bmxvYWQtZXJyb3IuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLWRv
d25sb2FkLWVycm9yLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7
CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3Vu
dEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDogJzEwcHggVGVz
dEZvbnQnLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywgb25lcnJvcjogb25lcnJvciB9KTsKLSAgICBk
b2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeSh2ZXJpZnkpOworICAgIGRvY3VtZW50
LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0KIAogZnVuY3Rpb24gb25zdWNjZXNzKCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNl
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy5o
dG1sCmluZGV4IDUzODZjNDYyNzAxMTM3NzJkOWY0OTdlZGNjOGRmMWExZDA2NTYxM2UuLjFkYWUx
NzkwZTA4NDQ0ZjI3MmQyZWFkYWU3ZDgxYzk3NGViMTRlNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwKQEAgLTM0LDcgKzM0
LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3VudEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRz
LmxvYWRGb250KHsgZm9udDogJzEwcHggVGVzdEZvbnQnLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywg
b25lcnJvcjogb25lcnJvciB9KTsKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNS
ZWFkeSh2ZXJpZnkpOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0K
IAogZnVuY3Rpb24gb25zdWNjZXNzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sCmluZGV4IDIwZTk3ZWExMzE4NmRh
NGUwNGM1YmFmMTVlNDllMDQ1MGNjMDdiZWYuLjQxNzhkNmRkNWM4Y2ZjZDM1NmRhZWMxOWJhM2Vm
Mjg4ODU3NzNiNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXIt
bXVsdGlwbGUtZmFtaWxpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9h
ZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gcnVu
VGVzdHMoKSB7CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2Rv
bmUnLCBjb3VudEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDog
JzEwcHggVGVzdEZvbnQxLCBUZXN0Rm9udDInLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywgb25lcnJv
cjogb25lcnJvciB9KTsKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeSh2
ZXJpZnkpOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0KIAogZnVu
Y3Rpb24gb25zdWNjZXNzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1tdWx0aXBsZS1yZWFkeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWRh
YzYzNWU3ZGUwNjg3NmIxMzA5NzdjMmJhNTMyYTRhYTFhYjA5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIGNhbiBiZSBy
ZXRyaWV2ZWQgbXVsdGlwbGUgdGltZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGRvY3VtZW50LmZvbnRzLnJlYWR5IGlzIGRvY3VtZW50LmZvbnRzLnJlYWR5CitQQVNT
IGRvY3VtZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9udDEnKSBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4ZmU4ZTMzOTBhNTUxY2Q1ZDc5OThmMTFlZTYxODVkYTdlZmI5ZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5
Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+
CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogVGVzdEZvbnQxOworICAgIHNyYzogbG9j
YWwoJ0NvdXJpZXIgTmV3Jyk7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IHRoYXQgdGhlIHJlYWR5IHByb21pc2UgY2FuIGJlIHJldHJpZXZlZCBtdWx0aXBsZSB0aW1l
cy4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZm9udHMucmVhZHkiLCAiZG9jdW1lbnQuZm9u
dHMucmVhZHkiKTsKKyAgICBkb2N1bWVudC5mb250cy5sb2FkRm9udCh7IGZvbnQ6ICIxMHB4IFRl
c3RGb250MSIsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOworICAg
IHZhciBjb3VudCA9IDA7CisgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGNvdW50Kys7CisgICAgICAgIGlmIChjb3VudCA9PT0gMikKKyAgICAgICAgICAgIHZlcmlmeSgp
OworICAgIH0KKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKHZlcmlmeSk7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkpOworfQorCitmdW5jdGlvbiBvbnN1Y2Nlc3Mo
KSB7Cit9CisKK2Z1bmN0aW9uIG9uZXJyb3IoKSB7CisgICAgdGVzdEZhaWxlZCgiRXhwZWN0ZWQg
c3VjY2VzcywgYnV0IG9uZXJyb3IoKSBjYWxsZWQiKTsKK30KKworZnVuY3Rpb24gdmVyaWZ5KCkg
eworICAgIHNob3VsZEJlKCJkb2N1bWVudC5mb250cy5jaGVja0ZvbnQoJzEwcHggVGVzdEZvbnQx
JykiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitpZiAoZG9jdW1lbnQuZm9u
dHMpCisgICAgcnVuVGVzdHMoKTsKK2Vsc2UgeworICAgIHRlc3RGYWlsZWQoJ2RvY3VtZW50LmZv
bnRzIGRvZXMgbm90IGV4aXN0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQ1OWMzNTk0OGFlMTdlN2FjZmFhODlkZDkzYTE0
ZDVkNTgyYjMwOGUuLjI3ZGM4ZWZjMzZmMGExMDMxOWEyMzAwNWI3YTA3NTc5ZGNiMDU4MTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMTcyLDYgKzEx
NzIsOCBAQCB3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUt
ZmFjZXMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nzcy9mb250bG9h
ZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xMzUzOTAg
ZmFzdC9jc3MvZm9udGxvYWRlci1wYWdlLWNhY2hlLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcv
Yi8xMzUzOTAgaHR0cC90ZXN0cy93ZWJmb250L2ZvbnRsb2FkZXItbG9hZGluZy1hdHRyaWJ1dGUu
aHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nzcy9mb250bG9hZGVyLWNo
YWluaW5nLXJlYWR5Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3Mv
Zm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS5odG1sIFsgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8x
MzY5OTQgaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29va2llLmh0bWwgWyBGYWlsdXJlIF0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243366</attachid>
            <date>2014-12-16 10:26:42 -0800</date>
            <delta_ts>2016-06-20 14:40:22 -0700</delta_ts>
            <desc>Fixing ready test</desc>
            <filename>bug-136502-20141216102732.patch</filename>
            <type>text/plain</type>
            <size>25257</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q0YWJkZTJhOTljYzc5
ZDliOWEwNjJlZTY5OWM3NWYxZDYxZWUyOC4uZmJkOGNiMjZmYWE4NTNkY2E4Y2NjMjk4YTliN2Fm
MTRlNzUyNmM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTEyLTE1ICBCZWFy
IFRyYXZpcyAgPGJldHJhdmlzQGdtYWlsLmNvbT4KKworICAgICAgICBbQ1NTIEZvbnQgTG9hZGlu
Z10gQWRkIHJlYWR5IGF0dHJpYnV0ZSB0byBkb2N1bWVudC5mb250cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTAyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9jdW1lbnQuZm9udHMucmVhZHkgc2hv
dWxkIHJldHVybiBhIHByb21pc2UgdGhhdCBmdWxmaWxscworICAgICAgICB3aGVuIHRoZSBmb250
IGxvYWRlciBoYXMgY29tcGxldGVkIGxvYWRpbmcgYWxsIGl0cyBmb250cworICAgICAgICAod2hl
dGhlciB0aG9zZSBmb250cyBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9yIG5vdCkuIFRoZSByZWFkeSBw
cm9taXNlCisgICAgICAgIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSB1bnRpbCBhIGZvbnQgYmVn
aW5zIGxvYWRpbmcgYW5kIHRoZSBjdXJyZW50CisgICAgICAgIHJlYWR5IHByb21pc2UgaGFzIGJl
ZW4gZnVsZmlsbGVkLiBUaGlzIHBhdGNoIHJldHVybnMgcHJvbWlzZXMgb24gdGhlIEpTIHNpZGUs
CisgICAgICAgIGFuZCByZWdpc3RlcnMgYW4gYWJzdHJhY3QgdHlwZSB3aXRoIEZvbnRMb2FkZXIu
IFRoZXNlIHJlYWR5IHByb21pc2UKKyAgICAgICAgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG5vdGlm
eVdoZW5SZWFkeSBjYWxsYmFja3MuCisKKyAgICAgICAgUmVmYWN0b3JlZCBleGlzdGluZyB0ZXN0
cyB0byB1c2UgZG9jdW1lbnQuZm9udHMucmVhZHkgcmF0aGVyIHRoYW4KKyAgICAgICAgbm90aWZ5
V2hlbkZvbnRzUmVhZHkgY2FsbGJhY2tzLiBBZGRlZCBuZXcgdGVzdHMsCisgICAgICAgIGZvbnRs
b2FkZXItY2hhaW5pbmctcmVhZHkuaHRtbCBhbmQKKyAgICAgICAgZm9udGxvYWRlci1tdWx0aXBs
ZS1yZWFkeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZCBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8
c3RkOjpudWxscHRyX3Q+KTogQWRkIGEgbnVsbAorICAgICAgICByZXNvbHZlLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNGb250TG9hZGVyOjpyZWFkeSk6IEFkZCBhIGdldHRlci9zZXR0ZXIgZm9yIHRoZSBy
ZWFkeQorICAgICAgICBzdG9yYWdlIG9iamVjdC4KKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250TG9hZGVyOjpGb250TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKTogRnVsZmlsbCB0aGUgcmVh
ZHkgcHJvbWlzZQorICAgICAgICB0aHJvdWdoIHRoZSByZWFkeSBzdG9yYWdlIG9iamVjdC4KKyAg
ICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAqIGNzcy9Gb250TG9hZGVyLmlkbDog
QWRkIHRoZSByZWFkeSBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBub3RpZnlXaGVuRm9udHNSZWFkeS4K
KwogMjAxNC0xMi0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NzI4NC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MmVhMTI1NWIy
NjU3MGFmZGNmZjYyZWRhNTgwMGUyMTJhNzY0Zjg1Li4wMDBjNWU1ZTZkZTE4OTc1NDYzNDFlNTQ0
ODFiNjRiZmNlMDBhYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTM2LDYgKzY1MzYsNyBAQAogCQlGRDQ1QTk1OTE3NUQ0
MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODdBMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29u
U2hhcGUuY3BwICovOyB9OwogCQlGRDQ1QTk1QTE3NUQ0MTcxMDBDMjFFQzggLyogUmVjdGFuZ2xl
U2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLzsgfTsKIAkJ
RkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDhBODg1MTc1RDM5MjYwMDJDRDM2
MCAvKiBTaGFwZUludGVydmFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkQ0QUUxNTgxOTk0M0IxNDAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RDRBRTE1NzE5OTQzQTc1MDBBODlCRDMgLyogSlNGb250TG9hZGVyQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJRkQ0RTVEM0IxOTgzMTc1NTAwRDkzQTc3IC8qIEpTRm9udExvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDk2QzlBNDE5ODMxNEE1MDA4
NkUxNTYgLyogSlNGb250TG9hZGVyLmNwcCAqLzsgfTsKIAkJRkQ1MzczNTIxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZENTM3MzUwMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgKi87IH07
CiAJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQ1MzczNTExMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmggKi87IH07CkBAIC0xNDE0MSw2ICsxNDE0Miw3IEBACiAJCUZEMzE2MEJB
MTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGRlRGcmFtZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZEMzU5MThEMTM4REIyMjAwMEUxRUJFQyAvKiBBdWRpb1BhcmFtVGltZWxpbmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9QYXJhbVRpbWVsaW5l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQzNTkxOEUxMzhEQjIyMDAwRTFF
QkVDIC8qIEF1ZGlvUGFyYW1UaW1lbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdWRpb1BhcmFtVGltZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkQ0QUUxNTcxOTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRMb2FkZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDUzNzM1MDEzN0I2NTE4MDAwMDhEQ0UgLyog
WmVyb1BvbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWmVyb1Bv
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDUzNzM1MTEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWmVy
b1BvbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQ1MzczNTQxMzdCNjUzQjAw
MDA4RENFIC8qIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEwMjYsNiArMjEwMjgsNyBAQAogCQkJCUFERUM3OEY3
MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCAqLywKIAkJCQlCQ0VGQUY0RDBD
MzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJMkU3NTgyRUQxMjc2
NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCisJCQkJRkQ0QUUxNTcx
OTk0M0E3NTAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJD
OTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAq
LywKQEAgLTI4Mzk5LDYgKzI4NDAyLDcgQEAKIAkJCQk4OTg3ODVGNDEyMkUxRUFDMDAzQUFCREEg
LyogSlNGaWxlUmVhZGVyU3luYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNkQ5RDI3QzE0RUFD
MDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENEU1
RDNCMTk4MzE3NTUwMEQ5M0E3NyAvKiBKU0ZvbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkQ0QUUxNTgxOTk0M0IxNDAwQTg5QkQzIC8qIEpTRm9udExvYWRlckN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGREExNUVBQjEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThGNTAwMTE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1l
cGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEY1MDAzMTk0Q0FDM0EwMDgxQkFBRSAvKiBK
U0dhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDBkNjU2YzU5MjdiNTA0OGNkNjFhY2RlMzQ0NGVhM2U4
NDJlNTlmMmMuLjUyZTNjYjE5MGYxY2NhYzgwYjgxYzNhY2Q2OTVlMTdiY2M1MzU1MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC04MSw2ICs4MSwxNCBA
QCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpCiB9CiAKIHRlbXBsYXRlPD4KK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZTxzdGQ6Om51bGxwdHJfdD4oY29uc3Qgc3RkOjpudWxscHRyX3QmKQoreworICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgcmVzb2x2ZShleGVjLCBKU0M6OmpzTnVsbCgp
KTsKK30KKwordGVtcGxhdGU8PgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZl
PFN0cmluZz4oY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGb250TG9hZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UzN2RkOTM2
YTk1MDViNjczODlhNTNkMTk2NzcwMzcyZGM0NWRkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRm9udExvYWRlckN1c3RvbS5jcHAKQEAgLTAsMCArMSw0
MCBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRm9udExvYWRlci5oIgorCisj
aWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBK
U0ZvbnRMb2FkZXJSZWFkeSA6IHB1YmxpYyBGb250TG9hZGVyUmVhZHkgeworcHVibGljOgorICAg
IEpTRm9udExvYWRlclJlYWR5KEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9yZWFkeShleGVjU3RhdGUsIGdsb2Jh
bE9iamVjdCkKKyAgICAgICAgLCBtX2ZpcmVkKGZhbHNlKQorICAgIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBmaXJlKCkgb3ZlcnJpZGUgeyBtX3JlYWR5LnJlc29sdmUobnVsbHB0cik7IG1fZmlyZWQg
PSB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0ZpcmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9maXJlZDsgfQorICAgIEpTVmFsdWUgcHJvbWlzZSgpIHsgcmV0dXJuIG1fcmVhZHkucHJvbWlz
ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgRGVmZXJyZWRXcmFwcGVyIG1fcmVhZHk7CisgICAgYm9v
bCBtX2ZpcmVkOworfTsKKworSlNWYWx1ZSBKU0ZvbnRMb2FkZXI6OnJlYWR5KEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKK3sKKyAgICBGb250TG9hZGVyUmVhZHkqIHJlYWR5ID0gaW1wbCgpLnJlYWR5
KCk7CisgICAgaWYgKCFyZWFkeSkgeworICAgICAgICBpbXBsKCkuc2V0UmVhZHkoYWRvcHRSZWYo
bmV3IEpTRm9udExvYWRlclJlYWR5KGV4ZWMsIGdsb2JhbE9iamVjdCgpKSkpOworICAgICAgICBy
ZWFkeSA9IGltcGwoKS5yZWFkeSgpOworICAgIH0KKyAgICBKU0ZvbnRMb2FkZXJSZWFkeSoganNS
ZWFkeSA9IHN0YXRpY19jYXN0PEpTRm9udExvYWRlclJlYWR5ICo+KHJlYWR5KTsKKyAgICByZXR1
cm4ganNSZWFkeS0+cHJvbWlzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCmluZGV4IDkwM2NjZmFlM2ZkZmY1ODI3OGQx
ZjA4NmNlOTViMjA4OTU3MGRlYWYuLjdiYWJkMDllOTRmYzBkZmVmODEwNDNkMzFkZTE5ZmM0Yjlm
NzA0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIEZvbnRMb2FkZXI6OnNjaGVkdWxlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAK
IHZvaWQgRm9udExvYWRlcjo6ZmlyZVBlbmRpbmdFdmVudHMoKQogewotICAgIGlmIChtX3BlbmRp
bmdFdmVudHMuaXNFbXB0eSgpICYmICFtX2xvYWRpbmdEb25lRXZlbnQgJiYgIW1fY2FsbGJhY2tz
LmlzRW1wdHkoKSkKKyAgICBpZiAoIWhhc1BlbmRpbmdFdmVudHMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IHBlbmRpbmdFdmVudHM7CkBAIC0xODAsMTYg
KzE4MCwxNCBAQCB2b2lkIEZvbnRMb2FkZXI6OmZpcmVQZW5kaW5nRXZlbnRzKCkKICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcGVuZGluZ0V2ZW50cy5zaXplKCk7ICsraW5kZXgp
CiAgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgpKTsK
IAotICAgIGlmIChsb2FkaW5nRG9uZSAmJiAhbV9jYWxsYmFja3MuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFZlY3RvcjxSZWZQdHI8Vm9pZENhbGxiYWNrPj4gY2FsbGJhY2tzOwotICAgICAgICBtX2Nh
bGxiYWNrcy5zd2FwKGNhbGxiYWNrcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBjYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KQotICAgICAgICAgICAgY2FsbGJhY2tz
W2luZGV4XS0+aGFuZGxlRXZlbnQoKTsKLSAgICB9CisgICAgaWYgKG1fcmVhZHkgJiYgIW1fcmVh
ZHktPmhhc0ZpcmVkKCkgJiYgIWxvYWRpbmcoKSkKKyAgICAgICAgbV9yZWFkeS0+ZmlyZSgpOwog
fQogCiB2b2lkIEZvbnRMb2FkZXI6OmJlZ2luRm9udExvYWRpbmcoQ1NTRm9udEZhY2VSdWxlKiBy
dWxlKQogeworICAgIGlmIChtX3JlYWR5ICYmIG1fcmVhZHktPmhhc0ZpcmVkKCkpCisgICAgICAg
IG1fcmVhZHkuY2xlYXIoKTsKICAgICArK21fbnVtTG9hZGluZ0Zyb21DU1M7CiAgICAgaWYgKG1f
bnVtTG9hZGluZ0Zyb21DU1MgPT0gMSAmJiAhbV9sb2FkaW5nRG9uZUV2ZW50KQogICAgICAgICBz
Y2hlZHVsZUV2ZW50KENTU0ZvbnRGYWNlTG9hZEV2ZW50OjpjcmVhdGVGb3JGb250RmFjZVJ1bGUo
ZXZlbnROYW1lcygpLmxvYWRpbmdFdmVudCwgcnVsZSkpOwpAQCAtMjE4LDE2ICsyMTYsMTEgQEAg
dm9pZCBGb250TG9hZGVyOjpsb2FkRXJyb3IoQ1NTRm9udEZhY2VSdWxlKiBydWxlLCBDU1NGb250
RmFjZVNvdXJjZSogc291cmNlKQogICAgICAgICBtX2xvYWRpbmdEb25lRXZlbnQgPSBDU1NGb250
RmFjZUxvYWRFdmVudDo6Y3JlYXRlRm9yRm9udEZhY2VSdWxlKGV2ZW50TmFtZXMoKS5sb2FkaW5n
ZG9uZUV2ZW50LCBydWxlKTsKIH0KIAotdm9pZCBGb250TG9hZGVyOjpub3RpZnlXaGVuRm9udHNS
ZWFkeShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCi17Ci0gICAgbV9jYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKLX0KLQogdm9pZCBGb250TG9hZGVyOjpsb2FkaW5nRG9uZSgp
CiB7CiAgICAgaWYgKGxvYWRpbmcoKSB8fCAhbV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fbG9hZGluZ0RvbmVFdmVudCAmJiBt
X2NhbGxiYWNrcy5pc0VtcHR5KCkgJiYgbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHkoKSkKKyAgICBp
ZiAoIWhhc1BlbmRpbmdFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZG9jdW1lbnQtPnZpZXcoKSkgewpAQCAtMjQ4LDYgKzI0MSw4IEBAIHZv
aWQgRm9udExvYWRlcjo6bG9hZEZvbnQoY29uc3QgRGljdGlvbmFyeSYgcGFyYW1zKQogICAgIEZv
bnQgZm9udDsKICAgICBpZiAoIXJlc29sdmVGb250U3R5bGUoZm9udFN0cmluZywgZm9udCkpCiAg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9yZWFkeSAmJiBtX3JlYWR5LT5oYXNGaXJlZCgpKQor
ICAgICAgICBtX3JlYWR5LmNsZWFyKCk7CiAgICAgUmVmUHRyPExvYWRGb250Q2FsbGJhY2s+IGNh
bGxiYWNrID0gTG9hZEZvbnRDYWxsYmFjazo6Y3JlYXRlRnJvbVBhcmFtcyhwYXJhbXMsICp0aGlz
LCBmb250KTsKICAgICBtX251bUxvYWRpbmdGcm9tSlMgKz0gY2FsbGJhY2stPmZhbWlseUNvdW50
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCmluZGV4IGI2ZDZkOTExYTE0Y2M0Yzg4MjY0Y2My
MzIyNWVlMzg0NDM1MGM1ZDAuLmM1NDVmOWVmZDE0ODE2ODQ2OTBhNDU3NDZmNTEyODU3MjhjNTll
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaApAQCAtNDksNiArNDksMTMgQEAgY2xhc3MgRm9u
dDsKIGNsYXNzIExvYWRGb250Q2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCitjbGFzcyBGb250TG9hZGVyUmVhZHkgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250TG9hZGVy
UmVhZHk+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Gb250TG9hZGVyUmVhZHkoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmlyZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRmlyZWQoKSA9
IDA7Cit9OworCiBjbGFzcyBGb250TG9hZGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9u
dExvYWRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9udExvYWRlcj4gY3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKQEAgLTY3LDggKzc0LDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZvbnQo
Y29uc3QgRGljdGlvbmFyeSYpOwogICAgIHZvaWQgbG9hZEZvbnREb25lKGNvbnN0IExvYWRGb250
Q2FsbGJhY2smKTsKIAotICAgIHZvaWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+KTsKLQogICAgIGJvb2wgbG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
TG9hZGluZ0Zyb21DU1MgPiAwIHx8IG1fbnVtTG9hZGluZ0Zyb21KUyA+IDA7IH0KIAogICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtODUsNiArOTAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkRXJy
b3IoQ1NTRm9udEZhY2VSdWxlKiwgQ1NTRm9udEZhY2VTb3VyY2UqKTsKICAgICB2b2lkIGxvYWRp
bmdEb25lKCk7CiAKKyAgICBGb250TG9hZGVyUmVhZHkqIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFk
eS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UmVhZHkoUGFzc1JlZlB0cjxGb250TG9hZGVyUmVhZHk+
IHZhbHVlKSB7IG1fcmVhZHkgPSB2YWx1ZTsgfQorCiAgICAgdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9udW1Mb2FkaW5nRnJvbUNTUyAmJiAhbV9u
dW1Mb2FkaW5nRnJvbUpTOyB9CiAKIHByaXZhdGU6CkBAIC05Nyw2ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwZW5kaW5nRXZlbnRzVGltZXJGaXJlZCgpIHsgZmlyZVBlbmRpbmdFdmVu
dHMoKTsgfQogICAgIHZvaWQgc2NoZWR1bGVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAg
Ym9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgeyByZXR1cm4gIW1fcGVuZGluZ0V2ZW50cy5pc0VtcHR5
KCkgfHwgbV9sb2FkaW5nRG9uZUV2ZW50IHx8IChtX3JlYWR5ICYmICFtX3JlYWR5LT5oYXNGaXJl
ZCgpKTsgfQogICAgIHZvaWQgZmlyZVBlbmRpbmdFdmVudHMoKTsKICAgICBib29sIHJlc29sdmVG
b250U3R5bGUoY29uc3QgU3RyaW5nJiwgRm9udCYpOwogCkBAIC0xMDUsNyArMTE0LDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX251bUxvYWRpbmdGcm9tQ1NTOwogICAgIHVuc2lnbmVkIG1f
bnVtTG9hZGluZ0Zyb21KUzsKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZl
bnRzOwotICAgIFZlY3RvcjxSZWZQdHI8Vm9pZENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CisgICAg
UmVmUHRyPEZvbnRMb2FkZXJSZWFkeT4gbV9yZWFkeTsKICAgICBSZWZQdHI8RXZlbnQ+IG1fbG9h
ZGluZ0RvbmVFdmVudDsKICAgICBUaW1lciBtX3BlbmRpbmdFdmVudHNUaW1lcjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udExvYWRlci5pZGwKaW5kZXggYTgxOTBiOGNlNWQ1MGRiY2YyN2YxZTJkMDNmMDA2
MzkxZGE2OGU3Yy4uYzc2YjJkZDVhYTA2ODg1YjVhNGMxMmRiMmI5NDkwZTIxYjhiNmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmlkbApAQCAtNDEsMTAgKzQxLDEwIEBACiAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25sb2Fkc3RhcnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25sb2FkOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgW0N1
c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgcmVhZHk7CiAKICAgICBib29sZWFuIGNo
ZWNrRm9udChET01TdHJpbmcgZm9udCwgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9N
U3RyaW5nIHRleHQpOwogICAgIHZvaWQgbG9hZEZvbnQoRGljdGlvbmFyeSBwYXJhbXMpOwotICAg
IHZvaWQgbm90aWZ5V2hlbkZvbnRzUmVhZHkoVm9pZENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb2FkaW5nOwogCiAgICAgdm9pZCBhZGRFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNzNlZGQ4OGY0NDNlYTQzNWY3NzMzMTdk
MGViMDYyZDU1Mjc4Y2YuLmMxY2U2NjZlZTliOTFjMTI4MmY3NTcxOGUwYTY4ZTBjYmFhNTIxMWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNC0xMi0xNSAgQmVhciBUcmF2aXMgIDxiZXRyYXZp
c0BnbWFpbC5jb20+CisKKyAgICAgICAgW0NTUyBGb250IExvYWRpbmddIEFkZCByZWFkeSBhdHRy
aWJ1dGUgdG8gZG9jdW1lbnQuZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNjUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRyYW5zaXRpb24gdGVzdHMgZnJvbSB1c2luZyB0aGUgbm90aWZ5V2hl
bkZvbnRzUmVhZHkgY2FsbGJhY2tzCisgICAgICAgIHRvIHVzaW5nIGRvY3VtZW50LmZvbnRzLnJl
YWR5IGluc3RlYWQuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBhZGRl
ZCB0ZXN0cyBieSBkZWZhdWx0LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zOiBFbmFibGluZyBhZGRlZCB0ZXN0cyBvbiBNYWMuCisgICAgICAgICogZmFzdC9jc3MvZm9u
dGxvYWRlci1jaGFpbmluZy1yZWFkeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5pbmctcmVhZHkuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3MvZm9udGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sOgorICAgICAgICAqIGZhc3Qv
Y3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRl
ci1sb2FkaW5nZG9uZS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlw
bGUtZmFjZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZh
bWlsaWVzLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFk
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZvbnRsb2FkZXItbXVs
dGlwbGUtcmVhZHkuaHRtbDogQWRkZWQuCisKIDIwMTQtMTItMTUgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY2xvbmVOb2RlKHRydWUpIGRvZXMgbm90IGNsb25l
IG5lc3RlZCB0ZW1wbGF0ZSBlbGVtZW50cycgY29udGVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDg1MTAyYmM4YmM2NzE2NTExOWFlNjg5ZDI0OGIyNWZmNjAyZWFjYzUuLjQ5Nzc3YzFmMmQxOTcx
YWE0Y2QzZTE4ODE4Y2Q1YzUwNjMzMTEyMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI5LDYg
KzEyOSw4IEBAIHdlYmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBs
ZS1mYWNlcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRs
b2FkZXItbXVsdGlwbGUtZmFtaWxpZXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzNTM5
MCBmYXN0L2Nzcy9mb250bG9hZGVyLXBhZ2UtY2FjaGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzNTM5MCBodHRwL3Rlc3RzL3dlYmZvbnQvZm9udGxvYWRlci1sb2FkaW5nLWF0dHJpYnV0
ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXIt
Y2hhaW5pbmctcmVhZHkuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nz
cy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5Lmh0bWwgWyBTa2lwIF0KIAogIyBWYXJpb3VzIGZh
aWx1cmVzIGZyb20gdGhlIFczQyBDU1MgU2hhcGVzIHRlc3Qgc3VpdGUgaW1wb3J0CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5pbmctcmVhZHktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1jaGFpbmluZy1yZWFk
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NhMzY5ZDg1MTZmNjIzZGJmMjRkYjNlYmRjOTc2
MWU3ZmI2MjY5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRs
b2FkZXItY2hhaW5pbmctcmVhZHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3Qg
dGhhdCB0aGUgcmVhZHkgcHJvbWlzZSByZXNldHMgYWZ0ZXIgYWRkaW5nIG1vcmUgZm9udHMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmZvbnRzLmNoZWNr
Rm9udCgnMTBweCBUZXN0Rm9udDEnKSBpcyB0cnVlCitQQVNTIGV2ZW50c1snbG9hZGluZyddIGlz
IDIKK1BBU1MgZXZlbnRzWydsb2Fkc3RhcnQnXSBpcyAyCitQQVNTIGV2ZW50c1snbG9hZCddIGlz
IDIKK1BBU1MgZXZlbnRzWydlcnJvciddIGlzIHVuZGVmaW5lZAorUEFTUyBldmVudHNbJ2xvYWRp
bmdkb25lJ10gaXMgMgorUEFTUyBkb2N1bWVudC5mb250cy5jaGVja0ZvbnQoJzEwcHggVGVzdEZv
bnQyJykgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hh
aW5pbmctcmVhZHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItY2hhaW5p
bmctcmVhZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2YwZWMxMGZjY2M1ODMwNGNlMjZjYzQ0NTliMTMy
MDUzMDNjM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxv
YWRlci1jaGFpbmluZy1yZWFkeS5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZSBpZD0ic3R5bGUiPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6IFRlc3RG
b250MTsKKyAgICBzcmM6IGxvY2FsKCdDb3VyaWVyIE5ldycpOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIHJlc2V0cyBhZnRl
ciBhZGRpbmcgbW9yZSBmb250cy4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
Cit2YXIgZXZlbnRzID0ge307CisKK2Z1bmN0aW9uIGNvdW50RXZlbnQoZSkgeworICAgIGlmICgh
ZXZlbnRzW2UudHlwZV0pCisgICAgICAgIGV2ZW50c1tlLnR5cGVdID0gMDsKKyAgICBldmVudHNb
ZS50eXBlXSArPSAxOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBkb2N1bWVudC5m
b250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkaW5nJywgY291bnRFdmVudCk7CisgICAgZG9jdW1l
bnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZHN0YXJ0JywgY291bnRFdmVudCk7CisgICAg
ZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGNvdW50RXZlbnQpOworICAg
IGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgY291bnRFdmVudCk7Cisg
ICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3VudEV2
ZW50KTsKKworICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDogIjEwcHggVGVzdEZv
bnQxIiwgb25zdWNjZXNzOiBvbnN1Y2Nlc3MsIG9uZXJyb3I6IG9uZXJyb3IgfSk7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbih2ZXJpZnkxKTsKK30KKworZnVuY3Rpb24gb25zdWNjZXNz
KCkgeworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoIkV4cGVjdGVk
IHN1Y2Nlc3MsIGJ1dCBvbmVycm9yKCkgY2FsbGVkIik7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeTEo
KSB7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9u
dDEnKSIsICJ0cnVlIik7CisgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
I3N0eWxlJyk7CisgICAgc3R5bGUudGV4dENvbnRlbnQgKz0gIlwKKyAgICBAZm9udC1mYWNlIHtc
CisgICAgICAgIGZvbnQtZmFtaWx5OiBUZXN0Rm9udDI7XAorICAgICAgICBzcmM6IHVybCguLi8u
Li9yZXNvdXJjZXMvQWhlbS50dGYpO1wKKyAgICAgICAgdW5pY29kZS1yYW5nZTogdSs2MS03YTsg
LyogJ2EnLSd6JyAqL1wKKyAgICB9IjsKKyAgICBkb2N1bWVudC5mb250cy5sb2FkRm9udCh7IGZv
bnQ6ICIxMHB4IFRlc3RGb250MiIsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVy
cm9yIH0pOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5Mik7Cit9CisKK2Z1
bmN0aW9uIHZlcmlmeTIoKSB7CisgICAgc2hvdWxkQmUoImV2ZW50c1snbG9hZGluZyddIiwgIjIi
KTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydsb2Fkc3RhcnQnXSIsICIyIik7CisgICAgc2hvdWxk
QmUoImV2ZW50c1snbG9hZCddIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiZXZlbnRzWydlcnJvcidd
IiwgInVuZGVmaW5lZCIpOworICAgIHNob3VsZEJlKCJldmVudHNbJ2xvYWRpbmdkb25lJ10iLCAi
MiIpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5mb250cy5jaGVja0ZvbnQoJzEwcHggVGVzdEZv
bnQyJykiLCAidHJ1ZSIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitpZiAoZG9jdW1lbnQu
Zm9udHMpCisgICAgcnVuVGVzdHMoKTsKK2Vsc2UgeworICAgIHRlc3RGYWlsZWQoJ2RvY3VtZW50
LmZvbnRzIGRvZXMgbm90IGV4aXN0Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwKaW5kZXggM2IwZDEx
N2Y1ZTBhMzBmM2RmNjAwNWYxOWVkYmIzN2FhODkyMjY1ZC4uNDg5MTUwNjZmYTA1Nzk0OTFkY2Qy
ZmZmNjJiNjFjMzQzYWYyNGZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1kb3dubG9hZC1lcnJvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Zv
bnRsb2FkZXItZG93bmxvYWQtZXJyb3IuaHRtbApAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBy
dW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
bG9nRXZlbnQpOwogICAgIGRvY3VtZW50LmZvbnRzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywg
bG9nRXZlbnQpOwogCi0gICAgZG9jdW1lbnQuZm9udHMubm90aWZ5V2hlbkZvbnRzUmVhZHkoZnVu
Y3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbihmdW5jdGlvbigpIHsKICAg
ICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MSddIiwgIlsnbG9hZHN0YXJ0JywgJ2Vycm9y
J10iKTsKICAgICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MiddIiwgIlsnbG9hZHN0YXJ0
JywgJ2Vycm9yJ10iKTsKICAgICAgICAgc2hvdWxkQmUoImV2ZW50c1snbXlmb250MyddIiwgIlsn
bG9hZHN0YXJ0JywgJ2Vycm9yJ10iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVy
LWV2ZW50cy5odG1sCmluZGV4IGY1ZDk2ODFhNGUxZWJhNzczMGZjNTEyNzBkMDg2OTU0YWNkM2E1
YjQuLmQ4NmJjYjcxMjVmMWEzZWUyZDEyMjYzY2E1ZmI3MGY2OTZjMzZhMjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItZXZlbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1ldmVudHMuaHRtbApAQCAtMjgsNyArMjgsNyBAQCBm
dW5jdGlvbiBydW5UZXN0cygpIHsKICAgICBkb2N1bWVudC5mb250cy5vbmxvYWQgPSBoYW5kbGVF
dmVudDsKICAgICBkb2N1bWVudC5mb250cy5vbmVycm9yID0gaGFuZGxlRXZlbnQ7CiAKLSAgICBk
b2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeShmdW5jdGlvbigpIHsKKyAgICBkb2N1
bWVudC5mb250cy5yZWFkeS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZSgnbnVt
YmVyT2ZFdmVudHMnLCAnNCcpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2RvbmUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbG9hZGluZ2RvbmUuaHRtbAppbmRl
eCBhMWIxNmFiZWVjZWFmNzhkNzFhNGJkNmI3ZDM1MmEwY2EyMGFiODU1Li5mODc3YTU1NzMyZDAy
ZTcxYjc0YjIyMDI2ZThkNzEyY2FiMWM3YjgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9mb250bG9hZGVyLWxvYWRpbmdkb25lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1sb2FkaW5nZG9uZS5odG1sCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9u
IHJ1blRlc3RzKCkgewogICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3dpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3REaXYsIDApLndpZHRoJywgJzQ4cHgnKTsKICAgICB9OwogCi0gICAg
ZG9jdW1lbnQuZm9udHMubm90aWZ5V2hlbkZvbnRzUmVhZHkoZnVuY3Rpb24oKSB7CisgICAgZG9j
dW1lbnQuZm9udHMucmVhZHkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgZGVidWcoJ25vdGlm
eVdoZW5Gb250c1JlYWR5KCkgY2FsbGJhY2snKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2LCAwKS53aWR0aCcsICc0OHB4Jyk7
CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy1kb3dubG9hZC1lcnJvci5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy1kb3dubG9hZC1lcnJvci5o
dG1sCmluZGV4IDU5NjBhNTlhYWYwMmFhZDgyYWFmMDY0NTNiNjhkYmEzYzZjMjc3YzIuLjY1NDNm
YzI4ZjQ1MDZkNDc0ZDBmYjQ3MWZjZTY2MjY4NWJhMmU5NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMtZG93bmxvYWQtZXJyb3IuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLWRv
d25sb2FkLWVycm9yLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7
CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3Vu
dEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDogJzEwcHggVGVz
dEZvbnQnLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywgb25lcnJvcjogb25lcnJvciB9KTsKLSAgICBk
b2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeSh2ZXJpZnkpOworICAgIGRvY3VtZW50
LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0KIAogZnVuY3Rpb24gb25zdWNjZXNzKCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNl
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYWNlcy5o
dG1sCmluZGV4IDUzODZjNDYyNzAxMTM3NzJkOWY0OTdlZGNjOGRmMWExZDA2NTYxM2UuLjFkYWUx
NzkwZTA4NDQ0ZjI3MmQyZWFkYWU3ZDgxYzk3NGViMTRlNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtZmFjZXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLWZhY2VzLmh0bWwKQEAgLTM0LDcgKzM0
LDcgQEAgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZGluZ2RvbmUnLCBjb3VudEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRz
LmxvYWRGb250KHsgZm9udDogJzEwcHggVGVzdEZvbnQnLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywg
b25lcnJvcjogb25lcnJvciB9KTsKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNS
ZWFkeSh2ZXJpZnkpOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0K
IAogZnVuY3Rpb24gb25zdWNjZXNzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZm9udGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sCmluZGV4IDIwZTk3ZWExMzE4NmRh
NGUwNGM1YmFmMTVlNDllMDQ1MGNjMDdiZWYuLjQxNzhkNmRkNWM4Y2ZjZDM1NmRhZWMxOWJhM2Vm
Mjg4ODU3NzNiNmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZvbnRsb2FkZXIt
bXVsdGlwbGUtZmFtaWxpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9h
ZGVyLW11bHRpcGxlLWZhbWlsaWVzLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAgZnVuY3Rpb24gcnVu
VGVzdHMoKSB7CiAgICAgZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGluZ2Rv
bmUnLCBjb3VudEV2ZW50KTsKIAogICAgIGRvY3VtZW50LmZvbnRzLmxvYWRGb250KHsgZm9udDog
JzEwcHggVGVzdEZvbnQxLCBUZXN0Rm9udDInLCBvbnN1Y2Nlc3M6IG9uc3VjY2Vzcywgb25lcnJv
cjogb25lcnJvciB9KTsKLSAgICBkb2N1bWVudC5mb250cy5ub3RpZnlXaGVuRm9udHNSZWFkeSh2
ZXJpZnkpOworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4odmVyaWZ5KTsKIH0KIAogZnVu
Y3Rpb24gb25zdWNjZXNzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9u
dGxvYWRlci1tdWx0aXBsZS1yZWFkeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWRh
YzYzNWU3ZGUwNjg3NmIxMzA5NzdjMmJhNTMyYTRhYTFhYjA5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCB0aGF0IHRoZSByZWFkeSBwcm9taXNlIGNhbiBiZSBy
ZXRyaWV2ZWQgbXVsdGlwbGUgdGltZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGRvY3VtZW50LmZvbnRzLnJlYWR5IGlzIGRvY3VtZW50LmZvbnRzLnJlYWR5CitQQVNT
IGRvY3VtZW50LmZvbnRzLmNoZWNrRm9udCgnMTBweCBUZXN0Rm9udDEnKSBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udGxvYWRlci1tdWx0aXBsZS1yZWFkeS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAwN2M3M2NlY2JiOTU3OGE5NjNlN2M2NzM0OTJlYmZiZTczZDgwNGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250bG9hZGVyLW11bHRpcGxlLXJlYWR5
Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlIGlkPSJzdHlsZSI+
CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogVGVzdEZvbnQxOworICAgIHNyYzogbG9j
YWwoJ0NvdXJpZXIgTmV3Jyk7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IHRoYXQgdGhlIHJlYWR5IHByb21pc2UgY2FuIGJlIHJldHJpZXZlZCBtdWx0aXBsZSB0aW1l
cy4nKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0
cygpIHsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZm9udHMucmVhZHkiLCAiZG9jdW1lbnQuZm9u
dHMucmVhZHkiKTsKKyAgICBkb2N1bWVudC5mb250cy5sb2FkRm9udCh7IGZvbnQ6ICIxMHB4IFRl
c3RGb250MSIsIG9uc3VjY2Vzczogb25zdWNjZXNzLCBvbmVycm9yOiBvbmVycm9yIH0pOworICAg
IHZhciBjb3VudCA9IDA7CisgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGNvdW50Kys7CisgICAgICAgIGlmIChjb3VudCA9PT0gMikKKyAgICAgICAgICAgIHZlcmlmeSgp
OworICAgIH0KKyAgICBkb2N1bWVudC5mb250cy5yZWFkeS50aGVuKGNhbGxiYWNrKTsKKyAgICBk
b2N1bWVudC5mb250cy5yZWFkeS50aGVuKGNhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gb25zdWNj
ZXNzKCkgeworfQorCitmdW5jdGlvbiBvbmVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoIkV4cGVj
dGVkIHN1Y2Nlc3MsIGJ1dCBvbmVycm9yKCkgY2FsbGVkIik7Cit9CisKK2Z1bmN0aW9uIHZlcmlm
eSgpIHsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuZm9udHMuY2hlY2tGb250KCcxMHB4IFRlc3RG
b250MScpIiwgInRydWUiKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworaWYgKGRvY3VtZW50
LmZvbnRzKQorICAgIHJ1blRlc3RzKCk7CitlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKCdkb2N1bWVu
dC5mb250cyBkb2VzIG5vdCBleGlzdCcpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0NTljMzU5NDhhZTE3ZTdhY2ZhYTg5ZGQ5
M2ExNGQ1ZDU4MmIzMDhlLi4yN2RjOGVmYzM2ZjBhMTAzMTlhMjMwMDViN2EwNzU3OWRjYjA1ODE5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE3Miw2
ICsxMTcyLDggQEAgd2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nzcy9mb250bG9hZGVyLW11bHRp
cGxlLWZhY2VzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9u
dGxvYWRlci1tdWx0aXBsZS1mYW1pbGllcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTM1
MzkwIGZhc3QvY3NzL2ZvbnRsb2FkZXItcGFnZS1jYWNoZS5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMTM1MzkwIGh0dHAvdGVzdHMvd2ViZm9udC9mb250bG9hZGVyLWxvYWRpbmctYXR0cmli
dXRlLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzUzOTAgZmFzdC9jc3MvZm9udGxvYWRl
ci1jaGFpbmluZy1yZWFkeS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTM1MzkwIGZhc3Qv
Y3NzL2ZvbnRsb2FkZXItbXVsdGlwbGUtcmVhZHkuaHRtbCBbIFBhc3MgXQogCiB3ZWJraXQub3Jn
L2IvMTM2OTk0IGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvb2tpZS5odG1sIFsgRmFpbHVy
ZSBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>