/*1358176998,178142507*/

if (self.CavalryLogger) { CavalryLogger.start_js(["XNvyO"]); }

/** js/components/Button/Button.js */
__d("ReactButton",["ReactDOM","React","ReactUtils"],function(a,b,c,d,e,f){var g=b('ReactDOM'),





h=b('React'),
i=b('ReactUtils'),

j=
{forward:true},


k=
{special:true,
confirm:true},












l=i.keyMirror
({addConnection:true,
addToProfile:true,
allowAccess:true,
back:true,
block:true,
bookmark:true,
check:true,
connect:true,
create:true,
download:true,
edit:true,
feature:true,
forward:true,
friendLists:true,
like:true,
message:true,
placePin:true,
poke:true,
privacy:true,
remove:true,
search:true,
settings:true,
share:true,
subscribe:true,
signal:true,
tag:true,
takePhoto:true,
trashCan:true,
unfollow:true,
videoCall:true,
voteDown:true,
voteUp:true}),


m=i.keyMirror
({special:true,
confirm:true,
dfault:true,
overlay:true}),


n=i.keyMirror
({medium:true,
large:true}),










o=i.objMapKeyVal(l,function(q,r){
var s={};
s.ButtonImg=true;
s[q]=true;
return s;}),











p=h.createComponent
({render:function(){
var q=j[this.props.icon],
r=!q,
s=null;
if(this.props.icon){
var t=

[{mls:q,
mrs:r,
selected:k[this.props.use]},

o[this.props.icon]];

s=g.i({classSet:t});}







var u=
{uiButton:true,
uiButtonOverlay:this.props.use===m.overlay,
uiButtonConfirm:this.props.use===m.confirm,
uiButtonSpecial:this.props.use===m.special,
uiButtonDisabled:this.props.disabled,
uiButtonLarge:this.props.size===n.large,
uiButtonDepressed:this.props.depressed,
uiButtonSuppressed:this.props.suppressed,
uiButtonNoText:!this.props.label},


v=
g.input
({value:this.props.label,
type:this.props.type||'submit',
style:this.props.style,
classSet:
{enter_submit_target:this.props.submitOnEnter}}),




w=
g.label({classSet:[u,this.props.classSet],children:
[r?s:null,
v,
q?s:null]});


v.props=i.merge(this.props,v.props);
return w;}});



p.ICONS=l;
p.USES=m;
p.SIZES=n;


e.exports=p;});

/** js/react/core/ReactLayer.js */
__d("ReactLayer",["ReactDOM","ReactEvent","ReactMount","getObjectValues","emptyFunction","merge","mixInto","throwIf"],function(a,b,c,d,e,f){var g=b('ReactDOM'),




h=b('ReactEvent'),
i=b('ReactMount'),
j=b('getObjectValues'),
k=b('emptyFunction'),
l=b('merge'),
m=b('mixInto'),
n=b('throwIf'),








o=




{immutableProps:{},





getDefaultEnabledBehaviors:function(){
return {};},







handleGenLayer:function(q){

},






handleUpdateAllProps:function(q){

},





genLayer:function(q){
this.owner=q;

this.container=document.createElement('div');
this.rootId=i.registerContainer(this.container);
this.reactContent=this.wrapReactContent(this.props.children);
this.reactContent.genMarkupIntoContainerImpl(this.rootId,this.container);

this.handleGenLayer(this.container);
n(!this.layer,'`handleGenLayer` did not generate a layer.');

this.layerSubscriptions=[];
this.layerSubscribe(['show','hide'],function(r){
this.props.onToggle&&this.props.onToggle(r==='show');}.
bind(this));},







updateAllProps:function(q){
var r;
for(r in this.immutableProps)
n
(this.props[r]!==q[r],
'`'+r+'` is not mutable.');



var s=this.reactContent,
t=this.wrapReactContent(q.children);
s.handleUpdateAllProps(t.props);

this.handleUpdateAllProps(q);
this.props=q;},







enumerateBehaviors:function(q){
q=this.getEffectiveBehaviors(q);
return j(q).filter(k.thatReturnsArgument);},






updateBehaviors:function(q){
var r=this.getEffectiveBehaviors(this.props.behaviors),
s=this.getEffectiveBehaviors(q),
t;
for(t in r)
if(!s[t])
this.layer.disableBehavior(r[t]);


for(t in s){
var u=r[t],
v=s[t];
if(u&&v){
n
(u!==v,
'Do not reuse keys for different behaviors: '+t);

continue;}

u&&this.layer.disableBehavior(u);
v&&this.layer.enableBehavior(v);}},









getEffectiveBehaviors:function(q){
return l(this.getDefaultEnabledBehaviors(),q);},


destroy:function(){
this.reactContent.destroy();
this.layer.destroy();
delete this.reactContent;
delete this.layer;
this.container.innerHTML='';

while(this.layerSubscriptions.length)
this.layerSubscriptions.pop().unsubscribe();

this.owner=null;},


layerSubscribe:function(q,r){
this.layerSubscriptions.push
(this.layer.subscribe(q,function(s,t){
h.isEnabled()&&r(s,t);}));},




getNodeForOwnerRef:function(q){
return this.owner.refs[q].getDOMNode();},






wrapReactContent:function(q){
return g.div({children:q});}},




p=

{createComponentConstructor:function(q){
var r=function(s){
this.props=s||{};};

m(r,o);
m(r,q);
return r;},


createComponent:function(q){
var r=p.createComponentConstructor(q),
s=function(t){
var u=t||this;
return new r(u);};

s.componentConstructor=r;
s.originalSpec=q;
return s;}};




e.exports=p;});

/** js/components/Layer/ContextualDialog.js */
__d("ReactContextualDialog",["array-extensions","ContextualDialog","ContextualDialogArrow","ReactLayer"],function(a,b,c,d,e,f){



b('array-extensions');

var g=b('ContextualDialog'),
h=b('ContextualDialogArrow'),
i=b('ReactLayer'),

j=i.createComponent

({immutableProps:
{modal:null},


handleGenLayer:function(k){
var l=this.getNodeForOwnerRef(this.props.contextRef),
m=
{context:l,
position:this.props.position,
alignment:this.props.alignment,
offsetX:this.props.offsetX,
offsetY:this.props.offsetY,
arrowBehavior:h,
addedBehaviors:this.enumerateBehaviors(this.props.behaviors)};

this.layer=new g(m,k);

this.layer.conditionShow(this.props.shown);},


handleUpdateAllProps:function(k){
this.updateBehaviors(k.behaviors);
this.layer.setContext(this.getNodeForOwnerRef(this.props.contextRef));
this.layer.setPosition(k.position);
this.layer.setAlignment(k.alignment);
this.layer.setOffsetX(k.offsetX);
this.layer.setOffsetY(k.offsetY);
this.layer.conditionShow(k.shown);}});




e.exports=j;});

/** js/crypto/md5.js */
__d("md5",[],function(a,b,c,d,e,f){







function g(u,v){
var w=u[0],
x=u[1],
y=u[2],
z=u[3];

w=i(w,x,y,z,v[0],7,-680876936);
z=i(z,w,x,y,v[1],12,-389564586);
y=i(y,z,w,x,v[2],17,606105819);
x=i(x,y,z,w,v[3],22,-1044525330);
w=i(w,x,y,z,v[4],7,-176418897);
z=i(z,w,x,y,v[5],12,1200080426);
y=i(y,z,w,x,v[6],17,-1473231341);
x=i(x,y,z,w,v[7],22,-45705983);
w=i(w,x,y,z,v[8],7,1770035416);
z=i(z,w,x,y,v[9],12,-1958414417);
y=i(y,z,w,x,v[10],17,-42063);
x=i(x,y,z,w,v[11],22,-1990404162);
w=i(w,x,y,z,v[12],7,1804603682);
z=i(z,w,x,y,v[13],12,-40341101);
y=i(y,z,w,x,v[14],17,-1502002290);
x=i(x,y,z,w,v[15],22,1236535329);

w=j(w,x,y,z,v[1],5,-165796510);
z=j(z,w,x,y,v[6],9,-1069501632);
y=j(y,z,w,x,v[11],14,643717713);
x=j(x,y,z,w,v[0],20,-373897302);
w=j(w,x,y,z,v[5],5,-701558691);
z=j(z,w,x,y,v[10],9,38016083);
y=j(y,z,w,x,v[15],14,-660478335);
x=j(x,y,z,w,v[4],20,-405537848);
w=j(w,x,y,z,v[9],5,568446438);
z=j(z,w,x,y,v[14],9,-1019803690);
y=j(y,z,w,x,v[3],14,-187363961);
x=j(x,y,z,w,v[8],20,1163531501);
w=j(w,x,y,z,v[13],5,-1444681467);
z=j(z,w,x,y,v[2],9,-51403784);
y=j(y,z,w,x,v[7],14,1735328473);
x=j(x,y,z,w,v[12],20,-1926607734);

w=k(w,x,y,z,v[5],4,-378558);
z=k(z,w,x,y,v[8],11,-2022574463);
y=k(y,z,w,x,v[11],16,1839030562);
x=k(x,y,z,w,v[14],23,-35309556);
w=k(w,x,y,z,v[1],4,-1530992060);
z=k(z,w,x,y,v[4],11,1272893353);
y=k(y,z,w,x,v[7],16,-155497632);
x=k(x,y,z,w,v[10],23,-1094730640);
w=k(w,x,y,z,v[13],4,681279174);
z=k(z,w,x,y,v[0],11,-358537222);
y=k(y,z,w,x,v[3],16,-722521979);
x=k(x,y,z,w,v[6],23,76029189);
w=k(w,x,y,z,v[9],4,-640364487);
z=k(z,w,x,y,v[12],11,-421815835);
y=k(y,z,w,x,v[15],16,530742520);
x=k(x,y,z,w,v[2],23,-995338651);

w=l(w,x,y,z,v[0],6,-198630844);
z=l(z,w,x,y,v[7],10,1126891415);
y=l(y,z,w,x,v[14],15,-1416354905);
x=l(x,y,z,w,v[5],21,-57434055);
w=l(w,x,y,z,v[12],6,1700485571);
z=l(z,w,x,y,v[3],10,-1894986606);
y=l(y,z,w,x,v[10],15,-1051523);
x=l(x,y,z,w,v[1],21,-2054922799);
w=l(w,x,y,z,v[8],6,1873313359);
z=l(z,w,x,y,v[15],10,-30611744);
y=l(y,z,w,x,v[6],15,-1560198380);
x=l(x,y,z,w,v[13],21,1309151649);
w=l(w,x,y,z,v[4],6,-145523070);
z=l(z,w,x,y,v[11],10,-1120210379);
y=l(y,z,w,x,v[2],15,718787259);
x=l(x,y,z,w,v[9],21,-343485551);

u[0]=r(w,u[0]);
u[1]=r(x,u[1]);
u[2]=r(y,u[2]);
u[3]=r(z,u[3]);}


function h(u,v,w,x,y,z){
v=r(r(v,u),r(x,z));
return r((v<<y)|(v>>>(32-y)),w);}


function i(u,v,w,x,y,z,aa){
return h((v&w)|((~v)&x),u,v,y,z,aa);}


function j(u,v,w,x,y,z,aa){
return h((v&x)|(w&(~x)),u,v,y,z,aa);}


function k(u,v,w,x,y,z,aa){
return h(v^w^x,u,v,y,z,aa);}


function l(u,v,w,x,y,z,aa){
return h(w^(v|(~x)),u,v,y,z,aa);}



function m(u){
var v=u.length,
w=[1732584193,-271733879,-1732584194,271733878],
x;
for(x=64;x<=u.length;x+=64)
g(w,n(u.substring(x-64,x)));

u=u.substring(x-64);
var y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
for(x=0;x<u.length;x++)
y[x>>2]|=u.charCodeAt(x)<<((x&3)<<3);

y[x>>2]|=128<<((x&3)<<3);
if(x>55){
g(w,y);
for(x=0;x<16;x++)
y[x]=0;}


y[14]=v*8;
g(w,y);
return w;}


function n(u){
var v=[],
w=0;
while(w<64)
v[w>>2]=u.charCodeAt(w++)|
(u.charCodeAt(w++)<<8)|
(u.charCodeAt(w++)<<16)|
(u.charCodeAt(w++)<<24);

return v;}


var o='0123456789abcdef'.split('');

function p(u){

var v='',
w=0;

for(;w<4;w++)
v+=o[(u>>((w<<3)+4))&15]+
o[(u>>(w<<3))&15];

return v;}


function q(u){
for(var v=0;v<u.length;v++)
u[v]=p(u[v]);

return u.join('');}








var r=function(u,v){
return (u+v)&4294967295;};













function s(u){

var v="",
w,
x;

for(var y=0;y<u.length;y++){

w=u.charCodeAt(y);
x=y+1<u.length?u.charCodeAt(y+1):0;
if(55296<=w&&w<=56319&&56320<=x&&x<=57343){
w=65536+((w&1023)<<10)+(x&1023);
y++;}



if(w<=127){
v+=String.fromCharCode(w);}else
if(w<=2047){
v+=String.fromCharCode(192|((w>>>6)&31),
128|(w&63));}else
if(w<=65535){
v+=String.fromCharCode(224|((w>>>12)&15),
128|((w>>>6)&63),
128|(w&63));}else
if(w<=2097151)
v+=String.fromCharCode(240|((w>>>18)&7),
128|((w>>>12)&63),
128|((w>>>6)&63),
128|(w&63));}



return v;}







function t(u){
if(null===u||undefined===u){
return null;}else{

for(var v=0;v<u.length;v++)
if(u[v]>"\u007F"){
u=s(u);
break;}



return q(m(u));}}




if(t('hello')!='5d41402abc4b2a76b9719d911017c592')
r=function(u,v){
var w=(u&65535)+(v&65535),
x=(u>>16)+(v>>16)+(w>>16);
return (x<<16)|(w&65535);};



e.exports=t;});

/** js/intl/isRTL.js */
__d("isRTL",[],function(a,b,c,d,e,f){






var g='A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF'+
'\u200E\u2C00-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF',



h='\u0591-\u07FF\u200F\uFB1D-\uFDFF\uFE70-\uFEFC',

i=new RegExp('^[^'+g+']*['+h+']'),

j=new RegExp('['+g+']');









function k(l){
var m=0,
n=0;


l.split(/\s+/,20).forEach
(function(o){

if(/^https?:\/\//.test(o))
return;


if(i.test(o)){
n++;
m++;}else

if(j.test(o))
m++;});







return !!(m&&(n/m>.4));}


e.exports=k;});

/** js/lib/intl/IntlDateFormats.js */
__d("IntlDateFormats",[],function(a,b,c,d,e,f){








var g={},
















h=










{setFormats:function(i,j){
g=j;},






getFormat:function(i){
if(!(i in g))
return i;

return g[i];}};



e.exports=h;});

/** js/lib/type/date.js */
__d("date-extensions",["IntlDateFormats","copyProperties","tx"],function(a,b,c,d,e,f){




var g=b('IntlDateFormats'),

h=b('copyProperties'),
i=b('tx'),

j=
["Sun","Mon","Tue","Wed","Thu",
"Fri","Sat"],

k=
["Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"],


l=
["Jan","Feb","Mar","Apr","May",
"Jun","Jul","Aug","Sep","Oct",
"Nov","Dec"],

m=
["January","February","March","April",
"May","June","July","August",
"September","October","November","December"];











function n(o,p){
p=p||2;
o=''+o;
while(o.length<p)
o='0'+o;

return o;}































Date.format=function(o,p,q){
var r=p?new Date(p*1000):new Date();
return r.format(o,q);};


h(Date.prototype,









{format:function(o,p){
if(!o)
return '';


var q=[],
r=null,
s=null,


t=(p?'getUTC':'get'),
u=this[t+'Date'](),
v=this[t+'Day'](),
w=this[t+'Month'](),
x=this[t+'FullYear'](),
y=this[t+'Hours'](),
z=this[t+'Minutes'](),
aa=this[t+'Seconds'](),
ba=this[t+'Milliseconds']();


for(var ca=0;ca<o.length;ca++){
s=o.charAt(ca);



if(s=='\\'){
ca++;
q.push(o.charAt(ca));
continue;}


switch(s){

case 'd':
r=n(u);
break;
case 'D':
r=j[v];
break;
case 'j':
r=u;
break;
case 'l':
r=k[v];
break;


case 'F':
r=m[w];
break;
case 'm':
r=n(w+1);
break;
case 'M':
r=l[w];
break;
case 'n':
r=w+1;
break;


case 'Y':
r=x;
break;
case 'y':
r=(''+x).slice(2);
break;


case 'a':
r=y<12?'am':'pm';
break;
case 'A':
r=y<12?'AM':'PM';
break;
case 'g':
r=(y==0||y==12)?12:y%12;
break;
case 'G':
r=y;
break;
case 'h':
r=(y==0||y==12)?12:n(y%12);
break;
case 'H':
r=n(y);
break;
case 'i':
r=n(z);
break;
case 's':
r=n(aa);
break;
case 'S':
r=n(ba,3);
break;


default:r=s;
}

q.push(r);}



return q.join('');}});



a.IntlDateFormats=g;},

3);

/** js/modules/AsyncUploadBase.js */
__d("AsyncUploadBase",["ArbiterMixin","AsyncRequest","AsyncResponse","Form","UserAgent","copyProperties"],function(a,b,c,d,e,f){



var g=b('ArbiterMixin'),
h=b('AsyncRequest'),
i=b('AsyncResponse'),
j=b('Form'),
k=b('UserAgent'),

l=b('copyProperties');





function m(o){





this.setURI(o);}


m.isSupported=function(){
if(k.webkit()&&!k.chrome()&&k.windows())


return false;

return ('FileList' in window)&&('FormData' in window);};


l(m.prototype,g,

{_limit:10,

setAllowCrossOrigin:function(o){
this._allowCrossOrigin=!!o;
return this;},







setData:function(o){
this._data=o;
return this;},







setLimit:function(o){
this._limit=o;
return this;},


setRelativeTo:function(o){
this._relativeTo=o;
return this;},


setStatusElement:function(o){
this._statusElement=o;
return this;},


setURI:function(o){
this._uri=o;
return this;},


_createFileUpload:function(o,p,q){
return new n(o,p,q);},


_parseFiles:function(o){
var p={};
for(var q in o){
var r=o[q];
if(Array.isArray(r)){
p[q]=r;}else{

p[q]=[];
if(r instanceof window.FileList){
for(var s=0;s<r.length;s++)
p[q].push(r.item(s));}else

if(r instanceof window.File||
r instanceof window.Blob)
p[q].push(r);}}



return p;},


_processQueue:function(){
while(this._pending.length<this._limit){
if(!this._waiting.length)
break;

var o=this._waiting.shift();
this._processUpload(o);
this._pending.push(o);}},



_processUpload:function(o){
var p=j.createFormData(o.getData()||this._data);
if(o.getFile()){
p.append(o.getName(),o.getFile());
p.append('upload_id',o.getFile().uploadID);}


var q=new h().
setAllowCrossOrigin(this._allowCrossOrigin).
setURI(this._uri).
setRawData(p).
setRelativeTo(this._relativeTo).
setStatusElement(this._statusElement).
setHandler(this._success.bind(this,o)).
setErrorHandler(this._failure.bind(this,o)).
setUploadProgressHandler(this._progress.bind(this,o)).
setInitialHandler(this._initial.bind(this,o));
q.send();

o.setAsyncRequest(q);

this.inform('start',o);},


_initial:function(o){
this.inform('initial',o);},


_success:function(o,p){
this.inform('success',o.handleSuccess(p));
this._complete(o);},


_failure:function(o,p){
if(this.inform('failure',o.handleFailure(p))!==false)
i.defaultErrorHandler(p);

this._complete(o);},


_progress:function(o,event){
this.inform('progress',o.handleProgress(event));},


_complete:function(o){
this._pending.remove(o);
this._processQueue();

if(!this._pending.length)

this._inFlight=false;}});









var n=function(o,p,q){
this._name=o;
this._file=p;
this._data=q;
this._success=null;
this._response=null;
this._progressEvent=null;
this._request=null;};


l(n.prototype,
{getName:function(){
return this._name;},

getFile:function(){
return this._file;},

getData:function(){
return this._data;},

isComplete:function(){
return this._success!==null;},

isSuccess:function(){
return this._success===true;},

getResponse:function(){
return this._response;},

getProgressEvent:function(){
return this._progressEvent;},

setAsyncRequest:function(o){
this._request=o;
return this;},


abort:function(){
this._request&&this._request.abort();
this._request=null;},





handleSuccess:function(o){
this._success=true;
this._response=o;
this._progressEvent=null;
return this;},

handleFailure:function(o){
this._success=false;
this._response=o;
this._progressEvent=null;
return this;},

handleProgress:function(event){
this._progressEvent=event;
return this;}});




e.exports=m;});

/** js/modules/AsyncUploadRequest.js */
__d("AsyncUploadRequest",["AsyncUploadBase","Class","copyProperties"],function(a,b,c,d,e,f){



var g=b('AsyncUploadBase'),
h=b('Class'),

i=b('copyProperties');










































function j(k){
this.parent.construct(this,k);}


j.isSupported=function(){
return g.isSupported();};


h.extend(j,g);

i(j.prototype,















{setFiles:function(k){
this._files=this._parseFiles(k);
return this;},


send:function(){
if(this._inFlight)







return;

this._inFlight=true;

this._uploads=[];
for(var k in this._files)
this._files[k].forEach(function(l){
this._uploads.push(this._createFileUpload(k,l));}.
bind(this));


if(this._uploads.length){
this._waiting=this._uploads.slice(0);
this._pending=[];

this._processQueue();}else 


this._processUpload(this._createFileUpload(null,null));},



_complete:function(k){
this.parent._complete(k);
if(!this._pending.length)
this.inform('complete',this._uploads);}});





e.exports=j;});

/** js/modules/FileForm.js */
__d("FileForm",["Event","ArbiterMixin","AsyncRequest","AsyncUploadRequest","AsyncResponse","BehaviorsMixin","DataStore","DOMQuery","Env","Form","JSONPTransport","Parent","URI","copyProperties"],function(a,b,c,d,e,f){



var g=b('Event'),

h=b('ArbiterMixin'),
i=b('AsyncRequest'),
j=b('AsyncUploadRequest'),
k=b('AsyncResponse'),
l=b('BehaviorsMixin'),
m=b('DataStore'),
n=b('DOMQuery'),
o=b('Env'),
p=b('Form'),
q=b('JSONPTransport'),
r=b('Parent'),
s=b('URI'),

t=b('copyProperties');





function u(w){
var x={},
y=n.scry(w,'input[type="file"]');
y.forEach(function(z){
x[z.name]=z.files;});

return x;}


function v(w,x,y){
if(w.getAttribute('rel')==='async')
throw new Error('FileForm cannot be used with Primer forms.');

if(w.getAttribute('method').toUpperCase()!=='POST')
throw new Error('FileForm must be used with POST forms.');


this._form=w;
this._previousEncoding=this._form.enctype;
this._form.enctype=this._form.encoding='multipart/form-data';

x&&this.enableBehaviors(x);

this._options=y||{};
this.setAllowCrossOrigin(this._options.allowCrossOrigin);
this.setUploadInParallel(this._options.uploadInParallel);

this._listener=g.listen(this._form,'submit',this._submit.bind(this));
m.set(this._form,'FileForm',this);}


t(v,
{EVENTS:['start','submit','initial','progress','success','failure'],

getInstance:function(w){
return m.get(w,'FileForm');}});



t(v.prototype,h,l,

{getRoot:function(){
return this._form;},





setAllowCrossOrigin:function(w){
this._allowCrossOrigin=!!w;
return this;},






setUploadInParallel:function(w){
this._uploadInParallel=!!w;
return this;},


_submit:function(event){
if(this.inform('submit')===false){
event.prevent();
return;}


var w='FormData' in window;
if(w)
if(!s(this._form.action).isSameOrigin()&&!this._allowCrossOrigin)





w=false;



return w?this._sendViaXHR(event):this._sendViaFrame(event);},


_sendViaFrame:function(event){



var w=this._request=new i();
w.setStatusElement(this._getStatusElement());
w.addStatusIndicator();
w.setOption('useIframeTransport',true);
var x=w.handleResponse.bind(w),

y=new q('iframe',this._form.action,x),

z=y.getTransportFrame(),
aa=y.getRequestURI().addQueryData
({__iframe:true,
__user:o.user});


this._form.setAttribute('action',aa.toString());
this._form.setAttribute('target',z.name);

w.setJSONPTransport(y);
w.setURI(aa);
w.setHandler(this.success.bind(this,null));
w.setErrorHandler(this.failure.bind(this,null));
w.setInitialHandler(this.initial.shield(this,null));},




_sendViaXHR:function(event){
var w;

if(this._uploadInParallel&&j.isSupported()){
w=new j().
setData(p.serialize(this._form)).
setFiles(u(this._form));
var x=
[w.subscribe('progress',function(y,z){
this.progress(z,z.getProgressEvent());}.
bind(this)),
w.subscribe('initial',function(y,z){
this.initial(z,z.getResponse());}.
bind(this)),
w.subscribe('success',function(y,z){
this.success(z,z.getResponse());}.
bind(this)),
w.subscribe('start',function(y,z){
this.inform('start',{upload:z});}.
bind(this)),
w.subscribe('failure',function(y,z){
this.failure(z,z.getResponse());
return false;}.
bind(this)),
w.subscribe('complete',function(){
while(x.length)
x.pop().unsubscribe();})];}else 




w=new i().
setRawData(p.createFormData(this._form)).
setHandler(this.success.bind(this,null)).
setErrorHandler(this.failure.bind(this,null)).
setUploadProgressHandler(this.progress.bind(this,null)).
setInitialHandler(this.initial.shield(this,null));


w.
setAllowCrossOrigin(this._allowCrossOrigin).
setRelativeTo(this._form).
setStatusElement(this._getStatusElement()).
setURI(this._form.action).
send();

this._request=w;


event.prevent();},


initial:function(w){
return this.inform('initial',{upload:w});},





success:function(w,x){
var y={response:x,upload:w};
if(this.inform('success',y)!==false)
g.fire(this._form,'success',y);

this._cleanup();},


failure:function(w,x){
var y={response:x,upload:w};
if(this.inform('failure',y)!==false)
if(g.fire(this._form,'error',y)!==false)
k.defaultErrorHandler(x);


this._cleanup();},


progress:function(w,event){
this.inform('progress',{event:event,upload:w});},


abort:function(){
if(this._request){
this._request.abort();
this._cleanup();}},



destroy:function(){
this._cleanup();
this._listener.remove();
this._listener=null;
this._form.enctype=this._form.encoding=this._previousEncoding;
m.remove(this._form,'FileForm');},


_cleanup:function(){
this._request=null;},


_getStatusElement:function(){
return r.byClass(this._form,'stat_elem')||this._form;}});




e.exports=v;});

/** js/modules/FileFormResetOnSubmit.js */
__d("FileFormResetOnSubmit",["DOMQuery","copyProperties"],function(a,b,c,d,e,f){



var g=b('DOMQuery'),

h=b('copyProperties');






function i(j){
this._form=j;}


h(i.prototype,

{enable:function(){
this._subscription=this._form.subscribe
('submit',

Function.prototype.defer.bind(this._reset.bind(this)));},



disable:function(){
this._subscription.unsubscribe();
this._subscription=null;},


_reset:function(){
var j=g.scry(this._form.getRoot(),'input[type="file"]');
j.forEach(function(k){
k.value='';});}});





e.exports=i;});

/** js/modules/submitForm.js */
__d("submitForm",["DOM"],function(a,b,c,d,e,f){



var g=b('DOM'),







h=function(i){
var j=g.scry(i,'input[type="submit"]')[0];
if(j){
j.click();}else{

j=g.create('input',
{type:'submit',
className:'hidden_elem'});

g.appendContent(i,j);
j.click();
g.remove(j);}};



e.exports=h;});

/** js/ui/xhp/form/modules/FormSubmitOnChange.js */
__d("FormSubmitOnChange",["Event","copyProperties","submitForm"],function(a,b,c,d,e,f){



var g=b('Event'),

h=b('copyProperties'),
i=b('submitForm');

function j(k){
this._form=k;}


h(j.prototype,
{_listener:null,

enable:function(){
this._listener=g.listen
(this._form.getRoot(),
'change',
this._submit.bind(this));},



disable:function(){
this._listener.remove();
this._listener=null;},


_submit:function(){
i(this._form.getRoot());}});



e.exports=j;});

/** js/mercury/attachments/MercuryFileUploader.js */
__d("MercuryFileUploader",["Event","ArbiterMixin","CSS","DOM","FileForm","FileFormResetOnSubmit","FileInput","FormSubmitOnChange","MercuryAttachment","MercuryAttachmentTemplates","copyProperties","csx","cx","getObjectValues","startsWith"],function(a,b,c,d,e,f){






var g=b('Event'),

h=b('ArbiterMixin'),
i=b('CSS'),
j=b('DOM'),
k=b('FileForm'),
l=b('FileFormResetOnSubmit'),
m=b('FileInput'),
n=b('FormSubmitOnChange'),
o=b('MercuryAttachment'),
p=b('MercuryAttachmentTemplates'),

q=b('copyProperties'),
r=b('csx'),
s=b('cx'),
t=b('getObjectValues'),
u=b('startsWith'),

v=0;

function w(y,z,aa,ba){
this._parentElem=y;
this._attachments={};
this._uploading={};
this._uploadTemplates={};

this._fileForm=new k
(z,[n,l]);

var ca=
j.find(z,"._3kt");




if(!aa)
aa=j.create('input',
{type:'file',
className:"_n",
name:'attachment[]',
multiple:1});



new m
(ca,
j.find(ca,"._213"),
aa);


this._subscriptions=
[this._fileForm.subscribe('submit',function(){
var da='upload_'+v++;
ba.value=da;

if(aa.files){
for(var ea=0;ea<aa.files.length;ea++)
this._addFileUploadRow(da,aa.files[ea].name);}else 


this._addFileUploadRow(da,aa.value);}.

bind(this)),
this._fileForm.subscribe('success',this._onFileUploadSuccess.bind(this))];}



q(w.prototype,h,

{isUploading:function(){
return !!Object.keys(this._uploading).length;},


getAttachments:function(){
return t(this._attachments);},


removeAttachments:function(){
this._attachments={};
this._uploadTemplates={};
this._uploading={};
j.empty(this._parentElem);

this.inform('dom-updated');},


destroy:function(){
this._subscriptions.forEach(function(y){
y.unsubscribe();});


this._fileForm.destroy();},


_addFileUploadRow:function(y,z){
var aa=p[':fb:mercury:upload-file-row'].
build(),

ba=x(z),
ca=y+'/'+ba;

this._uploadTemplates[ca]=aa;
this._uploading[ca]=true;


j.appendContent(aa.getNode('iconText'),ba);


g.listen(aa.getNode('closeFileUpload'),'click',
this._removeFileUploader.bind(this,ca));


j.appendContent(this._parentElem,aa.getRoot());
this.inform('dom-updated');},


_removeFileUploader:function(y,event){
delete this._attachments[y];
delete this._uploading[y];

var z=this._uploadTemplates[y];
delete this._uploadTemplates[y];

if(z){
j.remove(z.getRoot());
this.inform('dom-updated');}


this.inform('upload-canceled');
return false;},


_updateFileUploader:function(y,z){
var aa=this._uploadTemplates[y],

ba=
o.getAttachIconClassByMime(z.filetype);
i.addClass(aa.getNode('iconText'),ba);
i.addClass(aa.getRoot(),'done');},


_onFileUploadSuccess:function(event,y){
var z=y.response.getPayload(),


aa=z.uploadID,

ba=z.metadata;
for(var ca=0;ca<ba.length;ca++){
var da=aa+'/'+ba[ca].filename;

if(this._uploading[da]){
delete this._uploading[da];
this._attachments[da]=ba[ca];
this._updateFileUploader(da,ba[ca]);}}



if(!this.isUploading())
this.inform('all-uploads-completed');},



_onFileUploadFailure:function(event,y){

}});


function x(y){
if(y&&u(y,'C:\\fakepath\\'))
return y.substring(12);

return y;}


e.exports=w;});

/** js/typing/TypingDetector.js */
__d("TypingDetector",["Event","function-extensions","ArbiterMixin","Input","Run","copyProperties","createObjectFrom","emptyFunction"],function(a,b,c,d,e,f){



var g=b('Event');
b('function-extensions');

var h=b('ArbiterMixin'),
i=b('Input'),
j=b('Run'),

k=b('copyProperties'),
l=b('createObjectFrom'),
m=b('emptyFunction');

function n(o){
this._input=o;
this._ignoreKeys={};}



n.INACTIVE=0;
n.TYPING=1;
n.QUITTING=2;

k(n.prototype,h,


{_timeout:7000,


_currentState:n.INACTIVE,

init:function(){
this.init=m;
this.reset();

g.listen(this._input,'keyup',this._update.bind(this));
j.onUnload(this._onunload.bind(this));},


reset:function(){
clearTimeout(this._checkTimer);
this._checkTimer=null;
this._lastKeystrokeAt=null;
this._currentState=n.INACTIVE;},


setIgnoreKeys:function(o){
this._ignoreKeys=l(o);},


_onunload:function(){

if(this._currentState==n.TYPING)
this._transition(n.QUITTING);},



_update:function(event){
var o=g.getKeyCode(event),
p=this._currentState;

if(!this._ignoreKeys[o])
if(i.getValue(this._input).trim().length===0){
if(p==n.TYPING)
this._transition(n.INACTIVE);}else

if(p==n.TYPING){
this._recordKeystroke();}else
if(p==n.INACTIVE){
this._transition(n.TYPING);
this._recordKeystroke();}},




_transition:function(o){
this.reset();
this._currentState=o;
this.inform('change',o);},


_recordKeystroke:function(){
this._lastKeystrokeTime=Date.now();
if(!this._checkTimer)
this._checkTimer=this._checkTyping.
bind(this).
defer(this._timeout);},



_checkTyping:function(){
var o=this._lastKeystrokeTime+this._timeout,
p=Date.now();

if(p>o){
this._transition(n.INACTIVE);}else{


clearTimeout(this._checkTimer);
this._checkTimer=this._checkTyping.
bind(this).
defer(o-p+10);}}});




e.exports=n;});

/** js/mercury/models/MercuryTypingReceiver.js */
__d("MercuryTypingReceiver",["Arbiter","ChannelConstants","MercuryConstants","MercuryParticipants","MercuryServerRequests","MercuryThreads","TypingDetector","setTimeoutAcrossTransitions"],function(a,b,c,d,e,f){









var g=b('Arbiter'),
h=b('ChannelConstants'),
i=b('MercuryConstants'),
j=b('MercuryParticipants'),
k=b('MercuryServerRequests'),
l=b('MercuryThreads').get(),
m=b('TypingDetector'),

n=b('setTimeoutAcrossTransitions'),

o,
p={},



q=30000,

r=new g();





function s(x){
var y=p[x]||{},
z=Object.keys(y);
z.sort(function(aa,ba){return y[aa]-y[ba];});
return z;}


function t(){
o=null;

var x=Date.now(),
y={},
z=false;



for(var aa in p){
var ba=false;
for(var ca in p[aa]||{})
if(p[aa][ca]<x-q){
delete p[aa][ca];
ba=true;}else 

z=true;



if(ba)
y[aa]=s(aa);}



for(var da in y){
r.inform('state-changed',y);
break;}


if(z)
o=n(t,3000);}



function u(x,y){
if(x in p)
if(y in p[x]){
delete p[x][y];
v(x);}}




function v(x){
var y={};
y[x]=s(x);
r.inform('state-changed',y);}


function w(x){
if(x.thread)

return k.getClientThreadIDNow(x.thread);


if(x.type==='typ')
return l.getThreadIdForUser(x.from);


return null;}


g.subscribe
([h.getArbiterType('typ'),
h.getArbiterType('ttyp')],
function(x,y){
var z=y.obj,

aa=w(z);
if(aa){
var ba=j.getIDForUser(z.from);

if(z.st==m.TYPING){
p[aa]=p[aa]||{};

var ca=p[aa][ba];
p[aa][ba]=Date.now();

if(!o)
o=n(t,3000);


!ca&&v(aa);}else
if(z.st==m.INACTIVE)
u(aa,ba);}});





k.subscribe('update-typing-state',function(x,y){
var z=y.payload_source;
if(z!=i.MercuryPayloadSource.CLIENT_CHANNEL_MESSAGE)
return;


var aa=y.actions;
if(!aa||!aa.length)
return;


var ba=i.MercuryActionType.USER_GENERATED_MESSAGE;

aa.forEach(function(ca){
if(ca.action_type==ba&&
ca.author!=j.user)
u(ca.thread_id,ca.author);});});




e.exports=r;});

/** js/mercury/clients/chat/ChatTabIndicatorController.js */
__d("ChatTabIndicatorController",["date-extensions","ArbiterMixin","DOM","MercuryConfig","MercuryConstants","MercuryDelayedRoger","MercuryParticipants","MercuryRoger","MercuryThreads","MercuryTypingReceiver","copyProperties","tx"],function(a,b,c,d,e,f){

















b('date-extensions');

var g=b('ArbiterMixin'),
h=b('DOM'),
i=b('MercuryConfig'),
j=b('MercuryConstants'),
k=b('MercuryDelayedRoger'),
l=b('MercuryParticipants'),
m=b('MercuryRoger'),
n=b('MercuryThreads').get(),
o=b('MercuryTypingReceiver'),

p=b('copyProperties'),
q=b('tx'),

r=[];

function s(t){
this._threadID=t;
this._canonicalUser=n.getCanonicalUserInThread(t);

r.push(this);}


p(s.prototype,g,
{destroy:function(){
r.remove(this);},


setLastMessage:function(t){
this._lastMsg=t;
this._handleStateChange();},


_informStateChanged:function(t){

if(t.activity=='none'&&this._currentActivity=='none')
return;


this._currentActivity=t.activity;
this.inform('state-changed',t);},


_notifySentFrom:function(){
var t=j.MercuryMessageSourceTags,
u,v,

w=this._lastMsg.location_text,
x=this._lastMsg.source_tags||[];

if(w){
u=q._("Sent from {location}",{location:w});
v='sentFromMobile';}else
if(x.contains(t.MESSENGER)){
u=h.create
('a',

{href:'/mobile/messenger',
'class':'fcg',
target:'_blank'},

"Sent from Messenger");

v='sentFromMobile';}else
if(x.contains(t.MOBILE)){
u=h.create
('a',

{href:'/mobile',
'class':'fcg',
target:'_blank'},

"Sent from Mobile");

v='sentFromMobile';}else
if(x.contains(t.EMAIL)){
u="Sent from email";
v='sentFromEmail';}else{

this._informStateChanged({activity:'none'});
return;}


this._informStateChanged
({activity:v,
text:u});},



_notifySeenTimestamp:function(t){
var u=m.getSeenTimestamp(this._threadID,t[0])*
.001,
v=Date.now()*.001,

w=i['24h_times']?'H:i':'g:i A';

if(u<v-518400){

w='M j';}else
if(u<v-86400)

w='D '+w;


var x=Date.format(w,u);

this._informStateChanged
({activity:'seen-timestamp',
text:q._("Seen {timestamp}",{timestamp:x})});},



_notifySeenBy:function(t){
var u=this._lastMsg,
v=true;

l.getMulti(t,function(w){
v=false;



if(this._lastMsg!=u)
return;


var x=n.getThreadMetaNow(this._threadID),
y=x?x.participants.length:0,
z=t.length+(u.author!=l.user),

aa,
ba=false;
if(y>2&&z>=y-1){
aa="Seen by everyone";}else
if(t.length==1){
aa=q._("Seen by {user}",{user:w[t[0]].short_name});}else
if(t.length==2){
aa=q._("Seen by {user1}, {user2}",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name});}else

if(t.length==3){
aa=q._("Seen by {user1}, {user2}, {user3}",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name,
user3:w[t[2]].short_name});}else

if(t.length>3){
var ca=Object.keys(w).length-2,

da=q._("{num} more",{num:ca}),
ea=h.create('span',{className:'more'},da);

aa=h.tx._("Seen by {user1}, {user2}, {=num more link}",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name,
'=num more link':ea});


ba=true;}


this._informStateChanged
({activity:'seen-by',
text:aa,
seenBy:t,
tooltip:ba});}.

bind(this));



v&&this._informStateChanged({activity:'none'});},


_notifyTyping:function(t){
var u=this._lastMsg,
v=true;

l.getMulti(t,function(w){
v=false;



if(this._lastMsg!=u)
return;


if(this._canonicalUser||i.ChatMultiTypGK){
var x=n.getThreadMetaNow(this._threadID),
y=x?x.participants.length:0,

z,
aa=false;
if(y>2&&t.length>=y-1){
z="Everyone is typing...";}else
if(t.length==1){
z=q._("{name} is typing...",{name:w[t[0]].short_name});}else
if(t.length==2){
z=q._("{user1} and {user2} are typing...",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name});}else

if(t.length==3){
z=q._("{user1}, {user2}, and {user3} are typing...",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name,
user3:w[t[2]].short_name});}else

if(t.length>3){
var ba=Object.keys(w).length-2,

ca=q._("{num} more",{num:ba}),
da=h.create('a',{href:'#'},ca);

z=h.tx._("{user1}, {user2}, and {=num more link} are typing...",
{user1:w[t[0]].short_name,
user2:w[t[1]].short_name,
'=num more link':da});


aa=true;}


this._informStateChanged
({activity:'typing',
text:z,
typing:t,
tooltip:aa});}}.


bind(this));



v&&this._informStateChanged({activity:'none'});},


_handleStateChange:function(){
var t=j.MercuryActionType.LOG_MESSAGE;
if(!this._lastMsg||this._lastMsg.action_type==t){
this._informStateChanged({activity:'none'});
return;}


if(this._typing&&this._typing.length){
this._notifyTyping(this._typing);
return;}



if(this._canonicalUser&&
this._lastMsg.author!=l.user){
this._notifySentFrom();
return;}


var u=k.getSeenBy(this._threadID,true);
if(u.length)
if(this._canonicalUser){
this._notifySeenTimestamp(u);
return;}else{

this._notifySeenBy(u);
return;}



this._informStateChanged({activity:'none'});}});



o.subscribe('state-changed',function(t,u){
r.forEach(function(v){
var w=u[v._threadID];
if(w!==undefined){
v._typing=w;
v._handleStateChange();}});});




k.subscribe('state-changed',function(t,u){
r.forEach(function(v){
u[v._threadID]&&v._handleStateChange();});});



e.exports=s;});

/** js/mercury/clients/chat/ChatTabIndicatorLine.js */
__d("ChatTabIndicatorLine",["ChatTabIndicatorController","CSS","DOM","DOMQuery","MercuryParticipants","Tooltip","copyProperties","csx"],function(a,b,c,d,e,f){










var g=b('ChatTabIndicatorController'),
h=b('CSS'),
i=b('DOM'),
j=b('DOMQuery'),
k=b('MercuryParticipants'),
l=b('Tooltip'),

m=b('copyProperties'),
n=b('csx');









function o(p,q,r){
this._typingIndicator=q;
this._messagesView=r;

this._controller=new g(p);
this._subscription=this._controller.subscribe
('state-changed',
this._handleStateChanged.bind(this));}


m(o.prototype,
{destroy:function(){
this._setClass(null);
this._subscription.unsubscribe();
this._controller.destroy();},


setLastMessage:function(p){
this._controller.setLastMessage(p);},


_handleStateChanged:function(p,q){
var r=this._messagesView.isScrolledToBottom();
this._rerender(q);
r&&this._messagesView.scrollToBottom();},


_rerender:function(p){
if(p.activity=='none'){
this._setClass(null);
return;}


var q=i.find
(this._typingIndicator,
"._9q");

if(p.text){
i.setContent(q,p.text);}else 

i.empty(q);


if(p.activity.substring(0,4)=='seen'){
this._setClass('seen');
if(p.activity=='seen-by'&&p.tooltip)
k.getMulti(p.seenBy,function(r){
var s=i.create('div'),
t=0;
for(var u in r)
if(t++>=2){
var v=i.create('div');
i.setContent(v,r[u].name);
i.appendContent(s,v);}



var w=j.find(this._typingIndicator,'span.more');
l.set(w,s,'above','center');}.
bind(this));}else 


this._setClass(p.activity);},



_setClass:function(p){
if(this._lastClass===p)
return;



this._lastClass&&h.removeClass(this._typingIndicator,this._lastClass);


p&&h.addClass(this._typingIndicator,p);


this._lastClass=p;}});



e.exports=o;});

/** js/mercury/clients/muting/MercuryThreadMuter.js */
__d("MercuryThreadMuter",["AsyncDialog","AsyncRequest","Env","MercuryThreads"],function(a,b,c,d,e,f){




var g=b('AsyncDialog'),
h=b('AsyncRequest'),
i=b('Env'),
j=b('MercuryThreads').get(),

k=





{getUserIDEmail:function(){
return i.user+'@facebook.com';},






getThreadMuteSettingForUser:function(l){
return l.mute_settings&&l.mute_settings[k.getUserIDEmail()];},





isThreadMuted:function(l){
return k.getThreadMuteSettingForUser(l)!==undefined;},










showMuteChangeDialog:function(l,m){
g.send
(new h('/ajax/mercury/mute_thread_dialog.php').
setData({muting:l}),
function(n){
n.subscribe
('confirm',
function(){
this.hide();
j.updateThreadMuteSetting(m,l);}.
bind(n));});}};






e.exports=k;});

/** js/modules/core/endsWith.js */
__d("endsWith",[],function(a,b,c,d,e,f){



function g(h,i){










return h.indexOf(i,h.length-i.length)>-1;}


e.exports=g;});

/** js/mercury/emoticons/MessagesEmoticonView.js */
__d("MessagesEmoticonView",["Event","function-extensions","DOM","InputSelection","Parent","TextAreaControl","Toggler","copyProperties","endsWith","startsWith","EmoticonsList"],function(a,b,c,d,e,f){





var g=b('Event');
b('function-extensions');

var h=b('DOM'),
i=b('InputSelection'),
j=b('Parent'),
k=b('TextAreaControl'),
l=b('Toggler'),

m=b('copyProperties'),
n=b('endsWith'),
o=b('startsWith'),
p=b('EmoticonsList'),


q=p.symbols;

function r(t,u,v){
var w=j.byClass(t,'emoticon');
if(!w)
return;


var x='emoticon_',
y=null;
w.className.split(' ').forEach(function(fa){
if(o(fa,x))
y=fa.substring(x.length);});



if(!q[y])
return;


var z=k.getInstance(u),

aa=z.getValue(),
ba=q[y],

ca=aa.substring(0,v.start),
da=aa.substring(v.end);

if(v.start>0&&!n(ca,' '))
ba=' '+ba;


if(!o(da,' '))
ba+=' ';


var ea=ca+ba+da;

v.start+=ba.length;
v.end=v.start;

z.setValue(ea);

i.set(u,v.start,v.end);}













function s(t,u){
var v={start:0,end:0};

function w(){
v=i.get(u);}


var x=h.find(t,'.uiToggleFlyout');

this._subscription=l.subscribe('show',function(y,z){
if(z.active&&h.contains(t,z.active))
i.set(u,v.start,v.end);});



this._eventListeners=
[g.listen(x,'click',function(event){
l.hide(t);
r(event.getTarget(),u,v);}),

g.listen(u,'keyup',w),
g.listen(u,'click',w)];}



m(s.prototype,
{destroy:function(){
this._subscription.unsubscribe();
while(this._eventListeners.length)
this._eventListeners.pop().remove();}});




m(s,
{create:function(t,u){
return new s(t,u);}});



e.exports=s;});

/** js/mercury/models/MercuryStateCheck.js */
__d("MercuryStateCheck",["Arbiter","ChannelConstants","MercuryConstants","MercuryFolders","MercuryServerRequests","URI","copyProperties"],function(a,b,c,d,e,f){






var g=b('Arbiter'),
h=b('ChannelConstants'),
i=b('MercuryConstants'),
j=b('MercuryFolders'),
k=b('MercuryServerRequests'),
l=b('URI'),

m=b('copyProperties'),

n=m(new g(),
{initialize:function(){

g.subscribe
(h.ON_INVALID_HISTORY,
o);


d(['ChannelConnection'],function(p){
p.subscribe(p.CONNECTED,
function(q,r){
if(!r.init)


o();});});}});






function o(){
var p;
if(l.getRequestURI().getPath().search(/messages/)!==-1){
p=j.getSupportedFolders();}else 

p=[i.MessagingTag.INBOX];

k.fetchMissedMessages(p);}


n.initialize();

e.exports=n;});

/** js/sdk/DOMWrapper.js */
__d("DOMWrapper",[],function(a,b,c,d,e,f){










var g,
h,



i=
{setRoot:function(j){__t([j,'DOMElement?','root']);
g=j;},

getRoot:function(){return __t([function(){
return g||document.body;}.
apply(this,arguments),'DOMElement']);},
setWindow:function(j){
h=j;},

getWindow:function(){
return h||self;}};



e.exports=i;});

/** js/modules/Flash.js */
__d("Flash",["DOMWrapper","QueryString","UserAgent","copyProperties","guid"],function(a,b,c,d,e,f){













var g=b('DOMWrapper'),
h=b('QueryString'),
i=b('UserAgent'),

j=b('copyProperties'),
k=b('guid'),

l={},
m,
n=g.getWindow().document;

function o(t){
var u=n.getElementById(t);
if(u)
u.parentNode.removeChild(u);

delete l[t];}


function p(){
for(var t in l)
if(l.hasOwnProperty(t))
o(t);}







function q(t){
return t.replace
(/\d+/g,
function(u){return '000'.substring(u.length)+u;});}



function r(t){
if(!m){


if(i.ie()>=9)
window.attachEvent('onunload',p);

m=true;}

l[t]=t;}



var s=












{embed:function(t,u,v,w){

var x=k();

t=encodeURI(t);


v=j
({allowscriptaccess:'always',
flashvars:w,
movie:t},

v||{});


if(typeof v.flashvars=='object')
v.flashvars=h.encode(v.flashvars);



var y=[];
for(var z in v)
if(v.hasOwnProperty(z)&&v[z])

y.push('<param name="'+encodeURI(z)+'" value="'+
encodeURI(v[z])+'">');



var aa=n.createElement('div'),
ba=
'<object '+(i.ie()?
'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ':
'type="application/x-shockwave-flash"')+
'data="'+t+'" '+
'id="'+x+'">'+y.join('')+'</object>';
aa.innerHTML=ba;
var ca=u.appendChild(aa.firstChild);

r(x);
return ca;},







remove:o,





getVersion:function(){
var t='Shockwave Flash',
u='application/x-shockwave-flash',
v='ShockwaveFlash.ShockwaveFlash',
w;

if(navigator.plugins&&typeof navigator.plugins[t]=='object'){

var x=navigator.plugins[t].description;
if(x&&navigator.mimeTypes&&
navigator.mimeTypes[u]&&
navigator.mimeTypes[u].enabledPlugin)
w=x.match(/\d+/g);}


if(!w)

try{w=(new ActiveXObject(v)).
GetVariable('$version').
match(/(\d+),(\d+),(\d+),(\d+)/);
w=Array.prototype.slice.call(w,1);}catch(

y){
}

return w;},









checkMinVersion:function(t){
var u=s.getVersion();
if(!u)
return false;

return q(u.join('.'))>=q(t);},







isAvailable:function(){
return !!s.getVersion();}};




e.exports=s;});

/** js/react/core/ReactLayeredComponentMixin.js */
__d("ReactLayeredComponentMixin",["ReactOnDOMReady"],function(a,b,c,d,e,f){










var g=b('ReactOnDOMReady'),

h=





{renderLayers:function(){
return {};},


getAllRenderResults:function(){
return {instance:this.render(),layers:this.renderLayers()};},






handleGenMarkupResults:function(i){
this.renderedLayers={};
g.enqueue(this,function(j){
this.reconcileResults(i);});

return i.instance;},






reconcileResults:function(i){
var j=i.layers||{},
k=this.renderedLayers,

l,m,


n;
for(n in k){
if(!k.hasOwnProperty(n)||
!k[n])
continue;

m=k[n];
l=j[n];

if(!l||m.constructor!==l.constructor){
m.destroy();
delete this.renderedLayers[n];}}




for(n in j){
if(!j.hasOwnProperty(n)||
!j[n])
continue;

m=k[n];
l=j[n];

if(!m){
l.genLayer(this);
this.renderedLayers[n]=l;}else 

m.updateAllProps(l.props);}


return i.instance;}};




e.exports=h;});

/** js/report/social_resolution/ReportResolutionActionList.js */
__d("ReportResolutionActionList",["AsyncRequest","URI","md5"],function(a,b,c,d,e,f){








var g=b('AsyncRequest'),
h=b('URI'),
i=b('md5'),

j=





{_cache:{},










isInSocialReportHoldoutGroup:function(k,l){
if(!l)
return false;


var m=i(k.toString());
m=m.substring(l.start,l.start+l.length);
m=parseInt(m,16);

var n=l.buckets;
return (((m%n)+n)%n)<l.limit;},












fromServerOrCache:function(k,l,m,n){


if(k in j._cache){
n(j._cache[k]);
return;}


var o=h('/ajax/report/social_resolution/proxy/').
setQueryData
({attachment_fbid:k,
photo_fbid:l,
sender_id:m});

new g(o).
setHandler(function(p){
var q=p.payload;
if(q){

j._cache[k]=q;
n(q);}}).


send();}};



e.exports=j;});

/** js/mercury/renderers/MercuryAttachmentRenderer.js */
__d("MercuryAttachmentRenderer",["JSXDOM","MercuryAttachmentAudioClip","MercuryAttachmentTemplates","MercuryConstants","CSS","DOM","MercuryAttachment","MercuryMessages","MercuryParticipants","ReportResolutionActionList","Style","URI","UserAgent","cx","tx"],function(a,b,c,d,e,f){




var g=b('MercuryAttachmentAudioClip'),
h=b('MercuryAttachmentTemplates'),
i=b('MercuryConstants'),
j=b('CSS'),
k=b('DOM'),
l=b('MercuryAttachment'),
m=b('MercuryMessages').get(),
n=b('MercuryParticipants'),
o=b('ReportResolutionActionList'),
p=b('Style'),
q=b('URI'),
r=b('UserAgent'),

s=b('cx'),
t=b('tx'),

u=r.ie()<=8;

function v(y,z){
var aa=h[z].
build().
setNodeContent('filename',y.name),

ba=aa.getNode('link');
ba.setAttribute('href',y.url);
y.rel&&ba.setAttribute('rel',y.rel);

j.addClass(aa.getRoot(),
l.getAttachIconClass(y.icon_type));

return aa;}


function w(y,z){
var aa=h[z].
build().
setNodeContent('filename',y.name);

j.addClass(aa.getRoot(),
l.getAttachIconClass(y.icon_type));

return aa;}



var x=

{renderError:function(y){
var z=h[':fb:mercury:attachment:error'].
build();
k.appendContent(z.getNode('error'),y.error_msg);
return z.getRoot();},


renderExternalLink:function(y){
var z=h[':fb:mercury:attachment:external-link'].
build().
setNodeContent('name',y.name);

y.base_url&&z.setNodeContent('shortLink',y.base_url);

var aa=z.getNode('preview'),
ba=z.getNode('image-link');
ba.setAttribute('href',y.url);
y.rel&&ba.setAttribute('rel',y.rel);

if(y.preview_url){
var ca=z.getNode('preview-image');
ca.setAttribute('src',y.preview_url);
j.addClass(aa,y.preview_class);
j.show(ca);}else{

j.addClass(z.getRoot(),'noMedia');
j.hide(aa);}


z.getNode('name').setAttribute('href',y.url);
d(['LinkshimHandler'],function(da){
da.setUpLinkshimHandling(z.getNode('name'));
da.setUpLinkshimHandling
(z.getNode('image-link'));});



if(y.rel)
z.getNode('name').setAttribute('rel',y.rel);


return z.getRoot();},


renderFileLink:function(y){
var z=null;
if(y.url===''){
z=':fb:mercury:attachment:file-name';
return w(y,z).getRoot();}else{

z=':fb:mercury:attachment:file-link';
return v(y,z).getRoot();}},



renderAudioClip:function(y,z,aa){
if(!g)
return null;

var ba=y.metadata.duration/1000,
ca=200;
if(z&&aa)
if(ba<5){
ca=z;}else 

ca=(1-Math.pow(10,(ba-5)/-30))*
(aa-z)+z;


return g
({src:y.url,
duration:y.metadata.duration/1000,
width:ca});},



renderExtendedFileLink:function(y){
var z=null;
if(y.url===''){
z=':fb:mercury:attachment:file-name';
return w(y,z).getRoot();}

var z=':fb:mercury:attachment:extended-file-link',
aa=v(y,z);

if(y.open_url){
var ba=aa.getNode('openLinkContainer');
j.show(ba);

var ca=aa.getNode('openFile');
ca.setAttribute('href',y.open_url);}


var da=aa.getNode('downloadFile');
da.setAttribute('href',y.url);
y.rel&&da.setAttribute('rel',y.rel);

return aa.getRoot();},


renderMusic:function(y){
var z=h[':fb:mercury:attachment:music'].
build().
setNodeContent('filename',y.name),

aa=z.getNode('link');
aa.setAttribute('href',y.url);
aa.setAttribute('target','_blank');
y.rel&&aa.setAttribute('rel',y.rel);

var ba=z.getNode('image-link');
ba.setAttribute('href',y.url);
y.rel&&ba.setAttribute('rel',y.rel);

var ca=z.getNode('preview-image');
ca.setAttribute('src',y.preview_url);
j.show(ca);

j.addClass(z.getNode('icon_link'),'MercuryMusicIcon');
return z.getRoot();},












renderPreview:
function(y,
z,
aa,
ba,
ca,
da){
var ea=h[':fb:mercury:attachment:preview'].
build(),
fa=ea.getNode('image-link'),
ga='';

if(y){
fa.setAttribute('href',y.url);
y.rel&&fa.setAttribute('rel',y.rel);



ga=y.preview_url;
if(aa&&
q(ga).getPath()=='/ajax/messaging/attachment.php')
ga+=aa;

if(ba)
this.renderReportRespondLink
(ea.getRoot(),
y,
ba.message_id);


j.addClass(fa,y.preview_class);}else 




j.addClass(fa,"_ksa");


var ha=ea.getNode('preview-image');
z&&p.set(ha,'maxWidth',z+'px');
z&&p.set(ha,'maxHeight',z+'px');
if(ga){
ha.setAttribute('src',ga);
if(!u)
p.set
(fa,
'backgroundImage','url('+ga+')');}




return ea.getRoot();},


renderShareLink:function(y){
var z=h[':fb:mercury:attachment:share-link'].
build().
setNodeContent('name',y.name),

aa=z.getNode('link');
aa.setAttribute('href',y.url);
y.rel&&aa.setAttribute('rel',y.rel);

return z.getRoot();},


renderVideoThumb:function(y){
var z=h[':fb:mercury:attachment:video-thumb'].
build(),

aa=z.getNode('thumb');
aa.setAttribute('href',y.url);
aa.setAttribute('rel',y.rel);

var ba=k.find(z.getRoot(),'img');
ba.src=y.preview_url;

return z.getRoot();},








renderShareXHP:function(y,z){
var aa=k.create('div');
if(y){
var ba=y.share_xhp;
k.appendContent(aa,ba);
this.renderReportRespondLink(aa,y,z);}

return aa;},









renderReportRespondLink:function(y,z,aa){



if(!z.is_social_report_attachment)
return null;


switch(z.share_data_type){
case i.MercurySupportedShareType.FB_PHOTO:
break;
case i.MercurySupportedShareType.FB_SOCIAL_REPORT_PHOTO:



return null;

default:return null;
}

var ba=null;
if(aa)
ba=m.getMessagesFromIDs([aa])[0];


if(!ba)
return null;



if(ba.author===n.user)
return null;


var ca=n.getUserID(ba.author),

da=o.isInSocialReportHoldoutGroup
(ca,
i.SocialReportHoldout);

if(da){


o.fromServerOrCache
(z.attach_id,
z.shared_object_id,
ca,
function(fa){
k.appendContent(y,fa);});


return null;}


var ea=null;
n.get
(ba.author,
function(fa){
ea=k.create
('a',

{rel:'dialog-post',
className:"_z6l",
id:'respond-link',
ajaxify:
q('/ajax/report/social_resolution/photo/').
setQueryData
({attachment_fbid:z.attach_id,
photo_fbid:z.shared_object_id,
sender_id:n.getUserID(fa.id)}).
toString()});


k.setContent
(ea,
t._("Respond to {name}'s request",
{name:fa.name}));


k.appendContent(y,ea);});}};





e.exports=x;});

/** js/modules/URLScraper.js */
__d("URLScraper",["Event","ArbiterMixin","copyProperties"],function(a,b,c,d,e,f){



var g=b('Event'),

h=b('ArbiterMixin'),

i=b('copyProperties');

function j(ka){
this.input=ka;
this.enable();}


i(j.prototype,h,

{reset:function(){
this.lastPermissiveMatch=null;},


enable:function(){
if(this.events)return;
var ka=function(la){
setTimeout(this.check.bind(this,la),30);};

this.events=g.listen(this.input,
{paste:ka.bind(this,false),
keydown:ka.bind(this,true)});},



disable:function(){
if(!this.events)return;
for(var event in this.events)
this.events[event].remove();

this.events=null;},


check:function(ka){
var la=this.input.value;
if(ka&&j.trigger(la))return;
var ma=j.match(la),
na=j.permissiveMatch(la);



if(na&&
(na!=this.lastPermissiveMatch)){
this.lastPermissiveMatch=na;
this.inform('match',
{url:ma||na,alt_url:na});}}});











var k='!"#%&\'()*,-./:;<>?@[\\]^_`{|}',
l='\u2000-\u206F\u00ab\u00bb',


m='(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])',






n='(?:(?:ht|f)tps?)://',
o='(?:(?:'+m+'[.]){3}'+m+')',
p='(?:\\b)www\\d{0,3}[.]',
q='[^\\s'+k+l+']',
r='(?:(?:[.:\\-_%@]|'+q+')*'+q+')',
s='(?:[.][a-z]{2,4})',
t='(?::\\d+){0,1}',
u='(?=[/?#])',

v=
'(?:'+
'(?:'+n+r+t+')|'+
'(?:'+o+t+')|'+
'(?:'+p+r+s+t+')|'+
'(?:'+r+s+t+u+')'+
')',


w='[/#?]',
x='\\([^\\s()<>]+\\)',
y='[^\\s()<>?#]+',
z='[^\\s'+k+l+']',

aa=new RegExp(v,'im'),


ba=
'(?:'+
'(?:'+w+')'+
'(?:'+
'(?:'+x+'|'+y+')*'+
')*'+
')*',

ca=new RegExp
('('+
'(?:'+v+')'+
'(?:'+ba+')'+
')','im'),


da=new RegExp
('('+
'(?:'+n+r+t+')|'+
'(?:'+p+r+s+t+')'+
')'),



ea=/[\s'";]/,

fa=new RegExp(w,'im'),


ga=new RegExp
('[\\s!"#%&\'()*,-./:;<>?@[\\]^_`{|}\u00ab\u00bb\u2000-\u206F]','im'),



ha=new RegExp('[\\s()<>?#]','im'),


ia=new RegExp('\\s()<>'),

ja=function(ka){

if(ka&&ka.indexOf('@')!=-1){
return (da.exec(ka))?ka:null;}else 


return ka;};



i(j,

{match:function(ka){

var la=aa.exec(ka);
if(!la)return null;







var ma=ka.substr(la.index+la[0].length);


if(ma.length===0||
!(fa.test(ma[0])))
return ja(la[0]);

var na=0,


oa=0,
pa=1,

qa=oa;

for(var ra=1;ra<ma.length;ra++){
var sa=ma[ra];

if(qa===oa){
if(sa==='('){
qa=pa;}else

if(fa.test(sa)||
!(ga.test(sa))){
na=ra;}else

if(ha.test(sa))
break;}else 




if(sa===')'){
qa=oa;
na=ra;}else

if(ia.test(sa))
break;}






return ja
(la[0]+ma.substring(0,na+1));},



permissiveMatch:function(ka){
return j.matchToPattern(ka,ca);},


matchToPattern:function(ka,la){
var ma=(la.exec(ka)||[])[1]||null;
return ja(ma);},


trigger:function(ka){
return !ea.test(ka.charAt(ka.length-1));}});



e.exports=j;});

/** js/modules/htmlHyperlink.js */
__d("htmlHyperlink",["Env","htmlize","UntrustedLink","URI","URLScraper"],function(a,b,c,d,e,f){



var g=b('Env'),
h=b('htmlize'),
i=b('UntrustedLink'),
j=b('URI'),
k=b('URLScraper');






































function l(m,n,o,p){
if(typeof m==='undefined'||!m.toString)
return '';

if(typeof n!=='function')
n=h;

if(typeof o!=='function')
o=h;


var m=m.toString(),



q=[],

r;
while((r=k.match(m))){
var s=m.indexOf(r);


if(s>=0)
q.push(n(m.substring(0,s)));



var t=o(r),
u=r.replace(/"/g,'%22');
if(!(/^[a-z][a-z0-9\-+.]+:\/\//i.test(r)))
u='http://'+u;

q.push('<a target="_blank" rel="nofollow" href="'+
u+'"');
if(p&&!j(u).isFacebookURI()){


a.UntrustedLink=i;


q.push(' onmousedown="UntrustedLink.bootstrap(this, \''+
g.lhsh+'\', event)"');}

q.push('>'+t+'</a>');


m=m.substring(s+r.length);}



m&&q.push(n(m));

return q.join('');}


e.exports=l;});

/** js/mercury/renderers/MercuryMessageRenderer.js */
__d("MercuryMessageRenderer",["MercuryAttachmentRenderer","MercuryConstants","CSS","DOM","DOMQuery","HTML","MercuryEmoji","MercuryParticipants","Tooltip","cx","htmlHyperlink","tx"],function(a,b,c,d,e,f){





var g=b('MercuryAttachmentRenderer'),
h=b('MercuryConstants'),
i=b('CSS'),
j=b('DOM'),
k=b('DOMQuery'),
l=b('HTML'),
m=b('MercuryEmoji'),
n=b('MercuryParticipants'),
o=b('Tooltip'),

p=b('cx'),
q=b('htmlHyperlink'),
r=b('tx'),

s=
["January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"],


t=

{renderDate:function(ka){
var la=new Date();
la.setHours(0);
la.setMinutes(0);
la.setSeconds(0);
la.setMilliseconds(0);

var ma=24*60*60*1000,
na=la.getTime()-ka.getTime();
if(na<=0){
return "Today";}else
if(na<ma)
return "Yesterday";


var oa=s[ka.getMonth()],
pa=ka.getDate(),
qa=ka.getFullYear();
if(qa!=la.getFullYear()){
return r._("{month} {date}, {year}",
{month:oa,
date:pa,
year:qa});}else 


return r._("{month} {date}",
{month:oa,
date:pa});},




renderTooltipFlyout:function(ka,la){
la.forEach(function(ma){
var na=j.create('div');
j.setContent(na,ma.name);
j.appendContent(ka,na);});},



renderLogMessage:
function(ka,
la,
ma,
na){

w(ka,na);
x(la,na);
y(ma,na);},














formatMessageBody:function(ka,la,ma){




var na=(ka||'').replace(/\s+$/,'');

if(!la)
return v(na,false,ma);


var oa=Object.keys(la).
map(function(ra){
return window.parseInt(ra);}).
sort(function(ra,sa){


return ra-sa;}),



pa=[],
qa=0;
oa.forEach(function(ra){

var sa=na.slice(qa,ra);

if(sa)
pa.push(v(sa,false,ma));






qa=ra+la[ra].length;

var ta=na.slice(ra,qa);
if(ta)
pa.push(v(ta,true,ma));});




if(qa<na.length)
pa.push(v(na.slice(qa),false,ma));


return pa.length===0?null:
pa.length===1?pa[0]:j.create('span',{},pa);}};









function u(ka,la){
var ma=ka.replace(/\r\n?/g,'\n').split(/\n{2,}/),
na=[];


for(var oa=0;oa<ma.length;oa++){
var pa=ma[oa];
if(pa.length){
na.push('<p>');
na.push(la(pa));
na.push('</p>');}}


return na.join('');}












function v(ka,la,ma){
var na=null;











if(ka.length===0&&!la)
return na;


function oa(pa){
return q(pa,m.htmlEmojiAndEmote,null,true);}





na=ma?u(ka,oa):oa(ka);

if(la)
return j.create('span',{className:'highlight'},l(na));


return l(na);}


function w(ka,la){
var ma='',
na;
switch(la.log_message_type){
case h.MercuryLogMessageType.SUBSCRIBE:
ma='mercurySubscribeIcon';
break;
case h.MercuryLogMessageType.UNSUBSCRIBE:
ma='mercuryUnsubscribeIcon';
break;
case h.MercuryLogMessageType.THREAD_NAME:
ma='mercuryThreadNameIcon';
break;
case h.MercuryLogMessageType.THREAD_IMAGE:
ma='mercuryThreadImageIcon';
break;
case h.MercuryLogMessageType.VIDEO_CALL:
na=la.log_message_data.answered;
if(na||ja(la)){
ma='mercuryVideoCallIcon';}else 

ma='mercuryMissedVideoCallIcon';

break;
case h.MercuryLogMessageType.PHONE_CALL:
na=la.log_message_data.answered;
if(na){
ma='mercuryPhoneCallIcon';}else 

ma='mercuryMissedPhoneCallIcon';

break;
case h.MercuryLogMessageType.SERVER_ERROR:
ma='mercuryErrorIcon';
break;}

i.addClass(ka,ma);}


function x(ka,la){
switch(la.log_message_type){
case h.MercuryLogMessageType.SUBSCRIBE:
ga(ka,la);
break;
case h.MercuryLogMessageType.UNSUBSCRIBE:
ha(ka,la);
break;
case h.MercuryLogMessageType.VIDEO_CALL:
if(ja(la)){
z(ka,la);}else 

ba(ka,la);

break;
case h.MercuryLogMessageType.PHONE_CALL:
aa(ka,la);
break;
case h.MercuryLogMessageType.THREAD_NAME:
ca(ka,la);
break;
case h.MercuryLogMessageType.THREAD_IMAGE:
da(ka,la);
break;
case h.MercuryLogMessageType.SERVER_ERROR:
ia(ka,la);
break;}}



function y(ka,la){
var ma=la.log_message_type;
if(ma==h.MercuryLogMessageType.THREAD_IMAGE){
var na=la.log_message_data.image;

if(na){
var oa=
g.renderPreview(na.preview_url?na:null);
j.setContent(ka,oa);
i.addClass(oa,"_z6a");
i.show(ka);}}}




var z=function(ka,la){
n.get
(la.author,
function(ma){
var na=ma.short_name,
oa;
switch(la.log_message_data.event_name){
case 'installing':
oa=j.tx._("{firstname} is setting up video calling...",
{firstname:na});

break;
case 'installed':
oa=j.tx._("{firstname} finished setting up video calling.",
{firstname:na});

break;
case 'install_canceled':
oa=j.tx._("You canceled the video calling installation. ",
{firstname:na});

break;}

if(oa)
j.setContent(ka,oa);});},




aa=function(ka,la){
var ma=la.log_message_data.caller,
na=la.log_message_data.callee,

oa=[ma,na];

n.getMulti(oa,function(pa){
if(ma==n.user){
var qa=pa[na].short_name,
ra;
if(la.log_message_data.answered){
ra=j.tx._("You called {firstname}.",
{firstname:qa});}else 


ra=j.tx._("{firstname} missed a call from you. ",
{firstname:qa});}else{



var sa=pa[ma].short_name;
if(la.log_message_data.answered){
ra=j.tx._("{firstname} called you.",
{firstname:sa});}else 


ra=j.tx._("You missed a call from {firstname}. ",
{firstname:sa});}



j.setContent(ka,ra);});},



ba=function(ka,la){
var ma=la.log_message_data.caller,
na=la.log_message_data.callee,

oa=[ma,na];

n.getMulti(oa,function(pa){
if(ma==n.user){
var qa=pa[na].short_name,
ra;
if(la.log_message_data.answered){
ra=j.tx._("You called {firstname}.",
{firstname:qa});}else 


ra=j.tx._("{firstname} missed a call from you. ",
{firstname:qa});}else{



var sa=pa[ma].short_name;
if(la.log_message_data.answered){
ra=j.tx._("{firstname} called you.",
{firstname:sa});}else 


ra=j.tx._("You missed a call from {firstname}. ",
{firstname:sa});}



j.setContent(ka,ra);});},



ca=function(ka,la){
var ma=la.log_message_data.name,
na=j.create('b',{},ma);

if(la.author==n.user){
if(ma){
j.setContent
(ka,
j.tx._("You named the conversation: {name}.",{name:na}));}else 


j.setContent
(ka,
j.tx._("You removed the conversation name."));}else 



n.get(la.author,function(oa){
var pa,
qa=ea(oa);
if(ma){
pa=j.tx._("{actor} named the conversation: {name}.",
{actor:qa,name:na});}else 

pa=j.tx._("{actor} removed the conversation name.",
{actor:qa});

j.setContent(ka,pa);});},




da=function(ka,la){
if(la.author==n.user){
if(la.log_message_data.image){
j.setContent
(ka,
j.tx._("You changed the conversation picture."));}else 


j.setContent
(ka,
j.tx._("You removed the conversation picture."));}else 



n.get(la.author,function(ma){
var na=ea(ma),
oa;
if(la.log_message_data.image){
oa=j.tx._("{actor} changed the conversation picture.",
{actor:na});}else 


oa=j.tx._("{actor} removed the conversation picture.",
{actor:na});


j.setContent(ka,oa);});},




ea=function(ka){
if(ka.href)
return j.create('a',{href:ka.href},ka.name);

return ka.name;},


fa=function(ka){
var la=ka.indexOf(n.user);
if(la>0)
return ka.splice(la,1).concat(ka);

return ka;},


ga=function(ka,la){
var ma=fa
(la.log_message_data.added_participants),

na=null,
oa;

if(ma.length==1){
na=[la.author,ma[0]];
n.getMulti(na,function(pa){
if(la.author==n.user){
oa=j.tx._("You added {subscriber1}.",
{subscriber1:ea(pa[ma[0]])});}else

if(ma[0]==n.user){
oa=j.tx._("{actor} added you.",
{actor:ea(pa[la.author])});}else 


oa=j.tx._("{actor} added {subscriber1}.",
{actor:ea(pa[la.author]),
subscriber1:ea(pa[ma[0]])});


j.setContent(ka,oa);});}else

if(ma.length==2){
na=[la.author].concat(ma);
n.getMulti(na,function(pa){
if(la.author==n.user){
oa=j.tx._("You added {subscriber1} and {subscriber2}.",
{subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]])});}else

if(ma[0]==n.user){
oa=j.tx._("{actor} added you and {subscriber2}.",
{actor:ea(pa[la.author]),
subscriber2:ea(pa[ma[1]])});}else 


oa=j.tx._("{actor} added {subscriber1} and {subscriber2}.",
{actor:ea(pa[la.author]),
subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]])});


j.setContent(ka,oa);});}else

if(ma.length==3){
na=[la.author].concat(ma);
n.getMulti(na,function(pa){
if(la.author==n.user){
oa=j.tx._("You added {subscriber1}, {subscriber2} and {subscriber3}.",
{subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]]),
subscriber3:ea(pa[ma[2]])});}else

if(ma[0]==n.user){
oa=j.tx._("{actor} added you, {subscriber2} and {subscriber3}.",
{actor:ea(pa[la.author]),
subscriber2:ea(pa[ma[1]]),
subscriber3:ea(pa[ma[2]])});}else 


oa=j.tx._("{actor} added {subscriber1}, {subscriber2} and {subscriber3}.",
{actor:ea(pa[la.author]),
subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]]),
subscriber3:ea(pa[ma[2]])});


j.setContent(ka,oa);});}else{


na=[la.author].concat(ma);
n.getMulti(na,function(pa){
var qa=j.tx._("{num} more",
{num:ma.length-2}),
ra=j.create('span',{className:'more'},qa),

sa=j.create('div');
t.renderTooltipFlyout
(sa,
ma.slice(2).map
(function(ua){return pa[ua];}));



if(la.author==n.user){
oa=j.tx._("You added {subscriber1}, {subscriber2} and {more_people}.",
{subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]]),
more_people:ra});}else

if(ma[0]==n.user){
oa=j.tx._("{actor} added you, {subscriber2} and {more_people}.",
{actor:ea(pa[la.author]),
subscriber2:ea(pa[ma[1]]),
more_people:ra});}else 



oa=j.tx._("{actor} added {subscriber1}, {subscriber2} and {more_people}.",
{actor:ea(pa[la.author]),
subscriber1:ea(pa[ma[0]]),
subscriber2:ea(pa[ma[1]]),
more_people:ra});


j.setContent(ka,oa);


var ta=k.find(ka,'span.more');
o.set(ta,sa,'above','center');});}},




ha=function(ka,la){
n.get(la.author,function(ma){
var na;
if(la.author==n.user){
na=j.tx._("You left the conversation.");}else 

na=j.tx._("{actor} left the conversation.",
{actor:ea(ma)});



j.setContent(ka,na);});},



ia=function(ka,la){
var ma="We were unable to fetch previous messages in this conversation.";
j.setContent(ka,ma);},


ja=function(ka){
return ka.log_message_data.event_name==='installing'||
ka.log_message_data.event_name==='install_canceled';};


e.exports=t;});

/** js/mercury/sheet/MercurySheetPolicy.js */
__d("MercurySheetPolicy",[],function(a,b,c,d,e,f){



var g=
{canReplaceOpenSheet:function(h,i){

if(h.getType()==i.getType())
return false;



if(h.isPermanent()&&!i.isPermanent())
return false;


return true;}};




e.exports=g;});

/** js/mercury/sheet/MercurySheetView.js */
__d("MercurySheetView",["Animation","MercurySheetPolicy","CSS","DOM","Style","MercurySheetTemplates","Vector","copyProperties","cx"],function(a,b,c,d,e,f){








var g=b('Animation'),
h=b('MercurySheetPolicy'),
i=b('CSS'),
j=b('DOM'),
k=b('Style'),
l=b('MercurySheetTemplates'),
m=b('Vector'),

n=b('copyProperties'),
o=b('cx'),

p=5000,

q=
function(r,
s,
t){
this._threadID=r;
this._rootElement=s;
this._tabMainElement=t;
this._openSheet=null;};


n(q.prototype,
{destroy:function(){
j.empty(this._rootElement);},


_openCommon:function(r,s){
if(this._openSheet&&
!h.canReplaceOpenSheet(this._openSheet,r))
return;


this.clear(function(){
this._openSheet=r;


var t=
l[':fb:mercury:tab-sheet:loading'].build().getRoot();
j.setContent
(this._rootElement,
t);

i.show(t);

i.show(this._rootElement);
r.render();

if(s){

i.addClass(this._tabMainElement,'sheetSlide');
i.addClass(this._tabMainElement,"_1sk4");
var u=m.getElementDimensions(this._rootElement).y;
k.set(this._rootElement,'bottom',u+'px');


this._animation=new g(this._rootElement).
to('bottom',0).
duration(150).
ease(g.ease.both).
ondone
(function(){
i.removeClass(this._tabMainElement,'sheetSlide');
i.removeClass
(this._tabMainElement,
"_1sk4");}.

bind(this)).
go();}


if(!r.isPermanent()){

var v=p;
if(r.getCloseTimeout)
v=r.getCloseTimeout();



this._sheetCloseHandler=this.close.bind(this,r).defer
(v,
false);




if(r.timeoutCanBeReset)
r.setResetTimeoutCallback(this.resetTimeout.bind(this));}}.


bind(this));},


resetTimeout:function(r,s){
clearTimeout(this._sheetCloseHandler);

this._sheetCloseHandler=this.close.bind(this,r).defer
(s,
false);},




set:function(r){
return this._openCommon(r,false);},


open:function(r){
return this._openCommon(r,true);},


close:function(r,s){
if(this._openSheet!=r)
return;



if(!this._openSheet){
s&&s();
return;}






if(this._animation)
this._animation.stop();


if(this._sheetCloseHandler){
clearTimeout(this._sheetCloseHandler);
this._sheetCloseHandler=null;}



i.addClass(this._tabMainElement,'sheetSlide');
i.addClass(this._tabMainElement,"_1sk4");
var t=m.getElementDimensions(this._rootElement).y;


this._animation=new g(this._rootElement).
to('bottom',t+'px').
duration(100).
ease(g.ease.begin).
ondone
(function(){
j.empty(this._rootElement);
i.hide(this._rootElement);
i.removeClass(this._tabMainElement,'sheetSlide');
i.removeClass
(this._tabMainElement,
"_1sk4");

this._openSheet=null;

s&&s();}.
bind(this)).
go();},



clear:function(r){
this.close(this._openSheet,r);}});




e.exports=q;});

/** js/modules/Token.js */
__d("Token",["CSS","DataStore","DOM","copyProperties","tx"],function(a,b,c,d,e,f){



var g=b('CSS'),
h=b('DataStore'),
i=b('DOM'),

j=b('copyProperties'),
k=b('tx');




function l(m,n){
this.info=m;
this.paramName=n;}


j(l.prototype,

{getInfo:function(){
return this.info;},


getText:function(){
return this.info.text;},


getValue:function(){
return this.info.uid;},


isFreeform:function(){
return !!this.info.freeform;},


getElement:function(){
if(!this.element)
this.setElement(this.createElement());

return this.element;},


setElement:function(m){
h.set(m,'Token',this);
this.element=m;
return this;},


isRemovable:function(){
return g.hasClass(this.element,'removable');},


createElement:function(){
var m=this.paramName,
n=this.getText(),
o=this.getValue(),

p=i.create('a',
{href:'#',
'aria-label':k._("Remove {item}",{item:n}),
className:'remove uiCloseButton uiCloseButtonSmall'}),


q=i.create('input',
{type:'hidden',
value:o,
name:m+'[]',
autocomplete:'off'}),


r=i.create('input',
{type:'hidden',
value:n,
name:'text_'+m+'[]',
autocomplete:'off'}),


s=i.create('span',
{className:'removable uiToken'},
[n,q,r,p]);

return s;}});




e.exports=l;});

/** js/modules/Tokenizer.js */
__d("Tokenizer",["array-extensions","Event","Arbiter","ArbiterMixin","CSS","DataStore","DOM","DOMQuery","Focus","Input","Keys","Parent","StickyPlaceholderInput","Style","TextMetrics","Token","UserAgent","copyProperties","createObjectFrom","emptyFunction"],function(a,b,c,d,e,f){



b('array-extensions');
var g=b('Event'),

h=b('Arbiter'),
i=b('ArbiterMixin'),
j=b('CSS'),
k=b('DataStore'),
l=b('DOM'),
m=b('DOMQuery'),
n=b('Focus'),
o=b('Input'),
p=b('Keys'),
q=b('Parent'),
r=b('StickyPlaceholderInput'),
s=b('Style'),
t=b('TextMetrics'),
u=b('Token'),
v=b('UserAgent'),

w=b('copyProperties'),
x=b('createObjectFrom'),
y=b('emptyFunction');




function z(aa,ba){
this.element=aa;
this.typeahead=ba;
this.input=ba.getCore().getElement();

k.set(this.element,'Tokenizer',this);}


z.getInstance=function(aa){
var ba=q.byClass(aa,'uiTokenizer');
return ba?k.get(ba,'Tokenizer'):null;};


w(z.prototype,i,

{inline:false,
maxTokens:null,
excludeDuplicates:true,
placeholder:'',

init:function(aa,ba,ca,da){
this.init=y;

this.tokenarea=aa;
this.paramName=ba;
if(!this.placeholder)
this.placeholder=this.input.getAttribute('data-placeholder')||'';


w(this,da||{});

this.initEvents();
this.initTypeahead();
this.reset(ca);
this.initBehaviors();

h.inform('Tokenizer/init',this,h.BEHAVIOR_PERSISTENT);},


reset:function(aa){
this.tokens=[];
this.unique={};
if(aa){
this.populate(aa);}else 

l.empty(this.tokenarea);

this.updateTokenarea();},


populate:function(aa){
var ba=[];
this.tokens=this.getTokenElements().map(function(ca,da){
var ea=aa[da];
ba.push(this._tokenKey(ea));
return this.createToken(ea,ca);},
this);
this.unique=x(ba,this.tokens);},


getElement:function(){
return this.element;},


getTypeahead:function(){
return this.typeahead;},


getInput:function(){
return this.input;},


initBehaviors:function(){
this.behaviors=this.behaviors||[];
if(this.behaviors instanceof Array){
this.behaviors.forEach(function(ca){
ca.behavior(this,ca.config);}.
bind(this));}else 

for(var aa in (this.behaviors||{})){
var ba=window.TokenizerBehaviors&&
window.TokenizerBehaviors[aa];





ba.call(null,this,this.behaviors[aa]);}},




initTypeahead:function(){
var aa=this.typeahead.getCore();
aa.resetOnSelect=true;
aa.setValueOnSelect=false;
aa.preventFocusChangeOnTab=true;

if(this.inline){
var ba=this.typeahead.getView();
j.addClass(ba.getElement(),'uiInlineTokenizerView');}


this.typeahead.subscribe('select',function(ca,da){
var ea=da.selected;
if('uid' in ea){
this.updateInput();
this.addToken(this.createToken(ea));}}.

bind(this));

this.typeahead.subscribe('blur',this.handleBlur.bind(this));},


handleBlur:function(event){
this.inform('blur',{event:event});
this.updatePlaceholder();},


initEvents:function(){
var aa=this.handleEvents.bind(this),

ba=v.firefox()<4?'keypress':'keydown';
g.listen(this.tokenarea,{click:aa,keydown:aa});
g.listen(this.input,'paste',this.paste.bind(this));
g.listen(this.input,ba,this.keydown.bind(this));},


handleEvents:function(event){
var aa=event.getTarget(),
ba=aa&&this.getTokenElementFromTarget(aa);
if(!ba)return;
if(event.type!='keydown'||g.getKeyCode(event)==p.RETURN)
this.processEvents(event,aa,ba);},



processEvents:function(event,aa,ba){

if(q.byClass(aa,'remove')){
var ca=ba.nextSibling;
ca=ca&&m.scry(ba.nextSibling,'.remove')[0];
var da=this.getTokenFromElement(ba);
da=this.addTokenData(da,aa);
this.removeToken(da);


this.focusOnTokenRemoval(event,ca);
event.kill();}},







focusOnTokenRemoval:function(event,aa){
n.set(event.type=='keydown'&&aa||this.input);},



addTokenData:function(aa,ba){
return aa;},


keydown:function(event){
this.inform('keydown',{event:event});

var aa=g.getKeyCode(event),
ba=this.input;

if(this.inline&&aa==p.BACKSPACE&&o.isEmpty(ba)){
var ca=this.getLastToken();
if(ca&&ca.isRemovable())
this.removeToken(ca);}



this.updateInput();},


paste:function(event){
this.inform('paste',{event:event});
this.updateInput(true);},


focusInput:function(){
n.set(this.input);},


updateInput:function(aa){
if(!this.inline)return;



setTimeout(function(){
this.adjustWidth(this.input.value);

if(aa)this.input.value=this.input.value;}.
bind(this),20);






r.setPlaceholderText(this.input,'');},


setPlaceholder:function(aa){
this.placeholder=aa;
if(this.stickyPlaceholder)
r.setPlaceholderText(this.input,aa);

this.updatePlaceholder();},


updatePlaceholder:function(){
if(!this.inline||this.input.value)return;
var aa=!this.tokens.length,




ba='';
if(aa||this.stickyPlaceholder){
this.adjustWidth(this.placeholder);
ba=this.placeholder;}


r.setPlaceholderText(this.input,ba);},


adjustWidth:function(aa){
if(!this.inline||!this._getIsInDOM())
return;







if(!aa&&this.stickyPlaceholder&&this.input.value==='')
aa=this.placeholder;


var ba=this._getMetrics().measure(aa),



ca=ba.width+this._getWidthOffset()+10;
s.set(this.input,'width',ca+'px');},


getToken:function(aa){
return this.unique[aa]||null;},


getTokens:function(){
return this.tokens||[];},


getTokenElements:function(){
return m.scry(this.tokenarea,'span.uiToken');},


getTokenElementFromTarget:function(aa){
return q.byClass(aa,'uiToken');},


getTokenFromElement:function(aa){
return k.get(aa,'Token');},


getTokenValues:function(){
if(!this.tokens)
return [];


return this.tokens.map(function(aa){
return aa.getValue();});},



getFirstToken:function(){
return this.tokens[0]||null;},


getLastToken:function(){
return this.tokens[this.tokens.length-1]||null;},


hasMaxTokens:function(){
return this.maxTokens&&this.maxTokens<=this.tokens.length;},




createToken:function(aa,ba){
var ca=this.getToken(this._tokenKey(aa));
ca=ca||new u(aa,this.paramName);
ba&&ca.setElement(ba);
return ca;},


addToken:function(aa){
if(this.hasMaxTokens())return;
var ba=this._tokenKey(aa.getInfo());
if(ba in this.unique)return;
this.unique[ba]=aa;
this.tokens.push(aa);
this.insertToken(aa);
this.updateTokenarea();
this.inform('addToken',aa);
h.inform('Form/change',{node:this.element});},






insertToken:function(aa){
l.appendContent(this.tokenarea,aa.getElement());},


removeToken:function(aa){
if(!aa)return;
var ba=this.tokens.indexOf(aa);
if(ba<0)return;
this.tokens.splice(this.tokens.indexOf(aa),1);
delete this.unique[this._tokenKey(aa.getInfo())];
l.remove(aa.getElement());
this.updateTokenarea();
this.inform('removeToken',aa);
h.inform('Form/change',{node:this.element});},


removeAllTokens:function(){
this.reset();
this.inform('removeAllTokens');},


updateTokenarea:function(){
var aa=this.typeahead.getCore(),
ba=this.getTokenValues();
if(this.excludeDuplicates){
this._exclusions||(this._exclusions=aa.getExclusions());
aa.setExclusions(ba.concat(this._exclusions));}

aa.setEnabled(!this.hasMaxTokens());
this.updateTokenareaVisibility();
this.updatePlaceholder();
this.adjustWidth(this.placeholder);},



updateTokenareaVisibility:function(){
j.conditionShow(this.tokenarea,this.tokens.length!==0);},


_tokenKey:function(aa){
return aa.uid+(aa.freeform?':':'');},


_widthOffset:null,
_getWidthOffset:function(){
if(this._widthOffset===null){
var aa=this.input.clientWidth,
ba=s.getFloat(this.input,'width');

if(aa==ba){
this._widthOffset=s.getFloat(this.input,'paddingLeft')+
s.getFloat(this.input,'paddingRight');}else 


this._widthOffset=0;}


return this._widthOffset;},


_metrics:null,
_getMetrics:function(){
if(!this._metrics)
this._metrics=new t(this.input,this.inline);

return this._metrics;},


_getIsInDOM:function(){
return this._isInDOM||
(this._isInDOM=m.contains(document.body,this.input));}});




z.init=function(aa,ba){
aa.init
(ba.tokenarea,
ba.param_name,
ba.initial_info,
ba.options);};



e.exports=z;});

/** js/mercury/typeahead/MercuryTypeahead.js */
__d("MercuryTypeahead",["Event","ArbiterMixin","DOM","Input","MercuryTypeaheadTemplates","Tokenizer","Typeahead","TypeaheadCore","copyProperties","cx"],function(a,b,c,d,e,f){



var g=b('Event'),

h=b('ArbiterMixin'),
i=b('DOM'),
j=b('Input'),
k=b('MercuryTypeaheadTemplates'),
l=b('Tokenizer'),
m=b('Typeahead'),
n=b('TypeaheadCore'),

o=b('copyProperties'),
p=b('cx'),

q=function(r,s){
this._domElement=null;
this._typeahead=null;
this._tokenizer=null;
this._placeholder='';
this._exclusions=[];
this._viewNodeOrID=null;
this._viewOptions=
{renderer:'compact',
autoSelect:true};

this._tokenizerBehaviors=[];

this._dataSource=r;
this._view=s;};


o(q.prototype,h);
o(q.prototype,
{setPlaceholder:function(r){
this._placeholder=r;
return this;},







setExcludedParticipants:function(r){
this._exclusions=[];
r.forEach(function(s){
var t=s.indexOf(':');

if(s.substr(0,t)=='fbid')
this._exclusions.push(s.substr(t+1));}.

bind(this));
return this;},







setViewNodeID:function(r){
this._viewNodeOrID=r;},







setViewNode:function(r){
this._viewNodeOrID=r;},







setFullWidthView:function(r){




var s=i.create
('div',
{className:"_4ck uiTypeaheadView"});

i.setContent(r,s);
this.setViewNode(s);},


setViewOption:function(r,s){
this._viewOptions[r]=s;},


addTokenizerBehavior:function(r){
this._tokenizerBehaviors.push(r);},








build:function(r){
if(this._domElement)

return;


var s=k[':fb:mercury:tokenizer'].
build(),
t=k[':fb:mercury:typeahead'].
build();

this._domElement=s.getRoot();

i.appendContent
(this._domElement,
t.getRoot());


var u=t.getNode('textfield');
j.setPlaceholder(u,this._placeholder);

u.setAttribute('data-placeholder',this._placeholder);


var v=
{node_id:this._viewNodeOrID,
ctor:this._view,
options:this._viewOptions},

w=
{ctor:n,
options:{setValueOnSelect:true}};

this._typeahead=new m
(this._dataSource,
v,
w,
t.getRoot());

this._typeahead.init();


var x=
{inline:true,
behaviors:this._tokenizerBehaviors};

this._tokenizer=new l
(this._domElement,
this._typeahead);

this._tokenizer.init
(s.getNode('tokenarea'),
'participants',
[],
x);

this._tokenizer.subscribe
(['addToken','removeToken','removeAllTokens'],
function(){this.inform('tokens-changed');}.bind(this));


g.listen
(u,
'focus',
function(){
this._resetDataSource();
this._typeahead.init();}.
bind(this));

g.listen
(this._domElement,
'click',
this.focus.bind(this));},



getElement:function(){
return this._domElement;},


getSelectedParticipantIDs:function(){
var r=[];

if(this._tokenizer)

(this._tokenizer.getTokenValues()||[]).forEach(function(s){
r.push('fbid:'+s);});



return r;},


getTokens:function(){
var r=[];
if(this._tokenizer)
r=this._tokenizer.getTokens();


return r;},


getTokenizer:function(){
return this._tokenizer;},


reset:function(){
this._tokenizer&&this._tokenizer.removeAllTokens();
this._typeahead&&this._typeahead.getCore().reset();},







focus:function(){
this._tokenizer&&this._tokenizer.focusInput();},


getTypeahead:function(){
return this._typeahead;},






_resetDataSource:function(){
this._dataSource.setExclusions(this._exclusions);}});



e.exports=q;});

/** js/modules/SubscriptionsHandler.js */
__d("SubscriptionsHandler",["JSLogger","copyProperties"],function(a,b,c,d,e,f){





























var g=b('JSLogger'),
h=b('copyProperties'),

i=g.create('subscriptions_handler');

function j(k){
this._name=k||'unnamed';
this._subscriptions=[];}


h(j.prototype,
{addSubscriptions:function(){
if(this._subscriptions){
Array.prototype.push.apply(this._subscriptions,arguments);}else{


i.warn(this._name+'.subscribe_while_released');


for(var k=0,l=arguments.length;k<l;k++)
this._unsubscribe(arguments[k]);}},




engage:function(){
this._subscriptions=this._subscriptions||[];},


release:function(){
if(this._subscriptions)
this._subscriptions.forEach(this._unsubscribe.bind(this));

this._subscriptions=null;},


_unsubscribe:function(k){
if(k.remove){
k.remove();}else
if(k.reset){
k.reset();}else
if(k.unsubscribe){
k.unsubscribe();}else 

i.error(this._name+'.invalid',k);}});










e.exports=j;});

/** js/modules/core/escapeRegex.js */
__d("escapeRegex",[],function(a,b,c,d,e,f){







function g(h){

return h.replace(/([.?*+\^$\[\]\\(){}|\-])/g,"\\$1");}


e.exports=g;});

/** js/ui/xhp/typeahead/renderers/CompactTypeaheadRendererLegacy.js */
__d("legacy:CompactTypeaheadRenderer",["CompactTypeaheadRenderer"],function(a,b,c,d){



if(!a.TypeaheadRenderers)a.TypeaheadRenderers={};
a.TypeaheadRenderers.compact=b('CompactTypeaheadRenderer');},

3);
