class SocialMedia:
def __init__ ( self ) :
pass
def GetSocialMediaSites_NiceNames( self ) :
return {
'add.this' :'AddThis' ,
'blogger' :'Blogger' ,
'buffer' :'Buffer' ,
'diaspora' :'Diaspora' ,
'digg' :'Digg' ,
'douban' :'Douban' ,
'email' :'EMail' ,
'evernote' :'EverNote' ,
'getpocket' :'Pocket' ,
'facebook' :'FaceBook' ,
'flattr' :'Flattr' ,
'flipboard' :'FlipBoard' ,
'google.bookmarks' :'GoogleBookmarks' ,
'instapaper' :'InstaPaper' ,
'line.me' :'Line.me' ,
'linkedin' :'LinkedIn' ,
'livejournal' :'LiveJournal' ,
'gmail' :'GMail' ,
'hacker.news' :'HackerNews' ,
'ok.ru' :'OK.ru' ,
'pinterest.com' :'Pinterest' ,
'google.plus' :'GooglePlus' ,
'qzone' :'QZone' ,
'reddit' :'Reddit' ,
'renren' :'RenRen' ,
'skype' :'Skype' ,
'sms' :'SMS' ,
'stumbleupon' :'StumbleUpon' ,
'surfingbird.ru' :'SurfingBird.ru' ,
'telegram.me' :'Telegram.me' ,
'threema' :'Threema' ,
'tumblr' :'Tumblr' ,
'twitter' :'Twitter' ,
'vk' :'VK' ,
'weibo' :'Weibo' ,
'xing' :'Xing' ,
'yahoo' :'Yahoo' ,
}
def GetSocialMediaSites_WithShareLinks_OrderedByPopularity( self ) :
return [
'google.plus' ,
'google.bookmarks' ,
'facebook' ,
'reddit' ,
'twitter' ,
'linkedin' ,
'tumblr' ,
'pinterest' ,
'blogger' ,
'livejournal' ,
'evernote' ,
'add.this' ,
'getpocket' ,
'hacker.news' ,
'stumbleupon' ,
'digg' ,
'buffer' ,
'flipboard' ,
'instapaper' ,
'surfingbird.ru' ,
'flattr' ,
'diaspora' ,
'qzone' ,
'vk' ,
'weibo' ,
'ok.ru' ,
'douban' ,
'xing' ,
'renren' ,
'threema' ,
'sms' ,
'line.me' ,
'skype' ,
'telegram.me' ,
'email' ,
'gmail' ,
'yahoo' ,
]
def GetSocialMediaSites_WithShareLinks_OrderedByAlphabet( self ) :
socialmediasites = self .GetSocialMediaSites_NiceNames ( ) .keys ( )
socialmediasites.sort ( )
return socialmediasites
def GetSocialMediaSiteLinks_WithShareLinks( self , args) :
safeargs = [
'url' ,
'title' ,
'image' ,
'desc' ,
'appid' ,
'redirecturl' ,
'via' ,
'hash_tags' ,
'provider' ,
'language' ,
'user_id' ,
'category' ,
'phone_number' ,
'email_address' ,
'cc_email_address' ,
'bcc_email_address' ,
]
for safearg in safeargs:
if not args.get ( safearg) :
args[ safearg] = ''
text = args[ 'title' ]
if len ( args[ 'desc' ] ) :
text += '%20%3A%20' + args[ 'desc' ]
return {
'add.this' :'http://w...content-available-to-author-only...s.com/bookmark.php?url=' + args[ 'url' ] ,
'blogger' :'https://w...content-available-to-author-only...r.com/blog-this.g?u=' + args[ 'url' ] + '&n=' + args[ 'title' ] + '&t=' + args[ 'desc' ] ,
'buffer' :'https://b...content-available-to-author-only...r.com/add?text=' + text + '&url=' + args[ 'url' ] ,
'diaspora' :'https://s...content-available-to-author-only...n.org/?title=' + args[ 'title' ] + '&url=' + args[ 'url' ] ,
'digg' :'http://d...content-available-to-author-only...g.com/submit?url=' + args[ 'url' ] + '&title=' + text,
'douban' :'http://w...content-available-to-author-only...n.com/recommend/?url=' + args[ 'url' ] + '&title=' + text,
'email' :'mailto:' + args[ 'email_address' ] + '?subject=' + args[ 'title' ] + '&body=' + args[ 'desc' ] ,
'evernote' :'http://w...content-available-to-author-only...e.com/clip.action?url=' + args[ 'url' ] + '&title=' + text,
'getpocket' :'https://g...content-available-to-author-only...t.com/edit?url=' + args[ 'url' ] ,
'facebook' :'http://w...content-available-to-author-only...k.com/sharer.php?u=' + args[ 'url' ] ,
'flattr' :'https://f...content-available-to-author-only...r.com/submit/auto?user_id=' + args[ 'user_id' ] + '&url=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&description=' + text + '&language=' + args[ 'language' ] + '&tags=' + args[ 'hash_tags' ] + '&hidden=HIDDEN&category=' + args[ 'category' ] ,
'flipboard' :'https://s...content-available-to-author-only...d.com/bookmarklet/popout?v=2&title=' + text + '&url=' + args[ 'url' ] ,
'gmail' :'https://mail.google.com/mail/?view=cm&to=' + args[ 'email_address' ] + '&su=' + args[ 'title' ] + '&body=' + args[ 'url' ] + '&bcc=' + args[ 'bcc_email_address' ] + '&cc=' + args[ 'cc_email_address' ] ,
'google.bookmarks' :'https://www.google.com/bookmarks/mark?op=edit&bkmk=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&annotation=' + text + '&labels=' + args[ 'hash_tags' ] + '' ,
'instapaper' :'http://w...content-available-to-author-only...r.com/edit?url=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&description=' + args[ 'desc' ] ,
'line.me' :'https://l...content-available-to-author-only...e.me/share/ui?url=' + args[ 'url' ] + '&text=' + text,
'linkedin' :'https://w...content-available-to-author-only...n.com/shareArticle?mini=true&url=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&summary=' + text + '&source=' + args[ 'provider' ] ,
'livejournal' :'http://w...content-available-to-author-only...l.com/update.bml?subject=' + text + '&event=' + args[ 'url' ] ,
'hacker.news' :'https://n...content-available-to-author-only...r.com/submitlink?u=' + args[ 'url' ] + '&t=' + args[ 'title' ] ,
'ok.ru' :'https://c...content-available-to-author-only...k.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl=' + args[ 'url' ] ,
'pinterest' :'http://p...content-available-to-author-only...t.com/pin/create/button/?url=' + args[ 'url' ] ,
'google.plus' :'https://plus.google.com/share?url=' + args[ 'url' ] + '&text=' + text,
'qzone' :'http://s...content-available-to-author-only...q.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + args[ 'url' ] ,
'reddit' :'https://r...content-available-to-author-only...t.com/submit?url=' + args[ 'url' ] + '&title=' + args[ 'title' ] ,
'renren' :'http://w...content-available-to-author-only...n.com/dialog/share?resourceUrl=' + args[ 'url' ] + '&srcUrl=' + args[ 'url' ] + '&title=' + text + '&description=' + args[ 'desc' ] ,
'skype' :'https://w...content-available-to-author-only...e.com/share?url=' + args[ 'url' ] + '&text=' + text,
'sms' :'sms:' + args[ 'phone_number' ] + '?body=' + text,
'stumbleupon' :'http://w...content-available-to-author-only...n.com/submit?url=' + args[ 'url' ] + '&title=' + text,
'surfingbird.ru' :'http://s...content-available-to-author-only...d.ru/share?url=' + args[ 'url' ] + '&description=' + args[ 'desc' ] + '&screenshot=' + args[ 'image' ] + '&title=' + args[ 'title' ] ,
'telegram.me' :'https://content-available-to-author-only.me/share/url?url=' + args[ 'url' ] + '&text=' + text + '&to=' + args[ 'phone_number' ] ,
'threema' :'threema://compose?text=' + text + '&id=' + args[ 'user_id' ] ,
'tumblr' :'https://w...content-available-to-author-only...r.com/widgets/share/tool?canonicalUrl=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&caption=' + args[ 'desc' ] + '&tags=' + args[ 'hash_tags' ] ,
'twitter' :'https://t...content-available-to-author-only...r.com/intent/tweet?url=' + args[ 'url' ] + '&text=' + text + '&via=' + args[ 'via' ] + '&hashtags=' + args[ 'hash_tags' ] ,
'vk' :'http://content-available-to-author-only.com/share.php?url=' + args[ 'url' ] + '&title=' + args[ 'title' ] + '&comment=' + args[ 'desc' ] ,
'weibo' :'http://s...content-available-to-author-only...o.com/share/share.php?url=' + args[ 'url' ] + '&appkey=&title=' + args[ 'title' ] + '&pic=&ralateUid=' ,
'xing' :'https://w...content-available-to-author-only...g.com/app/user?op=share&url=' + args[ 'url' ] ,
'yahoo' :'http://c...content-available-to-author-only...o.com/?to=' + args[ 'email_address' ] + '&subject=' + args[ 'title' ] + '&body=' + text,
}
sm = SocialMedia( )
#socialmediasites = sm.GetSocialMediaSites_WithShareLinks_OrderedByAlphabet()
socialmediasites = sm.GetSocialMediaSites_WithShareLinks_OrderedByPopularity ( )
socialmediaurls = sm.GetSocialMediaSiteLinks_WithShareLinks ( {
'url' :'http://w...content-available-to-author-only...t.com/' ,
'title' :'EarthFluent' ,
} )
#print(socialmediaurls['add.this'])
#print(socialmediaurls.keys())
for socialmediasite in socialmediasites:
print ( socialmediasite + " : " + socialmediaurls[ socialmediasite] )
pass
Y2xhc3MgU29jaWFsTWVkaWE6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgcGFzcwogICAgCiAgICBkZWYgR2V0U29jaWFsTWVkaWFTaXRlc19OaWNlTmFtZXMoc2VsZik6CiAgICAgICAgcmV0dXJuIHsKCQkJJ2FkZC50aGlzJzonQWRkVGhpcycsCgkJCSdibG9nZ2VyJzonQmxvZ2dlcicsCgkJCSdidWZmZXInOidCdWZmZXInLAoJCQknZGlhc3BvcmEnOidEaWFzcG9yYScsCgkJCSdkaWdnJzonRGlnZycsCgkJCSdkb3ViYW4nOidEb3ViYW4nLAoJCQknZW1haWwnOidFTWFpbCcsCgkJCSdldmVybm90ZSc6J0V2ZXJOb3RlJywKCQkJJ2dldHBvY2tldCc6J1BvY2tldCcsCgkJCSdmYWNlYm9vayc6J0ZhY2VCb29rJywKCQkJJ2ZsYXR0cic6J0ZsYXR0cicsCgkJCSdmbGlwYm9hcmQnOidGbGlwQm9hcmQnLAoJCQknZ29vZ2xlLmJvb2ttYXJrcyc6J0dvb2dsZUJvb2ttYXJrcycsCgkJCSdpbnN0YXBhcGVyJzonSW5zdGFQYXBlcicsCgkJCSdsaW5lLm1lJzonTGluZS5tZScsCgkJCSdsaW5rZWRpbic6J0xpbmtlZEluJywKCQkJJ2xpdmVqb3VybmFsJzonTGl2ZUpvdXJuYWwnLAoJCQknZ21haWwnOidHTWFpbCcsCgkJCSdoYWNrZXIubmV3cyc6J0hhY2tlck5ld3MnLAoJCQknb2sucnUnOidPSy5ydScsCgkJCSdwaW50ZXJlc3QuY29tJzonUGludGVyZXN0JywKCQkJJ2dvb2dsZS5wbHVzJzonR29vZ2xlUGx1cycsCgkJCSdxem9uZSc6J1Fab25lJywKCQkJJ3JlZGRpdCc6J1JlZGRpdCcsCgkJCSdyZW5yZW4nOidSZW5SZW4nLAoJCQknc2t5cGUnOidTa3lwZScsCgkJCSdzbXMnOidTTVMnLAoJCQknc3R1bWJsZXVwb24nOidTdHVtYmxlVXBvbicsCgkJCSdzdXJmaW5nYmlyZC5ydSc6J1N1cmZpbmdCaXJkLnJ1JywKCQkJJ3RlbGVncmFtLm1lJzonVGVsZWdyYW0ubWUnLAoJCQkndGhyZWVtYSc6J1RocmVlbWEnLAoJCQkndHVtYmxyJzonVHVtYmxyJywKCQkJJ3R3aXR0ZXInOidUd2l0dGVyJywKCQkJJ3ZrJzonVksnLAoJCQknd2VpYm8nOidXZWlibycsCgkJCSd4aW5nJzonWGluZycsCgkJCSd5YWhvbyc6J1lhaG9vJywKICAgICAgICB9CgogICAgZGVmIEdldFNvY2lhbE1lZGlhU2l0ZXNfV2l0aFNoYXJlTGlua3NfT3JkZXJlZEJ5UG9wdWxhcml0eShzZWxmKToKICAgICAgICByZXR1cm4gWwoJCQknZ29vZ2xlLnBsdXMnLAoJCQknZ29vZ2xlLmJvb2ttYXJrcycsCgkJCSdmYWNlYm9vaycsCgkJCSdyZWRkaXQnLAoJCQkndHdpdHRlcicsCgkJCSdsaW5rZWRpbicsCgkJCSd0dW1ibHInLAoJCQkncGludGVyZXN0JywKCQkJJ2Jsb2dnZXInLAoJCQknbGl2ZWpvdXJuYWwnLAoJCQknZXZlcm5vdGUnLAoJCQknYWRkLnRoaXMnLAoJCQknZ2V0cG9ja2V0JywKCQkJJ2hhY2tlci5uZXdzJywKCQkJJ3N0dW1ibGV1cG9uJywKCQkJJ2RpZ2cnLAoJCQknYnVmZmVyJywKCQkJJ2ZsaXBib2FyZCcsCgkJCSdpbnN0YXBhcGVyJywKCQkJJ3N1cmZpbmdiaXJkLnJ1JywKCQkJJ2ZsYXR0cicsCgkJCSdkaWFzcG9yYScsCgkJCSdxem9uZScsCgkJCSd2aycsCgkJCSd3ZWlibycsCgkJCSdvay5ydScsCgkJCSdkb3ViYW4nLAoJCQkneGluZycsCgkJCSdyZW5yZW4nLAoJCQkndGhyZWVtYScsCgkJCSdzbXMnLAoJCQknbGluZS5tZScsCgkJCSdza3lwZScsCgkJCSd0ZWxlZ3JhbS5tZScsCgkJCSdlbWFpbCcsCgkJCSdnbWFpbCcsCgkJCSd5YWhvbycsCgkJXQoJCiAgICBkZWYgR2V0U29jaWFsTWVkaWFTaXRlc19XaXRoU2hhcmVMaW5rc19PcmRlcmVkQnlBbHBoYWJldChzZWxmKToKICAgICAgICBzb2NpYWxtZWRpYXNpdGVzID0gc2VsZi5HZXRTb2NpYWxNZWRpYVNpdGVzX05pY2VOYW1lcygpLmtleXMoKQogICAgICAgIHNvY2lhbG1lZGlhc2l0ZXMuc29ydCgpCiAgICAgICAgcmV0dXJuIHNvY2lhbG1lZGlhc2l0ZXMKICAgIAogICAgZGVmIEdldFNvY2lhbE1lZGlhU2l0ZUxpbmtzX1dpdGhTaGFyZUxpbmtzKHNlbGYsIGFyZ3MpOgogICAgICAgIHNhZmVhcmdzID0gWwogICAgICAgICAgICAndXJsJywKICAgICAgICAgICAgJ3RpdGxlJywKICAgICAgICAgICAgJ2ltYWdlJywKICAgICAgICAgICAgJ2Rlc2MnLAogICAgICAgICAgICAnYXBwaWQnLAogICAgICAgICAgICAncmVkaXJlY3R1cmwnLAogICAgICAgICAgICAndmlhJywKICAgICAgICAgICAgJ2hhc2hfdGFncycsCiAgICAgICAgICAgICdwcm92aWRlcicsCiAgICAgICAgICAgICdsYW5ndWFnZScsCiAgICAgICAgICAgICd1c2VyX2lkJywKICAgICAgICAgICAgJ2NhdGVnb3J5JywKICAgICAgICAgICAgJ3Bob25lX251bWJlcicsCiAgICAgICAgICAgICdlbWFpbF9hZGRyZXNzJywKICAgICAgICAgICAgJ2NjX2VtYWlsX2FkZHJlc3MnLAogICAgICAgICAgICAnYmNjX2VtYWlsX2FkZHJlc3MnLAogICAgICAgIF0KICAgICAgICAKICAgICAgICBmb3Igc2FmZWFyZyBpbiBzYWZlYXJnczoKICAgICAgICAgICAgaWYgbm90IGFyZ3MuZ2V0KHNhZmVhcmcpOgogICAgICAgICAgICAgICAgYXJnc1tzYWZlYXJnXSA9ICcnCiAgICAgICAgCiAgICAgICAgdGV4dCA9IGFyZ3NbJ3RpdGxlJ10KICAgICAgICAKICAgICAgICBpZiBsZW4oYXJnc1snZGVzYyddKToKICAgICAgICAgICAgdGV4dCArPSAnJTIwJTNBJTIwJyArIGFyZ3NbJ2Rlc2MnXQoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAnYWRkLnRoaXMnOidodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucy5jb20vYm9va21hcmsucGhwP3VybD0nICsgYXJnc1sndXJsJ10sCiAgICAgICAgICAgICdibG9nZ2VyJzonaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9ibG9nLXRoaXMuZz91PScgKyBhcmdzWyd1cmwnXSArICcmbj0nICsgYXJnc1sndGl0bGUnXSArICcmdD0nICsgYXJnc1snZGVzYyddLAogICAgICAgICAgICAnYnVmZmVyJzonaHR0cHM6Ly9iLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9hZGQ/dGV4dD0nICsgdGV4dCArICcmdXJsPScgKyBhcmdzWyd1cmwnXSwKICAgICAgICAgICAgJ2RpYXNwb3JhJzonaHR0cHM6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLm9yZy8/dGl0bGU9JyArIGFyZ3NbJ3RpdGxlJ10gKyAnJnVybD0nICsgYXJnc1sndXJsJ10sCiAgICAgICAgICAgICdkaWdnJzonaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmcuY29tL3N1Ym1pdD91cmw9JyArIGFyZ3NbJ3VybCddICsgJyZ0aXRsZT0nICsgdGV4dCwKICAgICAgICAgICAgJ2RvdWJhbic6J2h0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLmNvbS9yZWNvbW1lbmQvP3VybD0nICsgYXJnc1sndXJsJ10gKyAnJnRpdGxlPScgKyB0ZXh0LAogICAgICAgICAgICAnZW1haWwnOidtYWlsdG86JyArIGFyZ3NbJ2VtYWlsX2FkZHJlc3MnXSArICc/c3ViamVjdD0nICsgYXJnc1sndGl0bGUnXSArICcmYm9keT0nICsgYXJnc1snZGVzYyddLAogICAgICAgICAgICAnZXZlcm5vdGUnOidodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vY2xpcC5hY3Rpb24/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIHRleHQsCiAgICAgICAgICAgICdnZXRwb2NrZXQnOidodHRwczovL2cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuY29tL2VkaXQ/dXJsPScgKyBhcmdzWyd1cmwnXSwKICAgICAgICAgICAgJ2ZhY2Vib29rJzonaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmsuY29tL3NoYXJlci5waHA/dT0nICsgYXJnc1sndXJsJ10sCiAgICAgICAgICAgICdmbGF0dHInOidodHRwczovL2YuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIuY29tL3N1Ym1pdC9hdXRvP3VzZXJfaWQ9JyArIGFyZ3NbJ3VzZXJfaWQnXSArICcmdXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIGFyZ3NbJ3RpdGxlJ10gKyAnJmRlc2NyaXB0aW9uPScgKyB0ZXh0ICsgJyZsYW5ndWFnZT0nICsgYXJnc1snbGFuZ3VhZ2UnXSArICcmdGFncz0nICsgYXJnc1snaGFzaF90YWdzJ10gKyAnJmhpZGRlbj1ISURERU4mY2F0ZWdvcnk9JyArIGFyZ3NbJ2NhdGVnb3J5J10sCiAgICAgICAgICAgICdmbGlwYm9hcmQnOidodHRwczovL3MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmQuY29tL2Jvb2ttYXJrbGV0L3BvcG91dD92PTImdGl0bGU9JyArIHRleHQgKyAnJnVybD0nICsgYXJnc1sndXJsJ10sIAogICAgICAgICAgICAnZ21haWwnOidodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsLz92aWV3PWNtJnRvPScgKyBhcmdzWydlbWFpbF9hZGRyZXNzJ10gKyAnJnN1PScgKyBhcmdzWyd0aXRsZSddICsgJyZib2R5PScgKyBhcmdzWyd1cmwnXSArICcmYmNjPScgKyBhcmdzWydiY2NfZW1haWxfYWRkcmVzcyddICsgJyZjYz0nICsgYXJnc1snY2NfZW1haWxfYWRkcmVzcyddLAogICAgICAgICAgICAnZ29vZ2xlLmJvb2ttYXJrcyc6J2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYm9va21hcmtzL21hcms/b3A9ZWRpdCZia21rPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIGFyZ3NbJ3RpdGxlJ10gKyAnJmFubm90YXRpb249JyArIHRleHQgKyAnJmxhYmVscz0nICsgYXJnc1snaGFzaF90YWdzJ10gKyAnJywKICAgICAgICAgICAgJ2luc3RhcGFwZXInOidodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vZWRpdD91cmw9JyArIGFyZ3NbJ3VybCddICsgJyZ0aXRsZT0nICsgYXJnc1sndGl0bGUnXSArICcmZGVzY3JpcHRpb249JyArIGFyZ3NbJ2Rlc2MnXSwKICAgICAgICAgICAgJ2xpbmUubWUnOidodHRwczovL2wuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUubWUvc2hhcmUvdWk/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGV4dD0nICsgdGV4dCwKICAgICAgICAgICAgJ2xpbmtlZGluJzonaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLmNvbS9zaGFyZUFydGljbGU/bWluaT10cnVlJnVybD0nICsgYXJnc1sndXJsJ10gKyAnJnRpdGxlPScgKyBhcmdzWyd0aXRsZSddICsgJyZzdW1tYXJ5PScgKyB0ZXh0ICsgJyZzb3VyY2U9JyArIGFyZ3NbJ3Byb3ZpZGVyJ10sCiAgICAgICAgICAgICdsaXZlam91cm5hbCc6J2h0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5sLmNvbS91cGRhdGUuYm1sP3N1YmplY3Q9JyArIHRleHQgKyAnJmV2ZW50PScgKyBhcmdzWyd1cmwnXSwKICAgICAgICAgICAgJ2hhY2tlci5uZXdzJzonaHR0cHM6Ly9uLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9zdWJtaXRsaW5rP3U9JyArIGFyZ3NbJ3VybCddICsgJyZ0PScgKyBhcmdzWyd0aXRsZSddLAogICAgICAgICAgICAnb2sucnUnOidodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmsucnUvZGs/c3QuY21kPVdpZGdldFNoYXJlUHJldmlldyZzdC5zaGFyZVVybD0nICsgYXJnc1sndXJsJ10sCiAgICAgICAgICAgICdwaW50ZXJlc3QnOidodHRwOi8vcC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udC5jb20vcGluL2NyZWF0ZS9idXR0b24vP3VybD0nICsgYXJnc1sndXJsJ10gLAogICAgICAgICAgICAnZ29vZ2xlLnBsdXMnOidodHRwczovL3BsdXMuZ29vZ2xlLmNvbS9zaGFyZT91cmw9JyArIGFyZ3NbJ3VybCddICsgJyZ0ZXh0PScgKyB0ZXh0LAogICAgICAgICAgICAncXpvbmUnOidodHRwOi8vcy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucS5jb20vY2dpLWJpbi9xenNoYXJlL2NnaV9xenNoYXJlX29uZWtleT91cmw9JyArIGFyZ3NbJ3VybCddLAogICAgICAgICAgICAncmVkZGl0JzonaHR0cHM6Ly9yLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmNvbS9zdWJtaXQ/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIGFyZ3NbJ3RpdGxlJ10sCiAgICAgICAgICAgICdyZW5yZW4nOidodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubi5jb20vZGlhbG9nL3NoYXJlP3Jlc291cmNlVXJsPScgKyBhcmdzWyd1cmwnXSArICcmc3JjVXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIHRleHQgKyAnJmRlc2NyaXB0aW9uPScgKyBhcmdzWydkZXNjJ10sCiAgICAgICAgICAgICdza3lwZSc6J2h0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vc2hhcmU/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGV4dD0nICsgdGV4dCwKICAgICAgICAgICAgJ3Ntcyc6J3NtczonICsgYXJnc1sncGhvbmVfbnVtYmVyJ10gKyAnP2JvZHk9JyArIHRleHQsCiAgICAgICAgICAgICdzdHVtYmxldXBvbic6J2h0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLmNvbS9zdWJtaXQ/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIHRleHQsCiAgICAgICAgICAgICdzdXJmaW5nYmlyZC5ydSc6J2h0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5kLnJ1L3NoYXJlP3VybD0nICsgYXJnc1sndXJsJ10gKyAnJmRlc2NyaXB0aW9uPScgKyBhcmdzWydkZXNjJ10gKyAnJnNjcmVlbnNob3Q9JyArIGFyZ3NbJ2ltYWdlJ10gKyAnJnRpdGxlPScgKyBhcmdzWyd0aXRsZSddLAogICAgICAgICAgICAndGVsZWdyYW0ubWUnOidodHRwczovL2NvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Lm1lL3NoYXJlL3VybD91cmw9JyArIGFyZ3NbJ3VybCddICsgJyZ0ZXh0PScgKyB0ZXh0ICsgJyZ0bz0nICsgYXJnc1sncGhvbmVfbnVtYmVyJ10sCiAgICAgICAgICAgICd0aHJlZW1hJzondGhyZWVtYTovL2NvbXBvc2U/dGV4dD0nICsgdGV4dCArICcmaWQ9JyArIGFyZ3NbJ3VzZXJfaWQnXSwKICAgICAgICAgICAgJ3R1bWJscic6J2h0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vd2lkZ2V0cy9zaGFyZS90b29sP2Nhbm9uaWNhbFVybD0nICsgYXJnc1sndXJsJ10gKyAnJnRpdGxlPScgKyBhcmdzWyd0aXRsZSddICsgJyZjYXB0aW9uPScgKyBhcmdzWydkZXNjJ10gKyAnJnRhZ3M9JyArIGFyZ3NbJ2hhc2hfdGFncyddLAogICAgICAgICAgICAndHdpdHRlcic6J2h0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vaW50ZW50L3R3ZWV0P3VybD0nICsgYXJnc1sndXJsJ10gKyAnJnRleHQ9JyArIHRleHQgKyAnJnZpYT0nICsgYXJnc1sndmlhJ10gKyAnJmhhc2h0YWdzPScgKyBhcmdzWydoYXNoX3RhZ3MnXSwKICAgICAgICAgICAgJ3ZrJzonaHR0cDovL2NvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5LmNvbS9zaGFyZS5waHA/dXJsPScgKyBhcmdzWyd1cmwnXSArICcmdGl0bGU9JyArIGFyZ3NbJ3RpdGxlJ10gKyAnJmNvbW1lbnQ9JyArIGFyZ3NbJ2Rlc2MnXSwKICAgICAgICAgICAgJ3dlaWJvJzonaHR0cDovL3MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uY29tL3NoYXJlL3NoYXJlLnBocD91cmw9JyArIGFyZ3NbJ3VybCddICsgJyZhcHBrZXk9JnRpdGxlPScgKyBhcmdzWyd0aXRsZSddICsgJyZwaWM9JnJhbGF0ZVVpZD0nLAogICAgICAgICAgICAneGluZyc6J2h0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZy5jb20vYXBwL3VzZXI/b3A9c2hhcmUmdXJsPScgKyBhcmdzWyd1cmwnXSwKICAgICAgICAgICAgJ3lhaG9vJzonaHR0cDovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uY29tLz90bz0nICsgYXJnc1snZW1haWxfYWRkcmVzcyddICsgJyZzdWJqZWN0PScgKyBhcmdzWyd0aXRsZSddICsgJyZib2R5PScgKyB0ZXh0LAogICAgICAgIH0KCnNtID0gU29jaWFsTWVkaWEoKQojc29jaWFsbWVkaWFzaXRlcyA9IHNtLkdldFNvY2lhbE1lZGlhU2l0ZXNfV2l0aFNoYXJlTGlua3NfT3JkZXJlZEJ5QWxwaGFiZXQoKQpzb2NpYWxtZWRpYXNpdGVzID0gc20uR2V0U29jaWFsTWVkaWFTaXRlc19XaXRoU2hhcmVMaW5rc19PcmRlcmVkQnlQb3B1bGFyaXR5KCkKc29jaWFsbWVkaWF1cmxzID0gc20uR2V0U29jaWFsTWVkaWFTaXRlTGlua3NfV2l0aFNoYXJlTGlua3MoewoJJ3VybCc6J2h0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmNvbS8nLAogICAgJ3RpdGxlJzonRWFydGhGbHVlbnQnLAp9KQojcHJpbnQoc29jaWFsbWVkaWF1cmxzWydhZGQudGhpcyddKQojcHJpbnQoc29jaWFsbWVkaWF1cmxzLmtleXMoKSkKCmZvciBzb2NpYWxtZWRpYXNpdGUgaW4gc29jaWFsbWVkaWFzaXRlczoKICAgIHByaW50KHNvY2lhbG1lZGlhc2l0ZSArICIgOiAiICsgc29jaWFsbWVkaWF1cmxzW3NvY2lhbG1lZGlhc2l0ZV0pCiAgICBwYXNz