UNPKG

ng2-social-share

Version:

Angular2 social share module, share urls and content on social networks such as facebook, google+, twitter, pinterest and so on -

229 lines 30.1 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var core_1 = require('@angular/core'); var facebookParams_1 = require('./facebookParams'); var twitterParams_1 = require('./twitterParams'); var googlePlusParams_1 = require('./googlePlusParams'); var pinterestParams_1 = require('./pinterestParams'); var linkedinParams_1 = require('./linkedinParams'); var CeiboShare = (function () { function CeiboShare() { this.sharers = { facebook: { shareUrl: 'https://www.facebook.com/sharer/sharer.php', }, googleplus: { shareUrl: 'https://plus.google.com/share', }, linkedin: { shareUrl: 'https://www.linkedin.com/shareArticle', }, twitter: { shareUrl: 'https://twitter.com/intent/tweet/', }, email: { //shareUrl: 'mailto:' + this.to, /*params: { subject: this.subject, body: this.title + '\n' + this.url },*/ isLink: true }, whatsapp: { shareUrl: 'whatsapp://send', /*params: { text: this.title + ' ' + this.url },*/ isLink: true }, telegram: { shareUrl: 'tg://msg_url', /*params: { text: this.title + ' ' + this.url },*/ isLink: true }, viber: { shareUrl: 'viber://forward', /*params: { text: this.title + ' ' + this.url },*/ isLink: true }, line: { //shareUrl: 'http://line.me/R/msg/text/?' + encodeURIComponent(this.title + ' ' + this.url), isLink: true }, pinterest: { shareUrl: 'https://www.pinterest.com/pin/create/button/', }, tumblr: { shareUrl: 'http://tumblr.com/widgets/share/tool', }, hackernews: { shareUrl: 'https://news.ycombinator.com/submitlink', }, reddit: { shareUrl: 'https://www.reddit.com/submit', }, vk: { shareUrl: 'http://vk.com/share.php', }, xing: { shareUrl: 'https://www.xing.com/app/user', }, buffer: { shareUrl: 'https://buffer.com/add', }, instapaper: { shareUrl: 'http://www.instapaper.com/edit', }, pocket: { shareUrl: 'https://getpocket.com/save', }, digg: { shareUrl: 'http://www.digg.com/submit', }, stumbleupon: { shareUrl: 'http://www.stumbleupon.com/submit', }, flipboard: { shareUrl: 'https://share.flipboard.com/bookmarklet/popout', }, /*weibo: { shareUrl: 'http://service.weibo.com/share/share.php', params: { url: this.url, title: this.title, pic: this.image, appkey: this.getValue('appkey'), ralateUid: this.getValue('ralateuid'), language: 'zh_cn' } },*/ renren: { shareUrl: 'http://share.renren.com/share/buttonshare', }, myspace: { shareUrl: 'https://myspace.com/post', }, blogger: { shareUrl: 'https://www.blogger.com/blog-this.g', }, baidu: { shareUrl: 'http://cang.baidu.com/do/add', }, douban: { shareUrl: 'https://www.douban.com/share/service', }, okru: { shareUrl: 'https://connect.ok.ru/dk', } }; } CeiboShare.prototype.urlSharer = function (sharer) { var p = sharer.params || {}, keys = Object.keys(p), i, str = keys.length > 0 ? '?' : ''; for (i = 0; i < keys.length; i++) { if (str !== '?') { str += '&'; } if (p[keys[i]]) { str += keys[i] + '=' + encodeURIComponent(p[keys[i]]); } } sharer.shareUrl += str; if (!sharer.isLink) { var popWidth = sharer.width || 600, popHeight = sharer.height || 480, left = window.innerWidth / 2 - popWidth / 2 + window.screenX, top = window.innerHeight / 2 - popHeight / 2 + window.screenY, popParams = 'scrollbars=no, width=' + popWidth + ', height=' + popHeight + ', top=' + top + ', left=' + left, newWindow = window.open(sharer.shareUrl, '', popParams); if (window.focus) { newWindow.focus(); } } else { window.location.href = sharer.shareUrl; } }; CeiboShare.prototype.getSharer = function () { var _sharer = {}; if (this.facebook) { _sharer = this.sharers['facebook']; _sharer.params = this.facebook; } if (this.googlePlus) { _sharer = this.sharers['googleplus']; _sharer.params = this.googlePlus; } if (this.twitter) { _sharer = this.sharers['twitter']; _sharer.params = this.twitter; } if (this.pinterest) { _sharer = this.sharers['pinterest']; _sharer.params = this.pinterest; } if (this.linkedIn) { _sharer = this.sharers['linkedin']; _sharer.params = this.linkedIn; } return _sharer; }; CeiboShare.prototype.share = function () { var s = this.getSharer(); // custom popups sizes if (s) { s.width = this.shareWidth; s.height = this.shareHeight; } return s !== undefined ? this.urlSharer(s) : false; }; __decorate([ core_1.Input(), __metadata('design:type', facebookParams_1.FacebookParams) ], CeiboShare.prototype, "facebook", void 0); __decorate([ core_1.Input(), __metadata('design:type', twitterParams_1.TwitterParams) ], CeiboShare.prototype, "twitter", void 0); __decorate([ core_1.Input(), __metadata('design:type', googlePlusParams_1.GooglePlusParams) ], CeiboShare.prototype, "googlePlus", void 0); __decorate([ core_1.Input(), __metadata('design:type', pinterestParams_1.PinterestParams) ], CeiboShare.prototype, "pinterest", void 0); __decorate([ core_1.Input(), __metadata('design:type', linkedinParams_1.LinkedinParams) ], CeiboShare.prototype, "linkedIn", void 0); __decorate([ core_1.Input(), __metadata('design:type', String) ], CeiboShare.prototype, "shareWidth", void 0); __decorate([ core_1.Input(), __metadata('design:type', String) ], CeiboShare.prototype, "shareHeight", void 0); __decorate([ core_1.HostListener('click'), __metadata('design:type', Function), __metadata('design:paramtypes', []), __metadata('design:returntype', void 0) ], CeiboShare.prototype, "share", null); CeiboShare = __decorate([ core_1.Directive({ selector: '[ceiboShare]' }), __metadata('design:paramtypes', []) ], CeiboShare); return CeiboShare; }()); exports.CeiboShare = CeiboShare; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXNvY2lhbC1zaGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm5nMi1zb2NpYWwtc2hhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLHFCQUErQyxlQUFlLENBQUMsQ0FBQTtBQUMvRCwrQkFBK0Isa0JBQy9CLENBQUMsQ0FEZ0Q7QUFDakQsOEJBQThCLGlCQUFpQixDQUFDLENBQUE7QUFDaEQsaUNBQWtDLG9CQUFvQixDQUFDLENBQUE7QUFDdkQsZ0NBQWdDLG1CQUFtQixDQUFDLENBQUE7QUFDcEQsK0JBQStCLGtCQUFrQixDQUFDLENBQUE7QUFLbEQ7SUEwTmtCO1FBaE5SLFlBQU8sR0FBRztZQUNBLFFBQVEsRUFBRTtnQkFDTixRQUFRLEVBQUUsNENBQTRDO2FBRXpEO1lBQ0QsVUFBVSxFQUFFO2dCQUNSLFFBQVEsRUFBRSwrQkFBK0I7YUFFNUM7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLHVDQUF1QzthQUtwRDtZQUNELE9BQU8sRUFBRTtnQkFDTCxRQUFRLEVBQUUsbUNBQW1DO2FBT2hEO1lBQ0QsS0FBSyxFQUFFO2dCQUNILGdDQUFnQztnQkFDaEM7OztvQkFHSTtnQkFDSixNQUFNLEVBQUUsSUFBSTthQUNmO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCOztvQkFFSTtnQkFDSixNQUFNLEVBQUUsSUFBSTthQUNmO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxjQUFjO2dCQUN4Qjs7b0JBRUk7Z0JBQ0osTUFBTSxFQUFFLElBQUk7YUFDZjtZQUNELEtBQUssRUFBRTtnQkFDSCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQjs7b0JBRUk7Z0JBQ0osTUFBTSxFQUFFLElBQUk7YUFDZjtZQUNELElBQUksRUFBRTtnQkFDRiw0RkFBNEY7Z0JBQzVGLE1BQU0sRUFBRSxJQUFJO2FBQ2Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLDhDQUE4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VSxhQTBTdEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmFjZWJvb2tQYXJhbXMgfSBmcm9tICcuL2ZhY2Vib29rUGFyYW1zJ1xuaW1wb3J0IHsgVHdpdHRlclBhcmFtcyB9IGZyb20gJy4vdHdpdHRlclBhcmFtcyc7XG5pbXBvcnQgeyAgR29vZ2xlUGx1c1BhcmFtcyB9IGZyb20gJy4vZ29vZ2xlUGx1c1BhcmFtcyc7XG5pbXBvcnQgeyBQaW50ZXJlc3RQYXJhbXMgfSBmcm9tICcuL3BpbnRlcmVzdFBhcmFtcyc7XG5pbXBvcnQgeyBMaW5rZWRpblBhcmFtcyB9IGZyb20gJy4vbGlua2VkaW5QYXJhbXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2VpYm9TaGFyZV0nXG59KVxuZXhwb3J0IGNsYXNzIENlaWJvU2hhcmUge1xuICAgIEBJbnB1dCgpIGZhY2Vib29rIDogRmFjZWJvb2tQYXJhbXM7XG4gICAgQElucHV0KCkgdHdpdHRlciA6IFR3aXR0ZXJQYXJhbXM7XG4gICAgQElucHV0KCkgZ29vZ2xlUGx1cyA6IEdvb2dsZVBsdXNQYXJhbXM7XG4gICAgQElucHV0KCkgcGludGVyZXN0IDogUGludGVyZXN0UGFyYW1zO1xuICAgIEBJbnB1dCgpIGxpbmtlZEluIDogTGlua2VkaW5QYXJhbXM7XG4gICAgQElucHV0KCkgc2hhcmVXaWR0aDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNoYXJlSGVpZ2h0OiBzdHJpbmc7XG5cblxuICBwcml2YXRlIHNoYXJlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGZhY2Vib29rOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZXIvc2hhcmVyLnBocCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3BhcmFtczoge3U6IHRoaXMudXJsfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBnb29nbGVwbHVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vcGx1cy5nb29nbGUuY29tL3NoYXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcGFyYW1zOiB7dXJsOiB0aGlzLnVybH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlua2VkaW46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJlQXJ0aWNsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSovXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHR3aXR0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWdzOiB0aGlzLmhhc2h0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpYTogdGhpcy52aWFcbiAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9zaGFyZVVybDogJ21haWx0bzonICsgdGhpcy50byxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdDogdGhpcy5zdWJqZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMudGl0bGUgKyAnXFxuJyArIHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCovXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xpbms6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgd2hhdHNhcHA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnd2hhdHNhcHA6Ly9zZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50aXRsZSArICcgJyArIHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCovXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xpbms6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGVsZWdyYW06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAndGc6Ly9tc2dfdXJsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50aXRsZSArICcgJyArIHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCovXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xpbms6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdmliZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAndmliZXI6Ly9mb3J3YXJkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy50aXRsZSArICcgJyArIHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCovXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xpbms6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9zaGFyZVVybDogJ2h0dHA6Ly9saW5lLm1lL1IvbXNnL3RleHQvPycgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy50aXRsZSArICcgJyArIHRoaXMudXJsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGluazogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBwaW50ZXJlc3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cHM6Ly93d3cucGludGVyZXN0LmNvbS9waW4vY3JlYXRlL2J1dHRvbi8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiB0aGlzLmltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdHVtYmxyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHA6Ly90dW1ibHIuY29tL3dpZGdldHMvc2hhcmUvdG9vbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbFVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdHR5cGU6ICdsaW5rJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uOiB0aGlzLmNhcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogdGhpcy50YWdzXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaGFja2VybmV3czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVVcmw6ICdodHRwczovL25ld3MueWNvbWJpbmF0b3IuY29tL3N1Ym1pdGxpbmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0OiB0aGlzLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVkZGl0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vd3d3LnJlZGRpdC5jb20vc3VibWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcGFyYW1zOiB7J3VybCc6IHRoaXMudXJsfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2azoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVVcmw6ICdodHRwOi8vdmsuY29tL3NoYXJlLnBocCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuY2FwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5pbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSovXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHhpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cHM6Ly93d3cueGluZy5jb20vYXBwL3VzZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3AnOiAnc2hhcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cmwnOiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiB0aGlzLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vYnVmZmVyLmNvbS9hZGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpYTogdGhpcy52aWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljdHVyZTogdGhpcy5waWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFwYXBlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVVcmw6ICdodHRwOi8vd3d3Lmluc3RhcGFwZXIuY29tL2VkaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcG9ja2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vZ2V0cG9ja2V0LmNvbS9zYXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgfSovXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRpZ2c6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cDovL3d3dy5kaWdnLmNvbS9zdWJtaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgc3R1bWJsZXVwb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cDovL3d3dy5zdHVtYmxldXBvbi5jb20vc3VibWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSovXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZsaXBib2FyZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVVcmw6ICdodHRwczovL3NoYXJlLmZsaXBib2FyZC5jb20vYm9va21hcmtsZXQvcG9wb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IERhdGUubm93KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAvKndlaWJvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHA6Ly9zZXJ2aWNlLndlaWJvLmNvbS9zaGFyZS9zaGFyZS5waHAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6IHRoaXMuaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwa2V5OiB0aGlzLmdldFZhbHVlKCdhcHBrZXknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWxhdGVVaWQ6IHRoaXMuZ2V0VmFsdWUoJ3JhbGF0ZXVpZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnemhfY24nXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sKi9cbiAgICAgICAgICAgICAgICAgICAgcmVucmVuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHA6Ly9zaGFyZS5yZW5yZW4uY29tL3NoYXJlL2J1dHRvbnNoYXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluazogdGhpcy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBteXNwYWNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vbXlzcGFjZS5jb20vcG9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzogdGhpcy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfSovXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGJsb2dnZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVXJsOiAnaHR0cHM6Ly93d3cuYmxvZ2dlci5jb20vYmxvZy10aGlzLmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgLypwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiB0aGlzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHRoaXMuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBiYWlkdToge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVVcmw6ICdodHRwOi8vY2FuZy5iYWlkdS5jb20vZG8vYWRkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQ6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXU6IHRoaXMudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZG91YmFuOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vd3d3LmRvdWJhbi5jb20vc2hhcmUvc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0qL1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBva3J1OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVVybDogJ2h0dHBzOi8vY29ubmVjdC5vay5ydS9kaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKnBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdC5jbWQnOiAnV2lkZ2V0U2hhcmVQcmV2aWV3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Quc2hhcmVVcmwnOiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiB0aGlzLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7fVxuXG5cbiAgcHJpdmF0ZSB1cmxTaGFyZXIoc2hhcmVyOiBhbnkpIHtcbiAgICAgICAgICAgIHZhciBwID0gc2hhcmVyLnBhcmFtcyB8fCB7fSxcbiAgICAgICAgICAgICAgICBrZXlzID0gT2JqZWN0LmtleXMocCksXG4gICAgICAgICAgICAgICAgaTogYW55LFxuICAgICAgICAgICAgICAgIHN0ciA9IGtleXMubGVuZ3RoID4gMCA/ICc/JyA6ICcnO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyICE9PSAnPycpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9ICcmJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBba2V5c1tpXV0pIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyICs9IGtleXNbaV0gKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocFtrZXlzW2ldXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hhcmVyLnNoYXJlVXJsICs9IHN0cjtcblxuICAgICAgICAgICAgaWYgKCFzaGFyZXIuaXNMaW5rKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvcFdpZHRoID0gc2hhcmVyLndpZHRoIHx8IDYwMCxcbiAgICAgICAgICAgICAgICAgICAgcG9wSGVpZ2h0ID0gc2hhcmVyLmhlaWdodCB8fCA0ODAsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQgPSB3aW5kb3cuaW5uZXJXaWR0aCAvIDIgLSBwb3BXaWR0aCAvIDIgKyB3aW5kb3cuc2NyZWVuWCxcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gd2luZG93LmlubmVySGVpZ2h0IC8gMiAtIHBvcEhlaWdodCAvIDIgKyB3aW5kb3cuc2NyZWVuWSxcbiAgICAgICAgICAgICAgICAgICAgcG9wUGFyYW1zID0gJ3Njcm9sbGJhcnM9bm8sIHdpZHRoPScgKyBwb3BXaWR0aCArICcsIGhlaWdodD0nICsgcG9wSGVpZ2h0ICsgJywgdG9wPScgKyB0b3AgKyAnLCBsZWZ0PScgKyBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cgPSB3aW5kb3cub3BlbihzaGFyZXIuc2hhcmVVcmwsICcnLCBwb3BQYXJhbXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5mb2N1cykge1xuICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2hhcmVyLnNoYXJlVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxucHJpdmF0ZSBnZXRTaGFyZXIoKXtcbiAgICB2YXIgX3NoYXJlcjogYW55ID0ge307XG4gICAgaWYodGhpcy5mYWNlYm9vayl7XG4gICAgICAgIF9zaGFyZXI9IHRoaXMuc2hhcmVyc1snZmFjZWJvb2snXVxuICAgICAgICBfc2hhcmVyLnBhcmFtcyA9IHRoaXMuZmFjZWJvb2tcbiAgICB9XG4gICAgaWYodGhpcy5nb29nbGVQbHVzKXtcbiAgICAgICAgX3NoYXJlcj0gdGhpcy5zaGFyZXJzWydnb29nbGVwbHVzJ11cbiAgICAgICAgX3NoYXJlci5wYXJhbXMgPSB0aGlzLmdvb2dsZVBsdXNcbiAgICB9XG5cbiAgICBpZih0aGlzLnR3aXR0ZXIpe1xuICAgICAgICBfc2hhcmVyID0gdGhpcy5zaGFyZXJzWyd0d2l0dGVyJ107XG4gICAgICAgIF9zaGFyZXIucGFyYW1zID0gdGhpcy50d2l0dGVyO1xuICAgIH1cblxuICAgIGlmKHRoaXMucGludGVyZXN0KSB7XG4gICAgICAgIF9zaGFyZXIgPSB0aGlzLnNoYXJlcnNbJ3BpbnRlcmVzdCddO1xuICAgICAgICBfc2hhcmVyLnBhcmFtcyA9IHRoaXMucGludGVyZXN0O1xuICAgIH1cblxuICAgIGlmKHRoaXMubGlua2VkSW4pe1xuICAgICAgICBfc2hhcmVyID0gdGhpcy5zaGFyZXJzWydsaW5rZWRpbiddO1xuICAgICAgICBfc2hhcmVyLnBhcmFtcyA9IHRoaXMubGlua2VkSW47XG4gICAgfVxuXG4gICAgcmV0dXJuIF9zaGFyZXI7XG5cbn1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIHNoYXJlKCl7XG4gICAgICAgIFxuXG4gICAgICAgICAgICB2YXIgcyA9IHRoaXMuZ2V0U2hhcmVyKClcbiAgICAgICAgICAgIC8vIGN1c3RvbSBwb3B1cHMgc2l6ZXNcbiAgICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAgICAgcy53aWR0aCA9IHRoaXMuc2hhcmVXaWR0aDtcbiAgICAgICAgICAgICAgICBzLmhlaWdodCA9IHRoaXMuc2hhcmVIZWlnaHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzICE9PSB1bmRlZmluZWQgPyB0aGlzLnVybFNoYXJlcihzKSA6IGZhbHNlO1xuXG4gIH1cblxuICAgXG5cbn1cbiJdfQ==