<?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>13832</bug_id>
          
          <creation_ts>2007-05-22 15:23:01 -0700</creation_ts>
          <short_desc>[S60] Use font access API to fetch system fonts.</short_desc>
          <delta_ts>2008-04-09 11:39:26 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>S60 Hardware</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun.zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>9387</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2007-05-22 15:23:01 -0700</bug_when>
    <thetext>remove all the hardcoded font names in TextRenderer, and replace with generic font access API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9309</commentid>
    <comment_count>1</comment_count>
      <attachid>14686</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2007-05-23 08:39:47 -0700</bug_when>
    <thetext>Created attachment 14686
add fontaccess API support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9229</commentid>
    <comment_count>2</comment_count>
      <attachid>14686</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-05-24 09:16:06 -0700</bug_when>
    <thetext>Comment on attachment 14686
add fontaccess API support.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9230</commentid>
    <comment_count>3</comment_count>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-05-24 09:30:23 -0700</bug_when>
    <thetext>landed in ccb in r21712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76869</commentid>
    <comment_count>4</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2008-04-09 11:39:26 -0700</bug_when>
    <thetext>Bulk closing of all s60 platform bugs. 

Sorry for the noise!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14686</attachid>
            <date>2007-05-23 08:39:47 -0700</date>
            <delta_ts>2007-05-24 09:16:06 -0700</delta_ts>
            <desc>add fontaccess API support.</desc>
            <filename>fontaccess.patch</filename>
            <type>text/plain</type>
            <size>27439</size>
            <attacher name="Yongjun Zhang">yongjun.zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFM2MEludGVybmFscy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTNjBJbnRlcm5h
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTY0MykNCisrKyBTNjBJbnRlcm5hbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDkgQEANCit5b25nanpoYSwgcmV2aWV3ZWQgYnkg
bm9ib2R5DQorIERFU0M6IGFkZCBBa25Gb250QWNjZXNzLmggdG8gaW50ZXJuYWwgZGlyDQorIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODMyDQorDQorICAgICAgICAq
IFM2MEhlYWRlcnMuemlwOg0KKw0KIGJybW9ycmlzLCByZXZpZXdlZCBieSBub2JvZHkNCiAgREVT
QzogczYwIGJ1aWxkIGZpeCBieSB1cGRhdGluZyBsaWIvaGVhZGVycw0KIA0KSW5kZXg6IFdlYkNv
cmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIxNjQzKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsx
LDE5IEBADQoreW9uZ2p6aGEsIHJldmlld2VkIGJ5IHNhY2hpbg0KKyBERVNDOiBlbmFibGUgZm9u
dCBhY2Nlc3MgYXBpLg0KKyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzgzMg0KKw0KKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VE
DQorDQorICAgICAgICAqIGJyaWRnZS9XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeS5oOg0KKyAg
ICAgICAgKiBraHRtbC9yZW5kZXJpbmcvZm9udC5jcHA6DQorICAgICAgICAoRm9udDo6dXBkYXRl
KToNCisgICAgICAgICoga3dxL0tXUUZvbnQuY3BwOg0KKyAgICAgICAgKFFGb250OjpRRm9udCk6
DQorICAgICAgICAoUUZvbnQ6Om9wZXJhdG9yPSApOg0KKyAgICAgICAgKFFGb250OjpSZW5kZXJl
cik6DQorICAgICAgICAoUUZvbnQ6OnNldEdlbmVyaWNGYW1pbHkpOg0KKyAgICAgICAgKiBrd3Ev
S1dRRm9udC5oOg0KKw0KIDIwMDctMDUtMTUgIHNwYWRtYSAgDQogDQogICAgICAgICBSZXZpZXdl
ZCBieSBaYWxhbi4NCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVRleHRSZW5kZXJl
ckZhY3RvcnkuaAkocmV2aXNpb24gMjE2NDMpDQorKysgV2ViQ29yZS9icmlkZ2UvV2ViQ29yZVRl
eHRSZW5kZXJlckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDkgKzYwLDEwIEBAIGNs
YXNzIE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeQ0KIHsNCiBwdWJsaWM6DQogDQotCXZpcnR1
YWwgTVdlYkNvcmVUZXh0UmVuZGVyZXIqIFJlbmRlcmVyV2l0aEZhbWlsaWVzKFRQdHJDICphRmFt
aWxpZXMsDQotCQkJCQkJCQkgICBUSW50IGFUcmFpdHMsDQotCQkJCQkJCQkgICBUSW50IGFTaXpl
KSA9IDA7DQorICB2aXJ0dWFsIE1XZWJDb3JlVGV4dFJlbmRlcmVyKiBSZW5kZXJlcldpdGhGYW1p
bGllcyhUUHRyQyAqYUZhbWlsaWVzLA0KKyAgICAgICAgICAgICAgICAgICBUSW50IGFUcmFpdHMs
DQorICAgICAgICAgICAgICAgICAgIFRJbnQgYVNpemUsDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50IGFHZW5lcmljRmFtaWx5KSA9IDA7DQogfTsNCiANCiAvKioNCkBA
IC03MywxMiArNzQsMTIgQEAgcHVibGljOg0KIGNsYXNzIFRXZWJDb3JlVGV4dFJlbmRlcmVyRmFj
dG9yeQ0KIHsNCiBwdWJsaWM6DQotCUlNUE9SVF9DIHN0YXRpYyB2b2lkIFNldFdlYkNvcmVUZXh0
UmVuZGVyZXJGYWN0b3J5KE1XZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeSogYUZhY3RvcnkpOw0K
LQlJTVBPUlRfQyBzdGF0aWMgTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KiBGYWN0b3J5KCk7
DQorICBJTVBPUlRfQyBzdGF0aWMgdm9pZCBTZXRXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeShN
V2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkqIGFGYWN0b3J5KTsNCisgIElNUE9SVF9DIHN0YXRp
YyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkqIEZhY3RvcnkoKTsNCiANCiBwcml2YXRlOg0K
IA0KLQlzdGF0aWMgTVdlYkNvcmVUZXh0UmVuZGVyZXJGYWN0b3J5KiBpU2hhcmVkRmFjdG9yeTsN
CisgIHN0YXRpYyBNV2ViQ29yZVRleHRSZW5kZXJlckZhY3RvcnkqIGlTaGFyZWRGYWN0b3J5Ow0K
IH07DQogDQogDQpJbmRleDogV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9mb250LmNwcAkocmV2aXNpb24gMjE2
NDMpDQorKysgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC0xNDksMTkgKzE0OSwxOSBAQCBpbnQgRm9udDo6d2lkdGgoIFFDaGFyICpjaHMsIGludCBz
bGVuLCBpDQogICAgIFFTdHJpbmcgcXN0ciA9IFFDb25zdFN0cmluZyhjaHMrcG9zLCBsZW4pLnN0
cmluZygpOw0KICAgICAvLyBoYWNrIGZvciBmb250cyB0aGF0IGRvbid0IGhhdmUgYSB3ZWxsZGVm
aW5lZCBuYnNwDQogICAgIGlmICggIWZvbnREZWYuaGFzTmJzcCApIHsNCi0JLy8gc3RyLnNldExl
bmd0aCgpIGFsd2F5cyBkb2VzIGEgZGVlcCBjb3B5LCBzbyB0aGUgcmVwbGFjZW1lbnQgY29kZSBi
ZWxvdyBpcyBzYWZlLg0KLQlxc3RyLnNldExlbmd0aCggbGVuICk7DQotCVFDaGFyICp1YyA9IChR
Q2hhciAqKXFzdHIudW5pY29kZSgpOw0KLQlmb3IoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICkN
Ci0JICAgIGlmICggKHVjK2kpLT51bmljb2RlKCkgPT0gMHhhMCApDQotCQkqKHVjK2kpID0gJyAn
Ow0KKyAgLy8gc3RyLnNldExlbmd0aCgpIGFsd2F5cyBkb2VzIGEgZGVlcCBjb3B5LCBzbyB0aGUg
cmVwbGFjZW1lbnQgY29kZSBiZWxvdyBpcyBzYWZlLg0KKyAgcXN0ci5zZXRMZW5ndGgoIGxlbiAp
Ow0KKyAgUUNoYXIgKnVjID0gKFFDaGFyICopcXN0ci51bmljb2RlKCk7DQorICBmb3IoIGludCBp
ID0gMDsgaSA8IGxlbjsgaSsrICkNCisgICAgICBpZiAoICh1YytpKS0+dW5pY29kZSgpID09IDB4
YTAgKQ0KKyAgICAqKHVjK2kpID0gJyAnOw0KICAgICB9DQogDQogICAgIC8vICMjIyBtaWdodCBi
ZSBhIGxpdHRsZSBpbmFjY3VyYXRlDQogICAgIGludCB3ID0gZm0ud2lkdGgoIHFzdHIgKTsNCiAN
CiAgICAgaWYgKCBsZXR0ZXJTcGFjaW5nICkNCi0JICAgIHcgKz0gbGVuKmxldHRlclNwYWNpbmc7
DQorICAgICAgdyArPSBsZW4qbGV0dGVyU3BhY2luZzsNCiANCiAgICAgaWYgKCB3b3JkU3BhY2lu
ZyApDQogICAgICAgICAvLyBhZGQgYW1vdW50DQpAQCAtMTgyLDEyICsxODIsMTIgQEAgaW50IEZv
bnQ6OndpZHRoKCBRQ2hhciAqY2hzLCBpbnQgc2xlbiwgaQ0KICNlbHNlDQogICAgIGludCB3Ow0K
ICAgICBpZiAoICFmb250RGVmLmhhc05ic3AgJiYgKGNocytwb3MpLT51bmljb2RlKCkgPT0gMHhh
MCApDQotCXcgPSBmbS53aWR0aCggUUNoYXIoICcgJyApICk7DQorICB3ID0gZm0ud2lkdGgoIFFD
aGFyKCAnICcgKSApOw0KICAgICBlbHNlDQotCXcgPSBmbS5jaGFyV2lkdGgoIFFDb25zdFN0cmlu
ZyggY2hzLCBzbGVuKS5zdHJpbmcoKSwgcG9zICk7DQorICB3ID0gZm0uY2hhcldpZHRoKCBRQ29u
c3RTdHJpbmcoIGNocywgc2xlbikuc3RyaW5nKCksIHBvcyApOw0KIA0KICAgICBpZiAoIGxldHRl
clNwYWNpbmcgKQ0KLQl3ICs9IGxldHRlclNwYWNpbmc7DQorICB3ICs9IGxldHRlclNwYWNpbmc7
DQogDQogICAgIGlmICggd29yZFNwYWNpbmcgJiYgKGNocytwb3MpLT5pc1NwYWNlKCkgKQ0KICAg
ICAgICAgdyArPSB3b3JkU3BhY2luZzsNCkBAIC0yMDAsOSArMjAwLDkgQEAgdm9pZCBGb250Ojp1
cGRhdGUoIFFQYWludERldmljZU1ldHJpY3MqIA0KIHsNCiAjaWYgQVBQTEVfQ0hBTkdFUw0KICAg
ICBpZiAoZm9udERlZi5mYW1pbHkuZmFtaWx5SXNFbXB0eSgpKQ0KLQlmLnNldEZhbWlseShLSFRN
TEZhY3Rvcnk6OmRlZmF1bHRIVE1MU2V0dGluZ3MoKS0+c3RkRm9udE5hbWUoKSk7DQorICBmLnNl
dEZhbWlseShLSFRNTEZhY3Rvcnk6OmRlZmF1bHRIVE1MU2V0dGluZ3MoKS0+c3RkRm9udE5hbWUo
KSk7DQogICAgIGVsc2UNCi0JZi5zZXRGaXJzdEZhbWlseShmb250RGVmLmZhbWlseSk7DQorICBm
LnNldEZpcnN0RmFtaWx5KGZvbnREZWYuZmFtaWx5KTsNCiAgICAgZi5zZXRJdGFsaWMoZm9udERl
Zi5pdGFsaWMpOw0KICAgICBmLnNldFdlaWdodChmb250RGVmLndlaWdodCk7DQogICAgIGYuc2V0
UGl4ZWxTaXplKGZvbnREZWYuY29tcHV0ZWRQaXhlbFNpemUoKSk7DQpAQCAtMjExLDYgKzIxMSw3
IEBAIHZvaWQgRm9udDo6dXBkYXRlKCBRUGFpbnREZXZpY2VNZXRyaWNzKiANCiAjaWYgTk9LSUFf
Q0hBTkdFUw0KICAgICBpZiAoZGV2TWV0cmljcykNCiAgICAgICAgIGZtLnNldFNjYWxpbmdGYWN0
b3IoZGV2TWV0cmljcy0+c2NhbGluZ0ZhY3RvcigpKTsNCisgICAgZi5zZXRHZW5lcmljRmFtaWx5
KGZvbnREZWYuZ2VuZXJpY0ZhbWlseSk7DQogI2VuZGlmDQogIA0KICAgICBmbS5zZXRGb250KGYp
Ow0KQEAgLTI1Niw3ICsyNTcsNyBAQCB2b2lkIEZvbnQ6OnVwZGF0ZSggUVBhaW50RGV2aWNlTWV0
cmljcyogDQogICAgIHNpemUgPSBLTUFYKDAsIEtNSU4oMjU1LCBzaXplKSk7DQogDQogLy8gICAg
ICBxRGVidWcoInNldHRpbmcgZm9udCB0byAlcywgaXRhbGljPSVkLCB3ZWlnaHQ9JWQsIHNpemU9
JWQiLCBmb250RGVmLmZhbWlseS5sYXRpbjEoKSwgZm9udERlZi5pdGFsaWMsDQotLy8gICAJICAg
Zm9udERlZi53ZWlnaHQsIHNpemUgKTsNCisvLyAgICAgICBmb250RGVmLndlaWdodCwgc2l6ZSAp
Ow0KIA0KIA0KICAgICBmLnNldFBpeGVsU2l6ZSggc2l6ZSApOw0KSW5kZXg6IFdlYkNvcmUva3dx
L0tXUUZvbnQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9rd3EvS1dRRm9udC5jcHAJKHJl
dmlzaW9uIDIxNjQzKQ0KKysrIFdlYkNvcmUva3dxL0tXUUZvbnQuY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtMzAsMTIgKzMwLDE1IEBADQogI2luY2x1ZGUgIktXUVN0cmluZy5oIg0KICNpbmNsdWRl
ICJXZWJDb3JlVGV4dFJlbmRlcmVyRmFjdG9yeS5oIg0KICNpbmNsdWRlICJXZWJDb3JlVGV4dFJl
bmRlcmVyLmgiDQorI2luY2x1ZGUgImZvbnQuaCINCisjaW5jbHVkZSA8QWtuRm9udEFjY2Vzcy5o
Pg0KIA0KIFFGb250OjpRRm9udCgpDQogICAgIDogX3RyYWl0KDApDQogICAgICwgX3NpemUoMTIu
MCkNCiAgICAgLCBfaXNQcmludGVyRm9udChmYWxzZSkNCiAgICAgLCBfcmVuZGVyZXIoMCkNCisg
ICAgLCBfZ2VuZXJpY0ZhbWlseSgwKQ0KIHsNCiB9DQogDQpAQCAtNDUsMTAgKzQ4LDExIEBAIFFG
b250Ojp+UUZvbnQoKQ0KIH0NCiANCiBRRm9udDo6UUZvbnQoIGNvbnN0IFFGb250JiBmb250ICkN
Ci0JOiBfdHJhaXQoIGZvbnQuX3RyYWl0ICkNCi0JLCBfc2l6ZSggZm9udC5fc2l6ZSApDQotCSwg
X2lzUHJpbnRlckZvbnQoIGZvbnQuX2lzUHJpbnRlckZvbnQgKQ0KLQksIF9mYW1pbHkoIGZvbnQu
X2ZhbWlseSApDQorICA6IF90cmFpdCggZm9udC5fdHJhaXQgKQ0KKyAgLCBfc2l6ZSggZm9udC5f
c2l6ZSApDQorICAsIF9pc1ByaW50ZXJGb250KCBmb250Ll9pc1ByaW50ZXJGb250ICkNCisgICwg
X2ZhbWlseSggZm9udC5fZmFtaWx5ICkNCisgICAgLCBfZ2VuZXJpY0ZhbWlseSggZm9udC5fZ2Vu
ZXJpY0ZhbWlseSApDQogew0KICAgICBpZiggZm9udC5fcmVuZGVyZXIgKXsNCiAgICAgICAgIGZv
bnQuX3JlbmRlcmVyLT5SZWYoKTsNCkBAIC01OCwxNiArNjIsMTcgQEAgUUZvbnQ6OlFGb250KCBj
b25zdCBRRm9udCYgZm9udCApDQogDQogUUZvbnQmIFFGb250OjpvcGVyYXRvcj0gKCBjb25zdCBR
Rm9udCYgZm9udCApDQogew0KLQlfdHJhaXQgPSBmb250Ll90cmFpdDsNCi0JX3NpemUgPSBmb250
Ll9zaXplOw0KLQlfaXNQcmludGVyRm9udCA9IGZvbnQuX2lzUHJpbnRlckZvbnQ7DQotCV9mYW1p
bHkgPSBmb250Ll9mYW1pbHk7DQorICBfdHJhaXQgPSBmb250Ll90cmFpdDsNCisgIF9zaXplID0g
Zm9udC5fc2l6ZTsNCisgIF9pc1ByaW50ZXJGb250ID0gZm9udC5faXNQcmludGVyRm9udDsNCisg
IF9mYW1pbHkgPSBmb250Ll9mYW1pbHk7DQorICAgIF9nZW5lcmljRmFtaWx5ID0gZm9udC5fZ2Vu
ZXJpY0ZhbWlseTsNCiAgICAgaWYoIGZvbnQuX3JlbmRlcmVyICl7DQogICAgICAgICBmb250Ll9y
ZW5kZXJlci0+UmVmKCk7DQogICAgIH0NCiAgICAgUmVsZWFzZVJlbmRlcmVyKCk7DQotCV9yZW5k
ZXJlciA9IGZvbnQuX3JlbmRlcmVyOw0KLQlyZXR1cm4gKnRoaXM7DQorICBfcmVuZGVyZXIgPSBm
b250Ll9yZW5kZXJlcjsNCisgIHJldHVybiAqdGhpczsNCiB9DQogDQogUVN0cmluZyBRRm9udDo6
ZmFtaWx5KCkgY29uc3QNCkBAIC04OSw3ICs5NCw3IEBAIHZvaWQgUUZvbnQ6OnNldEZhbWlseShj
b25zdCBRU3RyaW5nJiBxZmENCiANCiB2b2lkIFFGb250OjpzZXRQaXhlbFNpemUoZmxvYXQgcykN
CiB7DQotCWlmIChfc2l6ZSAhPSBzKSB7DQorICBpZiAoX3NpemUgIT0gcykgew0KICAgICAgICAg
UmVsZWFzZVJlbmRlcmVyKCk7DQogICAgIH0NCiAgICAgX3NpemUgPSBzOw0KQEAgLTE1MiwxMSAr
MTU3LDExIEBAIGJvb2wgUUZvbnQ6OmlzRml4ZWRQaXRjaCgpDQogDQogYm9vbCBRRm9udDo6b3Bl
cmF0b3IgPT0gKCBjb25zdCBRRm9udCYgZm9udCApIGNvbnN0DQogew0KLQlyZXR1cm4gCV90cmFp
dCA9PSBmb250Ll90cmFpdCAmJg0KLQkJCV9zaXplID09IGZvbnQuX3NpemUgJiYNCi0JCQlfaXNQ
cmludGVyRm9udCA9PSBmb250Ll9pc1ByaW50ZXJGb250ICYmDQotCQkJX2ZhbWlseSA9PSBmb250
Ll9mYW1pbHkgJiYNCi0JCQlfcmVuZGVyZXIgPT0gZm9udC5fcmVuZGVyZXI7DQorICByZXR1cm4g
IF90cmFpdCA9PSBmb250Ll90cmFpdCAmJg0KKyAgICAgIF9zaXplID09IGZvbnQuX3NpemUgJiYN
CisgICAgICBfaXNQcmludGVyRm9udCA9PSBmb250Ll9pc1ByaW50ZXJGb250ICYmDQorICAgICAg
X2ZhbWlseSA9PSBmb250Ll9mYW1pbHkgJiYNCisgICAgICBfcmVuZGVyZXIgPT0gZm9udC5fcmVu
ZGVyZXI7DQogfQ0KIGNvbnN0IENGb250ICpRRm9udDo6Rm9udCgpDQogew0KQEAgLTE2Nyw3ICsx
NzIsNyBAQCBNV2ViQ29yZVRleHRSZW5kZXJlciAqUUZvbnQ6OlJlbmRlcmVyKCkNCiB7DQogICAg
IGlmICghX3JlbmRlcmVyKSB7DQogICAgICAgICBDUkVBVEVfRkFNSUxZX0FSUkFZKCp0aGlzLCBm
YW1pbGllcyk7DQotICAgICAgICBfcmVuZGVyZXIgPSBUV2ViQ29yZVRleHRSZW5kZXJlckZhY3Rv
cnk6OkZhY3RvcnkoKS0+UmVuZGVyZXJXaXRoRmFtaWxpZXMoZmFtaWxpZXMsIGdldFRyYWl0cygp
LCBnZXRTaXplKCkpOw0KKyAgICAgICAgX3JlbmRlcmVyID0gVFdlYkNvcmVUZXh0UmVuZGVyZXJG
YWN0b3J5OjpGYWN0b3J5KCktPlJlbmRlcmVyV2l0aEZhbWlsaWVzKGZhbWlsaWVzLCBnZXRUcmFp
dHMoKSwgZ2V0U2l6ZSgpLCBfZ2VuZXJpY0ZhbWlseSk7DQogICAgICAgICBpZiAoX3JlbmRlcmVy
KQ0KICAgICAgICAgICAgIF9yZW5kZXJlci0+UmVmKCk7DQogICAgIH0NCkBAIC0xODIsMyArMTg3
LDIwIEBAIHZvaWQgUUZvbnQ6OlJlbGVhc2VSZW5kZXJlcigpDQogICAgIH0NCiB9DQogDQordm9p
ZCBRRm9udDo6c2V0R2VuZXJpY0ZhbWlseSh1bnNpZ25lZCBpbnQgZmFtaWx5KQ0KK3sNCisgICAg
c3dpdGNoKGZhbWlseSkgew0KKyAgICBjYXNlIGtodG1sOjpGb250RGVmOjplU2VyaWY6DQorICAg
ICAgICBfZ2VuZXJpY0ZhbWlseSA9IEFrbkZvbnRBY2Nlc3M6OkVBa25Gb250RmFtaWx5U2VyaWY7
DQorICAgICAgICBicmVhazsNCisgICAgY2FzZSBraHRtbDo6Rm9udERlZjo6ZVNhbnNTZXJpZjoN
CisgICAgICAgIF9nZW5lcmljRmFtaWx5ID0gQWtuRm9udEFjY2Vzczo6RUFrbkZvbnRGYW1pbHlT
YW5zU2VyaWY7DQorICAgICAgICBicmVhazsNCisgICAgY2FzZSBraHRtbDo6Rm9udERlZjo6ZU1v
bm9zcGFjZToNCisgICAgICAgIF9nZW5lcmljRmFtaWx5ID0gQWtuRm9udEFjY2Vzczo6RUFrbkZv
bnRGYW1pbHlNb25vc3BhY2U7DQorICAgICAgICBicmVhazsNCisgICAgZGVmYXVsdDoNCisgICAg
ICAgIF9nZW5lcmljRmFtaWx5ID0gQWtuRm9udEFjY2Vzczo6RUFrbkZvbnRGYW1pbHlOb3RTcGVj
aWZpZWQ7DQorICAgICAgICBicmVhazsNCisgICAgfQ0KK30NCkluZGV4OiBXZWJDb3JlL2t3cS9L
V1FGb250LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2t3cS9LV1FGb250LmgJKHJldmlzaW9u
IDIxNjQzKQ0KKysrIFdlYkNvcmUva3dxL0tXUUZvbnQuaAkod29ya2luZyBjb3B5KQ0KQEAgLTcz
LDYgKzczLDcgQEAgcHVibGljOg0KICAgICBpbnQgZ2V0VHJhaXRzKCkgY29uc3QgeyByZXR1cm4g
X3RyYWl0OyB9DQogICAgIGZsb2F0IGdldFNpemUoKSBjb25zdCB7IHJldHVybiBfc2l6ZTsgfQ0K
IA0KKyAgICB2b2lkIHNldEdlbmVyaWNGYW1pbHkodW5zaWduZWQgaW50IGZhbWlseSk7DQogICAg
IGNvbnN0IENGb250ICpGb250KCkgOw0KICAgICBNV2ViQ29yZVRleHRSZW5kZXJlciAqUmVuZGVy
ZXIoKTsNCiANCkBAIC04NCw2ICs4NSw3IEBAIHByaXZhdGU6DQogICAgIGludCBfdHJhaXQ7DQog
ICAgIGZsb2F0IF9zaXplOw0KICAgICBib29sIF9pc1ByaW50ZXJGb250Ow0KKyAgICBpbnQgX2dl
bmVyaWNGYW1pbHk7DQogDQogICAgIE1XZWJDb3JlVGV4dFJlbmRlcmVyKiBfcmVuZGVyZXI7DQog
fTsNCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE2NDMpDQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQ0KQEAgLTEsMyArMSwxOSBAQA0KK3lvbmdqemhhLCByZXZpZXdlZCBieSA8cmV2aWV3ZXI+DQor
IERFU0M6IA0KKyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgzMg0K
Kw0KKyAgICAgICAgKiBCcm93c2VyQ29yZS9SZW5kZXJlcnMvaW5jL1RleHRSZW5kZXJlci5oOg0K
KyAgICAgICAgKiBCcm93c2VyQ29yZS9SZW5kZXJlcnMvaW5jL1RleHRSZW5kZXJlckZhY3Rvcnku
aDoNCisgICAgICAgIChDVGV4dFJlbmRlcmVyRmFjdG9yeTo6Q1JlbmRlcmVyQ2FjaGVFbnRyeTo6
Q1JlbmRlcmVyQ2FjaGVFbnRyeSk6DQorICAgICAgICAqIEJyb3dzZXJDb3JlL1JlbmRlcmVycy9z
cmMvVGV4dFJlbmRlcmVyLmNwcDoNCisgICAgICAgIChDVGV4dFJlbmRlcmVyOjpOZXdMKToNCisg
ICAgICAgIChDVGV4dFJlbmRlcmVyOjpDb25zdHJ1Y3RMKToNCisgICAgICAgICogQnJvd3NlckNv
cmUvUmVuZGVyZXJzL3NyYy9UZXh0UmVuZGVyZXJGYWN0b3J5LmNwcDoNCisgICAgICAgIChDVGV4
dFJlbmRlcmVyRmFjdG9yeTo6RGV2aWNlRGVmYXVsdEZvbnRGYW1pbGllcyk6DQorICAgICAgICAo
Q1RleHRSZW5kZXJlckZhY3Rvcnk6OlJlbmRlcmVyV2l0aEZhbWlsaWVzKToNCisgICAgICAgICog
QnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwOg0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpD
b25zdHJ1Y3RMKToNCisNCiBzcGFkbWENCiAgREVTQzogVXBkYXRlIGxvYyBmaWxlIGxheW91dA0K
ICANCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVyZXJzL2luYy9UZXh0UmVuZGVyZXIu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29yZS9SZW5kZXJlcnMvaW5jL1RleHRS
ZW5kZXJlci5oCShyZXZpc2lvbiAyMTY0MykNCisrKyBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVy
ZXJzL2luYy9UZXh0UmVuZGVyZXIuaAkod29ya2luZyBjb3B5KQ0KQEAgLTksOSArOSw5IEBADQog
KiAgICBDb3B5cmlnaHQgKGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9uDQogKiAgICBBbGwgcmln
aHRzIHJlc2VydmVkLg0KICogIA0KLSogIAlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0qICAJbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQotKiAg
CWFyZSBtZXQ6DQorKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KKyogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisqICAgYXJlIG1ldDoN
CiAqICANCiAqICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCkBAIC0yMywxOCArMjMsMTgg
QEANCiAqICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQNCiAqICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKiAgDQotKiAgCVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMNCi0qICAJIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QNCi0qICAJTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQotKiAgCUEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQot
KiAgCU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLA0KLSogIAlTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KLSogIAlE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkNCi0qICAJVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLSogIAkoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KLSogIAlVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
DQotKiAgCURBTUFHRS4NCisqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KKyogICAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KKyogICBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1INCisqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQorKiAgIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QNCisqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKyogICBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
DQorKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFDQorKiAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCisqICAgREFNQUdFLg0KICogIA0KICogICAg
UGxlYXNlIHNlZSBmaWxlIHBhdGVudGxpY2Vuc2UudHh0IGZvciBmdXJ0aGVyIGdyYW50cy4NCiAq
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTY3LDIxICs2NywyMSBAQCBjbGFzcyBDVGV4dFJl
bmRlcmVyRmFjdG9yeTsNCiAqICBAc2luY2UgMy4wDQogKi8NCiBjbGFzcyBDVGV4dFJlbmRlcmVy
OiBwdWJsaWMgQ0Jhc2UsIHB1YmxpYyBNV2ViQ29yZVRleHRSZW5kZXJlcg0KLQl7DQotCXB1Ymxp
YzoNCisgIHsNCisgIHB1YmxpYzoNCiANCi0gCQlzdGF0aWMgQ1RleHRSZW5kZXJlciogTmV3TChD
VGV4dFJlbmRlcmVyRmFjdG9yeSYgYUZhY3RvcnksIGNvbnN0IFRGb250U3BlYyYgYVNwZWMpOw0K
KyAgICBzdGF0aWMgQ1RleHRSZW5kZXJlciogTmV3TChDVGV4dFJlbmRlcmVyRmFjdG9yeSYgYUZh
Y3RvcnksIGNvbnN0IFRGb250U3BlYyYgYVNwZWMsIFRJbnQgYUdlbmVyaWNGYW1pbHkpOw0KIA0K
LQlwdWJsaWM6DQorICBwdWJsaWM6DQogDQotCS8vIHZlcnRpY2FsIG1ldHJpY3MNCisgIC8vIHZl
cnRpY2FsIG1ldHJpY3MNCiAgICAgICAgIC8qKg0KICAgICAgICAgKiByZXR1cm5zIHRoZSB0ZXh0
IGFzY2VudA0KICAgICAgICAgKiBAc2luY2UgMy4wDQogICAgICAgICAqIEBwYXJhbQ0KICAgICAg
ICAgKiBAcmV0dXJuIFRJbnQNCiAgICAgICAgICovDQotCQlUSW50IEFzY2VudCgpOw0KKyAgICBU
SW50IEFzY2VudCgpOw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIHJldHVybnMgdGhlIHRl
eHQgZGVzY2VudA0KQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgQ1RleHRSZW5kZXJlcjogcHVibGlj
IENCYXNlLCBwdWJsaQ0KICAgICAgICAgKiBAcGFyYW0NCiAgICAgICAgICogQHJldHVybiBUSW50
DQogICAgICAgICAqLw0KLQkJVEludCBEZXNjZW50KCk7DQorICAgIFRJbnQgRGVzY2VudCgpOw0K
IA0KICAgICAgICAgLyoqDQogICAgICAgICAqIHJldHVybnMgdGhlIGxpbmUgc3BhY2luZw0KQEAg
LTk3LDcgKzk3LDcgQEAgY2xhc3MgQ1RleHRSZW5kZXJlcjogcHVibGljIENCYXNlLCBwdWJsaQ0K
ICAgICAgICAgKiBAcGFyYW0NCiAgICAgICAgICogQHJldHVybiBUSW50DQogICAgICAgICAqLw0K
LQkJVEludCBMaW5lU3BhY2luZygpOw0KKyAgICBUSW50IExpbmVTcGFjaW5nKCk7DQogDQogICAg
ICAgICAvKioNCiAgICAgICAgICogcmV0dXJucyB0aGUgaGVpZ2h0IG9uIHgNCkBAIC0xMDUsMjgg
KzEwNSwyOCBAQCBjbGFzcyBDVGV4dFJlbmRlcmVyOiBwdWJsaWMgQ0Jhc2UsIHB1YmxpDQogICAg
ICAgICAqIEBwYXJhbQ0KICAgICAgICAgKiBAcmV0dXJuIFRJbnQNCiAgICAgICAgICovDQotCQlU
SW50IFhIZWlnaHQoKTsNCisgICAgVEludCBYSGVpZ2h0KCk7DQogDQotCQkvLyBob3Jpem9udGFs
IG1ldHJpY3MNCisgICAgLy8gaG9yaXpvbnRhbCBtZXRyaWNzDQogICAgICAgICAvKioNCiAgICAg
ICAgICogcmV0dXJucyB0aGUgd2lkdGggdG8gRHJhdyB0aGUgdGV4dA0KICAgICAgICAgKiBAc2lu
Y2UgMy4wDQogICAgICAgICAqIEBwYXJhbQ0KICAgICAgICAgKiBAcmV0dXJuIFRJbnQNCiAgICAg
ICAgICovDQotCQlUSW50IFdpZHRoRm9yUnVuKGNvbnN0IFRXZWJDb3JlVGV4dFJ1biYgYVJ1biwN
Ci0JIAkJCQkgICAgIGNvbnN0IFRXZWJDb3JlVGV4dFN0eWxlJiBhU3R5bGUpOw0KKyAgICBUSW50
IFdpZHRoRm9yUnVuKGNvbnN0IFRXZWJDb3JlVGV4dFJ1biYgYVJ1biwNCisgICAgICAgICAgICAg
ICBjb25zdCBUV2ViQ29yZVRleHRTdHlsZSYgYVN0eWxlKTsNCiANCi0JCS8vIGRyYXdpbmcNCisg
ICAgLy8gZHJhd2luZw0KICAgICAgICAgLyoqDQogICAgICAgICAqIGRyYXcgdGhlIHRlc3QNCiAg
ICAgICAgICogQHNpbmNlIDMuMA0KICAgICAgICAgKiBAcGFyYW0NCiAgICAgICAgICogQHJldHVy
bg0KICAgICAgICAgKi8NCi0JCXZvaWQgRHJhd1J1bihDV2ViQ29yZUdyYXBoaWNzQ29udGV4dCYg
YUdyYXBoaWNzQ29udGV4dCwgY29uc3QgVFdlYkNvcmVUZXh0UnVuJiBhUnVuLA0KLQkJCQkJCSBj
b25zdCBUV2ViQ29yZVRleHRTdHlsZSYgYVN0eWxlLA0KLQkJCQkJCSBjb25zdCBUV2ViQ29yZVRl
eHRHZW9tZXRyeSYgYUdlb21ldHJ5KTsNCisgICAgdm9pZCBEcmF3UnVuKENXZWJDb3JlR3JhcGhp
Y3NDb250ZXh0JiBhR3JhcGhpY3NDb250ZXh0LCBjb25zdCBUV2ViQ29yZVRleHRSdW4mIGFSdW4s
DQorICAgICAgICAgICAgIGNvbnN0IFRXZWJDb3JlVGV4dFN0eWxlJiBhU3R5bGUsDQorICAgICAg
ICAgICAgIGNvbnN0IFRXZWJDb3JlVGV4dEdlb21ldHJ5JiBhR2VvbWV0cnkpOw0KIA0KICAgICAg
ICAgLyoqDQogICAgICAgICAqIGhpZ2hsaWhndHMgdGhlIHRleHQNCkBAIC0xMzQsMzEgKzEzNCwz
MSBAQCBjbGFzcyBDVGV4dFJlbmRlcmVyOiBwdWJsaWMgQ0Jhc2UsIHB1YmxpDQogICAgICAgICAq
IEBwYXJhbQ0KICAgICAgICAgKiBAcmV0dXJuDQogICAgICAgICAqLw0KLQkJdm9pZCBEcmF3SGln
aGxpZ2h0Rm9yUnVuKENXZWJDb3JlR3JhcGhpY3NDb250ZXh0JiBhR3JhcGhpY3NDb250ZXh0LCBj
b25zdCBUV2ViQ29yZVRleHRSdW4mIGFSdW4sDQotCQkJCQkJCQkJIGNvbnN0IFRXZWJDb3JlVGV4
dFN0eWxlJiBhU3R5bGUsDQotCQkJCQkJCQkJIGNvbnN0IFRXZWJDb3JlVGV4dEdlb21ldHJ5JiBh
R2VvbWV0cnkpOw0KKyAgICB2b2lkIERyYXdIaWdobGlnaHRGb3JSdW4oQ1dlYkNvcmVHcmFwaGlj
c0NvbnRleHQmIGFHcmFwaGljc0NvbnRleHQsIGNvbnN0IFRXZWJDb3JlVGV4dFJ1biYgYVJ1biwN
CisgICAgICAgICAgICAgICAgICAgY29uc3QgVFdlYkNvcmVUZXh0U3R5bGUmIGFTdHlsZSwNCisg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFdlYkNvcmVUZXh0R2VvbWV0cnkmIGFHZW9tZXRyeSk7
DQogDQotCSAgIC8qKg0KKyAgICAgLyoqDQogICAgICAgICAqIHVuZGVybGluZXMgdGhlIHRleHQN
CiAgICAgICAgICogQHNpbmNlIDMuMA0KICAgICAgICAgKiBAcGFyYW0NCiAgICAgICAgICogQHJl
dHVybg0KICAgICAgICAgKi8NCi0JCXZvaWQgRHJhd0xpbmVGb3JDaGFyYWN0ZXJzKENXZWJDb3Jl
R3JhcGhpY3NDb250ZXh0JiBhR3JhcGhpY3NDb250ZXh0LCBUUG9pbnQgJmFQb2ludCwgVEludCBh
WU9mZnNldCwNCi0JCQkJCQkJCQkgICBUSW50IGFXaWR0aCwgVFJnYiAmYUNvbG9yKTsNCisgICAg
dm9pZCBEcmF3TGluZUZvckNoYXJhY3RlcnMoQ1dlYkNvcmVHcmFwaGljc0NvbnRleHQmIGFHcmFw
aGljc0NvbnRleHQsIFRQb2ludCAmYVBvaW50LCBUSW50IGFZT2Zmc2V0LA0KKyAgICAgICAgICAg
ICAgICAgICAgIFRJbnQgYVdpZHRoLCBUUmdiICZhQ29sb3IpOw0KIA0KLQkJLy8gc2VsZWN0aW9u
IHBvaW50IGNoZWNrDQorICAgIC8vIHNlbGVjdGlvbiBwb2ludCBjaGVjaw0KICAgICAgICAgLyoq
DQogICAgICAgICAqIHJldHVybnMgdGhlIG9mZnNldA0KICAgICAgICAgKiBAc2luY2UgMy4wDQog
ICAgICAgICAqIEBwYXJhbQ0KICAgICAgICAgKiBAcmV0dXJuIFRJbnQNCiAgICAgICAgICovDQot
CQlUSW50IFBvaW50VG9PZmZzZXQoY29uc3QgVFdlYkNvcmVUZXh0UnVuJiBhUnVuLA0KLQkgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRXZWJDb3JlVGV4dFN0eWxlJiBhU3R5bGUsDQot
CSAgICAgICAgICAgICAgICAgICAgICAgICAgVEludCBhUG9zaXRpb24sDQotCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEJvb2wgYVJldmVyc2VkLA0KLQkgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRCb29sIGFJbmNsdWRlUGFydGlhbEdseXBocyk7DQorICAgIFRJbnQgUG9pbnRUb09mZnNl
dChjb25zdCBUV2ViQ29yZVRleHRSdW4mIGFSdW4sDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRXZWJDb3JlVGV4dFN0eWxlJiBhU3R5bGUsDQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnQgYVBvc2l0aW9uLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
Qm9vbCBhUmV2ZXJzZWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29sIGFJbmNs
dWRlUGFydGlhbEdseXBocyk7DQogDQogICAgICAgICAvKioNCiAgICAgICAgICogaW5jcmVhc2Ug
dGhlIHJlZmVyZW5jZSBjb3VudA0KQEAgLTE3NiwxMyArMTc2LDEzIEBAIGNsYXNzIENUZXh0UmVu
ZGVyZXI6IHB1YmxpYyBDQmFzZSwgcHVibGkNCiAgICAgICAgICovDQogICAgICAgICBpbmxpbmUg
dm9pZCBEZXJlZigpIHsgaWYoLS1pUmVmQ291bnQ9PTApIHsgZGVsZXRlIHRoaXM7IH0gfQ0KIA0K
LSAgICAJLyoqDQorICAgICAgLyoqDQogICAgICAgICAqIHJldHVybnMgdGhlIHVzZWQgZm9udA0K
ICAgICAgICAgKiBAc2luY2UgMy4wDQogICAgICAgICAqIEBwYXJhbQ0KICAgICAgICAgKiBAcmV0
dXJuDQogICAgICAgICAqLw0KLSAgICAJQ0ZvbnQqIEZvbnQoKTsNCisgICAgICBDRm9udCogRm9u
dCgpOw0KIA0KICAgICAgICAgLyoqDQogICAgICAgICAqIFJldHVybnMgdHJ1ZSBvciBmYWxzZSBp
ZiBmb250IGlzIGZpeGVkIHBpdGNoDQpAQCAtMTkxLDkgKzE5MSw5IEBAIGNsYXNzIENUZXh0UmVu
ZGVyZXI6IHB1YmxpYyBDQmFzZSwgcHVibGkNCiAgICAgICAgICovDQogICAgICAgICBUQm9vbCBJ
c0ZvbnRGaXhlZFBpdGNoKCk7DQogDQotCXByaXZhdGU6DQorICBwcml2YXRlOg0KIA0KLQkJLyoq
DQorICAgIC8qKg0KICAgICAgICAgKiBDKysgZGVmYXVsdCBjb25zdHJ1Y3Rvci4NCiAgICAgICAg
ICovDQogICAgICAgICBDVGV4dFJlbmRlcmVyKENUZXh0UmVuZGVyZXJGYWN0b3J5JiBhRmFjdG9y
eSk7DQpAQCAtMjA0LDEwICsyMDQsMTAgQEAgY2xhc3MgQ1RleHRSZW5kZXJlcjogcHVibGljIENC
YXNlLCBwdWJsaQ0KICAgICAgICAgKi8NCiAgICAgICAgIHZpcnR1YWwgfkNUZXh0UmVuZGVyZXIo
KTsNCiANCi0JCS8qKg0KKyAgICAvKioNCiAgICAgICAgICogQ29uc3RydWN0TA0KICAgICAgICAg
Ki8NCi0gICAgICAgIHZvaWQgQ29uc3RydWN0TChjb25zdCBURm9udFNwZWMmIGFTcGVjKTsNCisg
ICAgICAgIHZvaWQgQ29uc3RydWN0TChjb25zdCBURm9udFNwZWMmIGFTcGVjLCBUSW50IGFHZW5l
cmljRmFtaWx5KTsNCiANCiAgICAgcHJpdmF0ZToNCiAgICAgICAgIC8qKg0KQEAgLTIxOSw5ICsy
MTksOSBAQCBjbGFzcyBDVGV4dFJlbmRlcmVyOiBwdWJsaWMgQ0Jhc2UsIHB1YmxpDQogICAgICAg
ICAgICAgQ0ZvbnQ6OlRNZWFzdXJlVGV4dE91dHB1dCogYU91dHB1dCk7DQogDQogDQotIAlwcml2
YXRlOg0KLQkgICAgLy8gdXNlZCBmb250IGluc3RhbmNlDQotIAkgICAgQ0ZvbnQqIGlGb250OyAg
IC8vIG5lZWRzIHRvIGJlIHJlbGVhc2VkDQorICBwcml2YXRlOg0KKyAgICAgIC8vIHVzZWQgZm9u
dCBpbnN0YW5jZQ0KKyAgICAgIENGb250KiBpRm9udDsgICAvLyBuZWVkcyB0byBiZSByZWxlYXNl
ZA0KIA0KICAgICAgICAgVEludCBpUmVmQ291bnQ7DQogDQpAQCAtMjI5LDUgKzIyOSw1IEBAIGNs
YXNzIENUZXh0UmVuZGVyZXI6IHB1YmxpYyBDQmFzZSwgcHVibGkNCiANCiAgICAgICAgIFRJbnQg
aVhIZWlnaHQ7DQogICAgICAgICBUQm9vbCBpSXNGaXhlZDsNCi0JfTsNCisgIH07DQogI2VuZGlm
DQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb3JlL1JlbmRlcmVycy9pbmMvVGV4dFJlbmRlcmVyRmFj
dG9yeS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb3JlL1JlbmRlcmVycy9pbmMv
VGV4dFJlbmRlcmVyRmFjdG9yeS5oCShyZXZpc2lvbiAyMTY0MykNCisrKyBXZWJLaXQvQnJvd3Nl
ckNvcmUvUmVuZGVyZXJzL2luYy9UZXh0UmVuZGVyZXJGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkN
CkBAIC01MSw2ICs1MSw3IEBADQogI2luY2x1ZGUgPGdkaS5oPg0KIA0KIC8vIENPTlNUQU5UUw0K
K19MSVQoIEtQbGF0Zm9ybURlZmF1bHRGb250RmFtaWx5LCAgICJTNjAgV2ViS2l0IiApOw0KIA0K
IC8vIE1BQ1JPUw0KIA0KQEAgLTkzLDcgKzk0LDggQEAgY2xhc3MgQ1RleHRSZW5kZXJlckZhY3Rv
cnkgOiBwdWJsaWMgQ0Jhcw0KICAgICAgICAgKi8NCiAgICAgICAgIHZpcnR1YWwgTVdlYkNvcmVU
ZXh0UmVuZGVyZXIqIFJlbmRlcmVyV2l0aEZhbWlsaWVzKFRQdHJDICphRmFtaWxpZXMsDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludCBhVHJhaXRzLA0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnQgYVNpemUpOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnQgYVNpemUsDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludCBhR2VuZXJpY0ZhbWlseSk7DQogDQogDQog
ICAgIHB1YmxpYzoNCkBAIC0xMjMsMTEgKzEyNSwxMiBAQCBjbGFzcyBDVGV4dFJlbmRlcmVyRmFj
dG9yeSA6IHB1YmxpYyBDQmFzDQogICAgICAgICBjbGFzcyBDUmVuZGVyZXJDYWNoZUVudHJ5IDog
cHVibGljIENCYXNlDQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIHB1YmxpYzoNCi0gICAg
ICAgICAgICAgICAgQ1JlbmRlcmVyQ2FjaGVFbnRyeShjb25zdCBURm9udFNwZWMmIGFTcGVjLCBD
VGV4dFJlbmRlcmVyJiBhUmVuZGVyZXIpDQorICAgICAgICAgICAgICAgIENSZW5kZXJlckNhY2hl
RW50cnkoY29uc3QgVEZvbnRTcGVjJiBhU3BlYywgQ1RleHRSZW5kZXJlciYgYVJlbmRlcmVyLCBU
SW50IGFHZW5lcmljRmFtaWx5KQ0KICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICAgLy8gY2FjaGluZyBkb2VzIG5vdCByZWYgdGhlIHJlbmRlcmVyDQogICAgICAgICAg
ICAgICAgICAgICBpU3BlYyA9IGFTcGVjOw0KICAgICAgICAgICAgICAgICAgICAgaVJlbmRlcmVy
ID0gJmFSZW5kZXJlcjsNCisgICAgICAgICAgICAgICAgICAgIGlHZW5lcmljRmFtaWx5ID0gYUdl
bmVyaWNGYW1pbHk7DQogICAgICAgICAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgICAg
IENSZW5kZXJlckNhY2hlRW50cnkoKSA6IGlSZW5kZXJlcigwKQ0KQEAgLTEzNiw2ICsxMzksNyBA
QCBjbGFzcyBDVGV4dFJlbmRlcmVyRmFjdG9yeSA6IHB1YmxpYyBDQmFzDQogDQogICAgICAgICAg
ICAgICAgIFRGb250U3BlYyBpU3BlYzsNCiAgICAgICAgICAgICAgICAgQ1RleHRSZW5kZXJlciog
aVJlbmRlcmVyOw0KKyAgICAgICAgICAgICAgICBUSW50IGlHZW5lcmljRmFtaWx5Ow0KIA0KICAg
ICAgICAgICAgICAgICBUU2dsUXVlTGluayBpTGluazsNCiAgICAgICAgICAgICB9Ow0KSW5kZXg6
IFdlYktpdC9Ccm93c2VyQ29yZS9SZW5kZXJlcnMvc3JjL1RleHRSZW5kZXJlci5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVyZXJzL3NyYy9UZXh0UmVuZGVyZXIu
Y3BwCShyZXZpc2lvbiAyMTY0MykNCisrKyBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVyZXJzL3Ny
Yy9UZXh0UmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTEsNiArNTEsNyBAQA0KICNp
bmNsdWRlICJXZWJDb3JlQnJpZGdlLmgiDQogI2luY2x1ZGUgIlRleHRSZW5kZXJlckZhY3Rvcnku
aCINCiAjaW5jbHVkZSAiV2ViS2l0RnJhbWUuaCINCisjaW5jbHVkZSA8QWtuRm9udEFjY2Vzcy5o
Pg0KIA0KIA0KIC8vIEVYVEVSTkFMIERBVEEgU1RSVUNUVVJFUw0KQEAgLTczLDExICs3NCwxMSBA
QA0KIA0KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUVNQkVSIEZVTkNUSU9OUyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogDQotQ1RleHRSZW5kZXJlciogQ1RleHRS
ZW5kZXJlcjo6TmV3TChDVGV4dFJlbmRlcmVyRmFjdG9yeSYgYUZhY3RvcnksIGNvbnN0IFRGb250
U3BlYyYgYVNwZWMpDQorQ1RleHRSZW5kZXJlciogQ1RleHRSZW5kZXJlcjo6TmV3TChDVGV4dFJl
bmRlcmVyRmFjdG9yeSYgYUZhY3RvcnksIGNvbnN0IFRGb250U3BlYyYgYVNwZWMsIFRJbnQgYUdl
bmVyaWNGYW1pbHkpDQogICB7DQogICAgIENUZXh0UmVuZGVyZXIqIHNlbGYgPSBuZXcgKEVMZWF2
ZSkgQ1RleHRSZW5kZXJlcihhRmFjdG9yeSk7DQogICBDbGVhbnVwU3RhY2s6OlB1c2hMKHNlbGYp
Ow0KLSAgc2VsZi0+Q29uc3RydWN0TChhU3BlYyk7DQorICBzZWxmLT5Db25zdHJ1Y3RMKGFTcGVj
LCBhR2VuZXJpY0ZhbWlseSk7DQogICBDbGVhbnVwU3RhY2s6OlBvcCgpOw0KICAgcmV0dXJuIHNl
bGY7DQogICB9DQpAQCAtMTAwLDEwICsxMDEsMTggQEAgQ1RleHRSZW5kZXJlcjo6Q1RleHRSZW5k
ZXJlcihDVGV4dFJlbmRlcg0KIC8vDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KLXZv
aWQgQ1RleHRSZW5kZXJlcjo6Q29uc3RydWN0TChjb25zdCBURm9udFNwZWMmIGFTcGVjKQ0KK3Zv
aWQgQ1RleHRSZW5kZXJlcjo6Q29uc3RydWN0TChjb25zdCBURm9udFNwZWMmIGFTcGVjLCBUSW50
IGFHZW5lcmljRmFtaWx5KQ0KICAgew0KICAgICAvLyBjcmVhdGUgZm9udA0KLSAgICBpRmFjdG9y
eS0+RGV2aWNlKCktPkdldE5lYXJlc3RGb250SW5QaXhlbHMoaUZvbnQsIGFTcGVjKTsNCisgICAg
aWYgKGFTcGVjLmlUeXBlZmFjZS5pTmFtZSA9PSBLUGxhdGZvcm1EZWZhdWx0Rm9udEZhbWlseSkN
CisgICAgICAgIHsNCisgICAgICAgIC8vIGZhbGwgYmFjayB0byBwbGF0Zm9ybSBkZWZhdWx0IGZv
bnRzIGJ5IHVzaW5nIFRBa25Gb250RmFtaWx5DQorICAgICAgICBpRm9udCA9IEFrbkZvbnRBY2Nl
c3M6OkdldENsb3Nlc3RGb250KCppRmFjdG9yeS0+RGV2aWNlKCksIGFTcGVjLmlGb250U3R5bGUs
IGFTcGVjLmlIZWlnaHQsIChBa25Gb250QWNjZXNzOjpUQWtuRm9udEZhbWlseSlhR2VuZXJpY0Zh
bWlseSk7DQorICAgICAgICB9DQorICAgIGVsc2UgDQorICAgICAgICB7DQorICAgICAgICBpRm9u
dCA9IEFrbkZvbnRBY2Nlc3M6OkdldENsb3Nlc3RGb250KCppRmFjdG9yeS0+RGV2aWNlKCksIGFT
cGVjLmlGb250U3R5bGUsIGFTcGVjLmlIZWlnaHQsIGFTcGVjLmlUeXBlZmFjZS5pTmFtZSk7DQor
ICAgICAgICB9DQogICAgIC8vIFFVSUNLIEZJWCBmb3IgRVhUUy02SzVBVzQsIHB1dCB0aGlzIGJh
Y2sgd2hlbiBpdCBpcyBmaXhlZCBpbiB0aGUgcGxhdGZvcm0hDQogICAgIC8vaUlzRml4ZWQgPSAh
aUZvbnQtPkZvbnRTcGVjSW5Ud2lwcygpLmlUeXBlZmFjZS5Jc1Byb3BvcnRpb25hbCgpOw0KICAg
ICBpSXNGaXhlZCA9IEVGYWxzZTsNCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVyZXJz
L3NyYy9UZXh0UmVuZGVyZXJGYWN0b3J5LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93
c2VyQ29yZS9SZW5kZXJlcnMvc3JjL1RleHRSZW5kZXJlckZhY3RvcnkuY3BwCShyZXZpc2lvbiAy
MTY0MykNCisrKyBXZWJLaXQvQnJvd3NlckNvcmUvUmVuZGVyZXJzL3NyYy9UZXh0UmVuZGVyZXJG
YWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IFRGb250
TG9va3VwRW50cnkNCiAvLyBDT05TVEFOVFMNCiANCiBjb25zdCBUSW50IEtOdW1QZXJtYW5lbnRs
eUNhY2hlZCA9IDM7DQorLyoNCiBfTElUKCBLRUxhZlN0YW5kYXJkRm9udEZhbWlseSwgICAgICAi
U2VyaWVzIDYwIFNhbnMiKTsNCiBfTElUKCBLRUxhZlN0YW5kYXJkQm9sZEZvbnRGYW1pbHksICAi
U2VyaWVzIDYwIFNhbnMgU2VtaUJvbGQiKTsNCiBfTElUKCBLRUxhZlN0YW5kYXJkRm9udEZhbWls
eTIsICAgICAiTm9raWEgU2FucyBTNjAiKTsNCkBAIC02OSw4ICs3MCw4IEBAIF9MSVQoIEtDaGlu
ZXNlU3RhbmRhcmRGb250RmFtaWx5LCAgICJTYW4NCiBfTElUKCBLU2VyaWVzNjBUQ0FuZEhLLCAg
ICAgICAgICAgICAiU2FucyBNVCAgVW5pVF9IS1NDU19TNjAiKTsNCiBfTElUKCBLSmFwYW5lc2VT
dGFuZGFyZEZvbnRGYW1pbHksICAiU2VyaWVzIDYwIEoiKTsNCiBfTElUKCBLVGhhaVN0YW5kYXJk
Rm9udEZhbWlseSwgICAgICAiU2VyaWVzIDYwIFNhbnNCIik7DQotX0xJVCggS0dyZWVrU3RhbmRh
cmRGb250RmFtaWx5LCAgICAgICJTZXJpZXMgNjAgSGluZGkiKTsNCi0NCitfTElUKCBLR3JlZWtT
dGFuZGFyZEZvbnRGYW1pbHksICAgICAiU2VyaWVzIDYwIEhpbmRpIik7DQorKi8NCiANCiAvLyBN
QUNST1MNCiANCkBAIC0xNzksNyArMTgwLDcgQEAgQ1RleHRSZW5kZXJlckZhY3Rvcnk6On5DVGV4
dFJlbmRlcmVyRmFjdA0KIA0KIFRQdHJDIENUZXh0UmVuZGVyZXJGYWN0b3J5OjpEZXZpY2VEZWZh
dWx0Rm9udEZhbWlsaWVzKCkNCiAgICAgew0KLSAgICBpZiAoaURldmljZURlZmF1bHRGb250Lkxl
bmd0aCgpPjApDQorICAgIC8qaWYgKGlEZXZpY2VEZWZhdWx0Rm9udC5MZW5ndGgoKT4wKQ0KICAg
ICAgICAgcmV0dXJuIGlEZXZpY2VEZWZhdWx0Rm9udDsNCiANCiAgICAgVFB0ckMgZm9udChLRUxh
ZlN0YW5kYXJkRm9udEZhbWlseSk7DQpAQCAtMjU2LDYgKzI1NywxMCBAQCBUUHRyQyBDVGV4dFJl
bmRlcmVyRmFjdG9yeTo6RGV2aWNlRGVmYXVsDQogDQogICAgIGlEZXZpY2VEZWZhdWx0Rm9udC5T
ZXQoZm9udCk7DQogICAgIHJldHVybiBpRGV2aWNlRGVmYXVsdEZvbnQ7DQorICAgICovDQorDQor
ICAgIGlEZXZpY2VEZWZhdWx0Rm9udC5TZXQoS1BsYXRmb3JtRGVmYXVsdEZvbnRGYW1pbHkpOw0K
KyAgICByZXR1cm4gaURldmljZURlZmF1bHRGb250Ow0KICAgICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCkBAIC0yNjQsNyArMjY5LDcgQEAgVFB0ckMgQ1RleHRSZW5kZXJlckZhY3Rv
cnk6OkRldmljZURlZmF1bA0KIC8vIFJldHVybnMgcmVuZGVyZXIgYmVzdCBtYXRjaGluZyBnaXZl
biBhdHRyaWJ1dGVzDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KLU1XZWJDb3JlVGV4
dFJlbmRlcmVyKiBDVGV4dFJlbmRlcmVyRmFjdG9yeTo6UmVuZGVyZXJXaXRoRmFtaWxpZXMoVFB0
ckMgKmFGYW1pbGllcywgVEludCBhVHJhaXRzLCBUSW50IGFTaXplKQ0KK01XZWJDb3JlVGV4dFJl
bmRlcmVyKiBDVGV4dFJlbmRlcmVyRmFjdG9yeTo6UmVuZGVyZXJXaXRoRmFtaWxpZXMoVFB0ckMg
KmFGYW1pbGllcywgVEludCBhVHJhaXRzLCBUSW50IGFTaXplLCBUSW50IGdlbmVyaWNGYW1pbHkp
DQogICAgIHsNCiAgICAgVEJvb2wgaXNCb2xkID0gYVRyYWl0cyAmIEVXZWJDb3JlQm9sZEZvbnRN
YXNrOw0KICAgICBUQm9vbCBpc0l0YWxpYyA9IGFUcmFpdHMgJiBFV2ViQ29yZUl0YWxpY0ZvbnRN
YXNrOw0KQEAgLTI4NSwyNCArMjkwLDYgQEAgTVdlYkNvcmVUZXh0UmVuZGVyZXIqIENUZXh0UmVu
ZGVyZXJGYWN0bw0KICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgIC8vIGlmIHRoZSBmb250IGlzIG5vdCBpbiB0aGUg
bGlzdCBvZiBzdXBwb3J0ZWQgZm9udHMsIHNlZSBpZiB0aGUgZm9udCBpcyBpbiBvdXINCi0gICAg
ICAgIC8vIGZvbnQgbG9vayB1cCB0YWJsZQ0KLSAgICAgICAgLyppZiAoIWZvbnRGb3VuZCkNCi0g
ICAgICAgICAgICB7DQotICAgICAgICAgICAgVEludCBjb3VudCA9IHNpemVvZihmb250TG9va3Vw
QXJyYXkpIC8gc2l6ZW9mKFRGb250TG9va3VwRW50cnkpOw0KLQ0KLSAgICAgICAgICAgIGZvciAo
VEludCBpID0gMDsgaSA8IGNvdW50OyBpKyspDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAg
ICAgICAgICAgaWYgKFRQdHJDKGZvbnRMb29rdXBBcnJheVtpXS5pU3BlY2lmaWVkRm9udE5hbWUp
ID09IGZhbWlseSkNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAg
IGZhbWlseS5TZXQoVFB0ckMoZm9udExvb2t1cEFycmF5W2ldLmlEZWZhdWx0Rm9udE5hbWUpKTsN
Ci0NCi0gICAgICAgICAgICAgICAgICAgIGZvbnRGb3VuZCA9IEVUcnVlOw0KLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAg
IH0NCi0gICAgICAgICAgICB9Ki8NCiAgICAgICAgIH0NCiANCiAgICAgaWYgKCFmb250Rm91bmQp
DQpAQCAtMzEwLDEwICsyOTcsMTIgQEAgTVdlYkNvcmVUZXh0UmVuZGVyZXIqIENUZXh0UmVuZGVy
ZXJGYWN0bw0KICAgICAgICAgZmFtaWx5LlNldChEZXZpY2VEZWZhdWx0Rm9udEZhbWlsaWVzKCkp
Ow0KICAgICAgICAgfQ0KIA0KKyAgICAvKg0KICAgICBpZiAoaXNCb2xkICYmIGZhbWlseT09S0VM
YWZTdGFuZGFyZEZvbnRGYW1pbHkpDQogICAgICAgICB7DQogICAgICAgICBmYW1pbHkuU2V0KEtF
TGFmU3RhbmRhcmRCb2xkRm9udEZhbWlseSk7DQogICAgICAgICB9DQorICAgICovDQogDQogICAg
IGlmIChhU2l6ZSA9PSAwKQ0KICAgICAgICAgew0KQEAgLTMyNSw3ICszMTQsOCBAQCBNV2ViQ29y
ZVRleHRSZW5kZXJlciogQ1RleHRSZW5kZXJlckZhY3RvDQogICAgIC8vIGFTaXplID0gKGFTaXpl
LzQpKjQrMjsNCiANCiAgICAgLy9GSVggTUUjIyBUaGlzIGlzIGJlY2F1c2UgYm9sZCBmb250IG9m
IGxlc3MgdGhhbiAxMSBweCBkb2VzbnQgd29yayBwcm9wZXJseQ0KLSAgICBURm9udFNwZWMgZm9u
dFNwZWMoIGZhbWlseSwgaUFwYWMgPyAgKGlzQm9sZCA/IE1heChhU2l6ZSwxMSkgOiBhU2l6ZSkg
OiBhU2l6ZSk7DQorICAgIFRJbnQgc2l6ZUluVHdpcHMgPSBpU2NyZWVuRGV2aWNlLT5WZXJ0aWNh
bFBpeGVsc1RvVHdpcHMoaUFwYWMgPyAgKGlzQm9sZCA/IE1heChhU2l6ZSwxMSkgOiBhU2l6ZSkg
OiBhU2l6ZSk7DQorICAgIFRGb250U3BlYyBmb250U3BlYyggZmFtaWx5LCBzaXplSW5Ud2lwcyAp
Ow0KIA0KICAgICBmb250U3BlYy5pRm9udFN0eWxlLlNldFN0cm9rZVdlaWdodChpc0JvbGQgPyBF
U3Ryb2tlV2VpZ2h0Qm9sZCA6IEVTdHJva2VXZWlnaHROb3JtYWwpOw0KICAgICBmb250U3BlYy5p
Rm9udFN0eWxlLlNldFBvc3R1cmUoaXNJdGFsaWMgPyBFUG9zdHVyZUl0YWxpYyA6IEVQb3N0dXJl
VXByaWdodCk7DQpAQCAtMzM5LDEwICszMjksMTAgQEAgTVdlYkNvcmVUZXh0UmVuZGVyZXIqIENU
ZXh0UmVuZGVyZXJGYWN0bw0KIA0KICAgICBpZiAoIXJlbmRlcmVyKQ0KICAgICAgICAgew0KLSAg
ICAgICAgVFJBUEQoZXJyLCByZW5kZXJlciA9IENUZXh0UmVuZGVyZXI6Ok5ld0woKnRoaXMsIGZv
bnRTcGVjKSk7DQorICAgICAgICBUUkFQRChlcnIsIHJlbmRlcmVyID0gQ1RleHRSZW5kZXJlcjo6
TmV3TCgqdGhpcywgZm9udFNwZWMsIGdlbmVyaWNGYW1pbHkpKTsNCiAgICAgICAgIGlmICghZXJy
KQ0KICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBDUmVuZGVyZXJDYWNoZUVudHJ5KiBlbnRy
eSA9IG5ldyBDUmVuZGVyZXJDYWNoZUVudHJ5KGZvbnRTcGVjLCAqcmVuZGVyZXIpOw0KKyAgICAg
ICAgICAgIENSZW5kZXJlckNhY2hlRW50cnkqIGVudHJ5ID0gbmV3IENSZW5kZXJlckNhY2hlRW50
cnkoZm9udFNwZWMsICpyZW5kZXJlciwgZ2VuZXJpY0ZhbWlseSk7DQogICAgICAgICAgICAgaWYg
KGVudHJ5KQ0KICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIGlSZW5kZXJlckNh
Y2hlLkFkZExhc3QoKmVudHJ5KTsNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1dlYktp
dFZpZXcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRW
aWV3LmNwcAkocmV2aXNpb24gMjE2NDMpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJL
aXRWaWV3LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIENXZWJL
aXRWaWV3OjpDb25zdHJ1Y3RMKA0KICAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoaURpcmVjdEFjY2Vz
c1NjcmVlbkRldmljZS0+Q3JlYXRlQ29udGV4dChpRGlyZWN0QWNjZXNzR2MpKTsNCiAjZW5kaWYg
Ly9VU0VfRElSRUNUX1NDUkVFTl9BQ0NFU1MNCiANCi0gICAgaUluZm9UZXh0UmVuZGVyZXIgPSBD
VGV4dFJlbmRlcmVyRmFjdG9yeTo6SW5zdGFuY2VMKCktPlJlbmRlcmVyV2l0aEZhbWlsaWVzKDAs
MCwyNSk7DQorICAgIGlJbmZvVGV4dFJlbmRlcmVyID0gQ1RleHRSZW5kZXJlckZhY3Rvcnk6Oklu
c3RhbmNlTCgpLT5SZW5kZXJlcldpdGhGYW1pbGllcygwLDAsMjUsMCk7DQogICAgIGlJbmZvVGV4
dFJlbmRlcmVyLT5SZWYoKTsNCiANCiAgICAgLy8gdmlydHVhbCBjdXJzb3INCkluZGV4OiBTNjBJ
bnRlcm5hbHMvUzYwSGVhZGVycy56aXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLg0Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQ0KDQpVRXNEQkJRQUFnQUlBUGVHNHpRVXZtTmtVQW9BQUFJcEFBQVpBSElBUlhC
dll6TXlMMmx1WTJ4MVpHVXZiMlZ0TDBGSVRFVXVhRk5FDQpYUUNrQUFBQUFBZ0FzVUJaTzJOa1lH
a1FZV0JnVUdHQUFBY2dabVFDTTFrVmdJUUNrTTNJQ3VHTEFvbkpqNU04bXJxWGFTakhKMmVEDQox
REV4cERDd2dLVWxHUDR6eW1Qb1pXQVFnWWd6UXNTRjhLcVZZRmpKSUlRaXJnaGtBd0JWVkEwQUIx
S0VxVVNhT0xWRWdvMk9STFU9DQoNCg==
</data>
<flag name="review"
          id="6035"
          type_id="1"
          status="+"
          setter="Sachin.Padma"
    />
          </attachment>
      

    </bug>

</bugzilla>