diff --git a/.gitignore b/.gitignore index d9775c798..1f02b52e8 100644 --- a/.gitignore +++ b/.gitignore @@ -78,6 +78,7 @@ yap *cmake_files C/pl-yap.c GitSHA1.c +.vscode CMakeLists.txt.* FindPackageLog.txt GitSHA1.c @@ -112,10 +113,13 @@ packages/real/rconfig.h packages/ProbLog/problog/#completion.yap# -packages/ProbLog/problog_examples/output/out.dat +packages/ProbLog/problog_examples/output +packages/ProbLog/problog_examples/queries +packages/swig/java/*.java +packages/swig/java/*.class +packages/swig/java/*.jar +packages/swig/java/*wrap* +*jnilib +*.jar -packages/ProbLog/problog_examples/output/,_query_1_cluster_1.dot - -packages/ProbLog/problog_examples/output/out.dat - -packages/ProbLog/problog_examples/output/,_query_1_cluster_1 +packages/cplint/approx/simplecuddLPADs/LPADBDD diff --git a/C/adtdefs.c b/C/adtdefs.c index 892c1e019..ea1d2d2fa 100755 --- a/C/adtdefs.c +++ b/C/adtdefs.c @@ -795,12 +795,6 @@ Prop Yap_NewPredPropByFunctor(FunctorEntry *fe, Term cur_mod) { p->beamTable = NULL; #endif /* BEAM */ /* careful that they don't cross MkFunctor */ - if (PRED_GOAL_EXPANSION_FUNC) { - if (fe->PropsOfFE && - (RepPredProp(fe->PropsOfFE)->PredFlags & GoalExPredFlag)) { - p->PredFlags |= GoalExPredFlag; - } - } if (!trueGlobalPrologFlag(DEBUG_INFO_FLAG)) { p->PredFlags |= NoTracePredFlag; } @@ -918,7 +912,7 @@ Prop Yap_NewPredPropByAtom(AtomEntry *ae, Term cur_mod) { p->cs.p_code.FirstClause = p->cs.p_code.LastClause = NULL; p->cs.p_code.NOfClauses = 0; p->PredFlags = 0L; - p->src.OwnerFile = AtomNil; + p->src.OwnerFile = LOCAL_SourceFileName; p->OpcodeOfPred = UNDEF_OPCODE; p->cs.p_code.ExpandCode = EXPAND_OP_CODE; p->CodeOfPred = p->cs.p_code.TrueCodeOfPred = (yamop *)(&(p->OpcodeOfPred)); @@ -936,21 +930,6 @@ Prop Yap_NewPredPropByAtom(AtomEntry *ae, Term cur_mod) { p->beamTable = NULL; #endif /* careful that they don't cross MkFunctor */ - if (PRED_GOAL_EXPANSION_FUNC) { - Prop p1 = ae->PropsOfAE; - - while (p1) { - PredEntry *pe = RepPredProp(p1); - - if (pe->KindOfPE == PEProp) { - if (pe->PredFlags & GoalExPredFlag) { - p->PredFlags |= GoalExPredFlag; - } - break; - } - p1 = pe->NextOfPE; - } - } AddPropToAtom(ae, (PropEntry *)p); p0 = AbsPredProp(p); p->FunctorOfPred = (Functor)AbsAtom(ae); diff --git a/C/amasm.c b/C/amasm.c index 5f169884b..343ef8d6c 100755 --- a/C/amasm.c +++ b/C/amasm.c @@ -3875,7 +3875,7 @@ Yap_assemble(int mode, Term t, PredEntry *ap, int is_fact, struct intermediates cl->ClSize = osize; cip->code_addr = (yamop *)cl; } else if (mode == ASSEMBLING_CLAUSE && - (ap->PredFlags & SourcePredFlag || + (ap->PredFlags & (SourcePredFlag|MultiFileFlag) || trueGlobalPrologFlag(SOURCE_FLAG ) ) && !is_fact) { DBTerm *x; diff --git a/C/atomic.c b/C/atomic.c index 612cb607c..0920f7c14 100644 --- a/C/atomic.c +++ b/C/atomic.c @@ -1153,7 +1153,8 @@ atomic_concat2( USES_REGS1 ) seq_tv_t *inpv = (seq_tv_t *)malloc(n*sizeof(seq_tv_t)), out; int i = 0; Atom at; - + + if (n == 1) return Yap_unify(ARG2, HeadOfTerm(t1)); if (!inpv) { LOCAL_Error_TYPE = RESOURCE_ERROR_HEAP; free(inpv); diff --git a/C/c_interface.c b/C/c_interface.c index 8a8a32fe7..5883175ad 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -2394,6 +2394,7 @@ X_API void YAP_ClearExceptions(void) { } X_API int YAP_InitConsult(int mode, const char *filename, int *osnop) { + CACHE_REGS FILE *f; int sno; BACKUP_MACHINE_REGS(); @@ -2403,7 +2404,7 @@ X_API int YAP_InitConsult(int mode, const char *filename, int *osnop) { } bool consulted = (mode == YAP_CONSULT_MODE); Yap_init_consult(consulted, filename); - f = fopen(filename, "r"); + f = fopen(Yap_AbsoluteFile(filename, LOCAL_FileNameBuf, FILENAME_MAX-1), "r"); if (!f) return -1; sno = Yap_OpenStream(f, NULL, TermNil, Input_Stream_f); @@ -2717,7 +2718,7 @@ X_API Int YAP_Init(YAP_init_args *yap_init) { setBooleanGlobalPrologFlag(HALT_AFTER_CONSULT_FLAG, yap_init->HaltAfterConsult); } - /* tell the system who should cope with interrupts */ + /* tell the scystem who should cope with interrupts */ Yap_ExecutionMode = yap_init->ExecutionMode; if (do_bootstrap) { restore_result = YAP_BOOT_FROM_PROLOG; @@ -3326,7 +3327,6 @@ X_API int YAP_FileNoFromStream(Term t) { if (IsVarTerm(t)) return -1; return Yap_StreamToFileNo(t); - return -1; } X_API void *YAP_FileDescriptorFromStream(Term t) { @@ -3335,7 +3335,6 @@ X_API void *YAP_FileDescriptorFromStream(Term t) { if (IsVarTerm(t)) return NULL; return Yap_FileDescriptorFromStream(t); - return NULL; } X_API void *YAP_Record(Term t) { @@ -3588,7 +3587,6 @@ Term YAP_BPROLOG_curr_toam_status; * @return a positive number with the size, or 0. */ size_t YAP_UTF8_TextLength(Term t) { - Term *aux; utf8proc_uint8_t dst[8]; size_t sz = 0; diff --git a/C/cdmgr.c b/C/cdmgr.c index e7f32c563..2e5346af0 100644 --- a/C/cdmgr.c +++ b/C/cdmgr.c @@ -212,7 +212,7 @@ * fix several bugs in save/restore.b * * Revision 1.171 2005/10/29 01:28:37 vsc -* make undefined more ISO compatible. +* make undefinedore ISO compatible. * * Revision 1.170 2005/10/18 17:04:43 vsc * 5.1: @@ -493,7 +493,6 @@ static int not_was_reconsulted(PredEntry *, Term, int); static int RemoveIndexation(PredEntry *); static Int p_number_of_clauses(USES_REGS1); static Int p_compile(USES_REGS1); -static Int p_compile_dynamic(USES_REGS1); static Int p_purge_clauses(USES_REGS1); static Int p_setspy(USES_REGS1); static Int p_rmspy(USES_REGS1); @@ -1477,12 +1476,6 @@ static void add_first_static(PredEntry *p, yamop *cp, int spy_flag) { CACHE_REGS yamop *pt = cp; - if (is_logupd(p)) { - if (p == PredGoalExpansion || p->FunctorOfPred == FunctorGoalExpansion2) { - PRED_GOAL_EXPANSION_ON = TRUE; - Yap_InitComma(); - } - } else { #ifdef TABLING if (is_tabled(p)) { p->OpcodeOfPred = INDEX_OPCODE; @@ -1490,7 +1483,6 @@ static void add_first_static(PredEntry *p, yamop *cp, int spy_flag) { (yamop *)(&(p->OpcodeOfPred)); } #endif /* TABLING */ - } p->cs.p_code.TrueCodeOfPred = pt; p->cs.p_code.FirstClause = p->cs.p_code.LastClause = cp; p->OpcodeOfPred = pt->opc; @@ -1531,10 +1523,7 @@ static void add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag) { CACHE_REGS yamop *ncp = ((DynamicClause *)NULL)->ClCode; DynamicClause *cl; - if (p == PredGoalExpansion || p->FunctorOfPred == FunctorGoalExpansion2) { - PRED_GOAL_EXPANSION_ON = TRUE; - Yap_InitComma(); - } + if (PROFILING) { p->PredFlags |= ProfiledPredFlag; spy_flag = TRUE; @@ -1615,8 +1604,8 @@ static void add_first_dynamic(PredEntry *p, yamop *cp, int spy_flag) { ncp = NEXTOP(ncp, e); ncp->opc = Yap_opcode(_Ystop); ncp->y_u.l.l = cl->ClCode; - if (!(p->PredFlags & MultiFileFlag) && p->src.OwnerFile == AtomNil) - p->src.OwnerFile = Yap_ConsultingFile(PASS_REGS1); + //if (!(p->PredFlags & MultiFileFlag) && p->src.OwnerFile == AtomNil) + // p->src.OwnerFile = Yap_ConsultingFile(PASS_REGS1); } /* p is already locked */ @@ -1851,7 +1840,7 @@ static int not_was_reconsulted(PredEntry *p, Term t, int mode) { !(p->PredFlags & MultiFileFlag)) /* we are in reconsult mode */ { retract_all(p, Yap_static_in_use(p, TRUE)); } - p->src.OwnerFile = Yap_ConsultingFile(PASS_REGS1); + //p->src.OwnerFile = Yap_ConsultingFile(PASS_REGS1); } LOCAL_LastAssertedPred = p; return TRUE; /* careful */ @@ -1948,7 +1937,7 @@ bool Yap_multiple(PredEntry *ap, int mode USES_REGS) { register consult_obj *fp; if ((ap->PredFlags & (MultiFileFlag | LogUpdatePredFlag | DynamicPredFlag)) || - mode == consult) + mode == TermConsult) return false; if (LOCAL_consult_level == 0) return false; @@ -1974,126 +1963,6 @@ static int is_fact(Term t) { return FALSE; } -static void mark_preds_with_this_func(Functor f, Prop p0) { - PredEntry *pe = RepPredProp(p0); - - pe->PredFlags |= GoalExPredFlag; - Prop p = f->PropsOfFE; - - while (p) { - Prop nextp = p->NextOfPE; - pe = RepPredProp(p); - - pe->PredFlags |= GoalExPredFlag; - p = nextp; - } -} - -static void mark_preds_with_this_atom(Prop p) { - while (p) { - Prop nextp = p->NextOfPE; - if (p->KindOfPE == PEProp) - RepPredProp(p)->PredFlags |= GoalExPredFlag; - p = nextp; - } -} - -static void goal_expansion_support(PredEntry *p, Term tf) { - if (p == PredGoalExpansion) { - Term tg = ArgOfTerm(1, tf); - Term tm = ArgOfTerm(2, tf); - - if (IsVarTerm(tg) || IsVarTerm(tm)) { - if (!IsVarTerm(tg)) { - /* this is the complicated case, first I need to inform - predicates for this functor */ - PRED_GOAL_EXPANSION_FUNC = TRUE; - if (IsAtomTerm(tg)) { - AtomEntry *ae = RepAtom(AtomOfTerm(tg)); - Prop p0 = ae->PropsOfAE; - int found = FALSE; - - while (p0) { - PredEntry *pe = RepPredProp(p0); - if (pe->KindOfPE == PEProp) { - pe->PredFlags |= GoalExPredFlag; - found = TRUE; - } - p0 = pe->NextOfPE; - } - if (!found) { - PredEntry *npe = - RepPredProp(PredPropByAtom(AtomOfTerm(tg), IDB_MODULE)); - npe->PredFlags |= GoalExPredFlag; - } - } else if (IsApplTerm(tg)) { - FunctorEntry *fe = (FunctorEntry *)FunctorOfTerm(tg); - Prop p0; - - p0 = fe->PropsOfFE; - if (p0) { - mark_preds_with_this_func(FunctorOfTerm(tg), p0); - } else { - CACHE_REGS - Term mod = CurrentModule; - PredEntry *npe; - if (CurrentModule == PROLOG_MODULE) - mod = IDB_MODULE; - npe = RepPredProp(PredPropByFunc(fe, mod)); - npe->PredFlags |= GoalExPredFlag; - } - } - } else { - PRED_GOAL_EXPANSION_ALL = TRUE; - } - } else { - if (IsAtomTerm(tm)) { - if (IsAtomTerm(tg)) { - PredEntry *p = RepPredProp(PredPropByAtom(AtomOfTerm(tg), tm)); - p->PredFlags |= GoalExPredFlag; - } else if (IsApplTerm(tg)) { - PredEntry *p = RepPredProp(PredPropByFunc(FunctorOfTerm(tg), tm)); - p->PredFlags |= GoalExPredFlag; - } - } - } - } else if (p->FunctorOfPred == FunctorGoalExpansion2) { - Term tg = ArgOfTerm(1, tf); - - if (IsVarTerm(tg)) { - PRED_GOAL_EXPANSION_ALL = TRUE; - } else if (IsApplTerm(tg)) { - FunctorEntry *fe = (FunctorEntry *)FunctorOfTerm(tg); - Prop p0; - PredEntry *npe; - - p0 = fe->PropsOfFE; - if (p0 && (p->ModuleOfPred == PROLOG_MODULE || - p->ModuleOfPred == SYSTEM_MODULE || - p->ModuleOfPred == USER_MODULE)) { - mark_preds_with_this_func(fe, p0); - PRED_GOAL_EXPANSION_FUNC = TRUE; - } - npe = RepPredProp(PredPropByFunc(fe, p->ModuleOfPred)); - npe->PredFlags |= GoalExPredFlag; - } else if (IsAtomTerm(tg)) { - Atom at = AtomOfTerm(tg); - Prop p0; - PredEntry *npe; - - p0 = RepAtom(at)->PropsOfAE; - if (p0 && (p->ModuleOfPred == PROLOG_MODULE || - p->ModuleOfPred == SYSTEM_MODULE || - p->ModuleOfPred == USER_MODULE)) { - mark_preds_with_this_atom(p0); - PRED_GOAL_EXPANSION_FUNC = TRUE; - } - npe = RepPredProp(PredPropByAtom(at, p->ModuleOfPred)); - npe->PredFlags |= GoalExPredFlag; - } - } -} - Int Yap_source_line_no(void) { CACHE_REGS return LOCAL_SourceFileLineno; @@ -2104,6 +1973,40 @@ Atom Yap_source_file_name(void) { return LOCAL_SourceFileName; } +/** + * @brief we cannot add clauses to the proceduree + * + * @param p predicate + * + * @return boolean + */ + bool Yap_constPred( PredEntry *p) +{ + pred_flags_t pflags; + pflags = p->PredFlags; + + + if (pflags & ((UserCPredFlag | CArgsPredFlag | NumberDBPredFlag | AtomDBPredFlag | + TestPredFlag | AsmPredFlag | CPredFlag | BinaryPredFlag) ) ) + return true; + + if (p->PredFlags & (SysExportPredFlag|MultiFileFlag|DynamicPredFlag)) + return false; + + if (Yap_isSystemModule(p->ModuleOfPred)){ + if (p->cs.p_code.NOfClauses == 0) { + p->src.OwnerFile = LOCAL_SourceFileName; + return false; + } + if ( p->src.OwnerFile == LOCAL_SourceFileName ) { + return false; + } + + return true; + } + return false; +} + static int addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref) /* * @@ -2137,19 +2040,13 @@ static int addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref) } Yap_PutValue(AtomAbol, TermNil); PELOCK(20, p); - pflags = p->PredFlags; /* we are redefining a prolog module predicate */ - if (!(p->PredFlags & SysExportPredFlag) && - ((pflags & - (UserCPredFlag | CArgsPredFlag | NumberDBPredFlag | AtomDBPredFlag | - TestPredFlag | AsmPredFlag | CPredFlag | BinaryPredFlag)) || - (p->ModuleOfPred == PROLOG_MODULE && mod != TermProlog && mod))) { - // printf("p=%p p->PredFlags=%lx %lx p->cs.p_code.NOfClauses=%ld\n", p, - // p->PredFlags,SysExportPredFlag , p->cs.p_code.NOfClauses); + if (Yap_constPred(p)) { addcl_permission_error(RepAtom(at), Arity, FALSE); UNLOCKPE(30, p); return TermNil; } + pflags = p->PredFlags; /* we are redefining a prolog module predicate */ if (pflags & MegaClausePredFlag) { split_megaclause(p); @@ -2162,13 +2059,13 @@ static int addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref) } if (pflags & (SpiedPredFlag | CountPredFlag | ProfiledPredFlag)) spy_flag = TRUE; - goal_expansion_support(p, tf); - if (Yap_discontiguous(p PASS_REGS)) { + if (mode == consult && + Yap_discontiguous(p PASS_REGS)) { Term disc[3], sc[4]; if (p->ArityOfPE) { disc[0] = MkAtomTerm(NameOfFunctor(p->FunctorOfPred)); } else { - disc[1] = MkAtomTerm((Atom)(p->FunctorOfPred)); + disc[0] = MkAtomTerm((Atom)(p->FunctorOfPred)); } disc[1] = MkIntTerm(p->ArityOfPE); disc[2] = Yap_Module_Name(p); @@ -2181,11 +2078,11 @@ static int addclause(Term t, yamop *cp, int mode, Term mod, Term *t4ref) sc[1] = MkAtomTerm(AtomWarning); Yap_PrintWarning(Yap_MkApplTerm(Yap_MkFunctor(AtomError,2), 2, sc)); } else if (Yap_multiple(p, mode PASS_REGS)) { - Term disc[4], sc[4]; + Term disc[4], sc[4]; if (p->ArityOfPE) { disc[0] = MkAtomTerm(NameOfFunctor(p->FunctorOfPred)); } else { - disc[1] = MkAtomTerm((Atom)(p->FunctorOfPred)); + disc[0] = MkAtomTerm((Atom)(p->FunctorOfPred)); } disc[1] = MkIntTerm(p->ArityOfPE); disc[2] = Yap_Module_Name(p); @@ -2426,36 +2323,8 @@ void Yap_add_logupd_clause(PredEntry *pe, LogUpdClause *cl, int mode) { } } -static Int p_compile(USES_REGS1) { /* '$compile'(+C,+Flags, Mod) */ - Term t = Deref(ARG1); - Term t1 = Deref(ARG2); - Term mod = Deref(ARG4); - Term tn = TermNil; - yamop *codeadr; - - if (IsVarTerm(t1) || !IsIntTerm(t1)) - return (FALSE); - if (IsVarTerm(mod) || !IsAtomTerm(mod)) - return (FALSE); - - YAPEnterCriticalSection(); - codeadr = - Yap_cclause(t, 4, mod, Deref(ARG3)); /* vsc: give the number of arguments - to cclause in case there is overflow */ - t = Deref(ARG1); /* just in case there was an heap overflow */ - if (!LOCAL_ErrorMessage) - addclause(t, codeadr, (int)(IntOfTerm(t1) & 3), mod, &tn); - YAPLeaveCriticalSection(); - if (LOCAL_ErrorMessage) { - Yap_Error(LOCAL_Error_TYPE, LOCAL_Error_Term, LOCAL_ErrorMessage); - - return FALSE; - } - return TRUE; -} - static Int - p_compile_dynamic(USES_REGS1) { /* '$compile_dynamic'(+C,+Flags,Mod,-Ref) */ + p_compile(USES_REGS1) { /* '$compile'(+C,+Flags,+C0,-Ref) */ Term t = Deref(ARG1); Term t1 = Deref(ARG2); Term mod = Deref(ARG4); @@ -2466,19 +2335,24 @@ static Int return FALSE; if (IsVarTerm(mod) || !IsAtomTerm(mod)) return FALSE; - if (IsAtomTerm(t1)) { - if (RepAtom(AtomOfTerm(t1))->StrOfAE[0] == 'f') + if (t1 == TermConsult) { + mode = consult; + } else if (t1 == TermReconsult) { + mode = consult; + } else if (t1 == TermAsserta) { mode = asserta; - else + } else if (t1 == TermAssertz) { mode = assertz; - } else - mode = IntegerOfTerm(t1); + } else if (t1 == TermAssertaStatic) { + mode = asserta; + } else if (t1 == TermAssertzStatic) { + mode = assertz; + } /* separate assert in current file from reconsult if (mode == assertz && LOCAL_consult_level && mod == CurrentModule) mode = consult; */ old_optimize = optimizer_on; - optimizer_on = FALSE; YAPEnterCriticalSection(); code_adr = Yap_cclause(t, 5, mod, Deref(ARG3)); /* vsc: give the number of arguments to @@ -2497,7 +2371,7 @@ static Int return FALSE; } YAPLeaveCriticalSection(); - return TRUE; + return true; } Atom Yap_ConsultingFile(USES_REGS1) { @@ -2507,6 +2381,9 @@ Atom Yap_ConsultingFile(USES_REGS1) { // return(AtomUserIn); return StreamFullName(sno); } + if (LOCAL_SourceFileName != NULL) { + return LOCAL_SourceFileName; + } if (LOCAL_consult_level == 0) { return (AtomUser); } else { @@ -2883,6 +2760,23 @@ static Int p_new_multifile(USES_REGS1) { /* '$new_multifile'(+N,+Ar,+Mod) */ else pe = RepPredProp(PredPropByFunc(Yap_MkFunctor(at, arity), mod)); PELOCK(26, pe); + if (pe->PredFlags & (UserCPredFlag | CArgsPredFlag | + NumberDBPredFlag | AtomDBPredFlag | + TestPredFlag | AsmPredFlag | + CPredFlag | BinaryPredFlag)) { + UNLOCKPE(26, pe); + addcl_permission_error(RepAtom(at), arity, FALSE); + return false; + } + if (pe->PredFlags & MultiFileFlag) { + UNLOCKPE(26, pe); + return true; + } + if (pe->cs.p_code.NOfClauses) { + UNLOCKPE(26, pe); + addcl_permission_error(RepAtom(at), arity, FALSE); + return false; + } pe->PredFlags |= MultiFileFlag; /* mutifile-predicates are weird, they do not seat really on the default * module */ @@ -2894,7 +2788,7 @@ static Int p_new_multifile(USES_REGS1) { /* '$new_multifile'(+N,+Ar,+Mod) */ } pe->src.OwnerFile = Yap_ConsultingFile(PASS_REGS1); UNLOCKPE(43, pe); - return (TRUE); + return true; } static Int p_is_multifile(USES_REGS1) { /* '$is_multifile'(+S,+Mod) */ @@ -2949,7 +2843,7 @@ static Int p_is_discontiguous(USES_REGS1) { /* '$is_multifile'(+S,+Mod) */ PredEntry *pe; bool out; - pe = get_pred(Deref(ARG1), Deref(ARG2), "discontigus"); + pe = get_pred(Deref(ARG1), Deref(ARG2), "discontiguous"); if (EndOfPAEntr(pe)) return FALSE; PELOCK(27, pe); @@ -3099,68 +2993,6 @@ static Int p_is_metapredicate(USES_REGS1) { /* '$is_metapredicate'(+P) */ return out; } -static Int p_is_expandgoalormetapredicate( - USES_REGS1) { /* '$is_expand_goal_predicate'(+P) */ - PredEntry *pe; - Term t = Deref(ARG1); - Term mod = Deref(ARG2); - bool out; - - if (PRED_GOAL_EXPANSION_ALL) - return TRUE; - if (IsVarTerm(t)) { - return (FALSE); - } else if (IsAtomTerm(t)) { - Atom at = AtomOfTerm(t); - pe = RepPredProp(Yap_GetPredPropByAtom(at, mod)); - if (EndOfPAEntr(pe)) { - if (PRED_GOAL_EXPANSION_FUNC) { - Prop p1 = RepAtom(at)->PropsOfAE; - - while (p1) { - PredEntry *pe = RepPredProp(p1); - - if (pe->KindOfPE == PEProp) { - if (pe->PredFlags & GoalExPredFlag) { - PredPropByAtom(at, mod); - return TRUE; - } else { - return FALSE; - } - } - p1 = pe->NextOfPE; - } - } - return FALSE; - } - } else if (IsApplTerm(t)) { - Functor fun = FunctorOfTerm(t); - - if (IsExtensionFunctor(fun)) { - return FALSE; - } - pe = RepPredProp(Yap_GetPredPropByFunc(fun, mod)); - if (EndOfPAEntr(pe)) { - if (PRED_GOAL_EXPANSION_FUNC) { - FunctorEntry *fe = (FunctorEntry *)fun; - if (fe->PropsOfFE && - (RepPredProp(fe->PropsOfFE)->PredFlags & GoalExPredFlag)) { - PredPropByFunc(fun, mod); - return TRUE; - } - } - return FALSE; - } - } else { - return FALSE; - } - - PELOCK(33, pe); - out = (pe->PredFlags & (GoalExPredFlag | MetaPredFlag)); - UNLOCKPE(53, pe); - return (out); -} - static Int p_pred_exists(USES_REGS1) { /* '$pred_exists'(+P,+M) */ PredEntry *pe; bool out; @@ -3265,7 +3097,7 @@ static Int p_kill_dynamic(USES_REGS1) { /* '$kill_dynamic'(P,M) */ pe->OpcodeOfPred = UNDEF_OPCODE; pe->cs.p_code.TrueCodeOfPred = pe->CodeOfPred = (yamop *)(&(pe->OpcodeOfPred)); - pe->PredFlags = pe->PredFlags & GoalExPredFlag; + pe->PredFlags = 0; UNLOCKPE(62, pe); return (TRUE); } @@ -3475,6 +3307,34 @@ static Int p_clean_up_dead_clauses(USES_REGS1) { return TRUE; } +static Int /* $ml_system_predicate(P) */ + p_mk_system_pred(USES_REGS1) { + PredEntry *pe; + + Term t1 = Deref(ARG1); + Term tm = Deref(ARG2); + if (IsVarTerm(t1)) + return FALSE; + if (IsAtomTerm(t1)) { + pe = RepPredProp(PredPropByAtom(AtomOfTerm(t1), tm)); + pe->ModuleOfPred = PROLOG_MODULE; + return true; + } else if (IsApplTerm(t1)) { + Functor funt = FunctorOfTerm(t1); + if (IsExtensionFunctor(funt)) { + return FALSE; + } + pe = RepPredProp(PredPropByFunc(funt, tm)); + pe->ModuleOfPred = PROLOG_MODULE; + return true; + } else if (IsPairTerm(t1)) { + pe = RepPredProp(PredPropByFunc(FunctorDot, tm)); + pe->ModuleOfPred = PROLOG_MODULE; + return TRUE; + } + return FALSE; + } + static Int /* $system_predicate(P) */ p_system_pred(USES_REGS1) { PredEntry *pe; @@ -5166,15 +5026,12 @@ void Yap_InitCdMgr(void) { /* gc() may happen during compilation, hence these predicates are now unsafe */ Yap_InitCPred("$predicate_flags", 4, predicate_flags, SyncPredFlag); - Yap_InitCPred("$compile", 4, p_compile, SyncPredFlag); - Yap_InitCPred("$compile_dynamic", 5, p_compile_dynamic, SyncPredFlag); + Yap_InitCPred("$compile", 5, p_compile, SyncPredFlag); Yap_InitCPred("$purge_clauses", 2, p_purge_clauses, SafePredFlag | SyncPredFlag); Yap_InitCPred("$is_dynamic", 2, p_is_dynamic, TestPredFlag | SafePredFlag); Yap_InitCPred("$is_metapredicate", 2, p_is_metapredicate, TestPredFlag | SafePredFlag); - Yap_InitCPred("$is_expand_goal_or_meta_predicate", 2, - p_is_expandgoalormetapredicate, TestPredFlag | SafePredFlag); Yap_InitCPred("$is_log_updatable", 2, p_is_log_updatable, TestPredFlag | SafePredFlag); Yap_InitCPred("$is_thread_local", 2, p_is_thread_local, @@ -5223,6 +5080,7 @@ void Yap_InitCdMgr(void) { SafePredFlag | SyncPredFlag); Yap_InitCPred("$set_pred_module", 2, p_set_pred_module, SafePredFlag); Yap_InitCPred("$set_pred_owner", 2, p_set_pred_owner, SafePredFlag); + Yap_InitCPred("$mk_system_predicate", 2, p_mk_system_pred, SafePredFlag); Yap_InitCPred("$system_predicate", 2, p_system_pred, SafePredFlag); Yap_InitCPred("$all_system_predicate", 3, p_all_system_pred, SafePredFlag); Yap_InitCPred("$hide_predicate", 2, p_hide_predicate, SafePredFlag); diff --git a/C/errors.c b/C/errors.c index 2d1c772e1..9408e0d35 100755 --- a/C/errors.c +++ b/C/errors.c @@ -602,3 +602,67 @@ yamop *Yap_Error__(const char *file, const char *function, int lineno, LOCAL_PrologMode &= ~InErrorMode; return P; } + +static Int +is_boolean( USES_REGS1 ) +{ + Term t = Deref(ARG1); + //Term Context = Deref(ARG2); + if (IsVarTerm(t)) { + Yap_Error(INSTANTIATION_ERROR, t, NULL); + return false; + } + return t == TermTrue || t == TermFalse; +} + + +static Int +is_callable( USES_REGS1 ) +{ + Term G = Deref(ARG1); + //Term Context = Deref(ARG2); + while (true) { + if (IsVarTerm(G)) { + Yap_Error(INSTANTIATION_ERROR, G, NULL); + return false; + } + if (IsApplTerm(G)) { + Functor f = FunctorOfTerm(G); + if (IsExtensionFunctor(f)) { + Yap_Error(TYPE_ERROR_CALLABLE, G, NULL); + } + if (f == FunctorModule) { + Term tm = ArgOfTerm( 1, G); + if (IsVarTerm(tm)) { + Yap_Error(INSTANTIATION_ERROR, G, NULL); + return false; + } + if (!IsAtomTerm(tm)) { + Yap_Error(TYPE_ERROR_CALLABLE, G, NULL); + return false; + } + G = ArgOfTerm( 2, G ); + } else { + return true; + } + } else if (IsPairTerm(G) || IsAtomTerm(G)) { + return true; + } else { + Yap_Error(TYPE_ERROR_CALLABLE, G, NULL); + return false; + } + } + return false; +} + + +void +Yap_InitErrorPreds( void ) +{ + CACHE_REGS + Term cm = CurrentModule; + CurrentModule = ERROR_MODULE; + Yap_InitCPred("is_boolean", 2, is_boolean, 0L); + Yap_InitCPred("is_callable", 2, is_callable, 0L); + CurrentModule = cm; +} diff --git a/C/exec.c b/C/exec.c index 9498943fa..8066c8b60 100755 --- a/C/exec.c +++ b/C/exec.c @@ -192,13 +192,7 @@ inline static Int do_execute(Term t, Term mod USES_REGS) { Term t0 = t; /* first do predicate expansion, even before you process signals. This way you don't get to spy goal_expansion(). */ - if (PRED_GOAL_EXPANSION_ALL) { - /* disable creeping when we do goal expansion */ - if (!LOCAL_InterruptsDisabled && Yap_get_signal(YAP_CREEP_SIGNAL)) { - CalculateStackGap(PASS_REGS1); - } - return CallMetaCall(ARG1, mod PASS_REGS); - } else if (Yap_has_a_signal() && !LOCAL_InterruptsDisabled && + if (Yap_has_a_signal() && !LOCAL_InterruptsDisabled && !(LOCAL_PrologMode & (AbortMode | InterruptMode | SystemMode))) { return EnterCreepMode(t, mod PASS_REGS); } @@ -222,7 +216,7 @@ restart_exec: pen = RepPredProp(PredPropByFunc(f, mod)); /* You thought we would be over by now */ /* but no meta calls require special preprocessing */ - if (pen->PredFlags & (GoalExPredFlag | MetaPredFlag)) { + if (pen->PredFlags & MetaPredFlag) { if (f == FunctorModule) { Term tmod = ArgOfTerm(1, t); if (!IsVarTerm(tmod) && IsAtomTerm(tmod)) { @@ -359,14 +353,7 @@ restart_exec: if (IsExtensionFunctor(f)) { return CallError(TYPE_ERROR_CALLABLE, t, mod PASS_REGS); } - if (PRED_GOAL_EXPANSION_ALL) { - /* disable creeping when we do goal expansion */ - if (Yap_get_signal(YAP_CREEP_SIGNAL) && !LOCAL_InterruptsDisabled) { - CalculateStackGap(PASS_REGS1); - } - t = copy_execn_to_heap(f, pt, n, arity, mod PASS_REGS); - return CallMetaCall(t, mod PASS_REGS); - } else if (Yap_has_a_signal() && !LOCAL_InterruptsDisabled) { + if (Yap_has_a_signal() && !LOCAL_InterruptsDisabled) { return EnterCreepMode( copy_execn_to_heap(f, pt, n, arity, CurrentModule PASS_REGS), mod PASS_REGS); @@ -377,7 +364,7 @@ restart_exec: pen = RepPredProp(PredPropByFunc(f, mod)); /* You thought we would be over by now */ /* but no meta calls require special preprocessing */ - if (pen->PredFlags & (GoalExPredFlag | MetaPredFlag)) { + if (pen->PredFlags & MetaPredFlag) { Term t = copy_execn_to_heap(f, pt, n, arity, mod PASS_REGS); return (CallMetaCall(t, mod PASS_REGS)); } @@ -650,33 +637,39 @@ static Int execute_in_mod(USES_REGS1) { /* '$execute'(Goal) */ return (do_execute(Deref(ARG1), Deref(ARG2) PASS_REGS)); } -static Int do_goal_expansion(USES_REGS1) { +static Int _user_expand_goal(USES_REGS1) { Int creeping = Yap_get_signal(YAP_CREEP_SIGNAL); Int out = FALSE; PredEntry *pe; - Term cmod = Deref(ARG2); - - ARG2 = ARG3; - + Term cmod = CurrentModule, omod = cmod; + Term mg_args[2], mg; + Term g = Yap_YapStripModule( ARG1, &cmod); + yhandle_t h1 = Yap_InitSlot( ARG1), h2 = Yap_InitSlot( ARG2); + /* CurMod:goal_expansion(A,B) */ + ARG1 = g; if ((pe = RepPredProp(Yap_GetPredPropByFunc(FunctorGoalExpansion2, cmod))) && - pe->OpcodeOfPred != FAIL_OPCODE && pe->OpcodeOfPred != UNDEF_OPCODE && + pe->OpcodeOfPred != FAIL_OPCODE && + pe->OpcodeOfPred != UNDEF_OPCODE && Yap_execute_pred(pe, NULL, false PASS_REGS)) { - out = TRUE; - ARG3 = ARG2; + out = true; goto complete; } /* system:goal_expansion(A,B) */ + mg_args[0] = cmod; + mg_args[1] = Yap_GetFromSlot(h1); + ARG1 = Yap_MkApplTerm( FunctorModule, 2, mg_args ); + ARG2 = Yap_GetFromSlot(h2); if ((pe = RepPredProp( Yap_GetPredPropByFunc(FunctorGoalExpansion2, SYSTEM_MODULE))) && pe->OpcodeOfPred != FAIL_OPCODE && pe->OpcodeOfPred != UNDEF_OPCODE && Yap_execute_pred(pe, NULL, false PASS_REGS)) { - out = TRUE; - ARG3 = ARG2; + out = true; goto complete; } - ARG3 = ARG2; + ARG1 = Yap_GetFromSlot(h1); ARG2 = cmod; + ARG3 = Yap_GetFromSlot(h2); /* user:goal_expansion(A,CurMod,B) */ if ((pe = RepPredProp( Yap_GetPredPropByFunc(FunctorGoalExpansion, USER_MODULE))) && @@ -685,7 +678,10 @@ static Int do_goal_expansion(USES_REGS1) { out = TRUE; goto complete; } - ARG2 = ARG3; + mg_args[0] = cmod; + mg_args[1] = Yap_GetFromSlot(h1); + ARG1 = Yap_MkApplTerm( FunctorModule, 2, mg_args ); + ARG2 = Yap_GetFromSlot(h2); /* user:goal_expansion(A,B) */ if (cmod != USER_MODULE && /* we have tried this before */ (pe = RepPredProp( @@ -699,6 +695,7 @@ complete: if (creeping) { Yap_signal(YAP_CREEP_SIGNAL); } + CurrentModule = omod; return out; } @@ -1006,12 +1003,6 @@ static Int execute_depth_limit(USES_REGS1) { } #endif -static Int pred_goal_expansion_on(USES_REGS1) { - /* a goal needs expansion if we have goal_expansion defined or - if the goal is a meta-call */ - return PRED_GOAL_EXPANSION_ON; -} - static Int exec_absmi(bool top, yap_reset_t reset_mode USES_REGS) { int lval, out; @@ -1892,8 +1883,6 @@ void Yap_InitExecFs(void) { Yap_InitCPred("trail_suspension_marker", 1, trail_suspension_marker, 0); Yap_InitCPred("cut_at", 1, clean_ifcp, SafePredFlag); CurrentModule = cm; - Yap_InitCPred("$pred_goal_expansion_on", 0, pred_goal_expansion_on, - SafePredFlag); Yap_InitCPred("$restore_regs", 1, restore_regs, NoTracePredFlag | SafePredFlag); Yap_InitCPred("$restore_regs", 2, restore_regs2, @@ -1905,7 +1894,7 @@ void Yap_InitExecFs(void) { Yap_InitCPred("$generate_pred_info", 4, generate_pred_info, 0); Yap_InitCPred("$uncaught_throw", 0, uncaught_throw, 0); Yap_InitCPred("$reset_exception", 1, reset_exception, 0); - Yap_InitCPred("$do_goal_expansion", 3, do_goal_expansion, 0); + Yap_InitCPred("_user_expand_goal", 2, _user_expand_goal, 0); Yap_InitCPred("$do_term_expansion", 2, do_term_expansion, 0); Yap_InitCPred("$get_exception", 1, get_exception, 0); } diff --git a/C/heapgc.c b/C/heapgc.c index f77f80bda..a098dfa63 100644 --- a/C/heapgc.c +++ b/C/heapgc.c @@ -4267,6 +4267,7 @@ Yap_locked_gc(Int predarity, CELL *current_env, yamop *nextop) CACHE_REGS int res; #if YAPOR_COPY + fprintf(stderr, "\n\n***** Trying to call the garbage collector in YAPOR/copying ****\n\n\n"); exit( 1 ); #endif diff --git a/C/init.c b/C/init.c index 8d3c42bef..7e1172c3b 100755 --- a/C/init.c +++ b/C/init.c @@ -979,7 +979,7 @@ InitStdPreds(void) Yap_InitCPreds(); Yap_InitBackCPreds(); BACKUP_MACHINE_REGS(); - Yap_InitPlIO(); + Yap_InitPlIO(); Yap_InitFlags(false); #if HAVE_MPE Yap_InitMPE (); diff --git a/C/meta_absmi_insts.h b/C/meta_absmi_insts.h index 274abe754..be5c02865 100644 --- a/C/meta_absmi_insts.h +++ b/C/meta_absmi_insts.h @@ -106,9 +106,6 @@ } #endif /* FROZEN_STACKS */ d0 = ARG1; - if (PRED_GOAL_EXPANSION_ALL) { - goto execute_metacall; - } restart_execute: deref_head(d0, execute_unk); execute_nvar: @@ -119,7 +116,7 @@ } pen = RepPredProp(PredPropByFunc(f, mod)); execute_pred_f: - if (pen->PredFlags & (MetaPredFlag|GoalExPredFlag)) { + if (pen->PredFlags & MetaPredFlag) { /* just strip all of M:G */ if (f == FunctorModule) { Term tmod = ArgOfTerm(1,d0); diff --git a/C/modules.c b/C/modules.c index bc25bad76..6d560aff0 100644 --- a/C/modules.c +++ b/C/modules.c @@ -25,6 +25,7 @@ static char SccsId[] = "%W% %G%"; static Int current_module(USES_REGS1); static Int current_module1(USES_REGS1); static ModEntry *LookupModule(Term a); +static ModEntry *LookupSystemModule(Term a); static ModEntry *FetchModuleEntry(Atom at) /* get predicate entry for ap/arity; create it if neccessary. */ @@ -89,6 +90,17 @@ Term Yap_getUnknownModule(ModEntry *m) { } } +bool Yap_getUnknown ( Term mod) { + ModEntry *m = LookupModule( mod ); + if (m && m->flags & UNKNOWN_ERROR) { + return TermError; + } else if (m && m->flags & UNKNOWN_WARNING) { + return TermWarning; + } else { + return TermFail; + } +} + bool Yap_CharacterEscapes(Term mt) { if (mt == PROLOG_MODULE) mt = TermProlog; @@ -118,6 +130,20 @@ Term Yap_Module_Name(PredEntry *ap) { } +static ModEntry *LookupSystemModule(Term a) { + Atom at; + ModEntry *me; + + /* prolog module */ + if (a == 0) { + return GetModuleEntry(AtomProlog); + } + at = AtomOfTerm(a); + me = GetModuleEntry(at); + me->flags |= M_SYSTEM; + return me;} + + static ModEntry *LookupModule(Term a) { Atom at; ModEntry *me; @@ -131,6 +157,13 @@ static ModEntry *LookupModule(Term a) { return me; } +bool Yap_isSystemModule(Term a) { + ModEntry *me = LookupModule(a); + return + me != NULL && + me->flags & M_SYSTEM; +} + Term Yap_Module(Term tmod) { LookupModule(tmod); return tmod; @@ -141,6 +174,7 @@ ModEntry *Yap_GetModuleEntry(Term mod) { if (!(me = LookupModule(mod))) return NULL; return me; + } Term Yap_GetModuleFromEntry(ModEntry *me) { @@ -191,13 +225,6 @@ static Int return TRUE; } -static Int current_module1(USES_REGS1) { /* $current_module(Old) - */ - if (CurrentModule) - return Yap_unify_constant(ARG1, CurrentModule); - return Yap_unify_constant(ARG1, TermProlog); -} - static Int change_module(USES_REGS1) { /* $change_module(New) */ Term mod = Deref(ARG1); LookupModule(mod); @@ -206,6 +233,14 @@ static Int change_module(USES_REGS1) { /* $change_module(New) */ return TRUE; } +static Int current_module1(USES_REGS1) { /* $current_module(Old) + */ + if (CurrentModule) + return Yap_unify_constant(ARG1, CurrentModule); + return Yap_unify_constant(ARG1, TermProlog); +} + + static Int cont_current_module(USES_REGS1) { ModEntry *imod = AddressOfTerm(EXTRA_CBACK_ARG(1, 1)), *next; Term t = MkAtomTerm(imod->AtomOfME); @@ -280,6 +315,42 @@ static Int init_ground_module(USES_REGS1) { return cont_ground_module(PASS_REGS1); } +/** + * @pred is_system_module( + _Mod_) + * + * @param module + * + * @return + */ +static Int is_system_module( USES_REGS1 ) +{ + Term t; + if (IsVarTerm(t = Deref (ARG1))) { + return false; + } + if (!IsAtomTerm(t)) { + Yap_Error(TYPE_ERROR_ATOM, t, "load_files/2"); + return false; + } + return Yap_isSystemModule( t ); +} + +static Int system_module( USES_REGS1 ) +{ + ModEntry *me; + Term t; + if (IsVarTerm(t = Deref (ARG1))) { + Yap_Error( INSTANTIATION_ERROR, t, NULL); + return false; + } + if (!IsAtomTerm(t)) { + Yap_Error(TYPE_ERROR_ATOM, t, NULL); + return false; + } + me = LookupSystemModule( t ); + return me != NULL; +} + static Int strip_module(USES_REGS1) { Term t1 = Deref(ARG1), tmod = CurrentModule; if (tmod == PROLOG_MODULE) { @@ -359,9 +430,23 @@ static Int context_module(USES_REGS1) { return Yap_unify(ARG1, CurrentModule); } +/** + * @pred source_module(-Mod) + * + * @param Mod is the current text source module. + * + * : _Mod_ is the current read-in or source module. +*/ +static Int source_module(USES_REGS1) { + if (LOCAL_SourceModule == PROLOG_MODULE) { + return Yap_unify(ARG1, TermProlog); + } + return Yap_unify(ARG1, LOCAL_SourceModule); +} + Term Yap_StripModule(Term t, Term *modp) { CACHE_REGS - Term tmod; + Term tmod; if (modp) tmod = *modp; @@ -406,9 +491,12 @@ void Yap_InitModulesC(void) { Yap_InitCPred("$change_module", 1, change_module, SafePredFlag | SyncPredFlag); Yap_InitCPred("strip_module", 3, strip_module, SafePredFlag | SyncPredFlag); + Yap_InitCPred("source_module", 1, source_module, SafePredFlag | SyncPredFlag); Yap_InitCPred("$yap_strip_module", 3, yap_strip_module, SafePredFlag | SyncPredFlag); Yap_InitCPred("context_module", 1, context_module, 0); + Yap_InitCPred("system_module", 1, system_module, SafePredFlag); + Yap_InitCPred("is_system_module", 1, is_system_module, SafePredFlag); Yap_InitCPredBack("$all_current_modules", 1, 1, init_current_module, cont_current_module, SafePredFlag | SyncPredFlag); Yap_InitCPredBack("$ground_module", 3, 1, init_ground_module, @@ -417,19 +505,19 @@ void Yap_InitModulesC(void) { void Yap_InitModules(void) { CACHE_REGS - LookupModule(MkAtomTerm(AtomProlog)); + LookupSystemModule(MkAtomTerm(AtomProlog)); LOCAL_SourceModule = MkAtomTerm(AtomProlog); LookupModule(USER_MODULE); LookupModule(IDB_MODULE); LookupModule(ATTRIBUTES_MODULE); - LookupModule(CHARSIO_MODULE); - LookupModule(TERMS_MODULE); - LookupModule(SYSTEM_MODULE); - LookupModule(READUTIL_MODULE); - LookupModule(HACKS_MODULE); + LookupSystemModule(CHARSIO_MODULE); + LookupSystemModule(TERMS_MODULE); + LookupSystemModule(SYSTEM_MODULE); + LookupSystemModule(READUTIL_MODULE); + LookupSystemModule(HACKS_MODULE); LookupModule(ARG_MODULE); - LookupModule(GLOBALS_MODULE); - LookupModule(DBLOAD_MODULE); - LookupModule(RANGE_MODULE); + LookupSystemModule(GLOBALS_MODULE); + LookupSystemModule(DBLOAD_MODULE); + LookupSystemModule(RANGE_MODULE); CurrentModule = PROLOG_MODULE; } diff --git a/C/parser.c b/C/parser.c index 4193f0afb..c8a948cab 100755 --- a/C/parser.c +++ b/C/parser.c @@ -39,7 +39,8 @@ extended where necessary with attributes denoting integer precedence or operator type. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - term ----> subterm(1200) end_of_term_marker + term +----> subterm(1200) end_of_term_marker subterm(N) ----> term(M) [M <= N] @@ -163,21 +164,19 @@ typedef struct jmp_buff_struct { sigjmp_buf JmpBuff; } JMPBUFF; static void GNextToken(CACHE_TYPE1); static void checkfor(wchar_t, JMPBUFF *CACHE_TYPE); -static Term ParseArgs( Atom, wchar_t, JMPBUFF *, Term CACHE_TYPE); -static Term ParseList( JMPBUFF *CACHE_TYPE); -static Term ParseTerm( int, JMPBUFF *CACHE_TYPE); +static Term ParseArgs(Atom, wchar_t, JMPBUFF *, Term CACHE_TYPE); +static Term ParseList(JMPBUFF *CACHE_TYPE); +static Term ParseTerm(int, JMPBUFF *CACHE_TYPE); const char *Yap_tokRep(TokEntry *tokptr); -static void -syntax_msg( const char *msg, ...) -{ +static void syntax_msg(const char *msg, ...) { CACHE_REGS va_list ap; if (LOCAL_toktide == LOCAL_tokptr) { va_start(ap, msg); - vsnprintf( LOCAL_FileNameBuf2, YAP_FILENAME_MAX-1, msg, ap ); + vsnprintf(LOCAL_FileNameBuf2, YAP_FILENAME_MAX - 1, msg, ap); LOCAL_ErrorMessage = LOCAL_FileNameBuf2; LOCAL_Error_TYPE = SYNTAX_ERROR; va_end(ap); @@ -225,7 +224,8 @@ syntax_msg( const char *msg, ...) #define FAIL siglongjmp(FailBuff->JmpBuff, 1) -VarEntry *Yap_LookupVar(const char *var) /* lookup variable in variables table */ +VarEntry * +Yap_LookupVar(const char *var) /* lookup variable in variables table */ { CACHE_REGS VarEntry *p; @@ -291,7 +291,7 @@ static Term VarNames(VarEntry *p, Term l USES_REGS) { t[0] = MkAtomTerm(Yap_LookupAtom(p->VarRep)); if (!IsVarTerm(p->VarAdr)) - p->VarAdr = MkVarTerm(); + p->VarAdr = MkVarTerm(); t[1] = p->VarAdr; o = Yap_MkApplTerm(FunctorEq, 2, t); o = MkPairTerm(o, VarNames(p->VarRight, @@ -316,7 +316,7 @@ Term Yap_VarNames(VarEntry *p, Term l) { static Term Singletons(VarEntry *p, Term l USES_REGS) { if (p != NULL) { - if ( p->VarRep[0] != '_' && p->refs == 1) { + if (p->VarRep[0] != '_' && p->refs == 1) { Term t[2]; Term o; @@ -378,7 +378,7 @@ static int IsPrefixOp(Atom op, int *pptr, int *rpptr USES_REGS) { } if ((p = opp->Prefix) != 0) { READ_UNLOCK(opp->OpRWLock); - *pptr = *rpptr = p & MaskPrio; + *pptr = *rpptr = p &MaskPrio; if (p & DcrrpFlag) --*rpptr; return TRUE; @@ -405,7 +405,7 @@ static int IsInfixOp(Atom op, int *pptr, int *lpptr, int *rpptr USES_REGS) { } if ((p = opp->Infix) != 0) { READ_UNLOCK(opp->OpRWLock); - *pptr = *rpptr = *lpptr = p & MaskPrio; + *pptr = *rpptr = *lpptr = p &MaskPrio; if (p & DcrrpFlag) --*rpptr; if (p & DcrlpFlag) @@ -434,7 +434,7 @@ static int IsPosfixOp(Atom op, int *pptr, int *lpptr USES_REGS) { } if ((p = opp->Posfix) != 0) { READ_UNLOCK(opp->OpRWLock); - *pptr = *lpptr = p & MaskPrio; + *pptr = *lpptr = p &MaskPrio; if (p & DcrlpFlag) --*lpptr; return (TRUE); @@ -462,7 +462,7 @@ inline static void checkfor(wchar_t c, JMPBUFF *FailBuff USES_REGS) { if (LOCAL_tokptr->Tok != Ord(Ponctuation_tok) || LOCAL_tokptr->TokInfo != (Term)c) { char s[1024]; - strncpy(s, Yap_tokRep(LOCAL_tokptr), 1023 ); + strncpy(s, Yap_tokRep(LOCAL_tokptr), 1023); syntax_msg("expected to find \'%c\', found %s", c, s); FAIL; } @@ -523,7 +523,7 @@ static int get_quasi_quotation(term_t t, unsigned char **here, } #endif /*O_QUASIQUOTATIONS*/ -static Term ParseArgs( Atom a, wchar_t close, JMPBUFF *FailBuff, +static Term ParseArgs(Atom a, wchar_t close, JMPBUFF *FailBuff, Term arg1 USES_REGS) { int nargs = 0; Term *p, t; @@ -543,12 +543,12 @@ static Term ParseArgs( Atom a, wchar_t close, JMPBUFF *FailBuff, func = Yap_MkFunctor(a, 1); if (func == NULL) { - syntax_msg("Heap Overflow"); + syntax_msg("Heap Overflow"); FAIL; } t = Yap_MkApplTerm(func, nargs, p); if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); return TermNil; } NextToken; @@ -561,7 +561,7 @@ static Term ParseArgs( Atom a, wchar_t close, JMPBUFF *FailBuff, syntax_msg("Trail Overflow"); FAIL; } - *tp++ = Unsigned(ParseTerm( 999, FailBuff PASS_REGS)); + *tp++ = Unsigned(ParseTerm(999, FailBuff PASS_REGS)); ParserAuxSp = (char *)tp; ++nargs; if (LOCAL_tokptr->Tok != Ord(Ponctuation_tok)) @@ -576,7 +576,7 @@ static Term ParseArgs( Atom a, wchar_t close, JMPBUFF *FailBuff, * order */ if (HR > ASP - (nargs + 1)) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } func = Yap_MkFunctor(a, nargs); @@ -596,7 +596,7 @@ static Term ParseArgs( Atom a, wchar_t close, JMPBUFF *FailBuff, t = Yap_MkApplTerm(func, nargs, p); #endif if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); return TermNil; } /* check for possible overflow against local stack */ @@ -616,26 +616,22 @@ static Term MakeAccessor(Term t, Functor f USES_REGS) { return Yap_MkApplTerm(f, 2, tf); } -static Term ParseList( JMPBUFF *FailBuff USES_REGS) { +static Term ParseList(JMPBUFF *FailBuff USES_REGS) { Term o; CELL *to_store; o = AbsPair(HR); loop: to_store = HR; HR += 2; - to_store[0] = ParseTerm( 999, FailBuff PASS_REGS); + to_store[0] = ParseTerm(999, FailBuff PASS_REGS); if (LOCAL_tokptr->Tok == Ord(Ponctuation_tok)) { if (((int)LOCAL_tokptr->TokInfo) == ',') { NextToken; - if (LOCAL_tokptr->Tok == Ord(Name_tok) && - strcmp((char *)RepAtom((Atom)(LOCAL_tokptr->TokInfo))->StrOfAE, "..") == 0) { - NextToken; - to_store[1] = ParseTerm( 999, FailBuff PASS_REGS); - } else { + { /* check for possible overflow against local stack */ if (HR > ASP - 4096) { to_store[1] = TermNil; - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } else { to_store[1] = AbsPair(HR); @@ -644,18 +640,19 @@ loop: } } else if (((int)LOCAL_tokptr->TokInfo) == '|') { NextToken; - to_store[1] = ParseTerm( 999, FailBuff PASS_REGS); + to_store[1] = ParseTerm(999, FailBuff PASS_REGS); } else { to_store[1] = MkAtomTerm(AtomNil); } } else { - syntax_msg("looking for symbol ',','|' got symbol '%s'", Yap_tokRep(LOCAL_tokptr) ); - FAIL; + syntax_msg("looking for symbol ',','|' got symbol '%s'", + Yap_tokRep(LOCAL_tokptr)); + FAIL; } return (o); } -static Term ParseTerm( int prio, JMPBUFF *FailBuff USES_REGS) { +static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) { /* parse term with priority prio */ Volatile Term t; Volatile Functor func; @@ -719,15 +716,15 @@ static Term ParseTerm( int prio, JMPBUFF *FailBuff USES_REGS) { /* try to parse as a prefix operator */ TRY( /* build appl on the heap */ - func = Yap_MkFunctor((Atom)t, 1); - if (func == NULL) { - syntax_msg( "Heap Overflow" ); + func = Yap_MkFunctor((Atom)t, 1); if (func == NULL) { + syntax_msg("Heap Overflow"); FAIL; - } t = ParseTerm( oprprio, FailBuff PASS_REGS); + } + t = ParseTerm(oprprio, FailBuff PASS_REGS); t = Yap_MkApplTerm(func, 1, &t); /* check for possible overflow against local stack */ if (HR > ASP - 4096) { - syntax_msg( "Stack Overflow" ); + syntax_msg("Stack Overflow"); FAIL; } curprio = opprio; , break;) @@ -735,7 +732,7 @@ static Term ParseTerm( int prio, JMPBUFF *FailBuff USES_REGS) { } if (LOCAL_tokptr->Tok == Ord(Ponctuation_tok) && Unsigned(LOCAL_tokptr->TokInfo) == 'l') - t = ParseArgs( (Atom)t, ')', FailBuff, 0L PASS_REGS); + t = ParseArgs((Atom)t, ')', FailBuff, 0L PASS_REGS); else t = MkAtomTerm((Atom)t); break; @@ -745,52 +742,52 @@ static Term ParseTerm( int prio, JMPBUFF *FailBuff USES_REGS) { NextToken; break; - case String_tok: /* build list on the heap */ - { - Volatile char *p = (char *)LOCAL_tokptr->TokInfo; - t = Yap_CharsToTDQ(p, CurrentModule, ENC_ISO_LATIN1 PASS_REGS); - if (!t) { - syntax_msg( "could not convert \'%s\'", (char *)LOCAL_tokptr->TokInfo ); - FAIL; - } - NextToken; - } break; - - case WString_tok: /* build list on the heap */ - { - Volatile wchar_t *p = (wchar_t *)LOCAL_tokptr->TokInfo; - t = Yap_WCharsToTDQ(p, CurrentModule PASS_REGS); - if (!t) { - syntax_msg( "could not convert \'%S\'", (wchar_t *)LOCAL_tokptr->TokInfo ); - FAIL; - } - NextToken; - } break; - - case BQString_tok: /* build list on the heap */ - { - Volatile char *p = (char *)LOCAL_tokptr->TokInfo; + case String_tok: /* build list on the heap */ + { + Volatile char *p = (char *)LOCAL_tokptr->TokInfo; + t = Yap_CharsToTDQ(p, CurrentModule, LOCAL_encoding PASS_REGS); + if (!t) { + syntax_msg("could not convert \"%s\"", (char *)LOCAL_tokptr->TokInfo); + FAIL; + } + NextToken; + } break; - t = Yap_CharsToTBQ(p, CurrentModule, ENC_ISO_LATIN1 PASS_REGS); - if (!t) { - syntax_msg( "could not convert \'%s\"", (char *)LOCAL_tokptr->TokInfo ); - FAIL; - } - NextToken; - } break; - - case WBQString_tok: /* build list on the heap */ - { - Volatile wchar_t *p = (wchar_t *)LOCAL_tokptr->TokInfo; - t = Yap_WCharsToTBQ(p, CurrentModule PASS_REGS); - if (!t) { - syntax_msg( "could not convert \"%S\"", (wchar_t *)LOCAL_tokptr->TokInfo ); - FAIL; - } - NextToken; - } break; - -case Var_tok: + case WString_tok: /* build list on the heap */ + { + Volatile wchar_t *p = (wchar_t *)LOCAL_tokptr->TokInfo; + t = Yap_WCharsToTDQ(p, CurrentModule PASS_REGS); + if (!t) { + syntax_msg("could not convert \'%S\'", (wchar_t *)LOCAL_tokptr->TokInfo); + FAIL; + } + NextToken; + } break; + + case BQString_tok: /* build list on the heap */ + { + Volatile char *p = (char *)LOCAL_tokptr->TokInfo; + + t = Yap_CharsToTBQ(p, CurrentModule, LOCAL_encoding PASS_REGS); + if (!t) { + syntax_msg("could not convert \'%s\"", (char *)LOCAL_tokptr->TokInfo); + FAIL; + } + NextToken; + } break; + + case WBQString_tok: /* build list on the heap */ + { + Volatile wchar_t *p = (wchar_t *)LOCAL_tokptr->TokInfo; + t = Yap_WCharsToTBQ(p, CurrentModule PASS_REGS); + if (!t) { + syntax_msg("could not convert \"%S\"", (wchar_t *)LOCAL_tokptr->TokInfo); + FAIL; + } + NextToken; + } break; + + case Var_tok: varinfo = (VarEntry *)(LOCAL_tokptr->TokInfo); if ((t = varinfo->VarAdr) == TermNil) { t = varinfo->VarAdr = MkVarTerm(); @@ -799,7 +796,7 @@ case Var_tok: break; case Error_tok: - syntax_msg( "found ill-formed \"%s\"", Yap_tokRep(LOCAL_tokptr) ); + syntax_msg("found ill-formed \"%s\"", Yap_tokRep(LOCAL_tokptr)); FAIL; case Ponctuation_tok: @@ -819,7 +816,7 @@ case Var_tok: NextToken; break; } - t = ParseList( FailBuff PASS_REGS); + t = ParseList(FailBuff PASS_REGS); checkfor(']', FailBuff PASS_REGS); break; case '{': @@ -834,7 +831,7 @@ case Var_tok: t = Yap_MkApplTerm(FunctorBraces, 1, &t); /* check for possible overflow against local stack */ if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } checkfor('}', FailBuff PASS_REGS); @@ -884,43 +881,46 @@ case Var_tok: NextToken; t = ParseTerm(GLOBAL_MaxPriority, FailBuff PASS_REGS); if (LOCAL_tokptr->Tok != QuasiQuotes_tok) { - syntax_msg( "expected to find quasi quotes, got \"%s\"", , Yap_tokRep(LOCAL_tokptr) ); + syntax_msg("expected to find quasi quotes, got \"%s\"", , + Yap_tokRep(LOCAL_tokptr)); FAIL; } if (!(is_quasi_quotation_syntax(t, &at))) { - syntax_msg( "bad quasi quotation syntax, at \"%s\"", Yap_tokRep(LOCAL_tokptr) ); + syntax_msg("bad quasi quotation syntax, at \"%s\"", + Yap_tokRep(LOCAL_tokptr)); FAIL; } /* Arg 2: the content */ tn = Yap_MkNewApplTerm(SWIFunctorToFunctor(FUNCTOR_quasi_quotation4), 4); tnp = RepAppl(tn) + 1; tnp[0] = MkAtomTerm(at); - if (!get_quasi_quotation(Yap_InitSlot(ArgOfTerm(2, tn)), - &qq->text, + if (!get_quasi_quotation(Yap_InitSlot(ArgOfTerm(2, tn)), &qq->text, qq->text + strlen((const char *)qq->text))) { - syntax_msg( "could not get quasi quotation, at \"%s\"", Yap_tokRep(LOCAL_tokptr) ); - FAIL; + syntax_msg("could not get quasi quotation, at \"%s\"", + Yap_tokRep(LOCAL_tokptr)); + FAIL; } if (positions) { intptr_t qqend = qq->end.charno; // set_range_position(positions, -1, qqend PASS_LD); - if (!PL_unify_term(Yap_InitSlot(ArgOfTerm(2, t) ), PL_FUNCTOR, + if (!PL_unify_term(Yap_InitSlot(ArgOfTerm(2, t)), PL_FUNCTOR, FUNCTOR_minus2, PL_INTPTR, qq->mid.charno + 2, /* end of | token */ PL_INTPTR, qqend - 2)) /* end minus "|}" */ - syntax_msg( "failed to unify quasi quotation, at \"%s\"", Yap_tokRep(LOCAL_tokptr) ); - FAIL; + syntax_msg("failed to unify quasi quotation, at \"%s\"", + Yap_tokRep(LOCAL_tokptr)); + FAIL; } - tnp[2] = - Yap_GetFromSlot(LOCAL_varnames); /* Arg 3: the var dictionary */ + tnp[2] = Yap_GetFromSlot(LOCAL_varnames); /* Arg 3: the var dictionary */ /* Arg 4: the result */ t = ArgOfTerm(4, tn); if (!(to = PL_new_term_ref()) || !PL_unify_list(LOCAL_qq_tail, to, LOCAL_qq_tail) || - !PL_unify(to, Yap_InitSlot(tn ))) { - syntax_msg( "failed to unify quasi quotation, at \"%s\"", Yap_tokRep(LOCAL_tokptr) ); + !PL_unify(to, Yap_InitSlot(tn))) { + syntax_msg("failed to unify quasi quotation, at \"%s\"", + Yap_tokRep(LOCAL_tokptr)); FAIL; } } @@ -928,7 +928,7 @@ case Var_tok: NextToken; break; default: - syntax_msg( "expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr) ); + syntax_msg("expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr)); FAIL; } @@ -941,38 +941,39 @@ case Var_tok: opprio <= prio && oplprio >= curprio) { /* try parsing as infix operator */ Volatile int oldprio = curprio; - TRY3(func = Yap_MkFunctor((Atom)LOCAL_tokptr->TokInfo, 2); - if (func == NULL) { - syntax_msg("Heap Overflow"); - FAIL; - } NextToken; - { - Term args[2]; - args[0] = t; - args[1] = ParseTerm(oprprio, FailBuff PASS_REGS); - t = Yap_MkApplTerm(func, 2, args); - /* check for possible overflow against local stack */ - if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); - FAIL; - } - }, - curprio = opprio; - opinfo = save_opinfo; continue;, opinfo = save_opinfo; - curprio = oldprio;) + TRY3( + func = Yap_MkFunctor((Atom)LOCAL_tokptr->TokInfo, 2); + if (func == NULL) { + syntax_msg("Heap Overflow"); + FAIL; + } NextToken; + { + Term args[2]; + args[0] = t; + args[1] = ParseTerm(oprprio, FailBuff PASS_REGS); + t = Yap_MkApplTerm(func, 2, args); + /* check for possible overflow against local stack */ + if (HR > ASP - 4096) { + syntax_msg("Stack Overflow"); + FAIL; + } + }, + curprio = opprio; + opinfo = save_opinfo; continue;, opinfo = save_opinfo; + curprio = oldprio;) } if (IsPosfixOp(opinfo, &opprio, &oplprio PASS_REGS) && opprio <= prio && oplprio >= curprio) { /* parse as posfix operator */ Functor func = Yap_MkFunctor((Atom)LOCAL_tokptr->TokInfo, 1); if (func == NULL) { - syntax_msg("Heap Overflow"); + syntax_msg("Heap Overflow"); FAIL; } t = Yap_MkApplTerm(func, 1, &t); /* check for possible overflow against local stack */ if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } curprio = opprio; @@ -991,7 +992,7 @@ case Var_tok: t = Yap_MkApplTerm(FunctorComma, 2, args); /* check for possible overflow against local stack */ if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } curprio = 1000; @@ -1006,7 +1007,7 @@ case Var_tok: t = Yap_MkApplTerm(FunctorVBar, 2, args); /* check for possible overflow against local stack */ if (HR > ASP - 4096) { - syntax_msg("Stack Overflow"); + syntax_msg("Stack Overflow"); FAIL; } curprio = opprio; @@ -1021,7 +1022,7 @@ case Var_tok: IsPosfixOp(AtomEmptySquareBrackets, &opprio, &oplprio PASS_REGS) && opprio <= prio && oplprio >= curprio) { - t = ParseArgs( AtomEmptySquareBrackets, ']', FailBuff, t PASS_REGS); + t = ParseArgs(AtomEmptySquareBrackets, ']', FailBuff, t PASS_REGS); t = MakeAccessor(t, FunctorEmptySquareBrackets PASS_REGS); curprio = opprio; continue; @@ -1029,14 +1030,14 @@ case Var_tok: IsPosfixOp(AtomEmptyCurlyBrackets, &opprio, &oplprio PASS_REGS) && opprio <= prio && oplprio >= curprio) { - t = ParseArgs( AtomEmptyCurlyBrackets, '}', FailBuff, t PASS_REGS); + t = ParseArgs(AtomEmptyCurlyBrackets, '}', FailBuff, t PASS_REGS); t = MakeAccessor(t, FunctorEmptyCurlyBrackets PASS_REGS); curprio = opprio; continue; } } if (LOCAL_tokptr->Tok <= Ord(WString_tok)) { - syntax_msg( "expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr) ); + syntax_msg("expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr)); FAIL; } break; @@ -1048,28 +1049,27 @@ Term Yap_Parse(UInt prio) { CACHE_REGS Volatile Term t; JMPBUFF FailBuff; - yhandle_t sls = Yap_StartSlots(); + yhandle_t sls = Yap_StartSlots(); if (!sigsetjmp(FailBuff.JmpBuff, 0)) { t = ParseTerm(prio, &FailBuff PASS_REGS); #if DEBUG - if (GLOBAL_Option['p' - 'a' + 1]) { - Yap_DebugPutc(stderr, '['); - if (t==0) Yap_DebugPlWrite(MkIntTerm(0)); - else Yap_DebugPlWrite(t); - Yap_DebugPutc(stderr, ']'); - Yap_DebugPutc(stderr, '\n'); - } + if (GLOBAL_Option['p' - 'a' + 1]) { + Yap_DebugPutc(stderr, '['); + if (t == 0) + Yap_DebugPlWrite(MkIntTerm(0)); + else + Yap_DebugPlWrite(t); + Yap_DebugPutc(stderr, ']'); + Yap_DebugPutc(stderr, '\n'); + } #endif - Yap_CloseSlots( sls ); - if (LOCAL_tokptr != NULL && - LOCAL_tokptr->Tok != Ord(eot_tok) - ) { + Yap_CloseSlots(sls); + if (LOCAL_tokptr != NULL && LOCAL_tokptr->Tok != Ord(eot_tok)) { t = 0; } - if (t != 0 && - LOCAL_Error_TYPE == SYNTAX_ERROR) { + if (t != 0 && LOCAL_Error_TYPE == SYNTAX_ERROR) { LOCAL_Error_TYPE = YAP_NO_ERROR; LOCAL_ErrorMessage = NULL; } @@ -1077,7 +1077,7 @@ Term Yap_Parse(UInt prio) { // return (0L); return t; } - Yap_CloseSlots( sls ); + Yap_CloseSlots(sls); return (0); } diff --git a/C/scanner.c b/C/scanner.c index 31b6de29e..b008a0295 100755 --- a/C/scanner.c +++ b/C/scanner.c @@ -1735,17 +1735,16 @@ TokEntry *Yap_tokenizer(struct stream_desc *inp_stream, bool store_comments, case SY: if (ch == '`') goto quoted_string; - if (ch == '.') { - int nch = Yap_peek(inp_stream - GLOBAL_Stream); - if (chtype(nch) == BS || chtype(nch) == EF || nch == '%') { + och = ch; + ch = getchr(inp_stream); + if (och == '.') { + if (chtype(ch) == BS || chtype(ch) == EF || ch == '%') { t->Tok = Ord(kind = eot_tok); if (chtype(ch) == EF) mark_eof(inp_stream); return l; } } - och = ch; - ch = getchr(inp_stream); if (och == '/' && ch == '*') { if (store_comments) { CHECK_SPACE(); @@ -1830,9 +1829,9 @@ TokEntry *Yap_tokenizer(struct stream_desc *inp_stream, bool store_comments, Yap_ReleasePreAllocCodeSpace((CODEADDR)TokImage); t->Tok = Ord(kind = Name_tok); if (ch == '(') - solo_flag = FALSE; + solo_flag = false; else - solo_flag = TRUE; + solo_flag = true; } break; diff --git a/C/stdpreds.c b/C/stdpreds.c index 2c7b0efa5..8f30469da 100755 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -1588,7 +1588,7 @@ static Int p_unlock_system(USES_REGS1) { return TRUE; } -static Int p_enterundefp(USES_REGS1) { +static Int enter_undefp(USES_REGS1) { if (LOCAL_DoingUndefp) { return FALSE; } @@ -1596,7 +1596,7 @@ static Int p_enterundefp(USES_REGS1) { return TRUE; } -static Int p_exitundefp(USES_REGS1) { +static Int exit_undefp(USES_REGS1) { if (LOCAL_DoingUndefp) { LOCAL_DoingUndefp = FALSE; return TRUE; @@ -1745,8 +1745,8 @@ void Yap_InitCPreds(void) { Yap_InitCPred("$halt", 1, p_halt, SyncPredFlag); Yap_InitCPred("$lock_system", 0, p_lock_system, SafePredFlag); Yap_InitCPred("$unlock_system", 0, p_unlock_system, SafePredFlag); - Yap_InitCPred("$enter_undefp", 0, p_enterundefp, SafePredFlag); - Yap_InitCPred("$exit_undefp", 0, p_exitundefp, SafePredFlag); + Yap_InitCPred("$enter_undefp", 0, enter_undefp, SafePredFlag); + Yap_InitCPred("$exit_undefp", 0, exit_undefp, SafePredFlag); #ifdef YAP_JIT Yap_InitCPred("$jit_init", 1, p_jit, SafePredFlag | SyncPredFlag); @@ -1772,6 +1772,7 @@ void Yap_InitCPreds(void) { Yap_InitCmpPreds(); Yap_InitCoroutPreds(); Yap_InitDBPreds(); + Yap_InitErrorPreds(); Yap_InitExecFs(); Yap_InitGlobals(); Yap_InitInlines(); diff --git a/C/traced_absmi_insts.h b/C/traced_absmi_insts.h index ea0113f23..fb9bbe5a0 100644 --- a/C/traced_absmi_insts.h +++ b/C/traced_absmi_insts.h @@ -14334,10 +14334,7 @@ S_SREG = RepAppl(d0); } #endif /* FROZEN_STACKS */ d0 = ARG1; - if (PRED_GOAL_EXPANSION_ALL) { - goto execute_metacall; - } - restart_execute: + restart_execute: deref_head(d0, execute_unk); execute_nvar: if (IsApplTerm(d0)) { diff --git a/C/write.c b/C/write.c index 0c5eb1b33..e2049a400 100644 --- a/C/write.c +++ b/C/write.c @@ -445,7 +445,7 @@ static int legalAtom(unsigned char *s) /* Is this a legal atom ? */ } else if (Yap_chtype[ch] == SL) { return (!s[1]); } else if ((ch == ',' || ch == '.') && !s[1]) { - return FALSE; + return false; } else { if (ch == '/') { if (s[1] == '*') @@ -470,7 +470,9 @@ static wtype AtomIsSymbols(unsigned char *s) /* Is this atom just formed by symbols ? */ { int ch; - if (Yap_chtype[(int)s[0]] == SL && s[1] == '\0') + if ( Yap_chtype[(int)s[0]] == SL && + s[1] == '\0' + ) return (separator); while ((ch = *s++) != '\0') { if (Yap_chtype[ch] != SY) @@ -840,6 +842,9 @@ static void write_list(Term t, int direction, int depth, do_jump = (direction >= 0); } if (wglb->MaxDepth != 0 && depth > wglb->MaxDepth) { + if (lastw == symbol || lastw == separator) { + wrputc(' ', wglb->stream); + } wrputc('|', wglb->stream); putAtom(Atom3Dots, wglb->Quote_illegal, wglb); return; @@ -856,6 +861,9 @@ static void write_list(Term t, int direction, int depth, Term nt = from_pointer(RepPair(t) + 1, &nrwt, wglb); /* we found an infinite loop */ if (IsAtomTerm(nt)) { + if (lastw == symbol || lastw == separator) { + wrputc(' ', wglb->stream); + } wrputc('|', wglb->stream); writeTerm(nt, 999, depth, FALSE, wglb, rwt); } else { @@ -865,6 +873,9 @@ static void write_list(Term t, int direction, int depth, } restore_from_write(&nrwt, wglb); } else if (ti != MkAtomTerm(AtomNil)) { + if (lastw == symbol || lastw == separator) { + wrputc(' ', wglb->stream); + } wrputc('|', wglb->stream); lastw = separator; writeTerm(from_pointer(RepPair(t) + 1, &nrwt, wglb), 999, depth, FALSE, @@ -1101,6 +1112,9 @@ static void writeTerm(Term t, int p, int depth, int rinfixarg, wrputc(',', wglb->stream); lastw = separator; } else if (!strcmp((char *)RepAtom(atom)->StrOfAE, "|")) { + if (lastw == symbol || lastw == separator) { + wrputc(' ', wglb->stream); + } wrputc('|', wglb->stream); lastw = separator; } else diff --git a/H/TermExt.h b/H/TermExt.h index aa0541a24..32385df7b 100755 --- a/H/TermExt.h +++ b/H/TermExt.h @@ -17,108 +17,90 @@ @file TermExt.h -@page Extensions Extensions to Prolog - -YAP includes a number of extensions over the original Prolog -language. Next, we discuss support to the most important ones. - - */ - #ifdef USE_SYSTEM_MALLOC -#define SF_STORE (&(Yap_heap_regs->funcs)) +#define SF_STORE (&(Yap_heap_regs->funcs)) #else -#define SF_STORE ((special_functors *)HEAP_INIT_BASE) +#define SF_STORE ((special_functors *)HEAP_INIT_BASE) #endif #if defined(USE_OFFSETS) -#define AtomFoundVar ((Atom)(&(((special_functors *)(NULL))->AtFoundVar))) -#define AtomFreeTerm ((Atom)(&(((special_functors *)(NULL))->AtFreeTerm))) -#define AtomNil ((Atom)(&(((special_functors *)(NULL))->AtNil))) -#define AtomDot ((Atom)(&(((special_functors *)(NULL))->AtDot))) +#define AtomFoundVar ((Atom)(&(((special_functors *)(NULL))->AtFoundVar))) +#define AtomFreeTerm ((Atom)(&(((special_functors *)(NULL))->AtFreeTerm))) +#define AtomNil ((Atom)(&(((special_functors *)(NULL))->AtNil))) +#define AtomDot ((Atom)(&(((special_functors *)(NULL))->AtDot))) #elif OLD_STYLE_INITIAL_ATOMS -#define AtomFoundVar AbsAtom((AtomEntry *)&(SF_STORE->AtFoundVar)) -#define AtomFreeTerm AbsAtom((AtomEntry *)&(SF_STORE->AtFreeTerm)) -#define AtomNil AbsAtom((AtomEntry *)&(SF_STORE->AtNil)) -#define AtomDot AbsAtom((AtomEntry *)&(SF_STORE->AtDot)) +#define AtomFoundVar AbsAtom((AtomEntry *)&(SF_STORE->AtFoundVar)) +#define AtomFreeTerm AbsAtom((AtomEntry *)&(SF_STORE->AtFreeTerm)) +#define AtomNil AbsAtom((AtomEntry *)&(SF_STORE->AtNil)) +#define AtomDot AbsAtom((AtomEntry *)&(SF_STORE->AtDot)) #else -#define AtomFoundVar AbsAtom(SF_STORE->AtFoundVar) -#define AtomFreeTerm AbsAtom(SF_STORE->AtFreeTerm) -#define AtomNil AbsAtom(SF_STORE->AtNil) -#define AtomDot AbsAtom(SF_STORE->AtDot) +#define AtomFoundVar AbsAtom(SF_STORE->AtFoundVar) +#define AtomFreeTerm AbsAtom(SF_STORE->AtFreeTerm) +#define AtomNil AbsAtom(SF_STORE->AtNil) +#define AtomDot AbsAtom(SF_STORE->AtDot) #endif -#define TermFoundVar MkAtomTerm(AtomFoundVar) -#define TermFreeTerm MkAtomTerm(AtomFreeTerm) -#define TermNil MkAtomTerm(AtomNil) -#define TermDot MkAtomTerm(AtomDot) +#define TermFoundVar MkAtomTerm(AtomFoundVar) +#define TermFreeTerm MkAtomTerm(AtomFreeTerm) +#define TermNil MkAtomTerm(AtomNil) +#define TermDot MkAtomTerm(AtomDot) -typedef enum -{ - db_ref_e = sizeof (Functor *), - attvar_e = 2*sizeof (Functor *), - double_e = 3 * sizeof (Functor *), - long_int_e = 4 * sizeof (Functor *), - big_int_e = 5 * sizeof (Functor *), - string_e = 6 * sizeof (Functor *) -} -blob_type; +typedef enum { + db_ref_e = sizeof(Functor *), + attvar_e = 2 * sizeof(Functor *), + double_e = 3 * sizeof(Functor *), + long_int_e = 4 * sizeof(Functor *), + big_int_e = 5 * sizeof(Functor *), + string_e = 6 * sizeof(Functor *) +} blob_type; -#define FunctorDBRef ((Functor)(db_ref_e)) -#define FunctorAttVar ((Functor)(attvar_e)) -#define FunctorDouble ((Functor)(double_e)) -#define FunctorLongInt ((Functor)(long_int_e)) -#define FunctorBigInt ((Functor)(big_int_e)) -#define FunctorString ((Functor)(string_e)) -#define EndSpecials (string_e+sizeof(Functor *)) +#define FunctorDBRef ((Functor)(db_ref_e)) +#define FunctorAttVar ((Functor)(attvar_e)) +#define FunctorDouble ((Functor)(double_e)) +#define FunctorLongInt ((Functor)(long_int_e)) +#define FunctorBigInt ((Functor)(big_int_e)) +#define FunctorString ((Functor)(string_e)) +#define EndSpecials (string_e + sizeof(Functor *)) #include "inline-only.h" -#define IsAttVar(pt) __IsAttVar((pt) PASS_REGS) +#define IsAttVar(pt) __IsAttVar((pt)PASS_REGS) -INLINE_ONLY inline EXTERN int __IsAttVar (CELL *pt USES_REGS); +INLINE_ONLY inline EXTERN int __IsAttVar(CELL *pt USES_REGS); -INLINE_ONLY inline EXTERN int -__IsAttVar (CELL *pt USES_REGS) -{ +INLINE_ONLY inline EXTERN int __IsAttVar(CELL *pt USES_REGS) { #ifdef YAP_H - return (pt)[-1] == (CELL)attvar_e - && pt < HR; + return (pt)[-1] == (CELL)attvar_e && pt < HR; #else return (pt)[-1] == (CELL)attvar_e; #endif } -INLINE_ONLY inline EXTERN int GlobalIsAttVar (CELL *pt); +INLINE_ONLY inline EXTERN int GlobalIsAttVar(CELL *pt); -INLINE_ONLY inline EXTERN int -GlobalIsAttVar (CELL *pt) -{ +INLINE_ONLY inline EXTERN int GlobalIsAttVar(CELL *pt) { return (pt)[-1] == (CELL)attvar_e; } -typedef enum - { - BIG_INT = 0x01, - BIG_RATIONAL = 0x02, - BIG_FLOAT = 0x04, - EMPTY_ARENA = 0x10, - ARRAY_INT = 0x21, - ARRAY_FLOAT = 0x22, - CLAUSE_LIST = 0x40, - EXTERNAL_BLOB = 0x100, /* generic data */ - USER_BLOB_START = 0x1000, /* user defined blob */ - USER_BLOB_END = 0x1100 /* end of user defined blob */ - } -big_blob_type; +typedef enum { + BIG_INT = 0x01, + BIG_RATIONAL = 0x02, + BIG_FLOAT = 0x04, + EMPTY_ARENA = 0x10, + ARRAY_INT = 0x21, + ARRAY_FLOAT = 0x22, + CLAUSE_LIST = 0x40, + EXTERNAL_BLOB = 0x100, /* generic data */ + USER_BLOB_START = 0x1000, /* user defined blob */ + USER_BLOB_END = 0x1100 /* end of user defined blob */ +} big_blob_type; -INLINE_ONLY inline EXTERN blob_type BlobOfFunctor (Functor f); +INLINE_ONLY inline EXTERN blob_type BlobOfFunctor(Functor f); -INLINE_ONLY inline EXTERN blob_type -BlobOfFunctor (Functor f) -{ - return (blob_type) ((CELL)f); +INLINE_ONLY inline EXTERN blob_type BlobOfFunctor(Functor f) { + return (blob_type)((CELL)f); } typedef struct cp_frame { @@ -131,44 +113,35 @@ typedef struct cp_frame { #endif } copy_frame; - #ifdef COROUTINING -typedef struct -{ +typedef struct { /* what to do when someone tries to bind our term to someone else in some predefined context */ - void (*bind_op) (Term *, Term CACHE_TYPE); + void (*bind_op)(Term *, Term CACHE_TYPE); /* what to do if someone wants to copy our constraint */ - int (*copy_term_op) (CELL *, struct cp_frame **, CELL * CACHE_TYPE); + int (*copy_term_op)(CELL *, struct cp_frame **, CELL *CACHE_TYPE); /* copy the constraint into a term and back */ - Term (*to_term_op) (CELL *); - int (*term_to_op) (Term, Term CACHE_TYPE); + Term (*to_term_op)(CELL *); + int (*term_to_op)(Term, Term CACHE_TYPE); /* op called to do marking in GC */ - void (*mark_op) (CELL *); + void (*mark_op)(CELL *); } ext_op; /* known delays */ -typedef enum -{ - empty_ext = 0 * sizeof (ext_op), /* default op, this should never be called */ - attvars_ext = 1 * sizeof (ext_op) /* support for attributed variables */ - /* add your own extensions here */ - /* keep this one */ -} -exts; - - - +typedef enum { + empty_ext = 0 * sizeof(ext_op), /* default op, this should never be called */ + attvars_ext = 1 * sizeof(ext_op) /* support for attributed variables */ + /* add your own extensions here */ + /* keep this one */ +} exts; #endif - #if defined(YAP_H) /* make sure that these data structures are the first thing to be allocated in the heap when we start the system */ -typedef struct special_functors_struct -{ +typedef struct special_functors_struct { #if 0 struct ExtraAtomEntryStruct AtFoundVar; @@ -181,57 +154,43 @@ typedef struct special_functors_struct struct AtomEntryStruct *AtNil; struct AtomEntryStruct *AtDot; #endif -} -special_functors; +} special_functors; #endif /* YAP_H */ INLINE_ONLY inline EXTERN Float CpFloatUnaligned(CELL *ptr); -#define MkFloatTerm(fl) __MkFloatTerm((fl) PASS_REGS) +#define MkFloatTerm(fl) __MkFloatTerm((fl)PASS_REGS) -INLINE_ONLY inline EXTERN Term __MkFloatTerm (Float USES_REGS); +INLINE_ONLY inline EXTERN Term __MkFloatTerm(Float USES_REGS); -INLINE_ONLY inline EXTERN Float FloatOfTerm (Term t); +INLINE_ONLY inline EXTERN Float FloatOfTerm(Term t); #if SIZEOF_DOUBLE == SIZEOF_INT_P -INLINE_ONLY inline EXTERN Term -__MkFloatTerm (Float dbl USES_REGS) -{ - return (Term) ((HR[0] = (CELL) FunctorDouble, *(Float *) (HR + 1) = - dbl, HR[2] = EndSpecials, HR += - 3, AbsAppl (HR - 3))); +INLINE_ONLY inline EXTERN Term __MkFloatTerm(Float dbl USES_REGS) { + return (Term)((HR[0] = (CELL)FunctorDouble, *(Float *)(HR + 1) = dbl, + HR[2] = EndSpecials, HR += 3, AbsAppl(HR - 3))); } - -INLINE_ONLY inline EXTERN Float -FloatOfTerm (Term t) -{ - return (Float) (*(Float *) (RepAppl (t) + 1)); +INLINE_ONLY inline EXTERN Float FloatOfTerm(Term t) { + return (Float)(*(Float *)(RepAppl(t) + 1)); } - - #define InitUnalignedFloat() -INLINE_ONLY inline EXTERN Float -CpFloatUnaligned(CELL *ptr) -{ +INLINE_ONLY inline EXTERN Float CpFloatUnaligned(CELL *ptr) { return *((Float *)ptr); } #else -#if SIZEOF_DOUBLE == 2*SIZEOF_INT_P +#if SIZEOF_DOUBLE == 2 * SIZEOF_INT_P -#define DOUBLE_ALIGNED(ADDR) ((CELL)(ADDR) & 0x4) +#define DOUBLE_ALIGNED(ADDR) ((CELL)(ADDR)&0x4) -INLINE_ONLY EXTERN inline void -AlignGlobalForDouble( USES_REGS1 ); +INLINE_ONLY EXTERN inline void AlignGlobalForDouble(USES_REGS1); -INLINE_ONLY EXTERN inline void -AlignGlobalForDouble( USES_REGS1 ) -{ +INLINE_ONLY EXTERN inline void AlignGlobalForDouble(USES_REGS1) { /* Force Alignment for floats. Note that garbage collector may break the alignment; */ if (!DOUBLE_ALIGNED(HR)) { @@ -241,19 +200,14 @@ AlignGlobalForDouble( USES_REGS1 ) } #ifdef i386 -INLINE_ONLY inline EXTERN Float -CpFloatUnaligned (CELL * ptr) -{ - return *((Float *) (ptr + 1)); +INLINE_ONLY inline EXTERN Float CpFloatUnaligned(CELL *ptr) { + return *((Float *)(ptr + 1)); } #else /* first, need to address the alignment problem */ -INLINE_ONLY inline EXTERN Float -CpFloatUnaligned (CELL * ptr) -{ - union - { +INLINE_ONLY inline EXTERN Float CpFloatUnaligned(CELL *ptr) { + union { Float f; CELL d[2]; } u; @@ -264,28 +218,21 @@ CpFloatUnaligned (CELL * ptr) #endif -INLINE_ONLY inline EXTERN Term -__MkFloatTerm (Float dbl USES_REGS) -{ - return (Term) ((AlignGlobalForDouble ( PASS_REGS1 ), HR[0] = - (CELL) FunctorDouble, *(Float *) (HR + 1) = dbl, HR[3] = - EndSpecials, HR += - 4, AbsAppl (HR - 4))); +INLINE_ONLY inline EXTERN Term __MkFloatTerm(Float dbl USES_REGS) { + return (Term)((AlignGlobalForDouble(PASS_REGS1), HR[0] = (CELL)FunctorDouble, + *(Float *)(HR + 1) = dbl, HR[3] = EndSpecials, HR += 4, + AbsAppl(HR - 4))); } - -INLINE_ONLY inline EXTERN Float -FloatOfTerm (Term t) -{ - return (Float) ((DOUBLE_ALIGNED (RepAppl (t)) ? *(Float *) (RepAppl (t) + 1) - : CpFloatUnaligned (RepAppl (t)))); +INLINE_ONLY inline EXTERN Float FloatOfTerm(Term t) { + return (Float)((DOUBLE_ALIGNED(RepAppl(t)) ? *(Float *)(RepAppl(t) + 1) + : CpFloatUnaligned(RepAppl(t)))); } - /* no alignment problems for 64 bit machines */ #else - /* OOPS, YAP only understands Floats that are as large as cells or that - take two cells!!! */ +/* OOPS, YAP only understands Floats that are as large as cells or that + take two cells!!! */ OOPS @@ -296,52 +243,38 @@ OOPS #include #endif +INLINE_ONLY inline EXTERN int IsFloatTerm(Term); -INLINE_ONLY inline EXTERN int IsFloatTerm (Term); - -INLINE_ONLY inline EXTERN int -IsFloatTerm (Term t) -{ - return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorDouble); +INLINE_ONLY inline EXTERN int IsFloatTerm(Term t) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorDouble); } - /* extern Functor FunctorLongInt; */ -#define MkLongIntTerm(i) __MkLongIntTerm((i) PASS_REGS) +#define MkLongIntTerm(i) __MkLongIntTerm((i)PASS_REGS) -INLINE_ONLY inline EXTERN Term __MkLongIntTerm (Int USES_REGS); +INLINE_ONLY inline EXTERN Term __MkLongIntTerm(Int USES_REGS); -INLINE_ONLY inline EXTERN Term -__MkLongIntTerm (Int i USES_REGS) -{ - HR[0] = (CELL) FunctorLongInt; - HR[1] = (CELL) (i); - HR[2] = EndSpecials; +INLINE_ONLY inline EXTERN Term __MkLongIntTerm(Int i USES_REGS) { + HR[0] = (CELL)FunctorLongInt; + HR[1] = (CELL)(i); + HR[2] = EndSpecials; HR += 3; return AbsAppl(HR - 3); } +INLINE_ONLY inline EXTERN Int LongIntOfTerm(Term t); -INLINE_ONLY inline EXTERN Int LongIntOfTerm (Term t); - -INLINE_ONLY inline EXTERN Int -LongIntOfTerm (Term t) -{ - return (Int) (RepAppl (t)[1]); +INLINE_ONLY inline EXTERN Int LongIntOfTerm(Term t) { + return (Int)(RepAppl(t)[1]); } +INLINE_ONLY inline EXTERN int IsLongIntTerm(Term); - -INLINE_ONLY inline EXTERN int IsLongIntTerm (Term); - -INLINE_ONLY inline EXTERN int -IsLongIntTerm (Term t) -{ - return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorLongInt); +INLINE_ONLY inline EXTERN int IsLongIntTerm(Term t) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorLongInt); } - /****************************************************/ /*********** strings, coded as UTF-8 ****************/ @@ -350,67 +283,54 @@ IsLongIntTerm (Term t) /* extern Functor FunctorString; */ -#define MkStringTerm(i) __MkStringTerm((i) PASS_REGS) +#define MkStringTerm(i) __MkStringTerm((i)PASS_REGS) -INLINE_ONLY inline EXTERN Term __MkStringTerm (const char *s USES_REGS); +INLINE_ONLY inline EXTERN Term __MkStringTerm(const char *s USES_REGS); -INLINE_ONLY inline EXTERN Term -__MkStringTerm (const char *s USES_REGS) -{ +INLINE_ONLY inline EXTERN Term __MkStringTerm(const char *s USES_REGS) { Term t = AbsAppl(HR); - size_t sz = ALIGN_BY_TYPE(strlen((char *)s)+1,CELL); - HR[0] = (CELL) FunctorString; - HR[1] = (CELL) sz; - strcpy((char *)(HR+2), (const char *)s); - HR[2+sz] = EndSpecials; - HR += 3+sz; + size_t sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL); + HR[0] = (CELL)FunctorString; + HR[1] = (CELL)sz; + strcpy((char *)(HR + 2), (const char *)s); + HR[2 + sz] = EndSpecials; + HR += 3 + sz; return t; } -INLINE_ONLY inline EXTERN Term __MkUStringTerm (const unsigned char *s USES_REGS); +INLINE_ONLY inline EXTERN Term +__MkUStringTerm(const unsigned char *s USES_REGS); INLINE_ONLY inline EXTERN Term -__MkUStringTerm (const unsigned char *s USES_REGS) -{ +__MkUStringTerm(const unsigned char *s USES_REGS) { Term t = AbsAppl(HR); - size_t sz = ALIGN_BY_TYPE(strlen((char *)s)+1,CELL); - HR[0] = (CELL) FunctorString; - HR[1] = (CELL) sz; - strcpy((char *)(HR+2), (const char *)s); - HR[2+sz] = EndSpecials; - HR += 3+sz; + size_t sz = ALIGN_BY_TYPE(strlen((char *)s) + 1, CELL); + HR[0] = (CELL)FunctorString; + HR[1] = (CELL)sz; + strcpy((char *)(HR + 2), (const char *)s); + HR[2 + sz] = EndSpecials; + HR += 3 + sz; return t; } +INLINE_ONLY inline EXTERN const unsigned char *UStringOfTerm(Term t); -INLINE_ONLY inline EXTERN const unsigned char *UStringOfTerm (Term t); - -INLINE_ONLY inline EXTERN const unsigned char * -UStringOfTerm (Term t) -{ - return (const unsigned char *) (RepAppl (t)+2); +INLINE_ONLY inline EXTERN const unsigned char *UStringOfTerm(Term t) { + return (const unsigned char *)(RepAppl(t) + 2); } -INLINE_ONLY inline EXTERN const char *StringOfTerm (Term t); +INLINE_ONLY inline EXTERN const char *StringOfTerm(Term t); -INLINE_ONLY inline EXTERN const char * -StringOfTerm (Term t) -{ - return (const char *) (RepAppl (t)+2); +INLINE_ONLY inline EXTERN const char *StringOfTerm(Term t) { + return (const char *)(RepAppl(t) + 2); } +INLINE_ONLY inline EXTERN int IsStringTerm(Term); - -INLINE_ONLY inline EXTERN int IsStringTerm (Term); - -INLINE_ONLY inline EXTERN int -IsStringTerm (Term t) -{ - return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorString); +INLINE_ONLY inline EXTERN int IsStringTerm(Term t) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorString); } - - /****************************************************/ #ifdef USE_GMP @@ -422,7 +342,7 @@ IsStringTerm (Term t) #undef __cplusplus #include #define __cplusplus OCXX -#elif !defined( __GMP_H__ ) +#elif !defined(__GMP_H__) #include #endif @@ -442,12 +362,10 @@ typedef struct { #endif -INLINE_ONLY inline EXTERN int IsBigIntTerm (Term); +INLINE_ONLY inline EXTERN int IsBigIntTerm(Term); -INLINE_ONLY inline EXTERN int -IsBigIntTerm (Term t) -{ - return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorBigInt); +INLINE_ONLY inline EXTERN int IsBigIntTerm(Term t) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorBigInt); } #ifdef USE_GMP @@ -458,237 +376,154 @@ MP_INT *Yap_BigIntOfTerm(Term); Term Yap_MkBigRatTerm(MP_RAT *); MP_RAT *Yap_BigRatOfTerm(Term); -INLINE_ONLY inline EXTERN void MPZ_SET (mpz_t, MP_INT *); +INLINE_ONLY inline EXTERN void MPZ_SET(mpz_t, MP_INT *); -INLINE_ONLY inline EXTERN void -MPZ_SET (mpz_t dest, MP_INT *src) -{ +INLINE_ONLY inline EXTERN void MPZ_SET(mpz_t dest, MP_INT *src) { dest->_mp_size = src->_mp_size; dest->_mp_alloc = src->_mp_alloc; dest->_mp_d = src->_mp_d; } -INLINE_ONLY inline EXTERN int IsLargeIntTerm (Term); +INLINE_ONLY inline EXTERN int IsLargeIntTerm(Term); -INLINE_ONLY inline EXTERN int -IsLargeIntTerm (Term t) -{ - return (int) (IsApplTerm (t) - && ((FunctorOfTerm (t) <= FunctorBigInt) - && (FunctorOfTerm (t) >= FunctorLongInt))); +INLINE_ONLY inline EXTERN int IsLargeIntTerm(Term t) { + return (int)(IsApplTerm(t) && ((FunctorOfTerm(t) <= FunctorBigInt) && + (FunctorOfTerm(t) >= FunctorLongInt))); } +INLINE_ONLY inline EXTERN UInt Yap_SizeOfBigInt(Term); -INLINE_ONLY inline EXTERN UInt Yap_SizeOfBigInt (Term); - -INLINE_ONLY inline EXTERN UInt -Yap_SizeOfBigInt (Term t) -{ - CELL *pt = RepAppl(t)+1; - return 2+(sizeof(MP_INT)+ - (((MP_INT *)pt)->_mp_alloc*sizeof(mp_limb_t)))/sizeof(CELL); +INLINE_ONLY inline EXTERN UInt Yap_SizeOfBigInt(Term t) { + CELL *pt = RepAppl(t) + 1; + return 2 + + (sizeof(MP_INT) + (((MP_INT *)pt)->_mp_alloc * sizeof(mp_limb_t))) / + sizeof(CELL); } - - #else +INLINE_ONLY inline EXTERN int IsLargeIntTerm(Term); - -INLINE_ONLY inline EXTERN int IsLargeIntTerm (Term); - -INLINE_ONLY inline EXTERN int -IsLargeIntTerm (Term t) -{ - return (int) (IsApplTerm (t) && FunctorOfTerm (t) == FunctorLongInt); +INLINE_ONLY inline EXTERN int IsLargeIntTerm(Term t) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorLongInt); } - - #endif /* extern Functor FunctorLongInt; */ -INLINE_ONLY inline EXTERN int IsLargeNumTerm (Term); +INLINE_ONLY inline EXTERN int IsLargeNumTerm(Term); -INLINE_ONLY inline EXTERN int -IsLargeNumTerm (Term t) -{ - return (int) (IsApplTerm (t) - && ((FunctorOfTerm (t) <= FunctorBigInt) - && (FunctorOfTerm (t) >= FunctorDouble))); +INLINE_ONLY inline EXTERN int IsLargeNumTerm(Term t) { + return (int)(IsApplTerm(t) && ((FunctorOfTerm(t) <= FunctorBigInt) && + (FunctorOfTerm(t) >= FunctorDouble))); } -INLINE_ONLY inline EXTERN int IsExternalBlobTerm (Term, CELL); +INLINE_ONLY inline EXTERN int IsExternalBlobTerm(Term, CELL); -INLINE_ONLY inline EXTERN int -IsExternalBlobTerm (Term t, CELL tag) -{ - return (int) (IsApplTerm (t) && - FunctorOfTerm (t) == FunctorBigInt && - RepAppl(t)[1] == tag); +INLINE_ONLY inline EXTERN int IsExternalBlobTerm(Term t, CELL tag) { + return (int)(IsApplTerm(t) && FunctorOfTerm(t) == FunctorBigInt && + RepAppl(t)[1] == tag); } -INLINE_ONLY inline EXTERN void *ExternalBlobFromTerm (Term); +INLINE_ONLY inline EXTERN void *ExternalBlobFromTerm(Term); -INLINE_ONLY inline EXTERN void * -ExternalBlobFromTerm (Term t) -{ - MP_INT *base = (MP_INT *)(RepAppl(t)+2); - return (void *) (base+1); +INLINE_ONLY inline EXTERN void *ExternalBlobFromTerm(Term t) { + MP_INT *base = (MP_INT *)(RepAppl(t) + 2); + return (void *)(base + 1); } +INLINE_ONLY inline EXTERN int IsNumTerm(Term); - - -INLINE_ONLY inline EXTERN int IsNumTerm (Term); - -INLINE_ONLY inline EXTERN int -IsNumTerm (Term t) -{ - return (int) ((IsIntTerm (t) || IsLargeNumTerm (t))); +INLINE_ONLY inline EXTERN int IsNumTerm(Term t) { + return (int)((IsIntTerm(t) || IsLargeNumTerm(t))); } +INLINE_ONLY inline EXTERN Int IsAtomicTerm(Term); - - -INLINE_ONLY inline EXTERN Int IsAtomicTerm (Term); - -INLINE_ONLY inline EXTERN Int -IsAtomicTerm (Term t) -{ - return (Int) (IsAtomOrIntTerm (t) || IsLargeNumTerm (t) || IsStringTerm(t)); +INLINE_ONLY inline EXTERN Int IsAtomicTerm(Term t) { + return (Int)(IsAtomOrIntTerm(t) || IsLargeNumTerm(t) || IsStringTerm(t)); } +INLINE_ONLY inline EXTERN Int IsExtensionFunctor(Functor); - - -INLINE_ONLY inline EXTERN Int IsExtensionFunctor (Functor); - -INLINE_ONLY inline EXTERN Int -IsExtensionFunctor (Functor f) -{ - return (Int) (f <= FunctorString); +INLINE_ONLY inline EXTERN Int IsExtensionFunctor(Functor f) { + return (Int)(f <= FunctorString); } +INLINE_ONLY inline EXTERN Int IsBlobFunctor(Functor); - -INLINE_ONLY inline EXTERN Int IsBlobFunctor (Functor); - -INLINE_ONLY inline EXTERN Int -IsBlobFunctor (Functor f) -{ - return (Int) ((f <= FunctorString && f >= FunctorDBRef)); +INLINE_ONLY inline EXTERN Int IsBlobFunctor(Functor f) { + return (Int)((f <= FunctorString && f >= FunctorDBRef)); } +INLINE_ONLY inline EXTERN Int IsPrimitiveTerm(Term); - -INLINE_ONLY inline EXTERN Int IsPrimitiveTerm (Term); - -INLINE_ONLY inline EXTERN Int -IsPrimitiveTerm (Term t) -{ - return (Int) ((IsAtomOrIntTerm (t) - || (IsApplTerm (t) && IsBlobFunctor (FunctorOfTerm (t))))); +INLINE_ONLY inline EXTERN Int IsPrimitiveTerm(Term t) { + return (Int)((IsAtomOrIntTerm(t) || + (IsApplTerm(t) && IsBlobFunctor(FunctorOfTerm(t))))); } #ifdef TERM_EXTENSIONS +INLINE_ONLY inline EXTERN Int IsAttachFunc(Functor); -INLINE_ONLY inline EXTERN Int IsAttachFunc (Functor); - -INLINE_ONLY inline EXTERN Int -IsAttachFunc (Functor f) -{ - return (Int) (FALSE); -} - - +INLINE_ONLY inline EXTERN Int IsAttachFunc(Functor f) { return (Int)(FALSE); } #define IsAttachedTerm(t) __IsAttachedTerm(t PASS_REGS) -INLINE_ONLY inline EXTERN Int __IsAttachedTerm (Term USES_REGS); +INLINE_ONLY inline EXTERN Int __IsAttachedTerm(Term USES_REGS); -INLINE_ONLY inline EXTERN Int -__IsAttachedTerm (Term t USES_REGS) -{ - return (Int) ((IsVarTerm (t) && IsAttVar(VarOfTerm(t)))); +INLINE_ONLY inline EXTERN Int __IsAttachedTerm(Term t USES_REGS) { + return (Int)((IsVarTerm(t) && IsAttVar(VarOfTerm(t)))); } -INLINE_ONLY inline EXTERN Int GlobalIsAttachedTerm (Term); +INLINE_ONLY inline EXTERN Int GlobalIsAttachedTerm(Term); -INLINE_ONLY inline EXTERN Int -GlobalIsAttachedTerm (Term t) -{ - return (Int) ((IsVarTerm (t) && GlobalIsAttVar(VarOfTerm(t)))); +INLINE_ONLY inline EXTERN Int GlobalIsAttachedTerm(Term t) { + return (Int)((IsVarTerm(t) && GlobalIsAttVar(VarOfTerm(t)))); } -#define SafeIsAttachedTerm(t) __SafeIsAttachedTerm((t) PASS_REGS) +#define SafeIsAttachedTerm(t) __SafeIsAttachedTerm((t)PASS_REGS) -INLINE_ONLY inline EXTERN Int __SafeIsAttachedTerm (Term USES_REGS); +INLINE_ONLY inline EXTERN Int __SafeIsAttachedTerm(Term USES_REGS); -INLINE_ONLY inline EXTERN Int -__SafeIsAttachedTerm (Term t USES_REGS) -{ - return (Int) (IsVarTerm (t) && IsAttVar(VarOfTerm(t))); -} - -INLINE_ONLY inline EXTERN exts ExtFromCell (CELL *); - -INLINE_ONLY inline EXTERN exts -ExtFromCell (CELL * pt) -{ - return attvars_ext; +INLINE_ONLY inline EXTERN Int __SafeIsAttachedTerm(Term t USES_REGS) { + return (Int)(IsVarTerm(t) && IsAttVar(VarOfTerm(t))); } +INLINE_ONLY inline EXTERN exts ExtFromCell(CELL *); +INLINE_ONLY inline EXTERN exts ExtFromCell(CELL *pt) { return attvars_ext; } #else +INLINE_ONLY inline EXTERN Int IsAttachFunc(Functor); -INLINE_ONLY inline EXTERN Int IsAttachFunc (Functor); - -INLINE_ONLY inline EXTERN Int -IsAttachFunc (Functor f) -{ - return (Int) (FALSE); -} - - - - -INLINE_ONLY inline EXTERN Int IsAttachedTerm (Term); - -INLINE_ONLY inline EXTERN Int -IsAttachedTerm (Term t) -{ - return (Int) (FALSE); -} - +INLINE_ONLY inline EXTERN Int IsAttachFunc(Functor f) { return (Int)(FALSE); } +INLINE_ONLY inline EXTERN Int IsAttachedTerm(Term); +INLINE_ONLY inline EXTERN Int IsAttachedTerm(Term t) { return (Int)(FALSE); } #endif INLINE_ONLY inline EXTERN Int Yap_BlobTag(Term t); -INLINE_ONLY inline EXTERN Int Yap_BlobTag(Term t) -{ +INLINE_ONLY inline EXTERN Int Yap_BlobTag(Term t) { CELL *pt = RepAppl(t); return pt[1]; } - INLINE_ONLY inline EXTERN void *Yap_BlobInfo(Term t); -INLINE_ONLY inline EXTERN void *Yap_BlobInfo(Term t) -{ +INLINE_ONLY inline EXTERN void *Yap_BlobInfo(Term t) { MP_INT *blobp; CELL *pt = RepAppl(t); - blobp = (MP_INT *)(pt+2); - return (void *)(blobp+1); + blobp = (MP_INT *)(pt + 2); + return (void *)(blobp + 1); } #ifdef YAP_H @@ -697,92 +532,75 @@ INLINE_ONLY inline EXTERN int unify_extension(Functor, CELL, CELL *, CELL); EXTERN int unify_extension(Functor, CELL, CELL *, CELL); -int Yap_gmp_tcmp_big_big(Term, Term); +int Yap_gmp_tcmp_big_big(Term, Term); -INLINE_ONLY inline EXTERN int -unify_extension (Functor f, CELL d0, CELL * pt0, CELL d1) -{ - switch (BlobOfFunctor (f)) - { - case db_ref_e: - return (d0 == d1); - case attvar_e: - return (d0 == d1); - case long_int_e: - return (pt0[1] == RepAppl (d1)[1]); - case string_e: - return strcmp( (char *)(pt0+2), (char *)(RepAppl (d1)+2) ) == 0; - case big_int_e: +INLINE_ONLY inline EXTERN int unify_extension(Functor f, CELL d0, CELL *pt0, + CELL d1) { + switch (BlobOfFunctor(f)) { + case db_ref_e: + return (d0 == d1); + case attvar_e: + return (d0 == d1); + case long_int_e: + return (pt0[1] == RepAppl(d1)[1]); + case string_e: + return strcmp((char *)(pt0 + 2), (char *)(RepAppl(d1) + 2)) == 0; + case big_int_e: #ifdef USE_GMP - return (Yap_gmp_tcmp_big_big(d0,d1) == 0); + return (Yap_gmp_tcmp_big_big(d0, d1) == 0); #else - return d0 == d1; + return d0 == d1; #endif /* USE_GMP */ - case double_e: - { - CELL *pt1 = RepAppl (d1); - return (pt0[1] == pt1[1] -#if SIZEOF_DOUBLE == 2*SIZEOF_INT_P - && pt0[2] == pt1[2] + case double_e: { + CELL *pt1 = RepAppl(d1); + return (pt0[1] == pt1[1] +#if SIZEOF_DOUBLE == 2 * SIZEOF_INT_P + && pt0[2] == pt1[2] #endif - ); - } - } + ); + } + } return (FALSE); } -static inline -CELL Yap_IntP_key(CELL *pt) -{ +static inline CELL Yap_IntP_key(CELL *pt) { #ifdef USE_GMP if (((Functor)pt[-1] == FunctorBigInt)) { - MP_INT *b1 = Yap_BigIntOfTerm(AbsAppl(pt-1)); + MP_INT *b1 = Yap_BigIntOfTerm(AbsAppl(pt - 1)); /* first cell in program */ - CELL val = ((CELL *)(b1+1))[0]; - return MkIntTerm(val & (MAX_ABS_INT-1)); + CELL val = ((CELL *)(b1 + 1))[0]; + return MkIntTerm(val & (MAX_ABS_INT - 1)); } #endif - return MkIntTerm(pt[0] & (MAX_ABS_INT-1)); + return MkIntTerm(pt[0] & (MAX_ABS_INT - 1)); } -static inline -CELL Yap_Int_key(Term t) -{ - return Yap_IntP_key(RepAppl(t)+1); -} +static inline CELL Yap_Int_key(Term t) { return Yap_IntP_key(RepAppl(t) + 1); } -static inline -CELL Yap_DoubleP_key(CELL *pt) -{ -#if SIZEOF_DOUBLE1 == 2*SIZEOF_INT_P - CELL val = pt[0]^pt[1]; +static inline CELL Yap_DoubleP_key(CELL *pt) { +#if SIZEOF_DOUBLE1 == 2 * SIZEOF_INT_P + CELL val = pt[0] ^ pt[1]; #else CELL val = pt[0]; #endif - return MkIntTerm(val & (MAX_ABS_INT-1)); + return MkIntTerm(val & (MAX_ABS_INT - 1)); } -static inline -CELL Yap_Double_key(Term t) -{ - return Yap_DoubleP_key(RepAppl(t)+1); +static inline CELL Yap_Double_key(Term t) { + return Yap_DoubleP_key(RepAppl(t) + 1); } -static inline -CELL Yap_StringP_key(CELL *pt) -{ +static inline CELL Yap_StringP_key(CELL *pt) { UInt n = pt[1], i; CELL val = pt[2]; - for (i=1; iLastWTimePtr_ +#define GLOBAL_MaxPriority Yap_global->MaxPriority_ + diff --git a/H/dhstruct.h b/H/dhstruct.h index 2ae1242ff..6e8a18e02 100644 --- a/H/dhstruct.h +++ b/H/dhstruct.h @@ -101,6 +101,7 @@ #define SWI_MODULE Yap_heap_regs->swi_module #define DBLOAD_MODULE Yap_heap_regs->dbload_module #define RANGE_MODULE Yap_heap_regs->range_module +#define ERROR_MODULE Yap_heap_regs->error_module @@ -207,9 +208,6 @@ #define PROFILING Yap_heap_regs->system_profiling #define CALL_COUNTING Yap_heap_regs->system_call_counting -#define PRED_GOAL_EXPANSION_ALL Yap_heap_regs->system_pred_goal_expansion_all -#define PRED_GOAL_EXPANSION_FUNC Yap_heap_regs->system_pred_goal_expansion_func -#define PRED_GOAL_EXPANSION_ON Yap_heap_regs->system_pred_goal_expansion_on #define optimizer_on Yap_heap_regs->compiler_optimizer_on #define compile_mode Yap_heap_regs->compiler_compile_mode #define profiling Yap_heap_regs->compiler_profiling diff --git a/H/dlocals.h b/H/dlocals.h index 801fd371d..56e3e0da2 100644 --- a/H/dlocals.h +++ b/H/dlocals.h @@ -453,8 +453,6 @@ #define REMOTE_ImportDBRefHashTableNum(wid) REMOTE(wid)->ImportDBRefHashTableNum_ #define LOCAL_ImportFAILCODE LOCAL->ImportFAILCODE_ #define REMOTE_ImportFAILCODE(wid) REMOTE(wid)->ImportFAILCODE_ -#define LOCAL_FunctorVar LOCAL->FunctorVar_ -#define REMOTE_FunctorVar(wid) REMOTE(wid)->FunctorVar_ #if __ANDROID__ #define LOCAL_assetManager LOCAL->assetManager_ diff --git a/H/hglobals.h b/H/hglobals.h index e8a37dfb7..df3b9f080 100644 --- a/H/hglobals.h +++ b/H/hglobals.h @@ -141,4 +141,6 @@ typedef struct global_data { char* CharConversionTable2_; void* LastWTimePtr_; + + int MaxPriority_; } w_shared; diff --git a/H/hlocals.h b/H/hlocals.h index 9521238af..2cbadd7ed 100644 --- a/H/hlocals.h +++ b/H/hlocals.h @@ -252,7 +252,6 @@ const char* Error_Function_; UInt ImportDBRefHashTableSize_; UInt ImportDBRefHashTableNum_; yamop *ImportFAILCODE_; - Functor FunctorVar_; #if __ANDROID__ struct AAssetManager* assetManager_; diff --git a/H/hstruct.h b/H/hstruct.h index b1ce5c635..788418e84 100755 --- a/H/hstruct.h +++ b/H/hstruct.h @@ -101,6 +101,7 @@ Term swi_module; Term dbload_module; Term range_module; + Term error_module; @@ -207,9 +208,6 @@ int system_profiling; int system_call_counting; - int system_pred_goal_expansion_all; - int system_pred_goal_expansion_func; - int system_pred_goal_expansion_on; int compiler_optimizer_on; int compiler_compile_mode; int compiler_profiling; diff --git a/H/iatoms.h b/H/iatoms.h index 92510a428..343fae683 100644 --- a/H/iatoms.h +++ b/H/iatoms.h @@ -25,6 +25,10 @@ AtomEmptyBrackets = Yap_LookupAtom("()"); AtomEmptySquareBrackets = Yap_LookupAtom("[]"); AtomEmptyCurlyBrackets = Yap_LookupAtom("{}"); + AtomAsserta = Yap_LookupAtom("asserta"); + AtomAssertaStatic = Yap_LookupAtom("asserta_static"); + AtomAssertz = Yap_LookupAtom("assertz"); + AtomAssertzStatic = Yap_LookupAtom("assertz_static"); AtomAt = Yap_LookupAtom("at"); AtomAtom = Yap_LookupAtom("atom"); AtomAtomic = Yap_LookupAtom("atomic"); @@ -66,6 +70,7 @@ AtomCompact = Yap_LookupAtom("compact"); AtomCompound = Yap_LookupAtom("compound"); AtomConsistencyError = Yap_LookupAtom("consistency_error"); + AtomConsult = Yap_LookupAtom("consult"); AtomConsultOnBoot = Yap_FullLookupAtom("$consult_on_boot"); AtomContext = Yap_LookupAtom("context"); AtomCputime = Yap_LookupAtom("cputime"); @@ -133,6 +138,7 @@ AtomFail = Yap_LookupAtom("fail"); AtomFalse = Yap_LookupAtom("false"); AtomFast = Yap_FullLookupAtom("$fast"); + AtomFastFail = Yap_LookupAtom("fast_fail"); AtomFileErrors = Yap_LookupAtom("file_errors"); AtomFileerrors = Yap_LookupAtom("fileerrors"); AtomFileType = Yap_LookupAtom("file_type"); @@ -288,6 +294,7 @@ AtomReadOnly = Yap_LookupAtom("read_only"); AtomReadWrite = Yap_LookupAtom("read_write"); AtomReadutil = Yap_LookupAtom("readutil"); + AtomReconsult = Yap_LookupAtom("reconsult"); AtomRecordedP = Yap_FullLookupAtom("$recordep"); AtomRecordedWithKey = Yap_FullLookupAtom("$recorded_with_key"); AtomRedefineWarnings = Yap_LookupAtom("redefine_warnings"); diff --git a/H/iglobals.h b/H/iglobals.h index ec47a0645..5a5dd7655 100644 --- a/H/iglobals.h +++ b/H/iglobals.h @@ -141,4 +141,6 @@ static void InitGlobal(void) { GLOBAL_CharConversionTable2 = NULL; GLOBAL_LastWTimePtr = NULL; + + GLOBAL_MaxPriority = 1200; } diff --git a/H/ihstruct.h b/H/ihstruct.h index 2835771b3..12477e027 100644 --- a/H/ihstruct.h +++ b/H/ihstruct.h @@ -101,6 +101,7 @@ SWI_MODULE = MkAtomTerm(AtomSwi); DBLOAD_MODULE = MkAtomTerm(AtomDBLoad); RANGE_MODULE = MkAtomTerm(AtomRange); + ERROR_MODULE = MkAtomTerm(AtomError); @@ -207,9 +208,6 @@ PROFILING = FALSE; CALL_COUNTING = FALSE; - PRED_GOAL_EXPANSION_ALL = FALSE; - PRED_GOAL_EXPANSION_FUNC = FALSE; - PRED_GOAL_EXPANSION_ON = FALSE; optimizer_on = TRUE; compile_mode = 0; profiling = FALSE; diff --git a/H/ilocals.h b/H/ilocals.h index 80dfc1f37..fa53fe070 100755 --- a/H/ilocals.h +++ b/H/ilocals.h @@ -252,7 +252,6 @@ static void InitWorker(int wid) { REMOTE_ImportDBRefHashTableSize(wid) = 0; REMOTE_ImportDBRefHashTableNum(wid) = 0; REMOTE_ImportFAILCODE(wid) = NULL; - REMOTE_FunctorVar(wid) = FunctorVar; #if __ANDROID__ REMOTE_assetManager(wid) = GLOBAL_assetManager; diff --git a/H/ratoms.h b/H/ratoms.h index 31d70b587..28a5efb06 100644 --- a/H/ratoms.h +++ b/H/ratoms.h @@ -25,6 +25,10 @@ AtomEmptyBrackets = AtomAdjust(AtomEmptyBrackets); AtomEmptySquareBrackets = AtomAdjust(AtomEmptySquareBrackets); AtomEmptyCurlyBrackets = AtomAdjust(AtomEmptyCurlyBrackets); + AtomAsserta = AtomAdjust(AtomAsserta); + AtomAssertaStatic = AtomAdjust(AtomAssertaStatic); + AtomAssertz = AtomAdjust(AtomAssertz); + AtomAssertzStatic = AtomAdjust(AtomAssertzStatic); AtomAt = AtomAdjust(AtomAt); AtomAtom = AtomAdjust(AtomAtom); AtomAtomic = AtomAdjust(AtomAtomic); @@ -66,6 +70,7 @@ AtomCompact = AtomAdjust(AtomCompact); AtomCompound = AtomAdjust(AtomCompound); AtomConsistencyError = AtomAdjust(AtomConsistencyError); + AtomConsult = AtomAdjust(AtomConsult); AtomConsultOnBoot = AtomAdjust(AtomConsultOnBoot); AtomContext = AtomAdjust(AtomContext); AtomCputime = AtomAdjust(AtomCputime); @@ -289,6 +294,7 @@ AtomReadOnly = AtomAdjust(AtomReadOnly); AtomReadWrite = AtomAdjust(AtomReadWrite); AtomReadutil = AtomAdjust(AtomReadutil); + AtomReconsult = AtomAdjust(AtomReconsult); AtomRecordedP = AtomAdjust(AtomRecordedP); AtomRecordedWithKey = AtomAdjust(AtomRecordedWithKey); AtomRedefineWarnings = AtomAdjust(AtomRedefineWarnings); diff --git a/H/rglobals.h b/H/rglobals.h index 13a01fb6f..ac1994536 100644 --- a/H/rglobals.h +++ b/H/rglobals.h @@ -141,4 +141,6 @@ static void RestoreGlobal(void) { + + } diff --git a/H/rhstruct.h b/H/rhstruct.h index 7fa4f78f5..84543d436 100644 --- a/H/rhstruct.h +++ b/H/rhstruct.h @@ -101,6 +101,7 @@ SWI_MODULE = AtomTermAdjust(SWI_MODULE); DBLOAD_MODULE = AtomTermAdjust(DBLOAD_MODULE); RANGE_MODULE = AtomTermAdjust(RANGE_MODULE); + ERROR_MODULE = AtomTermAdjust(ERROR_MODULE); @@ -214,9 +215,6 @@ - - - #if defined(YAPOR) || defined(THREADS) REINIT_LOCK(DBTermsListLock); #endif diff --git a/H/rlocals.h b/H/rlocals.h index 64d10ee3a..7eef90296 100644 --- a/H/rlocals.h +++ b/H/rlocals.h @@ -250,7 +250,6 @@ static void RestoreWorker(int wid USES_REGS) { - #if __ANDROID__ diff --git a/H/tatoms.h b/H/tatoms.h index 67933e06b..8a3eaa45f 100644 --- a/H/tatoms.h +++ b/H/tatoms.h @@ -71,6 +71,18 @@ Atom AtomEmptyCurlyBrackets_; #define AtomEmptyCurlyBrackets Yap_heap_regs->AtomEmptyCurlyBrackets_ #define TermEmptyCurlyBrackets MkAtomTerm( Yap_heap_regs->AtomEmptyCurlyBrackets_ ) + Atom AtomAsserta_; +#define AtomAsserta Yap_heap_regs->AtomAsserta_ +#define TermAsserta MkAtomTerm( Yap_heap_regs->AtomAsserta_ ) + Atom AtomAssertaStatic_; +#define AtomAssertaStatic Yap_heap_regs->AtomAssertaStatic_ +#define TermAssertaStatic MkAtomTerm( Yap_heap_regs->AtomAssertaStatic_ ) + Atom AtomAssertz_; +#define AtomAssertz Yap_heap_regs->AtomAssertz_ +#define TermAssertz MkAtomTerm( Yap_heap_regs->AtomAssertz_ ) + Atom AtomAssertzStatic_; +#define AtomAssertzStatic Yap_heap_regs->AtomAssertzStatic_ +#define TermAssertzStatic MkAtomTerm( Yap_heap_regs->AtomAssertzStatic_ ) Atom AtomAt_; #define AtomAt Yap_heap_regs->AtomAt_ #define TermAt MkAtomTerm( Yap_heap_regs->AtomAt_ ) @@ -194,6 +206,9 @@ Atom AtomConsistencyError_; #define AtomConsistencyError Yap_heap_regs->AtomConsistencyError_ #define TermConsistencyError MkAtomTerm( Yap_heap_regs->AtomConsistencyError_ ) + Atom AtomConsult_; +#define AtomConsult Yap_heap_regs->AtomConsult_ +#define TermConsult MkAtomTerm( Yap_heap_regs->AtomConsult_ ) Atom AtomConsultOnBoot_; #define AtomConsultOnBoot Yap_heap_regs->AtomConsultOnBoot_ #define TermConsultOnBoot MkAtomTerm( Yap_heap_regs->AtomConsultOnBoot_ ) @@ -395,6 +410,9 @@ Atom AtomFast_; #define AtomFast Yap_heap_regs->AtomFast_ #define TermFast MkAtomTerm( Yap_heap_regs->AtomFast_ ) + Atom AtomFastFail_; +#define AtomFastFail Yap_heap_regs->AtomFastFail_ +#define TermFastFail MkAtomTerm( Yap_heap_regs->AtomFastFail_ ) Atom AtomFileErrors_; #define AtomFileErrors Yap_heap_regs->AtomFileErrors_ #define TermFileErrors MkAtomTerm( Yap_heap_regs->AtomFileErrors_ ) @@ -860,6 +878,9 @@ Atom AtomReadutil_; #define AtomReadutil Yap_heap_regs->AtomReadutil_ #define TermReadutil MkAtomTerm( Yap_heap_regs->AtomReadutil_ ) + Atom AtomReconsult_; +#define AtomReconsult Yap_heap_regs->AtomReconsult_ +#define TermReconsult MkAtomTerm( Yap_heap_regs->AtomReconsult_ ) Atom AtomRecordedP_; #define AtomRecordedP Yap_heap_regs->AtomRecordedP_ #define TermRecordedP MkAtomTerm( Yap_heap_regs->AtomRecordedP_ ) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 75818ea18..bdb95a212 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,23 +1,11 @@ SET (CODES -web/bootstrap/doxy-boot.js -web/bootstrap/footer.html -web/bootstrap/header.html -web/bootstrap/customdoxygen.css -offcanvas.css -offcanvas.js solarized-light.css theme.css yap.css -bootstrap.min.css -bootstrap.min.js -font-awesome.min.css -jquery-2.0.3.min.js -application.js -pygments.css -misc/icons/yap_64x64x32.png -misc/icons/yap_256x256x32.png -misc/icons/yap_128x128x32.png -misc/icons/yap_48x48x32.png +icons/yap_64x64x32.png +icons/yap_256x256x32.png +icons/yap_128x128x32.png +icons/yap_48x48x32.png ) SET (DOCS diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 25e5db67f..7c1831c96 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -51,7 +51,7 @@ PROJECT_BRIEF = "The YAP Prolog Compiler Manual" # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = @CMAKE_SOURCE_DIR@/misc/icons/yap_96x96x32.png +PROJECT_LOGO = @CMAKE_SOURCE_DIR@/docs/icons/yap_96x96x32.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is @@ -384,7 +384,7 @@ INLINE_GROUPED_CLASSES = NO # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and +v# to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. @@ -728,7 +728,7 @@ WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. + # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES @@ -776,15 +776,15 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = @PROJECT_SOURCE_DIR@/pl \ - @PROJECT_SOURCE_DIR@/swi \ @PROJECT_SOURCE_DIR@/CXX \ @PROJECT_SOURCE_DIR@/OPTYap \ @PROJECT_SOURCE_DIR@/C \ @PROJECT_SOURCE_DIR@/H \ @PROJECT_SOURCE_DIR@/include \ @PROJECT_SOURCE_DIR@/os \ - @PROJECT_SOURCE_DIR@/packages \ @PROJECT_SOURCE_DIR@/library \ + @PROJECT_SOURCE_DIR@/packages \ + @PROJECT_SOURCE_DIR@/swi/library \ @PROJECT_SOURCE_DIR@/docs/yap.md \ @PROJECT_SOURCE_DIR@/docs/chr.md \ @PROJECT_SOURCE_DIR@/docs/clpqr.md \ @@ -828,7 +828,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = *pltotex.pl packages/swig/android packages/chr packages/RDF packages/pyswip +EXCLUDE = *pltotex.pl # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -844,7 +844,7 @@ EXCLUDE_SYMLINKS = NO # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = */CMakeFiles/* *~ # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -881,7 +881,7 @@ EXAMPLE_RECURSIVE = NO # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = @CMAKE_SOURCE_DIR@/misc/icons +IMAGE_PATH = @CMAKE_SOURCE_DIR@/docs/icons # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -1105,7 +1105,7 @@ HTML_HEADER = # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = -@CMAKE_SOURCE_DIR@/docs/web/bootstrap/footer.html +#@CMAKE_SOURCE_DIR@/docs/web/bootstrap/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of diff --git a/docs/application.js b/docs/application.js new file mode 100644 index 000000000..8ac554a48 --- /dev/null +++ b/docs/application.js @@ -0,0 +1,4 @@ + +$(function () { + $('a').tooltip(); +}); \ No newline at end of file diff --git a/docs/bootstrap.min.css b/docs/bootstrap.min.css new file mode 100644 index 000000000..c547283bb --- /dev/null +++ b/docs/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small,h4 .small,h5 .small,h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#8a6d3b}.text-warning:hover{color:#66512c}.text-danger{color:#a94442}.text-danger:hover{color:#843534}.text-success{color:#3c763d}.text-success:hover{color:#2b542c}.text-info{color:#31708f}.text-info:hover{color:#245269}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small,blockquote .small{display:block;line-height:1.428571429;color:#999}blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small,blockquote.pull-right .small{text-align:right}blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>.active,.table>tbody>tr>.active,.table>tfoot>tr>.active,.table>thead>.active>td,.table>tbody>.active>td,.table>tfoot>.active>td,.table>thead>.active>th,.table>tbody>.active>th,.table>tfoot>.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>.active:hover,.table-hover>tbody>.active:hover>td,.table-hover>tbody>.active:hover>th{background-color:#e8e8e8}.table>thead>tr>.success,.table>tbody>tr>.success,.table>tfoot>tr>.success,.table>thead>.success>td,.table>tbody>.success>td,.table>tfoot>.success>td,.table>thead>.success>th,.table>tbody>.success>th,.table>tfoot>.success>th{background-color:#dff0d8}.table-hover>tbody>tr>.success:hover,.table-hover>tbody>.success:hover>td,.table-hover>tbody>.success:hover>th{background-color:#d0e9c6}.table>thead>tr>.danger,.table>tbody>tr>.danger,.table>tfoot>tr>.danger,.table>thead>.danger>td,.table>tbody>.danger>td,.table>tfoot>.danger>td,.table>thead>.danger>th,.table>tbody>.danger>th,.table>tfoot>.danger>th{background-color:#f2dede}.table-hover>tbody>tr>.danger:hover,.table-hover>tbody>.danger:hover>td,.table-hover>tbody>.danger:hover>th{background-color:#ebcccc}.table>thead>tr>.warning,.table>tbody>tr>.warning,.table>tfoot>tr>.warning,.table>thead>.warning>td,.table>tbody>.warning>td,.table>tfoot>.warning>td,.table>thead>.warning>th,.table>tbody>.warning>th,.table>tfoot>.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>.warning:hover,.table-hover>tbody>.warning:hover>td,.table-hover>tbody>.warning:hover>th{background-color:#faf2cc}@media(max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-control-static{padding-top:7px}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#fff}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1;-moz-osx-font-smoothing:grayscale}.glyphicon:empty{width:1em}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn:first-child>.btn{margin-right:-1px}.input-group-btn:last-child>.btn{margin-left:-1px}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child th,.panel>.table>tbody:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}table.hidden-xs{display:table}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,tr.hidden-xs.hidden-md,th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}table.hidden-sm{display:table}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,tr.hidden-sm.hidden-md,th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}table.hidden-md{display:table}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs,tr.hidden-md.hidden-xs,th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,tr.hidden-md.hidden-sm,th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg,tr.hidden-md.hidden-lg,th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}table.hidden-lg{display:table}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,tr.hidden-lg.hidden-md,th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/docs/bootstrap.min.js b/docs/bootstrap.min.js new file mode 100644 index 000000000..1a6258efc --- /dev/null +++ b/docs/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file diff --git a/docs/builtins.md b/docs/builtins.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/chr.md b/docs/chr.md index f8f983190..d736e988a 100644 --- a/docs/chr.md +++ b/docs/chr.md @@ -2,6 +2,8 @@ CHR: Constraint Handling Rules {#chr} ============================== +@ingroup packages + This chapter is written by Tom Schrijvers, K.U. Leuven for the hProlog system. Adjusted by Jan Wielemaker to fit the SWI-Prolog documentation infrastructure and remove hProlog specific references. @@ -59,7 +61,7 @@ actual_rule --> simpagation_rule. simplification_rule --> constraints, [atom(`<=>`)], guard, body. propagation_rule --> constraints, [atom(`==>`)], guard, body. -simpagation_rule --> constraints, [atom(`\`)], constraints, [atom(`<=>`)], +simpagation_rule --> constraints, [atom(`\`)], constraints, [atom(`<=>`)], guard, body. constraints --> constraint, constraint_id. @@ -98,7 +100,7 @@ informally. They do not differ essentially from other CHR systems. When a constraint is called, it is considered an active constraint and the system will try to apply the rules to it. Rules are tried and executed -sequentially in the order they are written. +sequentially in the order they are written. A rule is conceptually tried for an active constraint in the following way. The active constraint is matched with a constraint in the head of @@ -140,7 +142,7 @@ its head. The simpagation rule removes the constraints in its head after the `\` and then calls its body. It is an optimization of simplification rules of the form: \[constraints_1, constraints_2 <=> -constraints_1, body \] Namely, in the simpagation form: +constraints_1, body \] Namely, in the simpagation form: ~~~~~ constraints1 \ constraints2 <=> body @@ -186,7 +188,7 @@ checks. + optimize This is an experimental option controlling the degree of optimization. Possible values are `full`, to enable all available -optimizations, and `off` (default), to disable all optimizations. +optimizations, and `off` (default), to disable all optimizations. The default is derived from the SWI-Prolog flag `optimise`, where `true` is mapped to `full`. Therefore the commandline option `-O` provides full CHR optimization. @@ -209,7 +211,7 @@ The latter is the default. The meaning is the following: + - The corresponding argument of every occurrence of the constraint is always unbound. -+ + ++ + The corresponding argument of every occurrence of the constraint is always ground. + ? @@ -217,7 +219,7 @@ The corresponding argument of every occurrence of the constraint can have any instantiation, which may change over time. This is the default value. -The declaration is used by the compiler for various optimizations. +The declaration is used by the compiler for various optimizations. Note that it is up to the user the ensure that the mode declaration is correct with respect to the use of the constraint. This option may occur once for each constraint. @@ -251,7 +253,7 @@ type declarations. The value is a term of the form `type(` _name_`,` _list_`)`, where _name_ is a term and _list_ is a list of alternatives. Variables can be used to define generic types. Recursive definitions -are allowed. Examples are +are allowed. Examples are ~~~~~ type(bool,[true,false]). @@ -266,8 +268,8 @@ The mode, type_declaration and type_definition options are provided for backward compatibility. The new syntax is described below. - -### CHR in Prolog Programs + +### CHR in Prolog Programs The CHR constraints defined in a particulary chr file are @@ -295,7 +297,7 @@ The new style is as follows: :- chr_type list(T) ---> [] ; [T|list(T)]. :- constraints foo(+list(int),?float), bar. ~~~~~ - + #### Compilation @@ -327,7 +329,7 @@ pl files and the operator definitions required by CHR do not leak into modules where they might cause conflicts. - + #### CHR Debugging @@ -433,8 +435,8 @@ notrace/0. Here are two example constraint solvers written in CHR. -+ -The program below defines a solver with one constraint, ++ +The program below defines a solver with one constraint, `leq/2`, which is a less-than-or-equal constraint. ~~~~~ @@ -453,7 +455,7 @@ cycle(X,Y,Z):- leq(Z,X). ~~~~~ -+ ++ The program below implements a simple finite domain constraint solver. @@ -461,7 +463,7 @@ constraint solver. :- module(dom,[dom/2]). :- use_module(library(chr)). -:- constraints dom/2. +:- constraints dom/2. dom(X,[]) <=> fail. dom(X,[Y]) <=> X = Y. diff --git a/docs/clpqr.md b/docs/clpqr.md index e67c24101..073386784 100644 --- a/docs/clpqr.md +++ b/docs/clpqr.md @@ -1,6 +1,7 @@ Constraint Logic Programming over Rationals and Reals {#clpqr} ===================================================== +@ingroup paackages YAP now uses the CLP(R) package developed by Leslie De Koninck, K.U. Leuven as part of a thesis with supervisor Bart Demoen and daily @@ -27,7 +28,7 @@ explicitely before using it: The following predicates are provided to work with constraints: - + ### Syntax of the predicate arguments {#CLPQR_Syntax} @@ -103,19 +104,19 @@ They are given in the following table. A = B * C when B or C is ground or // A = 5 * C or A = B * 4 \\ A and (B or C) are ground // 20 = 5 * C or 20 = B * 4 \\ -A = B / C when C is ground or // A = B / 3 - A and B are ground // 4 = 12 / C +A = B / C when C is ground or // A = B / 3 + A and B are ground // 4 = 12 / C -X = min(Y,Z) when Y and Z are ground or // X = min(4,3) -X = max(Y,Z) Y and Z are ground // X = max(4,3) -X = abs(Y) Y is ground // X = abs(-7) +X = min(Y,Z) when Y and Z are ground or // X = min(4,3) +X = max(Y,Z) Y and Z are ground // X = max(4,3) +X = abs(Y) Y is ground // X = abs(-7) -X = pow(Y,Z) when X and Y are ground or // 8 = 2 ^ Z -X = exp(Y,Z) X and Z are ground // 8 = Y ^ 3 -X = Y ^ Z Y and Z are ground // X = 2 ^ 3 +X = pow(Y,Z) when X and Y are ground or // 8 = 2 ^ Z +X = exp(Y,Z) X and Z are ground // 8 = Y ^ 3 +X = Y ^ Z Y and Z are ground // X = 2 ^ 3 -X = sin(Y) when X is ground or // 1 = sin(Y) -X = cos(Y) Y is ground // X = sin(1.5707) +X = sin(Y) when X is ground or // 1 = sin(Y) +X = cos(Y) Y is ground // X = sin(1.5707) X = tan(Y) ~~~~~ diff --git a/docs/download.md b/docs/download.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/doxy-boot.js b/docs/doxy-boot.js new file mode 100644 index 000000000..972ed0c17 --- /dev/null +++ b/docs/doxy-boot.js @@ -0,0 +1,121 @@ +$( document ).ready(function() { + + $("div.headertitle").addClass("page-header"); + $("div.title").addClass("h1"); + + $('li > a[href="index.html"] > span').before(" "); + $('li > a[href="index.html"] > span').text("BioGears"); + $('li > a[href="modules.html"] > span').before(" "); + $('li > a[href="namespaces.html"] > span').before(" "); + $('li > a[href="annotated.html"] > span').before(" "); + $('li > a[href="classes.html"] > span').before(" "); + $('li > a[href="inherits.html"] > span').before(" "); + $('li > a[href="functions.html"] > span').before(" "); + $('li > a[href="functions_func.html"] > span').before(" "); + $('li > a[href="functions_vars.html"] > span').before(" "); + $('li > a[href="functions_enum.html"] > span').before(" "); + $('li > a[href="functions_eval.html"] > span').before(" "); + $('img[src="ftv2ns.png"]').replaceWith('N '); + $('img[src="ftv2cl.png"]').replaceWith('C '); + + $("ul.tablist").addClass("nav nav-pills nav-justified"); + $("ul.tablist").css("margin-top", "0.5em"); + $("ul.tablist").css("margin-bottom", "0.5em"); + $("li.current").addClass("active"); + $("iframe").attr("scrolling", "yes"); + + $("#nav-path > ul").addClass("breadcrumb"); + + $("table.params").addClass("table"); + $("div.ingroups").wrapInner(""); + $("div.levels").css("margin", "0.5em"); + $("div.levels > span").addClass("btn btn-default btn-xs"); + $("div.levels > span").css("margin-right", "0.25em"); + + $("table.directory").addClass("table table-striped"); + $("div.summary > a").addClass("btn btn-default btn-xs"); + $("table.fieldtable").addClass("table"); + $(".fragment").addClass("well"); + $(".memitem").addClass("panel panel-default"); + $(".memproto").addClass("panel-heading"); + $(".memdoc").addClass("panel-body"); + $("span.mlabel").addClass("label label-info"); + + $("table.memberdecls").addClass("table"); + $("[class^=memitem]").addClass("active"); + + $("div.ah").addClass("btn btn-default"); + $("span.mlabels").addClass("pull-right"); + $("table.mlabels").css("width", "100%") + $("td.mlabels-right").addClass("pull-right"); + + $("div.ttc").addClass("panel panel-primary"); + $("div.ttname").addClass("panel-heading"); + $("div.ttname a").css("color", 'white'); + $("div.ttdef,div.ttdoc,div.ttdeci").addClass("panel-body"); + + $('#MSearchBox').parent().remove(); + + $('div.fragment.well div.line:first').css('margin-top', '15px'); + $('div.fragment.well div.line:last').css('margin-bottom', '15px'); + + $('table.doxtable').removeClass('doxtable').addClass('table table-striped table-bordered').each(function(){ + $(this).prepend(''); + $(this).find('tbody > tr:first').prependTo($(this).find('thead')); + + $(this).find('td > span.success').parent().addClass('success'); + $(this).find('td > span.warning').parent().addClass('warning'); + $(this).find('td > span.danger').parent().addClass('danger'); + }); + + + + if($('div.fragment.well div.ttc').length > 0) + { + $('div.fragment.well div.line:first').parent().removeClass('fragment well'); + } + + $('table.memberdecls').find('.memItemRight').each(function(){ + $(this).contents().appendTo($(this).siblings('.memItemLeft')); + $(this).siblings('.memItemLeft').attr('align', 'left'); + }); + + function getOriginalWidthOfImg(img_element) { + var t = new Image(); + t.src = (img_element.getAttribute ? img_element.getAttribute("src") : false) || img_element.src; + return t.width; + } + + $('div.dyncontent').find('img').each(function(){ + if(getOriginalWidthOfImg($(this)[0]) > $('#content>div.container').width()) + $(this).css('width', '100%'); + }); + + $(".memitem").removeClass('memitem'); + $(".memproto").removeClass('memproto'); + $(".memdoc").removeClass('memdoc'); + $("span.mlabel").removeClass('mlabel'); + $("table.memberdecls").removeClass('memberdecls'); + $("[class^=memitem]").removeClass('memitem'); + $("span.mlabels").removeClass('mlabels'); + $("table.mlabels").removeClass('mlabels'); + $("td.mlabels-right").removeClass('mlabels-right'); + $(".navpath").removeClass('navpath'); + $("li.navelem").removeClass('navelem'); + $("a.el").removeClass('el'); + $("div.ah").removeClass('ah'); + $("div.header").removeClass("header"); + + $('.mdescLeft').each(function(){ + if($(this).html()==" ") { + $(this).siblings('.mdescRight').attr('colspan', 2); + $(this).remove(); + } + }); + $('td.memItemLeft').each(function(){ + if($(this).siblings('.memItemRight').html()=="") { + $(this).attr('colspan', 2); + $(this).siblings('.memItemRight').remove(); + } + }); +}); \ No newline at end of file diff --git a/docs/extensions.md b/docs/extensions.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/fli.md b/docs/fli.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/font-awesome.min.css b/docs/font-awesome.min.css new file mode 100644 index 000000000..449d6ac55 --- /dev/null +++ b/docs/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.0.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.8571428571428572em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-asc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-desc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-reply-all:before{content:"\f122"}.fa-mail-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"} \ No newline at end of file diff --git a/docs/install.md b/docs/install.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/jquery-2.0.3.min.js b/docs/jquery-2.0.3.min.js new file mode 100644 index 000000000..2be209dd2 --- /dev/null +++ b/docs/jquery-2.0.3.min.js @@ -0,0 +1,6 @@ +/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-2.0.3.min.map +*/ +(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t) +};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*\s*$/g,ct={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("