#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
#define SOCIALMEDIASERVICES 37
#define URLSIZE 1024
#define ARGLENGTH 1024
class SocialMedia {
public:
SocialMedia();
char url[ARGLENGTH] = "";
char title[ARGLENGTH] = "";
char desc[ARGLENGTH] = "";
char image[ARGLENGTH] = "";
char app_id[ARGLENGTH] = "";
char redirect_url[ARGLENGTH] = "";
char via[ARGLENGTH] = "";
char hash_tags[ARGLENGTH] = "";
char provider[ARGLENGTH] = "";
char language[ARGLENGTH] = "";
char user_id[ARGLENGTH] = "";
char category[ARGLENGTH] = "";
char phone_number[ARGLENGTH] = "";
char email_address[ARGLENGTH] = "";
char cc_email_address[ARGLENGTH] = "";
char bcc_email_address[ARGLENGTH] = "";
char urls[SOCIALMEDIASERVICES][URLSIZE];
char urlsOrderedByPopularity[SOCIALMEDIASERVICES][URLSIZE] = {
"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",
};
char urlsOrderedByName[SOCIALMEDIASERVICES][URLSIZE] = {};
};
SocialMedia::SocialMedia() {
sprintf(url, "%s", "http%3A%2F%2Fwww.earthfluent.com%2F");
sprintf(title, "%s", "EarthFluent");
sprintf(desc, "%s", "Want%20to%20learn%20another%20language%3F%20%20Learn%20Spanish%2C%20French%2C%20Italian%2C%20German%2C%20Japanese%2C%20Chinese%2C%20Hindi%2C%20Indonesian%2C%20Dutch%2C%20Polish%2C%20Portuguese%2C%20or%20Russian%21");
char text[ARGLENGTH];
if(strlen(desc)) {
sprintf(text, "%s%s%s", title, "%20%3A%20", desc);
} else {
sprintf(text, "%s", title);
}
std::vector<string> stringarray (urlsOrderedByPopularity, urlsOrderedByPopularity + SOCIALMEDIASERVICES);
std::sort(stringarray.begin(), stringarray.end());
for(int i = 0; i < SOCIALMEDIASERVICES; i++) {
strcpy(urlsOrderedByName[i], stringarray[i].c_str());
}
char addthis[URLSIZE];
sprintf(addthis, "%s%s", "http://w...content-available-to-author-only...s.com/bookmark.php?url=", url);
char blogger[URLSIZE];
sprintf(blogger, "%s%s%s%s%s%s", "https://w...content-available-to-author-only...r.com/blog-this.g?u=", url, "&n=", title, "&t=", desc);
char buffer[URLSIZE];
sprintf(buffer, "%s%s%s%s", "https://b...content-available-to-author-only...r.com/add?text=", text, "&url=", url);
char diaspora[URLSIZE];
sprintf(diaspora, "%s%s%s%s", "https://s...content-available-to-author-only...n.org/?title=", title, "&url=", url);
char digg[URLSIZE];
sprintf(digg, "%s%s%s%s", "http://d...content-available-to-author-only...g.com/submit?url=", url, "&title=", text);
char douban[URLSIZE];
sprintf(douban, "%s%s%s%s", "http://w...content-available-to-author-only...n.com/recommend/?url=", url, "&title=", title);
char email[URLSIZE];
sprintf(email, "%s%s%s%s%s%s", "mailto:", email_address, "?subject=", title, "&body=", desc);
char evernote[URLSIZE];
sprintf(evernote, "%s%s%s%s", "http://w...content-available-to-author-only...e.com/clip.action?url=", url, "&title=", title);
char getpocket[URLSIZE];
sprintf(getpocket, "%s%s", "https://g...content-available-to-author-only...t.com/edit?url=", url);
char facebook[URLSIZE];
sprintf(facebook, "%s%s", "http://w...content-available-to-author-only...k.com/sharer.php?u=", url);
char flattr[URLSIZE];
sprintf(flattr, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s", "https://f...content-available-to-author-only...r.com/submit/auto?user_id=", user_id, "&url=", url, "&title=", title, "&description=", text, "&language=", language, "&tags=", hash_tags, "&hidden=HIDDEN&category=", category);
char flipboard[URLSIZE];
sprintf(flipboard, "%s%s%s%s", "https://s...content-available-to-author-only...d.com/bookmarklet/popout?v=2&title=", text, "&url=", url);
char gmail[URLSIZE];
sprintf(gmail, "%s%s%s%s%s%s%s%s%s%s", "https://mail.google.com/mail/?view=cm&to=", email_address, "&su=", title, "&body=", url, "&bcc=", bcc_email_address, "&cc=", cc_email_address);
char googlebookmarks[URLSIZE];
sprintf(googlebookmarks, "%s%s%s%s%s%s%s%s", "https://www.google.com/bookmarks/mark?op=edit&bkmk=", url, "&title=", title, "&annotation=", text, "&labels=", hash_tags);
char instapaper[URLSIZE];
sprintf(instapaper, "%s%s%s%s%s%s", "http://w...content-available-to-author-only...r.com/edit?url=", url, "&title=", title, "&description=", desc);
char lineme[URLSIZE];
sprintf(lineme, "%s%s%s%s", "https://l...content-available-to-author-only...e.me/share/ui?url=", url, "&text=", text);
char linkedin[URLSIZE];
sprintf(linkedin, "%s%s%s%s%s%s%s%s", "https://w...content-available-to-author-only...n.com/shareArticle?mini=true&url=", url, "&title=", title, "&summary=", text, "&source=", provider);
char livejournal[URLSIZE];
sprintf(livejournal, "%s%s%s%s", "http://w...content-available-to-author-only...l.com/update.bml?subject=", text, "&event=", url);
char hackernews[URLSIZE];
sprintf(hackernews, "%s%s%s%s", "https://n...content-available-to-author-only...r.com/submitlink?u=", url, "&t=", title);
char okru[URLSIZE];
sprintf(okru, "%s%s", "https://c...content-available-to-author-only...k.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl=", url);
char pinterest[URLSIZE];
sprintf(pinterest, "%s%s", "http://p...content-available-to-author-only...t.com/pin/create/button/?url=", url);
char googleplus[URLSIZE];
sprintf(googleplus, "%s%s%s%s%s%s", "https://plus.google.com/share?url=", url, "&text=", text, "&hl=", language);
char qzone[URLSIZE];
sprintf(qzone, "%s%s", "http://s...content-available-to-author-only...q.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=", url);
char reddit[URLSIZE];
sprintf(reddit, "%s%s%s%s", "https://r...content-available-to-author-only...t.com/submit?url=", url, "&title=", title);
char renren[URLSIZE];
sprintf(renren, "%s%s%s%s%s%s%s%s", "http://w...content-available-to-author-only...n.com/dialog/share?resourceUrl=", url, "&srcUrl=", url, "&title=", title, "&description=", desc);
char skype[URLSIZE];
sprintf(skype, "%s%s%s%s", "https://w...content-available-to-author-only...e.com/share?url=", url, "&text=", text);
char sms[URLSIZE];
sprintf(sms, "%s%s%s%s", "sms:", phone_number, "?body=", text);
char stumbleupon[URLSIZE];
sprintf(stumbleupon, "%s%s%s%s", "http://w...content-available-to-author-only...n.com/submit?url=", url, "&title=", text);
char surfingbird[URLSIZE];
sprintf(surfingbird, "%s%s%s%s%s%s%s%s", "http://s...content-available-to-author-only...d.ru/share?url=", url, "&description=", desc, "&screenshot=", image, "&title=", title);
char telegramme[URLSIZE];
sprintf(telegramme, "%s%s%s%s%s%s", "https://content-available-to-author-only.me/share/url?url=", url, "&text=", text, "&to=", phone_number);
char threema[URLSIZE];
sprintf(threema, "%s%s%s%s", "threema://compose?text=", text, "&id=", user_id);
char tumblr[URLSIZE];
sprintf(tumblr, "%s%s%s%s%s%s%s%s", "https://w...content-available-to-author-only...r.com/widgets/share/tool?canonicalUrl=", url, "&title=", title, "&caption=", desc, "&tags=", hash_tags);
char twitter[URLSIZE];
sprintf(twitter, "%s%s%s%s%s%s%s%s", "https://t...content-available-to-author-only...r.com/intent/tweet?url=", url, "&text=", text, "&via=", via, "&hashtags=", hash_tags);
char vk[URLSIZE];
sprintf(vk, "%s%s%s%s%s%s", "http://content-available-to-author-only.com/share.php?url=", url, "&title=", title, "&comments=", desc);
char weibo[URLSIZE];
sprintf(weibo, "%s%s%s%s%s", "http://s...content-available-to-author-only...o.com/share/share.php?url=", url, "&appkey=&title=", title, "&pic=&ralateUid=");
char xing[URLSIZE];
sprintf(xing, "%s%s", "https://w...content-available-to-author-only...g.com/app/user?op=share&url=", url);
char yahoo[URLSIZE];
sprintf(yahoo, "%s%s%s%s%s%s", "http://c...content-available-to-author-only...o.com/?to=", email_address, "&subject=", title, "&body=", text);
int i = 0;
// NOTE : This ordering must identically match urlsOrderedByPopularity.
strcpy(urls[i++], googleplus);
strcpy(urls[i++], googlebookmarks);
strcpy(urls[i++], facebook);
strcpy(urls[i++], reddit);
strcpy(urls[i++], twitter);
strcpy(urls[i++], linkedin);
strcpy(urls[i++], tumblr);
strcpy(urls[i++], pinterest);
strcpy(urls[i++], blogger);
strcpy(urls[i++], livejournal);
strcpy(urls[i++], evernote);
strcpy(urls[i++], addthis);
strcpy(urls[i++], getpocket);
strcpy(urls[i++], hackernews);
strcpy(urls[i++], stumbleupon);
strcpy(urls[i++], digg);
strcpy(urls[i++], buffer);
strcpy(urls[i++], flipboard);
strcpy(urls[i++], instapaper);
strcpy(urls[i++], surfingbird);
strcpy(urls[i++], flattr);
strcpy(urls[i++], diaspora);
strcpy(urls[i++], qzone);
strcpy(urls[i++], vk);
strcpy(urls[i++], weibo);
strcpy(urls[i++], okru);
strcpy(urls[i++], douban);
strcpy(urls[i++], xing);
strcpy(urls[i++], renren);
strcpy(urls[i++], threema);
strcpy(urls[i++], sms);
strcpy(urls[i++], lineme);
strcpy(urls[i++], skype);
strcpy(urls[i++], telegramme);
strcpy(urls[i++], email);
strcpy(urls[i++], gmail);
strcpy(urls[i++], yahoo);
};
int main() {
SocialMedia sm;
for(int i = 0; i < SOCIALMEDIASERVICES; i++) {
printf("%s", sm.urlsOrderedByPopularity[i]);
printf(" : ");
printf("%s", sm.urls[i]);
printf("\n");
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIFNPQ0lBTE1FRElBU0VSVklDRVMgMzcKI2RlZmluZSBVUkxTSVpFIDEwMjQKI2RlZmluZSBBUkdMRU5HVEggMTAyNAoKY2xhc3MgU29jaWFsTWVkaWEgewoJcHVibGljOgoJCVNvY2lhbE1lZGlhKCk7CgoJCWNoYXIgdXJsW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIHRpdGxlW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIGRlc2NbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgaW1hZ2VbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgYXBwX2lkW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIHJlZGlyZWN0X3VybFtBUkdMRU5HVEhdID0gIiI7CgkJY2hhciB2aWFbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgaGFzaF90YWdzW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIHByb3ZpZGVyW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIGxhbmd1YWdlW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIHVzZXJfaWRbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgY2F0ZWdvcnlbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgcGhvbmVfbnVtYmVyW0FSR0xFTkdUSF0gPSAiIjsKCQljaGFyIGVtYWlsX2FkZHJlc3NbQVJHTEVOR1RIXSA9ICIiOwoJCWNoYXIgY2NfZW1haWxfYWRkcmVzc1tBUkdMRU5HVEhdID0gIiI7CgkJY2hhciBiY2NfZW1haWxfYWRkcmVzc1tBUkdMRU5HVEhdID0gIiI7CgoJCWNoYXIgdXJsc1tTT0NJQUxNRURJQVNFUlZJQ0VTXVtVUkxTSVpFXTsKCQljaGFyIHVybHNPcmRlcmVkQnlQb3B1bGFyaXR5W1NPQ0lBTE1FRElBU0VSVklDRVNdW1VSTFNJWkVdID0gewoJCQkiZ29vZ2xlLnBsdXMiLAoJCQkiZ29vZ2xlLmJvb2ttYXJrcyIsCgkJCSJmYWNlYm9vayIsCgkJCSJyZWRkaXQiLAoJCQkidHdpdHRlciIsCgkJCSJsaW5rZWRpbiIsCgkJCSJ0dW1ibHIiLAoJCQkicGludGVyZXN0IiwKCQkJImJsb2dnZXIiLAoJCQkibGl2ZWpvdXJuYWwiLAoJCQkiZXZlcm5vdGUiLAoJCQkiYWRkLnRoaXMiLAoJCQkiZ2V0cG9ja2V0IiwKCQkJImhhY2tlci5uZXdzIiwKCQkJInN0dW1ibGV1cG9uIiwKCQkJImRpZ2ciLAoJCQkiYnVmZmVyIiwKCQkJImZsaXBib2FyZCIsCgkJCSJpbnN0YXBhcGVyIiwKCQkJInN1cmZpbmdiaXJkLnJ1IiwKCQkJImZsYXR0ciIsCgkJCSJkaWFzcG9yYSIsCgkJCSJxem9uZSIsCgkJCSJ2ayIsCgkJCSJ3ZWlibyIsCgkJCSJvay5ydSIsCgkJCSJkb3ViYW4iLAoJCQkieGluZyIsCgkJCSJyZW5yZW4iLAoJCQkidGhyZWVtYSIsCgkJCSJzbXMiLAoJCQkibGluZS5tZSIsCgkJCSJza3lwZSIsCgkJCSJ0ZWxlZ3JhbS5tZSIsCgkJCSJlbWFpbCIsCgkJCSJnbWFpbCIsCgkJCSJ5YWhvbyIsCgkJfTsKCQljaGFyIHVybHNPcmRlcmVkQnlOYW1lW1NPQ0lBTE1FRElBU0VSVklDRVNdW1VSTFNJWkVdID0ge307Cn07CgpTb2NpYWxNZWRpYTo6U29jaWFsTWVkaWEoKSB7CglzcHJpbnRmKHVybCwgIiVzIiwgImh0dHAlM0ElMkYlMkZ3d3cuZWFydGhmbHVlbnQuY29tJTJGIik7CglzcHJpbnRmKHRpdGxlLCAiJXMiLCAiRWFydGhGbHVlbnQiKTsKCXNwcmludGYoZGVzYywgIiVzIiwgIldhbnQlMjB0byUyMGxlYXJuJTIwYW5vdGhlciUyMGxhbmd1YWdlJTNGJTIwJTIwTGVhcm4lMjBTcGFuaXNoJTJDJTIwRnJlbmNoJTJDJTIwSXRhbGlhbiUyQyUyMEdlcm1hbiUyQyUyMEphcGFuZXNlJTJDJTIwQ2hpbmVzZSUyQyUyMEhpbmRpJTJDJTIwSW5kb25lc2lhbiUyQyUyMER1dGNoJTJDJTIwUG9saXNoJTJDJTIwUG9ydHVndWVzZSUyQyUyMG9yJTIwUnVzc2lhbiUyMSIpOwoKCWNoYXIgdGV4dFtBUkdMRU5HVEhdOwoKCWlmKHN0cmxlbihkZXNjKSkgewoJCXNwcmludGYodGV4dCwgIiVzJXMlcyIsIHRpdGxlLCAiJTIwJTNBJTIwIiwgZGVzYyk7Cgl9IGVsc2UgewoJCXNwcmludGYodGV4dCwgIiVzIiwgdGl0bGUpOwoJfQoKCXN0ZDo6dmVjdG9yPHN0cmluZz4gc3RyaW5nYXJyYXkgKHVybHNPcmRlcmVkQnlQb3B1bGFyaXR5LCB1cmxzT3JkZXJlZEJ5UG9wdWxhcml0eSArIFNPQ0lBTE1FRElBU0VSVklDRVMpOwoJc3RkOjpzb3J0KHN0cmluZ2FycmF5LmJlZ2luKCksIHN0cmluZ2FycmF5LmVuZCgpKTsKCglmb3IoaW50IGkgPSAwOyBpIDwgU09DSUFMTUVESUFTRVJWSUNFUzsgaSsrKSB7CgkJc3RyY3B5KHVybHNPcmRlcmVkQnlOYW1lW2ldLCBzdHJpbmdhcnJheVtpXS5jX3N0cigpKTsKCX0KCgljaGFyIGFkZHRoaXNbVVJMU0laRV07CglzcHJpbnRmKGFkZHRoaXMsICIlcyVzIiwgImh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5zLmNvbS9ib29rbWFyay5waHA/dXJsPSIsIHVybCk7CgkKCWNoYXIgYmxvZ2dlcltVUkxTSVpFXTsKCXNwcmludGYoYmxvZ2dlciwgIiVzJXMlcyVzJXMlcyIsICJodHRwczovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIuY29tL2Jsb2ctdGhpcy5nP3U9IiwgdXJsLCAiJm49IiwgdGl0bGUsICImdD0iLCBkZXNjKTsKCgljaGFyIGJ1ZmZlcltVUkxTSVpFXTsKCXNwcmludGYoYnVmZmVyLCAiJXMlcyVzJXMiLCAiaHR0cHM6Ly9iLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9hZGQ/dGV4dD0iLCB0ZXh0LCAiJnVybD0iLCB1cmwpOwoKCWNoYXIgZGlhc3BvcmFbVVJMU0laRV07CglzcHJpbnRmKGRpYXNwb3JhLCAiJXMlcyVzJXMiLCAiaHR0cHM6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLm9yZy8/dGl0bGU9IiwgdGl0bGUsICImdXJsPSIsIHVybCk7CgkKCWNoYXIgZGlnZ1tVUkxTSVpFXTsKCXNwcmludGYoZGlnZywgIiVzJXMlcyVzIiwgImh0dHA6Ly9kLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5nLmNvbS9zdWJtaXQ/dXJsPSIsIHVybCwgIiZ0aXRsZT0iLCB0ZXh0KTsKCgljaGFyIGRvdWJhbltVUkxTSVpFXTsKCXNwcmludGYoZG91YmFuLCAiJXMlcyVzJXMiLCAiaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm4uY29tL3JlY29tbWVuZC8/dXJsPSIsIHVybCwgIiZ0aXRsZT0iLCB0aXRsZSk7CgoJY2hhciBlbWFpbFtVUkxTSVpFXTsKCXNwcmludGYoZW1haWwsICIlcyVzJXMlcyVzJXMiLCAibWFpbHRvOiIsIGVtYWlsX2FkZHJlc3MsICI/c3ViamVjdD0iLCB0aXRsZSwgIiZib2R5PSIsIGRlc2MpOwoKCWNoYXIgZXZlcm5vdGVbVVJMU0laRV07CglzcHJpbnRmKGV2ZXJub3RlLCAiJXMlcyVzJXMiLCAiaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL2NsaXAuYWN0aW9uP3VybD0iLCB1cmwsICImdGl0bGU9IiwgdGl0bGUpOwoJCgljaGFyIGdldHBvY2tldFtVUkxTSVpFXTsKCXNwcmludGYoZ2V0cG9ja2V0LCAiJXMlcyIsICJodHRwczovL2cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuY29tL2VkaXQ/dXJsPSIsIHVybCk7CgkKCWNoYXIgZmFjZWJvb2tbVVJMU0laRV07CglzcHJpbnRmKGZhY2Vib29rLCAiJXMlcyIsICJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uay5jb20vc2hhcmVyLnBocD91PSIsIHVybCk7CgkKCWNoYXIgZmxhdHRyW1VSTFNJWkVdOwoJc3ByaW50ZihmbGF0dHIsICIlcyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vZi4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vc3VibWl0L2F1dG8/dXNlcl9pZD0iLCB1c2VyX2lkLCAiJnVybD0iLCB1cmwsICImdGl0bGU9IiwgdGl0bGUsICImZGVzY3JpcHRpb249IiwgdGV4dCwgIiZsYW5ndWFnZT0iLCBsYW5ndWFnZSwgIiZ0YWdzPSIsIGhhc2hfdGFncywgIiZoaWRkZW49SElEREVOJmNhdGVnb3J5PSIsIGNhdGVnb3J5KTsKCQoJY2hhciBmbGlwYm9hcmRbVVJMU0laRV07CglzcHJpbnRmKGZsaXBib2FyZCwgIiVzJXMlcyVzIiwgImh0dHBzOi8vcy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZC5jb20vYm9va21hcmtsZXQvcG9wb3V0P3Y9MiZ0aXRsZT0iLCB0ZXh0LCAiJnVybD0iLCB1cmwpOwoJCgljaGFyIGdtYWlsW1VSTFNJWkVdOwoJc3ByaW50ZihnbWFpbCwgIiVzJXMlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21haWwvP3ZpZXc9Y20mdG89IiwgZW1haWxfYWRkcmVzcywgIiZzdT0iLCB0aXRsZSwgIiZib2R5PSIsIHVybCwgIiZiY2M9IiwgYmNjX2VtYWlsX2FkZHJlc3MsICImY2M9IiwgY2NfZW1haWxfYWRkcmVzcyk7CgkKCWNoYXIgZ29vZ2xlYm9va21hcmtzW1VSTFNJWkVdOwoJc3ByaW50Zihnb29nbGVib29rbWFya3MsICIlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYm9va21hcmtzL21hcms/b3A9ZWRpdCZia21rPSIsIHVybCwgIiZ0aXRsZT0iLCB0aXRsZSwgIiZhbm5vdGF0aW9uPSIsIHRleHQsICImbGFiZWxzPSIsIGhhc2hfdGFncyk7CgkKCWNoYXIgaW5zdGFwYXBlcltVUkxTSVpFXTsKCXNwcmludGYoaW5zdGFwYXBlciwgIiVzJXMlcyVzJXMlcyIsICJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vZWRpdD91cmw9IiwgdXJsLCAiJnRpdGxlPSIsIHRpdGxlLCAiJmRlc2NyaXB0aW9uPSIsIGRlc2MpOwoJCgljaGFyIGxpbmVtZVtVUkxTSVpFXTsKCXNwcmludGYobGluZW1lLCAiJXMlcyVzJXMiLCAiaHR0cHM6Ly9sLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLm1lL3NoYXJlL3VpP3VybD0iLCB1cmwsICImdGV4dD0iLCB0ZXh0KTsKCQoJY2hhciBsaW5rZWRpbltVUkxTSVpFXTsKCXNwcmludGYobGlua2VkaW4sICIlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubi5jb20vc2hhcmVBcnRpY2xlP21pbmk9dHJ1ZSZ1cmw9IiwgdXJsLCAiJnRpdGxlPSIsIHRpdGxlLCAiJnN1bW1hcnk9IiwgdGV4dCwgIiZzb3VyY2U9IiwgcHJvdmlkZXIpOwoJCgljaGFyIGxpdmVqb3VybmFsW1VSTFNJWkVdOwoJc3ByaW50ZihsaXZlam91cm5hbCwgIiVzJXMlcyVzIiwgImh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5sLmNvbS91cGRhdGUuYm1sP3N1YmplY3Q9IiwgdGV4dCwgIiZldmVudD0iLCB1cmwpOwoJCgljaGFyIGhhY2tlcm5ld3NbVVJMU0laRV07CglzcHJpbnRmKGhhY2tlcm5ld3MsICIlcyVzJXMlcyIsICJodHRwczovL24uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIuY29tL3N1Ym1pdGxpbms/dT0iLCB1cmwsICImdD0iLCB0aXRsZSk7CgkKCWNoYXIgb2tydVtVUkxTSVpFXTsKCXNwcmludGYob2tydSwgIiVzJXMiLCAiaHR0cHM6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5rLnJ1L2RrP3N0LmNtZD1XaWRnZXRTaGFyZVByZXZpZXcmc3Quc2hhcmVVcmw9IiwgdXJsKTsKCQoJY2hhciBwaW50ZXJlc3RbVVJMU0laRV07CglzcHJpbnRmKHBpbnRlcmVzdCwgIiVzJXMiLCAiaHR0cDovL3AuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnQuY29tL3Bpbi9jcmVhdGUvYnV0dG9uLz91cmw9IiwgdXJsKTsKCQoJY2hhciBnb29nbGVwbHVzW1VSTFNJWkVdOwoJc3ByaW50Zihnb29nbGVwbHVzLCAiJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vcGx1cy5nb29nbGUuY29tL3NoYXJlP3VybD0iLCB1cmwsICImdGV4dD0iLCB0ZXh0LCAiJmhsPSIsIGxhbmd1YWdlKTsKCQoJY2hhciBxem9uZVtVUkxTSVpFXTsKCXNwcmludGYocXpvbmUsICIlcyVzIiwgImh0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9jZ2ktYmluL3F6c2hhcmUvY2dpX3F6c2hhcmVfb25la2V5P3VybD0iLCB1cmwpOwoJCgljaGFyIHJlZGRpdFtVUkxTSVpFXTsKCXNwcmludGYocmVkZGl0LCAiJXMlcyVzJXMiLCAiaHR0cHM6Ly9yLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmNvbS9zdWJtaXQ/dXJsPSIsIHVybCwgIiZ0aXRsZT0iLCB0aXRsZSk7CgkKCWNoYXIgcmVucmVuW1VSTFNJWkVdOwoJc3ByaW50ZihyZW5yZW4sICIlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5uLmNvbS9kaWFsb2cvc2hhcmU/cmVzb3VyY2VVcmw9IiwgdXJsLCAiJnNyY1VybD0iLCB1cmwsICImdGl0bGU9IiwgdGl0bGUsICImZGVzY3JpcHRpb249IiwgZGVzYyk7CgkKCWNoYXIgc2t5cGVbVVJMU0laRV07CglzcHJpbnRmKHNreXBlLCAiJXMlcyVzJXMiLCAiaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbS9zaGFyZT91cmw9IiwgdXJsLCAiJnRleHQ9IiwgdGV4dCk7CgkKCWNoYXIgc21zW1VSTFNJWkVdOwoJc3ByaW50ZihzbXMsICIlcyVzJXMlcyIsICJzbXM6IiwgcGhvbmVfbnVtYmVyLCAiP2JvZHk9IiwgdGV4dCk7CgoJY2hhciBzdHVtYmxldXBvbltVUkxTSVpFXTsKCXNwcmludGYoc3R1bWJsZXVwb24sICIlcyVzJXMlcyIsICJodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ubi5jb20vc3VibWl0P3VybD0iLCB1cmwsICImdGl0bGU9IiwgdGV4dCk7CgoJY2hhciBzdXJmaW5nYmlyZFtVUkxTSVpFXTsKCXNwcmludGYoc3VyZmluZ2JpcmQsICIlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5kLnJ1L3NoYXJlP3VybD0iLCB1cmwsICImZGVzY3JpcHRpb249IiwgZGVzYywgIiZzY3JlZW5zaG90PSIsIGltYWdlLCAiJnRpdGxlPSIsIHRpdGxlKTsKCQoJY2hhciB0ZWxlZ3JhbW1lW1VSTFNJWkVdOwoJc3ByaW50Zih0ZWxlZ3JhbW1lLCAiJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkubWUvc2hhcmUvdXJsP3VybD0iLCB1cmwsICImdGV4dD0iLCB0ZXh0LCAiJnRvPSIsIHBob25lX251bWJlcik7CgkKCWNoYXIgdGhyZWVtYVtVUkxTSVpFXTsKCXNwcmludGYodGhyZWVtYSwgIiVzJXMlcyVzIiwgInRocmVlbWE6Ly9jb21wb3NlP3RleHQ9IiwgdGV4dCwgIiZpZD0iLCB1c2VyX2lkKTsKCQoJY2hhciB0dW1ibHJbVVJMU0laRV07CglzcHJpbnRmKHR1bWJsciwgIiVzJXMlcyVzJXMlcyVzJXMiLCAiaHR0cHM6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS93aWRnZXRzL3NoYXJlL3Rvb2w/Y2Fub25pY2FsVXJsPSIsIHVybCwgIiZ0aXRsZT0iLCB0aXRsZSwgIiZjYXB0aW9uPSIsIGRlc2MsICImdGFncz0iLCBoYXNoX3RhZ3MpOwoJCgljaGFyIHR3aXR0ZXJbVVJMU0laRV07CglzcHJpbnRmKHR3aXR0ZXIsICIlcyVzJXMlcyVzJXMlcyVzIiwgImh0dHBzOi8vdC4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vaW50ZW50L3R3ZWV0P3VybD0iLCB1cmwsICImdGV4dD0iLCB0ZXh0LCAiJnZpYT0iLCB2aWEsICImaGFzaHRhZ3M9IiwgaGFzaF90YWdzKTsKCQoJY2hhciB2a1tVUkxTSVpFXTsKCXNwcmludGYodmssICIlcyVzJXMlcyVzJXMiLCAiaHR0cDovL2NvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5LmNvbS9zaGFyZS5waHA/dXJsPSIsIHVybCwgIiZ0aXRsZT0iLCB0aXRsZSwgIiZjb21tZW50cz0iLCBkZXNjKTsKCQoJY2hhciB3ZWlib1tVUkxTSVpFXTsKCXNwcmludGYod2VpYm8sICIlcyVzJXMlcyVzIiwgImh0dHA6Ly9zLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5vLmNvbS9zaGFyZS9zaGFyZS5waHA/dXJsPSIsIHVybCwgIiZhcHBrZXk9JnRpdGxlPSIsIHRpdGxlLCAiJnBpYz0mcmFsYXRlVWlkPSIpOwoJCgljaGFyIHhpbmdbVVJMU0laRV07CglzcHJpbnRmKHhpbmcsICIlcyVzIiwgImh0dHBzOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZy5jb20vYXBwL3VzZXI/b3A9c2hhcmUmdXJsPSIsIHVybCk7CgkKCWNoYXIgeWFob29bVVJMU0laRV07CglzcHJpbnRmKHlhaG9vLCAiJXMlcyVzJXMlcyVzIiwgImh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5vLmNvbS8/dG89IiwgZW1haWxfYWRkcmVzcywgIiZzdWJqZWN0PSIsIHRpdGxlLCAiJmJvZHk9IiwgdGV4dCk7CgoJaW50IGkgPSAwOwoKCQkvLyBOT1RFIDogVGhpcyBvcmRlcmluZyBtdXN0IGlkZW50aWNhbGx5IG1hdGNoIHVybHNPcmRlcmVkQnlQb3B1bGFyaXR5LgoJCglzdHJjcHkodXJsc1tpKytdLCBnb29nbGVwbHVzKTsKCXN0cmNweSh1cmxzW2krK10sIGdvb2dsZWJvb2ttYXJrcyk7CglzdHJjcHkodXJsc1tpKytdLCBmYWNlYm9vayk7CglzdHJjcHkodXJsc1tpKytdLCByZWRkaXQpOwoJc3RyY3B5KHVybHNbaSsrXSwgdHdpdHRlcik7CglzdHJjcHkodXJsc1tpKytdLCBsaW5rZWRpbik7CglzdHJjcHkodXJsc1tpKytdLCB0dW1ibHIpOwoJc3RyY3B5KHVybHNbaSsrXSwgcGludGVyZXN0KTsKCXN0cmNweSh1cmxzW2krK10sIGJsb2dnZXIpOwoJc3RyY3B5KHVybHNbaSsrXSwgbGl2ZWpvdXJuYWwpOwoJc3RyY3B5KHVybHNbaSsrXSwgZXZlcm5vdGUpOwoJc3RyY3B5KHVybHNbaSsrXSwgYWRkdGhpcyk7CglzdHJjcHkodXJsc1tpKytdLCBnZXRwb2NrZXQpOwoJc3RyY3B5KHVybHNbaSsrXSwgaGFja2VybmV3cyk7CglzdHJjcHkodXJsc1tpKytdLCBzdHVtYmxldXBvbik7CglzdHJjcHkodXJsc1tpKytdLCBkaWdnKTsKCXN0cmNweSh1cmxzW2krK10sIGJ1ZmZlcik7CglzdHJjcHkodXJsc1tpKytdLCBmbGlwYm9hcmQpOwoJc3RyY3B5KHVybHNbaSsrXSwgaW5zdGFwYXBlcik7CglzdHJjcHkodXJsc1tpKytdLCBzdXJmaW5nYmlyZCk7CglzdHJjcHkodXJsc1tpKytdLCBmbGF0dHIpOwoJc3RyY3B5KHVybHNbaSsrXSwgZGlhc3BvcmEpOwoJc3RyY3B5KHVybHNbaSsrXSwgcXpvbmUpOwoJc3RyY3B5KHVybHNbaSsrXSwgdmspOwoJc3RyY3B5KHVybHNbaSsrXSwgd2VpYm8pOwoJc3RyY3B5KHVybHNbaSsrXSwgb2tydSk7CglzdHJjcHkodXJsc1tpKytdLCBkb3ViYW4pOwoJc3RyY3B5KHVybHNbaSsrXSwgeGluZyk7CglzdHJjcHkodXJsc1tpKytdLCByZW5yZW4pOwoJc3RyY3B5KHVybHNbaSsrXSwgdGhyZWVtYSk7CglzdHJjcHkodXJsc1tpKytdLCBzbXMpOwoJc3RyY3B5KHVybHNbaSsrXSwgbGluZW1lKTsKCXN0cmNweSh1cmxzW2krK10sIHNreXBlKTsKCXN0cmNweSh1cmxzW2krK10sIHRlbGVncmFtbWUpOwoJc3RyY3B5KHVybHNbaSsrXSwgZW1haWwpOwoJc3RyY3B5KHVybHNbaSsrXSwgZ21haWwpOwoJc3RyY3B5KHVybHNbaSsrXSwgeWFob28pOwp9OwoKaW50IG1haW4oKSB7CglTb2NpYWxNZWRpYSBzbTsKCglmb3IoaW50IGkgPSAwOyBpIDwgU09DSUFMTUVESUFTRVJWSUNFUzsgaSsrKSB7CgkJcHJpbnRmKCIlcyIsIHNtLnVybHNPcmRlcmVkQnlQb3B1bGFyaXR5W2ldKTsKCQlwcmludGYoIiA6ICIpOwoJCXByaW50ZigiJXMiLCBzbS51cmxzW2ldKTsKCQlwcmludGYoIlxuIik7Cgl9CgoJcmV0dXJuIDA7Cn0=