From: "Yugui (Yuki Sonoda)" Date: 2008-12-18T18:14:37+09:00 Subject: [ruby-dev:37494] [Feature:trunk] C API reference with Doxygen This is a multi-part message in MIME format. --------------040807090706050808020407 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Yuguiです。 常々、C APIリファレンスをDoxygenで作りたいと思っていました。YARVで呼び出 し事前条件を持つような関数もかなり増えたことですし、そうした情報を書いて おけると解析もしやすくて素敵です。 そこで、添付のような形でDoxygen化を試してみました。むやみに全部の関数に Doxygenコメントを書こうとは思っていませんが、要所要所だけでも書いて知識 を明文化 & 共有したいのですが、どうでしょうか。 採用を検討していただければ幸いです。 == 使い方 * ./configure時にMakefileと一緒にDoxyfileが生成されます * make install-capiとすると/usr/local/share/doc/ruby/html かどこかにAPI リファレンスがインストールされます。 == 書き方 /** * rdoc *-- * doxygen description *++ */ のように、/**で始まるコメントを処理します。(Doxygenの仕様) また、rdocによるRubyレベルAPIのリファレンスと共存するために、rdocの非ド キュメント指定"--" .. "++" で括られた部分をDoxygenに渡すようになっています。 対応するrdocがない関数の場合は /** *-- * description *++ */ と書けます。また、RDoc::Parser::Cがrdocと間違えるようなコンテキストでな ければ単に /** description */ のように書けます。 == 制限 処理にそれなりに時間が掛かります。一般ユーザーには必要ないドキュメントで もありますし、make installではmake install-capiは行わないようにしてあり ます。 また各ファイルのリビジョンを取得するために、subversionまたはgit svnで バージョン管理されていることを前提としています。(tool/file2lastrev.rb) まつもとさんのstgit環境と共存できるかどうかが心配なのですが、stgitとsvn はどういう形で連携なさってますか? -- Yugui http://yugui.jp 私は私をDumpする --------------040807090706050808020407 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="doxygen.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="doxygen.diff" ZGlmZiAtLWdpdCBhL0RveHlmaWxlLmluIGIvRG94eWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhNmMwYgotLS0gL2Rldi9udWxsCisrKyBiL0RveHlm aWxlLmluCkBAIC0wLDAgKzEsMjUxIEBACisjIERveHlmaWxlIDEuNS43CisKKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgUHJvamVjdCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9u cworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE9YWUZJTEVfRU5DT0RJTkcgICAgICA9IFVU Ri04CitQUk9KRUNUX05BTUUgICAgICAgICAgID0gUnVieQorUFJPSkVDVF9OVU1CRVIgICAg ICAgICA9IEBNQUpPUkAuQE1JTk9SQC5AVEVFTllACitPVVRQVVRfRElSRUNUT1JZICAgICAg ID0gZG9jL2NhcGkKK0NSRUFURV9TVUJESVJTICAgICAgICAgPSBOTworT1VUUFVUX0xBTkdV QUdFICAgICAgICA9IEVuZ2xpc2gKK0JSSUVGX01FTUJFUl9ERVNDICAgICAgPSBZRVMKK1JF UEVBVF9CUklFRiAgICAgICAgICAgPSBZRVMKK0FCQlJFVklBVEVfQlJJRUYgICAgICAgPSAK K0FMV0FZU19ERVRBSUxFRF9TRUMgICAgPSBZRVMKK0lOTElORV9JTkhFUklURURfTUVNQiAg PSBOTworRlVMTF9QQVRIX05BTUVTICAgICAgICA9IFlFUworU1RSSVBfRlJPTV9QQVRIICAg ICAgICA9IAorU1RSSVBfRlJPTV9JTkNfUEFUSCAgICA9IAorU0hPUlRfTkFNRVMgICAgICAg ICAgICA9IE5PCitKQVZBRE9DX0FVVE9CUklFRiAgICAgID0gWUVTCitRVF9BVVRPQlJJRUYg ICAgICAgICAgID0gTk8KK01VTFRJTElORV9DUFBfSVNfQlJJRUYgPSBOTworSU5IRVJJVF9E T0NTICAgICAgICAgICA9IFlFUworU0VQQVJBVEVfTUVNQkVSX1BBR0VTICA9IE5PCitUQUJf U0laRSAgICAgICAgICAgICAgID0gOAorQUxJQVNFUyAgICAgICAgICAgICAgICA9IAorT1BU SU1JWkVfT1VUUFVUX0ZPUl9DICA9IFlFUworT1BUSU1JWkVfT1VUUFVUX0pBVkEgICA9IE5P CitPUFRJTUlaRV9GT1JfRk9SVFJBTiAgID0gTk8KK09QVElNSVpFX09VVFBVVF9WSERMICAg PSBOTworQlVJTFRJTl9TVExfU1VQUE9SVCAgICA9IE5PCitDUFBfQ0xJX1NVUFBPUlQgICAg ICAgID0gTk8KK1NJUF9TVVBQT1JUICAgICAgICAgICAgPSBOTworSURMX1BST1BFUlRZX1NV UFBPUlQgICA9IE5PCitESVNUUklCVVRFX0dST1VQX0RPQyAgID0gTk8KK1NVQkdST1VQSU5H ICAgICAgICAgICAgPSBZRVMKK1RZUEVERUZfSElERVNfU1RSVUNUICAgPSBOTworU1lNQk9M X0NBQ0hFX1NJWkUgICAgICA9IDAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQnVpbGQg cmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0VYVFJBQ1RfQUxMICAgICAgICAgICAgPSBZRVMKK0VYVFJBQ1RfUFJJVkFURSAgICAgICAg PSBOTworRVhUUkFDVF9TVEFUSUMgICAgICAgICA9IFlFUworRVhUUkFDVF9MT0NBTF9DTEFT U0VTICA9IFlFUworRVhUUkFDVF9MT0NBTF9NRVRIT0RTICA9IE5PCitFWFRSQUNUX0FOT05f TlNQQUNFUyAgID0gTk8KK0hJREVfVU5ET0NfTUVNQkVSUyAgICAgPSBOTworSElERV9VTkRP Q19DTEFTU0VTICAgICA9IE5PCitISURFX0ZSSUVORF9DT01QT1VORFMgID0gTk8KK0hJREVf SU5fQk9EWV9ET0NTICAgICAgPSBZRVMKK0lOVEVSTkFMX0RPQ1MgICAgICAgICAgPSBOTwor Q0FTRV9TRU5TRV9OQU1FUyAgICAgICA9IE5PCitISURFX1NDT1BFX05BTUVTICAgICAgID0g Tk8KK1NIT1dfSU5DTFVERV9GSUxFUyAgICAgPSBZRVMKK0lOTElORV9JTkZPICAgICAgICAg ICAgPSBZRVMKK1NPUlRfTUVNQkVSX0RPQ1MgICAgICAgPSBZRVMKK1NPUlRfQlJJRUZfRE9D UyAgICAgICAgPSBOTworU09SVF9HUk9VUF9OQU1FUyAgICAgICA9IE5PCitTT1JUX0JZX1ND T1BFX05BTUUgICAgID0gTk8KK0dFTkVSQVRFX1RPRE9MSVNUICAgICAgPSBZRVMKK0dFTkVS QVRFX1RFU1RMSVNUICAgICAgPSBZRVMKK0dFTkVSQVRFX0JVR0xJU1QgICAgICAgPSBZRVMK K0dFTkVSQVRFX0RFUFJFQ0FURURMSVNUPSBZRVMKK0VOQUJMRURfU0VDVElPTlMgICAgICAg PSAKK01BWF9JTklUSUFMSVpFUl9MSU5FUyAgPSAzMAorU0hPV19VU0VEX0ZJTEVTICAgICAg ICA9IFlFUworU0hPV19ESVJFQ1RPUklFUyAgICAgICA9IE5PCitTSE9XX0ZJTEVTICAgICAg ICAgICAgID0gWUVTCitTSE9XX05BTUVTUEFDRVMgICAgICAgID0gWUVTCitGSUxFX1ZFUlNJ T05fRklMVEVSICAgID0gIkBCQVNFUlVCWUAgQHNyY2RpckAvdG9vbC9maWxlMmxhc3RyZXYu cmIiCitMQVlPVVRfRklMRSAgICAgICAgICAgID0gCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdhcm5pbmcgYW5kIHByb2dy ZXNzIG1lc3NhZ2VzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitRVUlFVCAgICAgICAgICAg ICAgICAgID0gTk8KK1dBUk5JTkdTICAgICAgICAgICAgICAgPSBZRVMKK1dBUk5fSUZfVU5E T0NVTUVOVEVEICAgPSBZRVMKK1dBUk5fSUZfRE9DX0VSUk9SICAgICAgPSBZRVMKK1dBUk5f Tk9fUEFSQU1ET0MgICAgICAgPSBOTworV0FSTl9GT1JNQVQgICAgICAgICAgICA9ICIkZmls ZTokbGluZTogJHRleHQiCitXQVJOX0xPR0ZJTEUgICAgICAgICAgID0gCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBp bnB1dCBmaWxlcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSU5QVVQgICAgICAgICAgICAg ICAgICA9IEBzcmNkaXJACitJTlBVVF9FTkNPRElORyAgICAgICAgID0gVVRGLTgKK0ZJTEVf UEFUVEVSTlMgICAgICAgICAgPSAqLmMgKi5oICoueQorUkVDVVJTSVZFICAgICAgICAgICAg ICA9IFlFUworRVhDTFVERSAgICAgICAgICAgICAgICA9IG5ld2xpbmUuYyAKK0VYQ0xVREVf U1lNTElOS1MgICAgICAgPSBOTworRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICouc3JjIGRv YyBidWlsZCB0bXAgdGVzdCB5YXJ2dGVzdCBsaWIgYm9vdHN0cmFwdGVzdCBzcGVjIC5leHQg LmdpdCAuc3ZuCitFWENMVURFX1NZTUJPTFMgICAgICAgID0gCitFWEFNUExFX1BBVEggICAg ICAgICAgID0gCitFWEFNUExFX1BBVFRFUk5TICAgICAgID0gCitFWEFNUExFX1JFQ1VSU0lW RSAgICAgID0gTk8KK0lNQUdFX1BBVEggICAgICAgICAgICAgPSAKK0lOUFVUX0ZJTFRFUiAg ICAgICAgICAgPSAiQEJBU0VSVUJZQCBAc3JjZGlyQC90b29sL3N0cmlwLXJkb2MucmIiCitG SUxURVJfUEFUVEVSTlMgICAgICAgID0gCitGSUxURVJfU09VUkNFX0ZJTEVTICAgID0gWUVT CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxh dGVkIHRvIHNvdXJjZSBicm93c2luZworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU09VUkNF X0JST1dTRVIgICAgICAgICA9IE5PCitJTkxJTkVfU09VUkNFUyAgICAgICAgID0gTk8KK1NU UklQX0NPREVfQ09NTUVOVFMgICAgPSBZRVMKK1JFRkVSRU5DRURfQllfUkVMQVRJT04gPSBO TworUkVGRVJFTkNFU19SRUxBVElPTiAgICA9IE5PCitSRUZFUkVOQ0VTX0xJTktfU09VUkNF ID0gWUVTCitVU0VfSFRBR1MgICAgICAgICAgICAgID0gTk8KK1ZFUkJBVElNX0hFQURFUlMg ICAgICAgPSBZRVMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBv cHRpb25zIHJlbGF0ZWQgdG8gdGhlIGFscGhhYmV0aWNhbCBjbGFzcyBpbmRleAorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ09MU19JTl9BTFBIQV9JTkRFWCAgICA9IDUKK0lHTk9SRV9Q UkVGSVggICAgICAgICAgPSAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJh dGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIEhUTUwgb3V0cHV0CisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitHRU5FUkFURV9IVE1MICAgICAgICAgID0gWUVTCitIVE1MX09VVFBVVCAg ICAgICAgICAgID0gaHRtbAorSFRNTF9GSUxFX0VYVEVOU0lPTiAgICA9IC5odG1sCitIVE1M X0hFQURFUiAgICAgICAgICAgID0gCitIVE1MX0ZPT1RFUiAgICAgICAgICAgID0gCitIVE1M X1NUWUxFU0hFRVQgICAgICAgID0gCitIVE1MX0FMSUdOX01FTUJFUlMgICAgID0gWUVTCitI VE1MX0RZTkFNSUNfU0VDVElPTlMgID0gTk8KK0dFTkVSQVRFX0RPQ1NFVCAgICAgICAgPSBO TworRE9DU0VUX0ZFRUROQU1FICAgICAgICA9ICJEb3h5Z2VuIGdlbmVyYXRlZCBkb2NzIgor RE9DU0VUX0JVTkRMRV9JRCAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKK0dFTkVSQVRF X0hUTUxIRUxQICAgICAgPSBOTworQ0hNX0ZJTEUgICAgICAgICAgICAgICA9IAorSEhDX0xP Q0FUSU9OICAgICAgICAgICA9IAorR0VORVJBVEVfQ0hJICAgICAgICAgICA9IE5PCitDSE1f SU5ERVhfRU5DT0RJTkcgICAgID0gCitCSU5BUllfVE9DICAgICAgICAgICAgID0gTk8KK1RP Q19FWFBBTkQgICAgICAgICAgICAgPSBOTworR0VORVJBVEVfUUhQICAgICAgICAgICA9IE5P CitRQ0hfRklMRSAgICAgICAgICAgICAgID0gCitRSFBfTkFNRVNQQUNFICAgICAgICAgID0g b3JnLmRveHlnZW4uUHJvamVjdAorUUhQX1ZJUlRVQUxfRk9MREVSICAgICA9IGRvYworUUhH X0xPQ0FUSU9OICAgICAgICAgICA9IAorRElTQUJMRV9JTkRFWCAgICAgICAgICA9IE5PCitF TlVNX1ZBTFVFU19QRVJfTElORSAgID0gNAorR0VORVJBVEVfVFJFRVZJRVcgICAgICA9IE5P TkUKK1RSRUVWSUVXX1dJRFRIICAgICAgICAgPSAyNTAKK0ZPUk1VTEFfRk9OVFNJWkUgICAg ICAgPSAxMAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0aW9uIG9wdGlv bnMgcmVsYXRlZCB0byB0aGUgTGFUZVggb3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitHRU5FUkFURV9MQVRFWCAgICAgICAgID0gTk8KK0xBVEVYX09VVFBVVCAgICAgICAgICAg PSBsYXRleAorTEFURVhfQ01EX05BTUUgICAgICAgICA9IGxhdGV4CitNQUtFSU5ERVhfQ01E X05BTUUgICAgID0gbWFrZWluZGV4CitDT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8KK1BB UEVSX1RZUEUgICAgICAgICAgICAgPSBhNHdpZGUKK0VYVFJBX1BBQ0tBR0VTICAgICAgICAg PSAKK0xBVEVYX0hFQURFUiAgICAgICAgICAgPSAKK1BERl9IWVBFUkxJTktTICAgICAgICAg PSBZRVMKK1VTRV9QREZMQVRFWCAgICAgICAgICAgPSBZRVMKK0xBVEVYX0JBVENITU9ERSAg ICAgICAgPSBOTworTEFURVhfSElERV9JTkRJQ0VTICAgICA9IE5PCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBSVEYg b3V0cHV0CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitHRU5FUkFURV9SVEYgICAgICAgICAg ID0gTk8KK1JURl9PVVRQVVQgICAgICAgICAgICAgPSBydGYKK0NPTVBBQ1RfUlRGICAgICAg ICAgICAgPSBOTworUlRGX0hZUEVSTElOS1MgICAgICAgICA9IE5PCitSVEZfU1RZTEVTSEVF VF9GSUxFICAgID0gCitSVEZfRVhURU5TSU9OU19GSUxFICAgID0gCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBtYW4g cGFnZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dFTkVSQVRFX01BTiAgICAg ICAgICAgPSBOTworTUFOX09VVFBVVCAgICAgICAgICAgICA9IG1hbgorTUFOX0VYVEVOU0lP TiAgICAgICAgICA9IC4zCitNQU5fTElOS1MgICAgICAgICAgICAgID0gTk8KKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhl IFhNTCBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dFTkVSQVRFX1hNTCAgICAg ICAgICAgPSBOTworWE1MX09VVFBVVCAgICAgICAgICAgICA9IHhtbAorWE1MX1NDSEVNQSAg ICAgICAgICAgICA9IAorWE1MX0RURCAgICAgICAgICAgICAgICA9IAorWE1MX1BST0dSQU1M SVNUSU5HICAgICA9IFlFUworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBjb25maWd1cmF0 aW9uIG9wdGlvbnMgZm9yIHRoZSBBdXRvR2VuIERlZmluaXRpb25zIG91dHB1dAorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorR0VORVJBVEVfQVVUT0dFTl9ERUYgICA9IE5PCisjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRo ZSBQZXJsIG1vZHVsZSBvdXRwdXQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dFTkVSQVRF X1BFUkxNT0QgICAgICAgPSBOTworUEVSTE1PRF9MQVRFWCAgICAgICAgICA9IE5PCitQRVJM TU9EX1BSRVRUWSAgICAgICAgID0gWUVTCitQRVJMTU9EX01BS0VWQVJfUFJFRklYID0gCisj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVk IHRvIHRoZSBwcmVwcm9jZXNzb3IgICAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VOQUJM RV9QUkVQUk9DRVNTSU5HICAgPSBZRVMKK01BQ1JPX0VYUEFOU0lPTiAgICAgICAgPSBOTwor RVhQQU5EX09OTFlfUFJFREVGICAgICA9IE5PCitTRUFSQ0hfSU5DTFVERVMgICAgICAgID0g WUVTCitJTkNMVURFX1BBVEggICAgICAgICAgID0gCitJTkNMVURFX0ZJTEVfUEFUVEVSTlMg ID0gCitQUkVERUZJTkVEICAgICAgICAgICAgID0gCitFWFBBTkRfQVNfREVGSU5FRCAgICAg ID0gCitTS0lQX0ZVTkNUSU9OX01BQ1JPUyAgID0gWUVTCisjLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisjIENvbmZpZ3VyYXRpb246OmFkZGl0aW9ucyByZWxhdGVkIHRvIGV4dGVybmFsIHJl ZmVyZW5jZXMgICAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RBR0ZJTEVTICAgICAgICAg ICAgICAgPSAKK0dFTkVSQVRFX1RBR0ZJTEUgICAgICAgPSAKK0FMTEVYVEVSTkFMUyAgICAg ICAgICAgPSBOTworRVhURVJOQUxfR1JPVVBTICAgICAgICA9IFlFUworUEVSTF9QQVRIICAg ICAgICAgICAgICA9IC91c3IvYmluL3BlcmwKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg Q29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGRvdCB0b29sICAgCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDTEFTU19ESUFHUkFNUyAgICAgICAgID0gTk8KK01TQ0dF Tl9QQVRIICAgICAgICAgICAgPSAKK0hJREVfVU5ET0NfUkVMQVRJT05TICAgPSBZRVMKK0hB VkVfRE9UICAgICAgICAgICAgICAgPSBOTworRE9UX0ZPTlROQU1FICAgICAgICAgICA9IEZy ZWVTYW5zCitET1RfRk9OVFBBVEggICAgICAgICAgID0gCitDTEFTU19HUkFQSCAgICAgICAg ICAgID0gTk8KK0NPTExBQk9SQVRJT05fR1JBUEggICAgPSBOTworR1JPVVBfR1JBUEhTICAg ICAgICAgICA9IFlFUworVU1MX0xPT0sgICAgICAgICAgICAgICA9IE5PCitURU1QTEFURV9S RUxBVElPTlMgICAgID0gTk8KK0lOQ0xVREVfR1JBUEggICAgICAgICAgPSBZRVMKK0lOQ0xV REVEX0JZX0dSQVBIICAgICAgPSBZRVMKK0NBTExfR1JBUEggICAgICAgICAgICAgPSBOTwor Q0FMTEVSX0dSQVBIICAgICAgICAgICA9IE5PCitHUkFQSElDQUxfSElFUkFSQ0hZICAgID0g Tk8KK0RJUkVDVE9SWV9HUkFQSCAgICAgICAgPSBOTworRE9UX0lNQUdFX0ZPUk1BVCAgICAg ICA9IHBuZworRE9UX1BBVEggICAgICAgICAgICAgICA9IAorRE9URklMRV9ESVJTICAgICAg ICAgICA9IAorRE9UX0dSQVBIX01BWF9OT0RFUyAgICA9IDUwCitNQVhfRE9UX0dSQVBIX0RF UFRIICAgID0gMAorRE9UX1RSQU5TUEFSRU5UICAgICAgICA9IE5PCitET1RfTVVMVElfVEFS R0VUUyAgICAgID0gTk8KK0dFTkVSQVRFX0xFR0VORCAgICAgICAgPSBZRVMKK0RPVF9DTEVB TlVQICAgICAgICAgICAgPSBZRVMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29uZmln dXJhdGlvbjo6YWRkaXRpb25zIHJlbGF0ZWQgdG8gdGhlIHNlYXJjaCBlbmdpbmUgICAKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFQVJDSEVOR0lORSAgICAgICAgICAgPSBOTwpkaWZm IC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAzOWZjNjg2Li5hYjNk OGJmIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMTY0 LDYgKzE2NCw5IEBAIGZha2UucmI6CU1ha2VmaWxlCiAJCScgPiAkQAogCiBNYWtlZmlsZToJ JChzcmNkaXIpL01ha2VmaWxlLmluICQoc3JjZGlyKS9lbmMvTWFrZWZpbGUuaW4KK0RveHlm aWxlOgkkKHNyY2RpcikvRG94eWZpbGUuaW4gY29uZmlnLnN0YXR1cworCU1BS0U9JChNQUtF KSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKKwkKIAogJChNS0ZJTEVTKTogY29uZmlnLnN0 YXR1cwogCQlNQUtFPSQoTUFLRSkgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCmRpZmYgLS1n aXQgYS9jb21tb24ubWsgYi9jb21tb24ubWsKaW5kZXggZTE3MDcwMS4uZmViMDJlNyAxMDA2 NDQKLS0tIGEvY29tbW9uLm1rCisrKyBiL2NvbW1vbi5tawpAQCAtMTM4LDYgKzEzOCw4IEBA IG1pbmlydWJ5JChFWEVFWFQpOiBjb25maWcuc3RhdHVzICQoTk9STUFMTUFJTk9CSikgJChN SU5JT0JKUykgJChDT01NT05PQkpTKSAkKERNCiBHT1JVQlkgPSBnbyQoUlVCWV9JTlNUQUxM X05BTUUpCiBnb2xmOiAkKExJQlJVQlkpICQoR09MRk9CSlMpCiAJJChNQUtFKSAkKE1GTEFH UykgTUFJTk9CSj0iJChHT0xGT0JKUykiIFBST0dSQU09JChHT1JVQlkpJChFWEVFWFQpIHBy b2dyYW0KK2NhcGk6IERveHlmaWxlIFBIT05ZCisJZG94eWdlbgogCiBwcm9ncmFtOiAkKFBS T0dSQU0pCiAKQEAgLTE1OCw3ICsxNjAsNyBAQCBydWJ5LmltcDogJChDT01NT05PQkpTKQog CUAkKE5NKSAtUGdwICQoQ09NTU9OT0JKUykgfCBhd2sgJ0JFR0lOe3ByaW50ICIjISJ9OyAk JDJ+L15bQkRdJCQve3ByaW50ICQkMX0nIHwgc29ydCAtdSAtbyAkQAogCiBpbnN0YWxsOiBp bnN0YWxsLW5vZG9jICQoUkRPQ1RBUkdFVCkKLWluc3RhbGwtYWxsOiBpbnN0YWxsLW5vZG9j IGluc3RhbGwtZG9jCitpbnN0YWxsLWFsbDogaW5zdGFsbC1ub2RvYyBpbnN0YWxsLWRvYyBp bnN0YWxsLWNhcGkKIAogaW5zdGFsbC1ub2RvYzogcHJlLWluc3RhbGwtbm9kb2MgZG8taW5z dGFsbC1ub2RvYyBwb3N0LWluc3RhbGwtbm9kb2MKIHByZS1pbnN0YWxsLW5vZG9jOjogcHJl LWluc3RhbGwtbG9jYWwgcHJlLWluc3RhbGwtZXh0CkBAIC0yMjUsNiArMjI3LDEzIEBAIGRv LWluc3RhbGwtbWFuOiAkKFBSRVApCiBwb3N0LWluc3RhbGwtbWFuOjoKIAlAJChOVUxMQ01E KQogCitpbnN0YWxsLWNhcGk6IGNhcGkgcHJlLWluc3RhbGwtY2FwaSBkby1pbnN0YWxsLWNh cGkgcG9zdC1pbnN0YWxsLWNhcGkKK3ByZS1pbnN0YWxsLWNhcGk6OiBpbnN0YWxsLXByZXJl cQorZG8taW5zdGFsbC1jYXBpOiAkKFBSRVApCisJJChNSU5JUlVCWSkgJChzcmNkaXIpL2lu c3RydWJ5LnJiIC0tbWFrZT0iJChNQUtFKSIgJChJTlNUUlVCWV9BUkdTKSAtLWluc3RhbGw9 Y2FwaQorcG9zdC1pbnN0YWxsLWNhcGk6OgorCUAkKE5VTExDTUQpCisKIHdoYXQtd2hlcmU6 IG5vLWluc3RhbGwKIG5vLWluc3RhbGw6IG5vLWluc3RhbGwtbm9kb2Mgbm8taW5zdGFsbC1k b2MKIHdoYXQtd2hlcmUtYWxsOiBuby1pbnN0YWxsLWFsbApkaWZmIC0tZ2l0IGEvY29uZmln dXJlLmluIGIvY29uZmlndXJlLmluCmluZGV4IDM3YTA2OTQuLmRjOTQxN2YgMTAwNjQ0Ci0t LSBhL2NvbmZpZ3VyZS5pbgorKysgYi9jb25maWd1cmUuaW4KQEAgLTIxMzQsNiArMjEzNCwx MCBAQCBkb25lCiBBQ19TVUJTVChCVUlMVElOX1RSQU5TU1JDUykKIEFDX1NVQlNUKEJVSUxU SU5fVFJBTlNPQkpTKQogCitQQUNLQUdFPSRSVUJZX0lOU1RBTExfTkFNRQorQUNfU1VCU1Qo UEFDS0FHRSkKKworQUNfQ09ORklHX0ZJTEVTKERveHlmaWxlKQogQUNfQ09ORklHX0ZJTEVT KCRGSVJTVE1BS0VGSUxFKQogQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlLCBbewogCXNlZCAn L15NSVNTSU5HL3MvXCRVXC4vLi9nJyBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvaW5zdHJ1Ynku cmIgYi9pbnN0cnVieS5yYgppbmRleCAzYzgzZGMzLi5kMTc5NmZlIDEwMDc1NQotLS0gYS9p bnN0cnVieS5yYgorKysgYi9pbnN0cnVieS5yYgpAQCAtNDUsNyArNDUsNyBAQCBkZWYgcGFy c2VfYXJncyhhcmd2ID0gQVJHVikKICAgICAkbWZsYWdzLmNvbmNhdCh2KQogICBlbmQKICAg b3B0Lm9uKCctaScsICctLWluc3RhbGw9VFlQRScsCi0gICAgICAgICBbOmxvY2FsLCA6Ymlu LCA6ImJpbi1hcmNoIiwgOiJiaW4tY29tbSIsIDpsaWIsIDptYW4sIDpleHQsIDoiZXh0LWFy Y2giLCA6ImV4dC1jb21tIiwgOnJkb2NdKSBkbyB8aW5zfAorICAgICAgICAgWzpsb2NhbCwg OmJpbiwgOiJiaW4tYXJjaCIsIDoiYmluLWNvbW0iLCA6bGliLCA6bWFuLCA6ZXh0LCA6ImV4 dC1hcmNoIiwgOiJleHQtY29tbSIsIDpyZG9jLCA6Y2FwaV0pIGRvIHxpbnN8CiAgICAgJGlu c3RhbGwgPDwgaW5zCiAgIGVuZAogICBvcHQub24oJy0tZGF0YS1tb2RlPU9DVEFMLU1PREUn LCBPcHRpb25QYXJzZXI6Ok9jdGFsSW50ZWdlcikgZG8gfG1vZGV8CkBAIC0yMjEsNiArMjIx LDcgQEAgc2l0ZWFyY2hsaWJkaXIgPSBDT05GSUdbInNpdGVhcmNoZGlyIl0KIHZlbmRvcmxp YmRpciA9IENPTkZJR1sidmVuZG9ybGliZGlyIl0KIHZlbmRvcmFyY2hsaWJkaXIgPSBDT05G SUdbInZlbmRvcmFyY2hkaXIiXQogbWFuZGlyID0gRmlsZS5qb2luKENPTkZJR1sibWFuZGly Il0sICJtYW4iKQorY2FwaWRpciA9IENPTkZJR1siZG9jZGlyIl0KIGNvbmZpZ3VyZV9hcmdz ID0gU2hlbGx3b3Jkcy5zaGVsbHdvcmRzKENPTkZJR1siY29uZmlndXJlX2FyZ3MiXSkKIGVu YWJsZV9zaGFyZWQgPSBDT05GSUdbIkVOQUJMRV9TSEFSRUQiXSA9PSAneWVzJwogZGxsID0g Q09ORklHWyJMSUJSVUJZX1NPIl0KQEAgLTQwMCw2ICs0MDEsMTMgQEAgaW5zdGFsbD8oOmxv Y2FsLCA6Y29tbSwgOm1hbikgZG8KICAgICBlbmQKICAgZW5kCiBlbmQKK2luc3RhbGw/KDps b2NhbCwgOmNvbW0sIDpjYXBpKSBkbworICBwdXRzICJpbnN0YWxsaW5nIGNhcGktZG9jcyIK KworICBtYWtlZGlycyBbY2FwaWRpcl0KKyAgRGlyLmNoZGlyKCJkb2MiKQorICBpbnN0YWxs X3JlY3Vyc2l2ZSAiY2FwaSIsIGNhcGlkaXIsIDptb2RlID0+ICRkYXRhX21vZGUKK2VuZAog CiAkaW5zdGFsbCA8PCA6bG9jYWwgPDwgOmV4dCBpZiAkaW5zdGFsbC5lbXB0eT8KICRpbnN0 YWxsLmVhY2ggZG8gfGluc3R8CmRpZmYgLS1naXQgYS90b29sL2ZpbGUybGFzdHJldi5yYiBi L3Rvb2wvZmlsZTJsYXN0cmV2LnJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmY5OTllYTIKLS0tIC9kZXYvbnVsbAorKysgYi90b29sL2ZpbGUybGFzdHJldi5yYgpA QCAtMCwwICsxLDczIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKK3JlcXVpcmUgJ29wdHBh cnNlJworcmVxdWlyZSAncGF0aG5hbWUnCisKK2RlZiBkZXRlY3RfdmNzKHBhdGgpCisgIHRh cmdldF9wYXRoID0gUGF0aG5hbWUoRmlsZS5leHBhbmRfcGF0aChwYXRoKSkKKworICBwYXRo ID0gdGFyZ2V0X3BhdGgucGFyZW50CisgIGJlZ2luCisgICAgcmV0dXJuIDpzdm4sIHRhcmdl dF9wYXRoLnJlbGF0aXZlX3BhdGhfZnJvbShwYXRoKSBpZiBGaWxlLmRpcmVjdG9yeT8oIiN7 cGF0aH0vLnN2biIpCisgICAgcmV0dXJuIDpnaXQsIHRhcmdldF9wYXRoLnJlbGF0aXZlX3Bh dGhfZnJvbShwYXRoKSBpZiBGaWxlLmRpcmVjdG9yeT8oIiN7cGF0aH0vLmdpdCIpCisgICAg cGF0aCwgb3JpZyA9IHBhdGgucGFyZW50LCBwYXRoCisgIGVuZCB1bnRpbCBwYXRoID09IG9y aWcKKyAgcmFpc2UgImRvZXMgbm90IHNlZW0gdG8gYmUgdW5kZXIgYSB2Y3MiCitlbmQKKwor ZGVmIGdldF9yZXZpc2lvbnMocGF0aCkKKyAgRU5WWydMQU5HJ10gPSBFTlZbJ0xDX0FMTCdd ID0gRU5WWydMQ19NRVNTQUdFUyddID0gJ0MnCisgIHZjcywgcGF0aCA9IGRldGVjdF92Y3Mo cGF0aCkKKworICBpbmZvID0gY2FzZSB2Y3MKKyAgd2hlbiA6c3ZuCisgICAgYHN2biBpbmZv ICN7cGF0aH1gCisgIHdoZW4gOmdpdAorICAgIGBnaXQgc3ZuIGluZm8gI3twYXRofWAKKyAg ZW5kCisKKyAgaWYgaW5mbyA9fiAvXlJldmlzaW9uOiAoXGQrKSQvCisgICAgbGFzdCA9ICQx IAorICBlbHNlCisgICAgcmFpc2UgImxhc3QgcmV2aXNpb24gbm90IGZvdW5kIgorICBlbmQK KyAgaWYgaW5mbyA9fiAvXkxhc3QgQ2hhbmdlZCBSZXY6IChcZCspJC8KKyAgICBjaGFuZ2Vk ID0gJDEKKyAgZWxzZQorICAgIHJhaXNlICJjaGFuZ2VkIHJldmlzaW9uIG5vdCBmb3VuZCIK KyAgZW5kCisKKyAgcmV0dXJuIGxhc3QsIGNoYW5nZWQKK2VuZAorCitkZWYgcmFpc2VfaWZf Y29uZmxpY3QKKyAgcmFpc2UgInlvdSBjYW4gc3BlY2lmeSBvbmx5IG9uZSBvZiAtbCwgLXIg YW5kIC1kIiBpZiAkb3V0cHV0CitlbmQKKworcGFyc2VyID0gT3B0aW9uUGFyc2VyLm5ldyB7 fG9wdHN8CisgIG9wdHMub24oIi1jIiwgIi0tY2hhbmdlZCIsICJjaGFuZ2VkIHJldiIpIGRv CisgICAgcmFpc2VfaWZfY29uZmxpY3QKKyAgICAkb3V0cHV0ID0gOmNoYW5nZWQKKyAgZW5k CisgIG9wdHMub24oIi1yIiwgIi0tcmV2c2lvbi5oIikgZG8KKyAgICByYWlzZV9pZl9jb25m bGljdAorICAgICRvdXRwdXQgPSA6cmV2aXNpb25faAorICBlbmQKKyAgb3B0cy5vbigiLWQi LCAiLS1kb3h5Z2VuIikgZG8KKyAgICByYWlzZV9pZl9jb25mbGljdAorICAgICRvdXRwdXQg PSA6ZG94eWdlbgorICBlbmQKK30KK3BhcnNlci5wYXJzZSEKKworbGFzdCwgY2hhbmdlZCA9 IGdldF9yZXZpc2lvbnMoQVJHVi5zaGlmdCkKK2Nhc2UgJG91dHB1dAord2hlbiA6Y2hhbmdl ZCwgbmlsCisgIHB1dHMgY2hhbmdlZAord2hlbiA6cmV2aXNpb25faAorICBwdXRzICIjZGVm aW5lIFJVQllfUkVWSVNJT04gI3tjaGFuZ2VkfSIKK3doZW4gOmRveHlnZW4KKyAgcHV0cyAi ciN7Y2hhbmdlZH0vciN7bGFzdH0iCitlbHNlCisgIHJhaXNlICJ1bmtub3duIG91dHB1dCBm b3JtYXQgYCN7JG91dHB1dH0nIgorZW5kCmRpZmYgLS1naXQgYS90b29sL3N0cmlwLXJkb2Mu cmIgYi90b29sL3N0cmlwLXJkb2MucmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjA1YWVjYwotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2wvc3RyaXAtcmRvYy5yYgpA QCAtMCwwICsxLDIyIEBACisjIXJ1YnkKKworc291cmNlID0gQVJHRi5yZWFkCitzb3VyY2Ug PSBzb3VyY2UuZ3N1YiglcnsvXCpcKigoPyFcKi8pLis/KVwqL31tKSBkbyB8Y29tbWVudHwg CisgIGNvbW1lbnQgPSAkMQorICBuZXh0ICIvKioje2NvbW1lbnR9Ki8iIHVubGVzcyAvXlxz KlwqXHM/XC1cLVxzKiQvID1+IGNvbW1lbnQKKyAgZG94eWJvZHkgPSBuaWwKKyAgY29tbWVu dC5lYWNoX2xpbmUgZG8gfGxpbmV8CisgICAgaWYgZG94eWJvZHkKKyAgICAgIGlmIC9eXHMq XCpccz9cK1wrXHMqJC8gPX4gbGluZQorICAgICAgICBicmVhaworICAgICAgZW5kCisgICAg ICBkb3h5Ym9keSA8PCBsaW5lCisgICAgZWxzZQorICAgICAgaWYgL15ccypcKlxzPy0tXHMq JC8gPX4gbGluZQorICAgICAgICBkb3h5Ym9keSA9ICJcbiIKKyAgICAgIGVuZAorICAgIGVu ZAorICBlbmQKKyAgIi8qKiN7ZG94eWJvZHl9Ki8iCitlbmQKK3ByaW50IHNvdXJjZQo= --------------040807090706050808020407--