"),t.close()),t)return(n=t.createElement("base")).href=o,t.getElementsByTagName("head")[0].appendChild(n),(r=t.createElement("a")).href=a,r.href;throw Error("base not supported")}finally{e&&e.parentNode.removeChild(e)}}():a)||""),(e=new c(t.search?t.search.substring(1):null))._url_object=this,Object.defineProperties(this,{href:{get:function(){return t.href},set:function(e){t.href=e,n(),r()},enumerable:!0,configurable:!0},origin:{get:function(){return"data:"===this.protocol.toLowerCase()?null:"origin"in t?t.origin:this.protocol+"//"+this.host},enumerable:!0,configurable:!0},protocol:{get:function(){return t.protocol},set:function(e){t.protocol=e},enumerable:!0,configurable:!0},username:{get:function(){return t.username},set:function(e){t.username=e},enumerable:!0,configurable:!0},password:{get:function(){return t.password},set:function(e){t.password=e},enumerable:!0,configurable:!0},host:{get:function(){var e={"http:":/:80$/,"https:":/:443$/,"ftp:":/:21$/}[t.protocol];return e?t.host.replace(e,""):t.host},set:function(e){t.host=e},enumerable:!0,configurable:!0},hostname:{get:function(){return t.hostname},set:function(e){t.hostname=e},enumerable:!0,configurable:!0},port:{get:function(){return t.port},set:function(e){t.port=e},enumerable:!0,configurable:!0},pathname:{get:function(){return"/"!==t.pathname.charAt(0)?"/"+t.pathname:t.pathname},set:function(e){t.pathname=e},enumerable:!0,configurable:!0},search:{get:function(){return t.search},set:function(e){t.search!==e&&(t.search=e,n(),r())},enumerable:!0,configurable:!0},searchParams:{get:function(){return e},enumerable:!0,configurable:!0},hash:{get:function(){return t.hash},set:function(e){t.hash=e,n()},enumerable:!0,configurable:!0},toString:{value:function(){return t.toString()},enumerable:!1,configurable:!0},valueOf:{value:function(){return t.valueOf()},enumerable:!1,configurable:!0}}),this;throw new TypeError("Failed to construct 'URL': Please use the 'new' operator.");function n(){var e=t.href.replace(/#$|\?$|\?(?=#)/g,"");t.href!==e&&(t.href=e)}function r(){e._setList(t.search?l(t.search.substring(1)):[]),e._update_steps()}}if(Object.defineProperties(c.prototype,{append:{value:function(e,t){this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},delete:{value:function(e){for(var t=0;ti[0]&&a[1]=n.length?void 0:n)&&n[e++],done:!n}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},c=function(n,a){var t="function"==typeof Symbol&&n[Symbol.iterator];if(!t)return n;var e,r,u=t.call(n),i=[];try{for(;(void 0===a||0a[0]?1:0}function o(n,a){return n.typea.type?1:0}function L(n){var a=n;if(n.variants.length)for(var t="",e=0,r=n.variants;e\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/,p=(new RegExp("^"+p.source),new RegExp(p.source+"$"),a(y()));f=Error,(0,p.__extends)(A,f);function A(){var n=null!==f&&f.apply(this,arguments)||this;return n.type="MISSING_LOCALE_DATA",n}var v=a(i()),p=a(h()),C=new WeakMap;function D(n){var a=C.get(n);return a||(a=Object.create(null),C.set(n,a)),a}var M=p.supplemental.likelySubtags,i=["ca","co","hc","kf","kn","nu"],E=/^[a-z0-9]{3,8}(-[a-z0-9]{3,8})*$/i;function N(n,a,t,e,r){return void 0===e&&(e=[]),r?{lang:n&&"und"!==n?n:r.lang,script:a||r.script,region:t||r.region,variants:(0,L.__spreadArray)((0,L.__spreadArray)([],e),r.variants)}:{lang:n||"und",script:a,region:t,variants:e}}function w(n){var n=(0,v.parseUnicodeLocaleId)(n),a=n.lang,t=a.lang,e=a.script,r=a.region,a=a.variants;if(e&&r){var u=M[(0,v.emitUnicodeLanguageId)({lang:t,script:e,region:r,variants:[]})];if(u)return u=(0,v.parseUnicodeLanguageId)(u),n.lang=N(void 0,void 0,void 0,a,u),(0,v.emitUnicodeLocaleId)(n)}if(e){var u=M[(0,v.emitUnicodeLanguageId)({lang:t,script:e,variants:[]})];if(u)return u=(0,v.parseUnicodeLanguageId)(u),n.lang=N(void 0,void 0,r,a,u),(0,v.emitUnicodeLocaleId)(n)}if(r){u=M[(0,v.emitUnicodeLanguageId)({lang:t,region:r,variants:[]})];if(u)return u=(0,v.parseUnicodeLanguageId)(u),n.lang=N(void 0,e,void 0,a,u),(0,v.emitUnicodeLocaleId)(n)}u=M[t]||M[(0,v.emitUnicodeLanguageId)({lang:"und",script:e,variants:[]})];if(u)return t=(0,v.parseUnicodeLanguageId)(u),n.lang=N(void 0,e,r,a,t),(0,v.emitUnicodeLocaleId)(n);throw new Error("No match for addLikelySubtags")}I.prototype.maximize=function(){var a=D(this).locale;try{return new I(w(a))}catch(n){return new I(a)}},I.prototype.minimize=function(){var a=D(this).locale;try{return new I(function n(a){if(t=w(a)){var t=(0,v.emitUnicodeLanguageId)((0,L.__assign)((0,L.__assign)({},(0,v.parseUnicodeLanguageId)(t)),{variants:[]})),e=(0,v.parseUnicodeLocaleId)(a),r=e.lang,u=r.lang,i=r.script,o=r.region,r=r.variants;if(w((0,v.emitUnicodeLanguageId)({lang:u,variants:[]}))===t)return(0,v.emitUnicodeLocaleId)((0,L.__assign)((0,L.__assign)({},e),{lang:N(u,void 0,void 0,r)}));if(o)if(w((0,v.emitUnicodeLanguageId)({lang:u,region:o,variants:[]}))===t)return(0,v.emitUnicodeLocaleId)((0,L.__assign)((0,L.__assign)({},e),{lang:N(u,void 0,o,r)}));if(i)if(w((0,v.emitUnicodeLanguageId)({lang:u,script:i,variants:[]}))===t)return(0,v.emitUnicodeLocaleId)((0,L.__assign)((0,L.__assign)({},e),{lang:N(u,i,void 0,r)}))}return a}(a))}catch(n){return new I(a)}},I.prototype.toString=function(){return D(this).locale},Object.defineProperty(I.prototype,"baseName",{get:function(){var n=D(this).locale;return(0,v.emitUnicodeLanguageId)((0,v.parseUnicodeLanguageId)(n))},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"calendar",{get:function(){return D(this).calendar},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"collation",{get:function(){return D(this).collation},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"hourCycle",{get:function(){return D(this).hourCycle},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"caseFirst",{get:function(){return D(this).caseFirst},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"numeric",{get:function(){return D(this).numeric},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"numberingSystem",{get:function(){return D(this).numberingSystem},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"language",{get:function(){var n=D(this).locale;return(0,v.parseUnicodeLanguageId)(n).lang},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"script",{get:function(){var n=D(this).locale;return(0,v.parseUnicodeLanguageId)(n).script},enumerable:!1,configurable:!0}),Object.defineProperty(I.prototype,"region",{get:function(){var n=D(this).locale;return(0,v.parseUnicodeLanguageId)(n).region},enumerable:!1,configurable:!0}),I.relevantExtensionKeys=i;p=I;function I(n,a){if(!(this&&this instanceof I?this.constructor:void 0))throw new TypeError("Intl.Locale must be called with 'new'");var t=I.relevantExtensionKeys,e=["initializedLocale","locale","calendar","collation","hourCycle","numberingSystem"];if(-1\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/;new RegExp("^"+u.source),new RegExp(u.source+"$");function d(u,e,t,n,i){var r=function u(e,t,n,i,r){return D(e[t],n,i,r)}(e,"minimumIntegerDigits",1,21,1),o=e.minimumFractionDigits,a=e.maximumFractionDigits,l=e.minimumSignificantDigits,e=e.maximumSignificantDigits;u.minimumIntegerDigits=r,void 0!==l||void 0!==e?(u.roundingType="significantDigits",l=D(l,1,21,1),e=D(e,l,21,21),u.minimumSignificantDigits=l,u.maximumSignificantDigits=e):void 0!==o||void 0!==a?(u.roundingType="fractionDigits",o=D(o,0,20,t),a=D(a,o,20,Math.max(o,n)),u.minimumFractionDigits=o,u.maximumFractionDigits=a):"compact"===i?u.roundingType="compactRounding":(u.roundingType="fractionDigits",u.minimumFractionDigits=t,u.maximumFractionDigits=n)}function t(u,e,t,n){var i=n.availableLocales,r=n.relevantExtensionKeys,o=n.localeData,a=n.getDefaultLocale,n=n.getInternalSlots,e=c(e),l=Object.create(null),t=function u(e){return void 0===e?Object.create(null):f(e)}(t),n=n(u),D=(n.initializedPluralRules=!0,F(t,"localeMatcher","string",["best fit","lookup"],"best fit")),D=(l.localeMatcher=D,n.type=F(t,"type","string",["cardinal","ordinal"],"cardinal"),d(n,t,0,3,"standard"),g(i,e,l,r,o,a));return n.locale=D.locale,u}function e(u,e,t){var n=t.getInternalSlots,t=t.PluralRuleSelect,n=n(u);return p("Object"===r(n),"pl has to be an object"),p("initializedPluralRules"in n,"pluralrules must be initialized"),p("Number"===r(e),"n must be a number"),isFinite(e)?t(n.locale,n.type,e,function u(e){p("string"==typeof e,"GetOperands should have been called with a string");var t,n,i,r=l(e),o=(p(isFinite(r),"n should be finite"),e.indexOf(".")),a="",o=-1===o?(n=r,t=0):(n=e.slice(0,o),t=l(a=e.slice(o,e.length)),a.length),e=Math.abs(l(n));return a=0!==t?(i=(n=a.replace(/0+$/,"")).length,l(n)):i=0,{Number:r,IntegerDigits:e,NumberOfFractionDigits:o,NumberOfFractionDigitsWithoutTrailing:i,FractionDigits:t,FractionDigitsWithoutTrailing:a}}(o(n,e).formattedString)):"other"}function h(u,e){for(var t=[],n=0,i=e;na[a.length-1]?a[a.length-1].length-1:-1===(o=a.indexOf(c))||"0"===l[c=a[o]].other?0:c.length-l[c].other.match(/0+/)[0].length:0}}function c(n,t,e){var u,r,i,a,o,c=e;if(a=0===n?(u=m("0",c),r=0):(i=(a=n.toString()).indexOf("e"),o=(a=a.split("e"))[0],a=a[1],o=o.replace(".",""),0<=i&&o.length<=c?(r=+a,u=o+m("0",c-o.length),n):(r=f(n),i=Math.round(s(n,r-c+1)),10<=s(i,c-1)&&(r+=1,i=Math.floor(i/10)),u=i.toString(),s(i,c-1-r))),o=c-1<=r?(u+=m("0",r-c+1),r+1):0<=r?(u=u.slice(0,r+1)+"."+u.slice(r+1),r+1):(u="0."+m("0",-r-1)+u,1),0<=u.indexOf(".")&&t\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]/,Vn=new RegExp("^"+L.source),Xn=new RegExp(L.source+"$"),Hn=/[#0](?:[\.,][#0]+)*/g;function zn(n,t,e,u){var r,i=n.sign,a=n.exponent,o=n.magnitude,c=u.notation,l=u.style,s=u.numberingSystem,f=t.numbers.nu[0],m=null;if("compact"===c&&o&&(m=function n(t,e,u,r,i,a,o){var c,l=t.roundedNumber,s=t.sign,t=t.magnitude,t=String(Math.pow(10,t)),f=u.numbers.nu[0];if("currency"===r&&"name"!==a){r=(m=u.numbers.currency)[o]||m[f],r=null==(a=r.short)?void 0:a[t];if(!r)return null;c=P(e,l,r)}else{var m,a=((m=u.numbers.decimal)[o]||m[f])[i][t];if(!a)return null;c=P(e,l,a)}return"0"!==c?c=j(c,s).replace(/([^\s;\-\+\d¤]+)/g,"{c:$1}").replace(/0+/,"0"):null}(n,e,t,l,u.compactDisplay,u.currencyDisplay,s)),"currency"===l&&"name"!==u.currencyDisplay){var D=t.currencies[u.currency];if(D)switch(u.currencyDisplay){case"code":r=u.currency;break;case"symbol":r=D.symbol;break;default:r=D.narrow}else r=u.currency}o=m||("decimal"===l||"unit"===l||"currency"===l&&"name"===u.currencyDisplay?j((t.numbers.decimal[s]||t.numbers.decimal[f]).standard,i):j("currency"===l?(p=t.numbers.currency[s]||t.numbers.currency[f])[u.currencySign]:t.numbers.percent[s]||t.numbers.percent[f],i));for(var g=Hn.exec(o)[0],p=(o=o.replace(Hn,"{0}").replace(/'(.)'/g,"$1"),(o="currency"===l&&"name"!==u.currencyDisplay&&((i=(p=t.numbers.currency[s]||t.numbers.currency[f]).currencySpacing.afterInsertBetween)&&!Xn.test(r)&&(o=o.replace("¤{0}","¤"+i+"{0}")),i=p.currencySpacing.beforeInsertBetween)&&!Vn.test(r)?o.replace("{0}¤","{0}"+i+"¤"):o).split(/({c:[^}]+}|\{0\}|[¤%\-\+])/g)),d=[],h=t.numbers.symbols[s]||t.numbers.symbols[f],y=0,F=p;yTop Hotels in Tanger-Tetouan-Al Hoceima - Compare Tanger-Tetouan-Al Hoceima Hotels | Expedia
Find the best Tanger-Tetouan-Al Hoceima Hotels Plan, book, stay with confidence
bex rewards loyalty icon Be picky
Search almost a million properties worldwide
payments icon Treat yourself
Sign in to save 10% or more on thousands of hotels
today icon Change your mind
Book hotels with free cancellation
Great weekend hotel deals in Tanger-Tetouan-Al Hoceima Showing deals for: 21 Mar - 23 Mar
Image gallery for Ryad A&B Chaouen Ryad A&B Chaouen Chefchaouen
9.0/10 Wonderful (14 reviews)
Member Price available ฿10,109 total
฿10,109 total
Ryad A&B Chaouen Image gallery for Riad Dar Saba - Saba'S House Riad Dar Saba - Saba'S House Tangier
9.8/10 Exceptional (48 reviews)
10% off ฿17,913 total
฿17,913 total
Riad Dar Saba - Saba'S House Image gallery for Iguana Azul Iguana Azul Chefchaouen
10/10 Exceptional (1 review)
Iguana Azul Image gallery for SBN Suite Hôtel Grand Duplex, 2 Bedrooms | Balcony view SBN Suite Hôtel Tangier
8.8/10 Excellent (33 reviews)
Member Price available ฿10,121 total
฿10,121 total
SBN Suite Hôtel Image gallery for CENTRICO Deluxe Apartment, 2 Bedrooms | Living area | 50-inch Smart TV with satellite channels, fireplace, Netflix CENTRICO Tangier
10/10 Exceptional (5 reviews)
CENTRICO Image gallery for Pestana Tanger - City Center Hotel Suites & Apartments Minibar, laptop workspace, bed sheets, wheelchair access Pestana Tanger - City Center Hotel Suites & Apartments Tangier
9.0/10 Wonderful (148 reviews)
Pestana Tanger - City Center Hotel Suites & Apartments Image gallery for Grand Hotel Villa de France Outdoor pool, pool loungers Grand Hotel Villa de France Tangier
8.8/10 Excellent (581 reviews)
46% off ฿12,367 total
฿12,367 total
Grand Hotel Villa de France Image gallery for TAJ CHEFCHAOUEN Luxury Hotel and Spa TAJ CHEFCHAOUEN Luxury Hotel and Spa Chefchaouen
9.8/10 Exceptional (23 reviews)
10% off ฿10,823 total
฿10,823 total
TAJ CHEFCHAOUEN Luxury Hotel and Spa Image gallery for hotel molino garden hotel molino garden Chefchaouen
9.4/10 Exceptional (16 reviews)
hotel molino garden Image gallery for Bab El Fen Bab El Fen Tangier
10/10 Exceptional (1 review)
Bab El Fen Image gallery for Dar Sharif Tanger Standard Shared Dormitory | Living area | Printers Dar Sharif Tanger Tangier
8.0/10 Very good (4 reviews)
Dar Sharif Tanger Image gallery for Puerta Azul Luxury Double Room | 1 bedroom, free WiFi, bed sheets Puerta Azul Chefchaouen
9.2/10 Wonderful (174 reviews)
Puerta Azul Image gallery for Riad Oasis d'Asilah Outdoor pool, pool umbrellas, pool loungers Riad Oasis d'Asilah Asilah
8.0/10 Very good (2 reviews)
Riad Oasis d'Asilah Image gallery for RIAD NILA RIAD NILA Chefchaouen
9.4/10 Exceptional (34 reviews)
Member Price available ฿10,122 total
฿10,122 total
RIAD NILA Dar MD Chefchaouen
9.6/10 Exceptional (34 reviews)
Dar MD Image gallery for Idou Malabata Beach and Spa Idou Malabata Beach and Spa Tangier
10/10 Exceptional (5 reviews)
10% off ฿13,255 total
฿13,255 total
Idou Malabata Beach and Spa Image gallery for RIAD ALHAMBRA RIAD ALHAMBRA Chefchaouen
10/10 Exceptional (19 reviews)
RIAD ALHAMBRA Image gallery for Hotel El Toro Hotel El Toro Tangier
10/10 Exceptional (23 reviews)
Hotel El Toro Image gallery for Zoco Riad Zoco Riad Tangier
9.6/10 Exceptional (29 reviews)
Zoco Riad Image gallery for Hotel Casa Miguel Hotel Casa Miguel Chefchaouen
8.6/10 Excellent (77 reviews)
Hotel Casa Miguel Image gallery for Absinthe Tangier Absinthe Tangier Tangier
10/10 Exceptional (2 reviews)
Absinthe Tangier Image gallery for Hôtel Étoile du Nord Hôtel Étoile du Nord Tangier
8.0/10 Very good (41 reviews)
Hôtel Étoile du Nord Image gallery for Mnar Castle Apartments Mnar Castle Apartments Tangier
9.2/10 Wonderful (185 reviews)
Mnar Castle Apartments Image gallery for Diagonal Hotel Diagonal Hotel Hjar Ennhal
10/10 Exceptional (6 reviews)
Diagonal Hotel Tanger-Tetouan-Al Hoceima Accommodation: Most Popular Cities to Stay
Check prices for these dates
Top Hotels Tanger-Tetouan-Al Hoceima Hilton Tangier Al Houara Resort & Spa Hilton Tangier Al Houara Resort & Spa Hilton Tangier Al Houara Resort & Spa Hilton Tangier Al Houara Resort & Spa Show previous image for Hilton Tangier Al Houara Resort & Spa Show next image for Hilton Tangier Al Houara Resort & Spa
Hilton Tangier Al Houara Resort & Spa
Hilton Tangier Al Houara Resort & Spa Hjar Ennhal
8.6 out of 10, Excellent, (256)
"Very nice and helpful staff. Hotel was clean and there were a lot of breakfast variety. "
The price is ฿3,929
฿3,929
Hilton Tangier Al Houara Resort & Spa Hilton Garden Inn Tanger City Center Hilton Garden Inn Tanger City Center Hilton Garden Inn Tanger City Center Hilton Garden Inn Tanger City Center Show previous image for Hilton Garden Inn Tanger City Center Show next image for Hilton Garden Inn Tanger City Center
Hilton Garden Inn Tanger City Center
Hilton Garden Inn Tanger City Center Tangier
8.6 out of 10, Excellent, (660)
"Nice and safe location "
The price is ฿2,687
฿2,687
Hilton Garden Inn Tanger City Center Show previous image for MAMORA BAY Show next image for MAMORA BAY
MAMORA BAY
MAMORA BAY Tangier
8.8 out of 10, Excellent, (924)
"The hotel's location in Tangier's Medina couldn't be better. The staff is incredibly helpful. The receptionist left his desk to walk us to the American Legation Museum for example and reserved us a taxi to the airport. The bell man walked our bags down the street when it was time to take the latter. We would recommend this hotel to anyone."
The price is ฿2,310
฿2,310
MAMORA BAY Hilton Tangier City Center Hilton Tangier City Center Hilton Tangier City Center Hilton Tangier City Center Show previous image for Hilton Tangier City Center Show next image for Hilton Tangier City Center
Hilton Tangier City Center
Hilton Tangier City Center Tangier
9.0 out of 10, Wonderful, (370)
"Member of the staff where very helpful. Breakfast was great and suhoor was also offer. "
The price is ฿3,170
฿3,170
Hilton Tangier City Center Show previous image for Barcelo Tanger Show next image for Barcelo Tanger
Barcelo Tanger
Barcelo Tanger Tangier
9.0 out of 10, Wonderful, (280)
"Nice hotel, staff, excellent location, beautiful view"
The price is ฿4,006
฿4,006
Barcelo Tanger Show previous image for Kenzi Solazur Hotel Show next image for Kenzi Solazur Hotel
Kenzi Solazur Hotel
Kenzi Solazur Hotel Tangier
7.0 out of 10, Good, (1000)
"Nice hotel, convenient location in the new part of town. Lovely beach across the street. Make sure you book a room with sea view. You will not be disappointed. You can even see the Spanish coastline (Tenerife) in the distance from your room.
Too bad the hotel pool wasn’t open. I was there in January and had the pool been open, cleaned and heated I would have definitely used it. But I understand that it was winter temperatures in Morocco. For me as a Canadian it was like Spring. "
The price is ฿3,347
฿3,347
Kenzi Solazur Hotel Fairmont Tazi Palace Tangier Fairmont Tazi Palace Tangier Fairmont Tazi Palace Tangier Fairmont Tazi Palace Tangier Show previous image for Fairmont Tazi Palace Tangier Show next image for Fairmont Tazi Palace Tangier
Fairmont Tazi Palace Tangier
Fairmont Tazi Palace Tangier Tangier
9.4 out of 10, Exceptional, (49)
"From the moment we were picked up at the Tangier ferry until we checked out everything was wonderful! Beautiful hotel!"
The price is ฿9,507
฿9,507
Fairmont Tazi Palace Tangier TAJ CHEFCHAOUEN Luxury Hotel and Spa TAJ CHEFCHAOUEN Luxury Hotel and Spa TAJ CHEFCHAOUEN Luxury Hotel and Spa TAJ CHEFCHAOUEN Luxury Hotel and Spa Show previous image for TAJ CHEFCHAOUEN Luxury Hotel and Spa Show next image for TAJ CHEFCHAOUEN Luxury Hotel and Spa
TAJ CHEFCHAOUEN Luxury Hotel and Spa
TAJ CHEFCHAOUEN Luxury Hotel and Spa Chefchaouen
9.8 out of 10, Exceptional, (23)
"Beautiful Hotel that has probably the best view of the city than any others! The service was exceptional and the staff really took care of us during our stay. They even upgraded our room for us free of charge. The breakfast was 10/10 and complimentary to our stay. It was clean and the designs were modern and traditional at the same time. Staff were soo accommodating and sweet and we highly recommend this hotel if you’re planning a visit to the blue city. It’s right in the city so walking...
The price is ฿4,278
฿4,278
TAJ CHEFCHAOUEN Luxury Hotel and Spa Grand Hotel Villa de France Grand Hotel Villa de France Grand Hotel Villa de France Grand Hotel Villa de France Show previous image for Grand Hotel Villa de France Show next image for Grand Hotel Villa de France
Grand Hotel Villa de France
Grand Hotel Villa de France Tangier
8.8 out of 10, Excellent, (581)
"A delightful historical property perfectly sited in a fascinating city."
The price is ฿6,212
฿6,212
Grand Hotel Villa de France Idou Malabata Beach and Spa Idou Malabata Beach and Spa Idou Malabata Beach and Spa Idou Malabata Beach and Spa Show previous image for Idou Malabata Beach and Spa Show next image for Idou Malabata Beach and Spa
Idou Malabata Beach and Spa
Idou Malabata Beach and Spa Tangier
10.0 out of 10, Exceptional, (5)
"Beautiful room - very clean - excellent service
A wonderful experience "
The price is ฿5,365
฿5,365
Idou Malabata Beach and Spa Show previous image for El Minzah Hotel Show next image for El Minzah Hotel
El Minzah Hotel
El Minzah Hotel Tangier
8.8 out of 10, Excellent, (447)
"Perfect location. Quiet rooms. Clean. Beautiful property. Great amenities. Really impressed by this hotel "
The price is ฿6,026
฿6,026
El Minzah Hotel Show previous image for Palais Zahia Show next image for Palais Zahia
Palais Zahia
Palais Zahia Tangier
9.4 out of 10, Exceptional, (207)
"Located in the medina in a busy area there was street noise all night. The staff were very accomodating. The room was spacious and clean. Its an old hotel with beautiful finishes. Delicious breakfast"
The price is ฿3,765
฿3,765
Palais Zahia Show previous image for Occidental Tanger Show next image for Occidental Tanger
Occidental Tanger
Occidental Tanger Tangier
8.2 out of 10, Very good, (59)
"Stunning but i wasnt happy the lady as her name mentioned was Sarra with glasses receptionist she didnt helped me out for iron my cloths and day 2 i met with Farah she sorted out my all issue others days and im really thankful for her she was amazing person helped me out alot "
The price is ฿2,343
฿2,343
Occidental Tanger Show previous image for Hotel Tanger Med Show next image for Hotel Tanger Med
Hotel Tanger Med
Hotel Tanger Med Melloussa
8.2 out of 10, Very good, (257)
"very good experience. modern standards. and very friendly staff in the restaurant and the front desk made it an easy and enjoyable stop on the way south after the ferry from Spain."
The price is ฿2,029
฿2,029
Hotel Tanger Med Sofitel Tamuda Bay Beach and Spa Sofitel Tamuda Bay Beach and Spa Sofitel Tamuda Bay Beach and Spa Sofitel Tamuda Bay Beach and Spa Show previous image for Sofitel Tamuda Bay Beach and Spa Show next image for Sofitel Tamuda Bay Beach and Spa
Sofitel Tamuda Bay Beach and Spa
Sofitel Tamuda Bay Beach and Spa M'diq
9.0 out of 10, Wonderful, (79)
"Excellent service, cleanliness, good quality food, quiet, very recommended 😍"
The price is ฿6,433
฿6,433
Sofitel Tamuda Bay Beach and Spa Show previous image for Royal Mansour Tamuda Bay Show next image for Royal Mansour Tamuda Bay
Royal Mansour Tamuda Bay
Royal Mansour Tamuda Bay M'diq
10.0 out of 10, Exceptional, (1)
"
Séjourner au Royal Mansour est plus qu’une simple nuitée, c’est une expérience inoubliable qui capture l’essence de l’hospitalité marocaine au plus haut niveau.
Le service était impeccable, avec un personnel toujours souriant et attentif à chaque détail.
je reviendrai sans hésiter pour revivre cette magie et ce service impeccable."
The price is ฿19,964
฿19,964
Royal Mansour Tamuda Bay The St. Regis La Bahia Blanca Resort, Tamuda Bay The St. Regis La Bahia Blanca Resort, Tamuda Bay The St. Regis La Bahia Blanca Resort, Tamuda Bay The St. Regis La Bahia Blanca Resort, Tamuda Bay Show previous image for The St. Regis La Bahia Blanca Resort, Tamuda Bay Show next image for The St. Regis La Bahia Blanca Resort, Tamuda Bay
The St. Regis La Bahia Blanca Resort, Tamuda Bay
The St. Regis La Bahia Blanca Resort, Tamuda Bay Allyene
8.8 out of 10, Excellent, (17)
"What an absolutely wonderful hotel in a wonderful location!!! - From the moment of arrival - I was treated superbly!!! My room was the Astor Suite and for the 3 days I had a fabulous time there.
Maryam the Deputy Manager was outstanding and customer service is throughout every aspect of the hotel experience.
The room was amazing and `I was able to work and enjoy at the same time. The hotel is fresh and clean and has space and beautiful citrus aromas in the hotel public areas.
The Pool was...
The price is ฿9,329
฿9,329
The St. Regis La Bahia Blanca Resort, Tamuda Bay Show previous image for Dar MD Show next image for Dar MD 9.6 out of 10, Exceptional, (34)
"Breakfast was good and served with great variety of local Moroccan dishes."
The price is ฿2,315
฿2,315
Dar MD Royal Tulip City Center Tanger Royal Tulip City Center Tanger Royal Tulip City Center Tanger Royal Tulip City Center Tanger Show previous image for Royal Tulip City Center Tanger Show next image for Royal Tulip City Center Tanger
Royal Tulip City Center Tanger
Royal Tulip City Center Tanger Tangier
8.8 out of 10, Excellent, (361)
"The hotel is one of the most contemporary, clean and well maintained hotels in Morocco. The staff is friendly and helpful. The rooms are spacious, contemporary and quiet. Good location with walking distance to train station, shopping mall and corniche. The breakfast buffet is extensive with an omelet station. The fitness center is very large. "
The price is ฿4,120
฿4,120
Royal Tulip City Center Tanger Show previous image for Banyan Tree Tamouda Bay Show next image for Banyan Tree Tamouda Bay
Banyan Tree Tamouda Bay
Banyan Tree Tamouda Bay Allyene
9.2 out of 10, Wonderful, (48)
"The staff in the pool and restaurant were outstanding! The food was excellent.
The main pool needs maintenance. It has a lot of missing tiles which has caused injuries for my kids. The quickness to address the injuries was lacking. I expected more for a 5 stars resort. "
The price is ฿12,731
฿12,731
Banyan Tree Tamouda Bay See more Lowest nightly price found within the past 24 hours based on a 1 night stay for 2 adults. Prices and availability subject to change. Additional terms may apply.
Lowest nightly price found within the past 24 hours based on a 1 night stay for 2 adults. Prices and availability subject to change. Additional terms may apply.
Don't see what you're looking for?
Don't see what you're looking for?
See all available properties in Tanger-Tetouan-Al Hoceima
See all available properties in Tanger-Tetouan-Al Hoceima
Save an average of 15% on thousands of hotels when you're signed in
Guide to exploring Tanger-Tetouan-Al Hoceima Guide to exploring Tanger-Tetouan-Al Hoceima
Tanger-Tetouan-Al Hoceima hotels information
Explore a world of travel with Expedia Explore a world of travel with Expedia Top cities in Tanger-Tetouan-Al Hoceima
Frequently asked questions How much do hotels in Tanger-Tetouan-Al Hoceima cost? In Tanger-Tetouan-Al Hoceima, you can find cheap options from ฿2,029 in a few different ways. To see what’s available, enter your preferred getaway dates, then fine-tune your search by budget, amenities and more. Remember that rates can differ depending on when you want to go, so if you have some flexibility, try switching your dates until you find the right deal.
When is the best time to go to Tanger-Tetouan-Al Hoceima? Temperatures vary across Tanger-Tetouan-Al Hoceima, so the best time to travel really depends on where you’re visiting. If you’re seeking a summer holiday in Tangier, plan your trip between June and August when daily average temperatures range from 20ºC to 26ºC. Just remember that Tangier has a Mediterranean climate, so pack appropriately.
What is the best area to stay in Tanger-Tetouan-Al Hoceima? If your travels are taking you to Tanger-Tetouan-Al Hoceima, consider a stay in
Tangier or
Tetouan . Once you’ve booked your hotel, check out the many awesome things there are to do and see here.
Are there any luxury hotels in Tanger-Tetouan-Al Hoceima? We’ve got some fabulous stays for a lavish escape in Tangier, Tanger-Tetouan-Al Hoceima, such as
Dar Chams Tanja . Settle in and get access to amenities like a steam room, Egyptian-cotton sheets and designer toiletries. Alternatively, pamper yourself at
Mnar Castle Apartments .
How can I find cheap hotels in Tanger-Tetouan-Al Hoceima? A good place to begin searching is by using our “Price per night” filter. Currently, the least expensive hotels start at ฿2,029 per night. Other ways to snap up a wallet-friendly Tanger-Tetouan-Al Hoceima escape are by booking early and being flexible with dates. For more bargains, check out our
cheap hotels in Tanger-Tetouan-Al Hoceima page.
What are the best hotels in Tanger-Tetouan-Al Hoceima for families? Dar Chams Tanja is one of the top-rated hotels for families, located in Tangier, Tanger-Tetouan-Al Hoceima. Check in here and make full use of conveniences such as complimentary breakfast and laundry facilities.
Mnar Castle Apartments is another favourite where little ones are welcome. For more getaway options, tweak your search results by selecting “Family friendly” under the “Traveller experience” filter section.
What are the top beach hotels in Tanger-Tetouan-Al Hoceima? Check in to one of Expedia’s ocean-view retreats in Tanger-Tetouan-Al Hoceima and spend your break creating memories by the shore. If you’re visiting Tangier, kick back in top-rated accommodation such as
Dar Chams Tanja , which includes amenities like pool sun loungers and individually decorated rooms.
Mnar Castle Apartments is another pick in this destination that promises a seaside holiday you won’t forget.
Why should I book my Tanger-Tetouan-Al Hoceima hotel with Expedia? Book your Tanger-Tetouan-Al Hoceima hotel with Expedia and enjoy a world of accommodation options at incredible prices. We’ve got a variety of search filters to help you find exactly what you want, whether that’s a budget-friendly getaway or something a bit different, like a cabin, villa or even a houseboat! Join Expedia Rewards and you’ll save 10% or more on over 100,000 hotels worldwide. Collect points on eligible bookings, which you can use to save on your next big adventure. Plus, many of our hotels come with flexible cancellation policies, so you won’t have to worry if your plans change.
700de973-6aeb-4aa1-9eef-53cda62703ee d2acfacc-46a3-458d-99cf-e9e4ed41d559