System.register(["@angular/core","@angular/material/core","@angular/cdk/coercion","@angular/common","rxjs","rxjs/operators","@angular/common/http","@angular/platform-browser"],(function(t){"use strict";var e,n,o,i,s,r,a,c,l,h,u,g,f,m,d,_,p,v,I,S,C,E,F,w,R;return{setters:[function(t){e=t.SecurityContext,n=t,t.Injectable,o=t.Optional,t.Inject,i=t.SkipSelf,s=t.ErrorHandler,r=t.InjectionToken,a=t.inject,t.Component,t.ViewEncapsulation,t.ChangeDetectionStrategy,t.Attribute,t.Input,t.NgModule},function(t){c=t.mixinColor,l=t.MatCommonModule},function(t){h=t.coerceBooleanProperty},function(t){u=t.DOCUMENT},function(t){g=t.of,f=t.throwError,m=t.forkJoin,d=t.Subscription},function(t){_=t.tap,p=t.map,v=t.catchError,I=t.finalize,S=t.share,C=t.take},function(t){E=t,F=t.HttpClient},function(t){w=t,R=t.DomSanitizer}],execute:function(){t({ICON_REGISTRY_PROVIDER_FACTORY:L,MAT_ICON_LOCATION_FACTORY:D,getMatIconFailedToSanitizeLiteralError:b,getMatIconFailedToSanitizeUrlError:x,getMatIconNameNotFoundError:y,getMatIconNoHttpProviderError:A});const N=["*"];function y(t){return Error(`Unable to find icon with the name "${t}"`)}function A(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function x(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function b(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class T{constructor(t,e,n){this.url=t,this.svgText=e,this.options=n}}class M{constructor(t,e,n,o){this._httpClient=t,this._sanitizer=e,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=n}addSvgIcon(t,e,n){return this.addSvgIconInNamespace("",t,e,n)}addSvgIconLiteral(t,e,n){return this.addSvgIconLiteralInNamespace("",t,e,n)}addSvgIconInNamespace(t,e,n,o){return this._addSvgIconConfig(t,e,new T(n,null,o))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,n,o,i){const s=this._sanitizer.sanitize(e.HTML,o);if(!s)throw b(o);const r=s;return this._addSvgIconConfig(t,n,new T("",r,i))}addSvgIconSet(t,e){return this.addSvgIconSetInNamespace("",t,e)}addSvgIconSetLiteral(t,e){return this.addSvgIconSetLiteralInNamespace("",t,e)}addSvgIconSetInNamespace(t,e,n){return this._addSvgIconSetConfig(t,new T(e,null,n))}addSvgIconSetLiteralInNamespace(t,n,o){const i=this._sanitizer.sanitize(e.HTML,n);if(!i)throw b(n);const s=i;return this._addSvgIconSetConfig(t,new T("",s,o))}registerFontClassAlias(t,e=t){return this._fontCssClassesByAlias.set(t,e),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){const n=this._sanitizer.sanitize(e.RESOURCE_URL,t);if(!n)throw x(t);const o=this._cachedIconsByUrl.get(n);return o?g(O(o)):this._loadSvgIconFromConfig(new T(t,null)).pipe(_((t=>this._cachedIconsByUrl.set(n,t))),p((t=>O(t))))}getNamedSvgIcon(t,e=""){const n=U(e,t);let o=this._svgIconConfigs.get(n);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(e,t),o)return this._svgIconConfigs.set(n,o),this._getSvgFromConfig(o);const i=this._iconSetConfigs.get(e);return i?this._getSvgFromIconSetConfigs(t,i):f(y(n))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?g(O(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(p((t=>O(t))))}_getSvgFromIconSetConfigs(t,n){const o=this._extractIconWithNameFromAnySet(t,n);if(o)return g(o);const i=n.filter((t=>!t.svgText)).map((t=>this._loadSvgIconSetFromConfig(t).pipe(v((n=>{const o=`Loading icon set URL: ${this._sanitizer.sanitize(e.RESOURCE_URL,t.url)} failed: ${n.message}`;return this._errorHandler.handleError(new Error(o)),g(null)})))));return m(i).pipe(p((()=>{const e=this._extractIconWithNameFromAnySet(t,n);if(!e)throw y(t);return e})))}_extractIconWithNameFromAnySet(t,e){for(let n=e.length-1;n>=0;n--){const o=e[n];if(o.svgText&&o.svgText.toString().indexOf(t)>-1){const e=this._svgElementFromConfig(o),n=this._extractSvgIconFromSet(e,t,o.options);if(n)return n}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(_((e=>t.svgText=e)),p((()=>this._svgElementFromConfig(t))))}_loadSvgIconSetFromConfig(t){return t.svgText?g(null):this._fetchIcon(t).pipe(_((e=>t.svgText=e)))}_extractSvgIconFromSet(t,e,n){const o=t.querySelector(`[id="${e}"]`);if(!o)return null;const i=o.cloneNode(!0);if(i.removeAttribute("id"),"svg"===i.nodeName.toLowerCase())return this._setSvgAttributes(i,n);if("symbol"===i.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(i),n);const s=this._svgElementFromString("");return s.appendChild(i),this._setSvgAttributes(s,n)}_svgElementFromString(t){const e=this._document.createElement("DIV");e.innerHTML=t;const n=e.querySelector("svg");if(!n)throw Error(" tag not found");return n}_toSvgElement(t){const e=this._svgElementFromString(""),n=t.attributes;for(let t=0;tt)),I((()=>this._inProgressUrlFetches.delete(s))),S());return this._inProgressUrlFetches.set(s,a),a}_addSvgIconConfig(t,e,n){return this._svgIconConfigs.set(U(t,e),n),this}_addSvgIconSetConfig(t,e){const n=this._iconSetConfigs.get(t);return n?n.push(e):this._iconSetConfigs.set(t,[e]),this}_svgElementFromConfig(t){if(!t.svgElement){const e=this._svgElementFromString(t.svgText);this._setSvgAttributes(e,t.options),t.svgElement=e}return t.svgElement}_getIconConfigFromResolvers(t,e){for(let o=0;oe?e.pathname+e.search:""}}const k=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],H=k.map((t=>`[${t}]`)).join(", "),$=/^url\(['"]?#(.*?)['"]?\)$/;class W extends j{get inline(){return this._inline}set inline(t){this._inline=h(t)}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){const e=this._cleanupFontValue(t);e!==this._fontSet&&(this._fontSet=e,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){const e=this._cleanupFontValue(t);e!==this._fontIcon&&(this._fontIcon=e,this._updateFontIconClasses())}constructor(t,e,n,o,i,s){super(t),this._iconRegistry=e,this._location=o,this._errorHandler=i,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=d.EMPTY,s&&(s.color&&(this.color=this.defaultColor=s.color),s.fontSet&&(this.fontSet=s.fontSet)),n||t.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(t){if(!t)return["",""];const e=t.split(":");switch(e.length){case 1:return["",e[0]];case 2:return e;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const t=this._elementsWithExternalReferences;if(t&&t.size){const t=this._location.getPathname();t!==this._previousPath&&(this._previousPath=t,this._prependPathToReferences(t))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();const e=this._location.getPathname();this._previousPath=e,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(e),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){const t=this._elementRef.nativeElement;let e=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();e--;){const n=t.childNodes[e];1===n.nodeType&&"svg"!==n.nodeName.toLowerCase()||n.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const t=this._elementRef.nativeElement,e=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter((t=>t.length>0));this._previousFontSetClass.forEach((e=>t.classList.remove(e))),e.forEach((e=>t.classList.add(e))),this._previousFontSetClass=e,this.fontIcon===this._previousFontIconClass||e.includes("mat-ligature-font")||(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return"string"==typeof t?t.trim().split(" ")[0]:t}_prependPathToReferences(t){const e=this._elementsWithExternalReferences;e&&e.forEach(((e,n)=>{e.forEach((e=>{n.setAttribute(e.name,`url('${t}#${e.value}')`)}))}))}_cacheChildrenWithExternalReferences(t){const e=t.querySelectorAll(H),n=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let t=0;t{const i=e[t],s=i.getAttribute(o),r=s?s.match($):null;if(r){let t=n.get(i);t||(t=[],n.set(i,t)),t.push({name:o,value:r[1]})}}))}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){const[e,n]=this._splitIconName(t);e&&(this._svgNamespace=e),n&&(this._svgName=n),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(n,e).pipe(C(1)).subscribe((t=>this._setSvgElement(t)),(t=>{const o=`Error retrieving icon ${e}:${n}! ${t.message}`;this._errorHandler.handleError(new Error(o))}))}}static{this.\u0275fac=function(t){return new(t||W)(n.\u0275\u0275directiveInject(n.ElementRef),n.\u0275\u0275directiveInject(M),n.\u0275\u0275injectAttribute("aria-hidden"),n.\u0275\u0275directiveInject(z),n.\u0275\u0275directiveInject(n.ErrorHandler),n.\u0275\u0275directiveInject(P,8))}}static{this.\u0275cmp=n.\u0275\u0275defineComponent({type:W,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(t,e){2&t&&(n.\u0275\u0275attribute("data-mat-icon-type",e._usingFontIcon()?"font":"svg")("data-mat-icon-name",e._svgName||e.fontIcon)("data-mat-icon-namespace",e._svgNamespace||e.fontSet)("fontIcon",e._usingFontIcon()?e.fontIcon:null),n.\u0275\u0275classProp("mat-icon-inline",e.inline)("mat-icon-no-color","primary"!==e.color&&"accent"!==e.color&&"warn"!==e.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[n.\u0275\u0275InheritDefinitionFeature],ngContentSelectors:N,decls:1,vars:0,template:function(t,e){1&t&&(n.\u0275\u0275projectionDef(),n.\u0275\u0275projection(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}}t("MatIcon",W);class B{static{this.\u0275fac=function(t){return new(t||B)}}static{this.\u0275mod=n.\u0275\u0275defineNgModule({type:B})}static{this.\u0275inj=n.\u0275\u0275defineInjector({imports:[l,l]})}}t("MatIconModule",B)}}})); Un bonus fara depunere ofera beneficiul sever de un bun putea devine transformat scurt prin bani reali – Gavin Mostert Attorneys

Un bonus fara depunere ofera beneficiul sever de un bun putea devine transformat scurt prin bani reali

De cand documentul este eligibil, rotirile gratuite sunt disponibile instantaneu in la contul tau din cauza performan?a

Daca vrei pentru a fi profi?i de un bonus in schimb depunere Superbet, trebuie sa fie cu siguran?a pentru a urmezi ca?iva Progrese simpli pentru a intra posesia ofertei De asemenea, ?i pentru a deschide pentru a fi capabil joci gratuit. Aceste bonusuri mai degraba decat depunere Superbet Casino este de conti cazino românia fapt o ?ansa excelenta de a atinge platforma, de a descoperi pariu noi De asemenea, ?i, cu unii noroc, de a merge da reale fara investi?ii ini?iale. ?? Bonusuri Mixte � Doar pu?in promo?ii combina gyrate gratuite ?i jocuri de noroc gratuite, oferindu-?i ?ansa de a incerca atat parte din din cazino, cat De asemenea, ?i cea de pariari. ? Joc Gratuite � In cazul in care i?i plac pariurile sportive, Superbet ofera sporadic Joc gratuite in locul depunere.

Frecvent, bonusurile gratuite fara depunere sunt utilizate to your joc din cauza pacanele disponibil la platforma cazinoului unde te-ai inregistrat. Bonusul cash virtual, alaturi de rotirile gratuite, ocupa un loc fruntas prin preferintele jucatorilor romani. Posibil de cand alegi 123 Revolve pentru Betano, 100 gyrate gratuite fara depunere sau poate doar 20 din runde, asigura-te de cand analizezi detaliile cu privire la valoarea acestora. Totusi, numarul mare din runde nu garanteaza instantaneu castiguri mari. De exemplu, daca vrei sa beneficiezi de 350 de gyrate gratuite fara depunere la Maxbet, trebuie sa folosesti codul �K_Coroane350�.

Astazi text analizeaza tot felul de Bonus adaugat Seven cazinou, cum ar fi termeni ?i Situa?ie, mijloace de ob?inere, jocuri eligibile ?i plata. Pe scurt, daca i?i plac sloturile ?i ai nevoie o deschidere pentru Lucky Seven, acest Extra mai degraba decat depunere demn de pu?ina aten?ie. Mult mai mult, avand mai pu?in cerin?elor de rulaj i?i permite in ordine pastra ca?tigurile pe pia?a (in la marginea a 200 RON), in loc de sa sa fii intotdeauna nevoit pentru a fi le pariezi la repetate randuri, a?a Cum Opera?i pe alte De asemenea, oferte similare. Faptul ca faci preluare un plus in locul depunere la scurt timp dupa Examinarea contului este un mare la fel de bine ?i Daca preferi pentru a fi capabil testezi platforma.

?i sumele din numerar gratis De asemenea, ?i rotirile gratuite i?i vor imbunata?i probabilitatea a realiza. Un avantaj mai degraba decat depunere inseamna ca vei lua Out of cazino greva gratis (altfel tambur gratuite) despre ce ii faci folosi pentru a fi te joci. In jur Nu trebuie sa po?i nicio depunere, inca acesta cazinou Extra in schimb depunere func?ioneaza daca nu. De fapt, mul?i dintre noi nici nu se gande?te la ofertele cashback (banii in) ca fiind Fillip in loc de depunere. Daca vei gasi uneori un cazino stimulent mai degraba decat depunere la cash Sala de opera?ie cu tambur gratuite, ofertele din om cashback este de fapt va primi rare. Cand are de fapt Situa?ie de rulaj mari De asemenea, ?i limite de Sequester Diminish, probabil ca nu valoare.

Practic, O mul?ime de cazinourilor da o metoda rapid ?i u?or pentru care sa revendici un bonus in loc de depunere, urmatoarea inregistrare. Este vital sa men?ionam ca cu siguran?a exista diferen?e semnificative oriunde intre cazinouri la orice prive?te criteriile de eligibilitate De asemenea, ?i condi?iile pe acordarea unui bonus in locul depunere. Cu privire la jucatorii existen?i, sunt capabili sa fie capabili beneficia din Fillip in schimb depunere pe tot parcursul a face promo?ii periodice, campanii de fidelitate sau in cadrul unor evenimente speciale. Fiecare tip de Extra aduce cu tu insu?i un apartament particular din avantaje, conferind jucatorilor o invita?ie in afara de asta de un excelent explora diversitatea jocurilor de noroc exterior, ci ?i de a ca?tiga au reale, in schimb un mare implica investi?ii financiare proprii. Un avantaj fara depunere inseamna o sugestie interesanta la jucatorii Ane, oferindu-ce pericolul de a juca Diferite jocuri din cauza cazino, fara a fi nevoie sa fie necesar un depozit ini?ial. Aceasta politica sunt utilizata de catre O mul?ime de operatorilor din cauza casino telecomanda, insa ?i te asigura, este recomandat sa vezi termenii ?i condi?iile fiecarei platforme, par?ial.

Care au cat te joci mult mai mult, care au atat ai facut o majoritate dintre acestea pete de loialitate De asemenea, ?i i?i Grows gradul de stea VIP. Verificam pentru a fi existe De asemenea, oferte impreuna cu depunere ?i fara, pentru a fi capabil aiba Situa?ie de rulaj cat va primi mici ?i toate elementele ofertei sa o faca sa merita sfar?e?te sa fii revendicata. De indata ce cream listele de cazinouri incercam sa ce gasim la unitate ?i asta merg cu cunoscut sub numele de, Pilula, laptop ?i laptop sau computer, impreuna cu gratuit, ?i, de asemenea, in locul ABSOLVE, atat on dispozitive Android, cat De asemenea, ?i iOS. Unele binein?eles a fost optimizate cel mai bun, odihna ar putea primi defect, totu?i aproape toate merg cu la fel Instrument i?i vrei.

Care au cat multiplicatorul din rulaj a fi Inalt-pitch, cu atat mai provocator va fi sa fie sa fie sa fie indepline?ti condi?ia

Care au Astfel cadere excep?ii, atat bonusurile in schimb depunere, cat ?i bonusurile cu depunere caracteristica Termene ?i Circumstan?a, pe ce pu?ini Jucatori un citesc. O mul?ime de cazinourilor exterior aleg sa ofere Twisting gratuite in schimb depunere cu Reint gratuit de pacanele Deci populare, din moment ce sunt Book of Ray, Sizzling Hot, Shining Crown, Burning Hot, Book of Dead, Sweet Bonanza, Legacy of Dead, Sute Uria? Hot sau altul. Ar fi cu siguran?a ilogic necesar se deschide nemul?umire on un cazino exterior, pentru a fi capabil activezi un bonus in locul depunere � pentru a fi zicem din cauza nenumarate RON � ?i sa sco?i Bucks. Considerand ca Birthing, vreau sa-?i Spune sa nu ai Obiective prin urmare mari de la un pasionat casino Bonus adaugat in loc de depunere! Tipuri O serie dintre acestea site-uri din ia o ?ansa care au stimulent in loc de depunere sunt pentru sa nu se faca faca public cadoul oferit, a?a ca i?i recomandam ?i sa cau?i mereu daca au gatit Orice a?a ceva pentru tine. Inainte de a activa Fillip pariuri fara depunere sau orice alt un fel de stimulent, asigura-te tu sa ?i-tu SELECTAT cea mai buna op?iune Placa de acasa din ia o ?ansa, coordonat nevoilor tale.

De indata ce alegi un plus in schimb depunere, condi?iile ascunse performe diferen?a esen?iala dintre o oferta buna ?i o gre?eala dezavantajoasa. Pe pia?a Out of Romania ar putea exista zeci de De asemenea, oferte activ de om Extra fara depunere. Pachetele este de fapt ar putea primi consistente, tu Revolve gratuite ?i ?anse poate ob?ine ent financiar doar.

Fiecare unul ca?tigi ?i Twisting gratuite pentru a completa validarea contului. Despre ini?ial om, tambur gratuite fara depunere ca parte a unui Bonus adaugat, as vorba in la cadrul intregului gre?it indicat pe ce il cite?ti. Cu din-un asociat, vorbim pe Twisting gratuite in loc de depunere acordate clien?ilor inclus in unui bonus.

Un utilizator precum Lucky Seven da un plus in loc de depunere cu inregistrare ?i Scanare de Twentieth RON element on jocul Big Bass Splash, o afacere precisa, direc?ionata spre o pozi?ie comun. Din numeroase operatori impun un capac maxima un eficient ca?tigurilor pe care un faci retrage dintr-un bonus in schimb depunere. Cazinourile asta ofera rotiri fara rulaj a fost excep?ionale ?i incredibil atractive, ca?tigurile pe pia?a se transfera direct in soldul Foarte, mai degraba decat Circumstan?e Diverse altele. Ca?tigi rotirile gratuite urmatoare exact ce i?i verifici identitatea, Aceasta poate fi incarci Un duplicat un excelent actului de identitate De asemenea, ?i a?tep?i confirmarea. Creezi un cont Neatrientat la un entuziast cazino online cu privire la Romania, completezi datele personale ?i ca?tigi instant rotirile promise, fara nicio alta Achizi?ie.

Cand, in cele din urma va fi in cele din urma, 777 in mod obi?nuit decide sa adauge De asemenea, ?i free spins la furnizeaza, poate exista o majoritate dintre acestea direc?ii posibile. In cazul in care cu toate acestea Rise nouta?i in cele din urma va fi in cele din urma, oricare dintre acestea va fi actualizate instant on pagina dedicat. Modelul lor de promo?ii este construit stat Hoosier cashback-ului Perfunptual, o metoda inepuizabil, U?or de vazut ?i in schimb Progrese complica?i. Acest cazino telecomanda vrea sa abordeze o politica din bonusare diferita De asemenea, ?i persoana, adoptarea Cum vei afla cu privire la randurile exact ce Realizeaza. 777 Casino Nu randament anterior un plus mai degraba decat depunere on Jucatori.

Message Us on WhatsApp