Multi-day accumulated fixes: tag dispatch, session/pooling correctness, SPA rollout, jetc compiler
JetCore engine (Tag.cpp/.h, Global.cpp/.h, __*.cpp tag classes): - Numerous __mysql.cpp connection-pooling correctness fixes (stale result sets, double-indirection sessionid bugs, field caching, pool keying) and a session-registration-before-connection-confirmed ordering fix (dangling pointer on a failed connect) - Tag.cpp: large body of fixes to the tag-dispatch/container-scanning logic (bare-name fallback, database aliasing, single-quote handling, @-prefix session variable resolution, TAGDEF caching, nested split-tag scanning for if/while/until/ifrow so an inner one doesn't corrupt an outer one's own boundary scan) plus the process-first rendering order fix (a <process> now runs before <checksession>/page resolution, fixing a real "blank page after successful login" bug) - Global.h/.cpp: added imapSessions (parallel to the existing __mysql* session map) for the new <imap> tag family - __whiledir.cpp/__include.cpp: caching and directory-name-aliasing fixes - __call.cpp/.h: fixed a dangling-pointer bug - __write.cpp: fixed an O_WRONLY-only open that couldn't create a new file - __ifrow.cpp/__sql.cpp: fixed the same sessionid double-indirection bug __mysql.cpp had (resolveKeyword's result was being used as a map key lookup instead of the resolved value itself) jetc compiler (jetc/JetParser.cpp/.h, JetCodegen.cpp/.h, JetAST.h, jetc.cpp, build-shared.sh, build-compiled.sh): - Parser fixes: inline <include>, nested-quote handling, void-tag recognition - Codegen fixes and expanded AST support - build-shared.sh: atomic rename into place for a freshly-built .jtc (a live server dlopen()ing the same path mid-rebuild was corrupting its own already-mapped view of the old file) and a staleness check so a cached JetCore .o doesn't silently keep serving yesterday's fixes forever - Added -lssl to both build scripts' link lines (needed once the new <imap> tag's client-side TLS code existed - previously nothing in this codebase used OpenSSL's SSL/TLS client API, only libcrypto) Site content (jetc/barant-site/): SPA (fetch-and-swap navigation) rollout across essentially every .page/.jet/.section/.tag/.proc/.method file - dynamic-content fixes, fragment-mode stripping, native $[@name] session variables replacing older mechanisms, and this session's own checkout.page redesign, login start-param redirect fix, and per-page side-menu (menu.bar/$[PAGE].menu) refresh support. Completed the earlier main.css/control.css move from assets/ to assets/images/ (git still showed the old paths as tracked-but-deleted until now). Deliberately left out of this commit: dozens of .pre-<description>- <date> manual backup files (this session's and earlier ones' own before/after snapshots, not meant for permanent history), compiled .jtc build outputs, ad hoc test binaries and scripts under jetc/ (login_asan, wcwc_test, optest2_bin, etc.), and jetc/__pycache__/ - none of these are meant to be tracked; a .gitignore covering them would be worth adding separately.
No files matched your search
@@ -8,7 +8,7 @@
|
||||
namespace jetc {
|
||||
|
||||
enum class NodeKind {
|
||||
TEXT, VAR, SET, IF, FOR, WHILE, FALLBACK
|
||||
TEXT, VAR, SET, IF, FOR, WHILE, FALLBACK, TAGDEF, CONTAINER_SLOT
|
||||
};
|
||||
|
||||
enum class CondMode { VALUES, EXPR };
|
||||
@@ -55,6 +55,24 @@ namespace jetc {
|
||||
std::string forScope;
|
||||
std::vector<NodePtr> body; // also used by WHILE
|
||||
|
||||
// TAGDEF - a top-level <tag name="X">...</tag> custom-tag definition
|
||||
// (only recognized at the file's true top level - see Parser::topLevel;
|
||||
// one nested inside another tag's own definition body stays FALLBACK,
|
||||
// unchanged). tagDefName is already lowercased, matching __tag.cpp's
|
||||
// own registration key. tagDefBody is the compiled definition body
|
||||
// (may itself contain CONTAINER_SLOT nodes for <container> markers,
|
||||
// and FALLBACK leaves for anything still unsupported). rawSpan
|
||||
// (shared with FALLBACK, below) still holds the exact original source
|
||||
// text - codegen still emits the same raw interpretSpan-based
|
||||
// registration into global.tags alongside the new compiled fast path,
|
||||
// so anything that reaches this tag some other way keeps working
|
||||
// exactly as it does today.
|
||||
std::string tagDefName;
|
||||
std::vector<NodePtr> tagDefBody;
|
||||
|
||||
// CONTAINER_SLOT - a <container> marker (see Tag::renderContainer) -
|
||||
// a pure leaf, no extra fields.
|
||||
|
||||
// FALLBACK - exact original source text of one unsupported tag
|
||||
std::string rawSpan;
|
||||
};
|
||||
|
||||
@@ -49,124 +49,181 @@ namespace jetc {
|
||||
return expr.c_str();
|
||||
}
|
||||
|
||||
void Codegen::emitBody(const std::vector<NodePtr> &nodes, int indent) {
|
||||
for (auto &n : nodes) emitNode(n, indent);
|
||||
void Codegen::emitBody(const std::vector<NodePtr> &nodes, int indent, std::ostringstream &target) {
|
||||
for (auto &n : nodes) emitNode(n, indent, target);
|
||||
}
|
||||
|
||||
void Codegen::emitNode(const NodePtr &n, int indent) {
|
||||
void Codegen::emitNode(const NodePtr &n, int indent, std::ostringstream &target) {
|
||||
std::string I = ind(indent);
|
||||
switch (n->kind) {
|
||||
|
||||
case NodeKind::TEXT: {
|
||||
if (n->text.empty()) break;
|
||||
out << I << "out << " << cstr(n->text) << ";\n";
|
||||
target << I << "out << " << cstr(n->text) << ";\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::VAR: {
|
||||
out << I << "{ coreutils::ZString v(" << cstr(n->varText) << "); out << scope.getVariable(v, true); }\n";
|
||||
target << I << "{ coreutils::ZString v(" << cstr(n->varText) << "); out << scope.getVariable(v, true); }\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::SET: {
|
||||
std::string k = id("set_");
|
||||
out << I << "{\n";
|
||||
out << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->setName) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->setScope) << ";\n";
|
||||
out << I << " coreutils::MString val;\n";
|
||||
target << I << "{\n";
|
||||
target << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->setName) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->setScope) << ";\n";
|
||||
target << I << " coreutils::MString val;\n";
|
||||
if (n->setHasExpr) {
|
||||
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->setExpr) << ";\n";
|
||||
out << I << " val = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).string;\n";
|
||||
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->setExpr) << ";\n";
|
||||
target << I << " val = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).string;\n";
|
||||
} else {
|
||||
out << I << " scope.keywords[\"" << k << "value\"] = " << cstr(n->setHasValue ? n->setValue : std::string()) << ";\n";
|
||||
out << I << " val = scope.resolveKeyword(\"" << k << "value\");\n";
|
||||
target << I << " scope.keywords[\"" << k << "value\"] = " << cstr(n->setHasValue ? n->setValue : std::string()) << ";\n";
|
||||
target << I << " val = scope.resolveKeyword(\"" << k << "value\");\n";
|
||||
}
|
||||
out << I << " scope.assignVariable(scope.resolveKeyword(\"" << k << "name\"), val, scope.resolveKeyword(\"" << k << "scope\"));\n";
|
||||
out << I << "}\n";
|
||||
target << I << " scope.assignVariable(scope.resolveKeyword(\"" << k << "name\"), val, scope.resolveKeyword(\"" << k << "scope\"));\n";
|
||||
target << I << "}\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::IF: {
|
||||
std::string k = id("if_");
|
||||
out << I << "{\n";
|
||||
out << I << " bool cond;\n";
|
||||
target << I << "{\n";
|
||||
target << I << " bool cond;\n";
|
||||
if (n->cond.mode == CondMode::EXPR) {
|
||||
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
|
||||
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
|
||||
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
} else {
|
||||
out << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
|
||||
out << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
|
||||
target << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
|
||||
target << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
|
||||
}
|
||||
out << I << " if (cond) {\n";
|
||||
emitBody(n->thenBody, indent + 2);
|
||||
target << I << " if (cond) {\n";
|
||||
emitBody(n->thenBody, indent + 2, target);
|
||||
if (n->hasElse) {
|
||||
out << I << " } else {\n";
|
||||
emitBody(n->elseBody, indent + 2);
|
||||
target << I << " } else {\n";
|
||||
emitBody(n->elseBody, indent + 2, target);
|
||||
}
|
||||
out << I << " }\n";
|
||||
out << I << "}\n";
|
||||
target << I << " }\n";
|
||||
target << I << "}\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::FOR: {
|
||||
std::string k = id("for_");
|
||||
out << I << "{\n";
|
||||
out << I << " scope.keywords[\"" << k << "start\"] = " << cstr(n->forHasStart ? n->forStart : std::string("0")) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "end\"] = " << cstr(n->forEnd) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "step\"] = " << cstr(n->forStep) << ";\n";
|
||||
out << I << " double ix = scope.resolveKeyword(\"" << k << "start\").asDouble();\n";
|
||||
target << I << "{\n";
|
||||
target << I << " scope.keywords[\"" << k << "start\"] = " << cstr(n->forHasStart ? n->forStart : std::string("0")) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "end\"] = " << cstr(n->forEnd) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "step\"] = " << cstr(n->forStep) << ";\n";
|
||||
target << I << " double ix = scope.resolveKeyword(\"" << k << "start\").asDouble();\n";
|
||||
if (n->forHasName) {
|
||||
out << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->forName) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->forScope) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->forName) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->forScope) << ";\n";
|
||||
}
|
||||
out << I << " for (; ix <= scope.resolveKeyword(\"" << k << "end\").asDouble(); ix += scope.resolveKeyword(\"" << k << "step\").asDouble()) {\n";
|
||||
target << I << " for (; ix <= scope.resolveKeyword(\"" << k << "end\").asDouble(); ix += scope.resolveKeyword(\"" << k << "step\").asDouble()) {\n";
|
||||
if (n->forHasName) {
|
||||
out << I << " coreutils::MString nameSel = scope.resolveKeyword(\"" << k << "name\");\n";
|
||||
out << I << " coreutils::MString scopeSel = scope.resolveKeyword(\"" << k << "scope\");\n";
|
||||
out << I << " if ((scopeSel == \"\") || (scopeSel == \"global\")) global.variables[nameSel] = ix;\n";
|
||||
out << I << " else if (scopeSel == \"local\") scope.local->variables[nameSel] = ix;\n";
|
||||
out << I << " else if (scopeSel == \"parent\") scope.parent->local->variables[nameSel] = ix;\n";
|
||||
out << I << " else throw coreutils::Exception(\"scope value is not valid.\");\n";
|
||||
target << I << " coreutils::MString nameSel = scope.resolveKeyword(\"" << k << "name\");\n";
|
||||
target << I << " coreutils::MString scopeSel = scope.resolveKeyword(\"" << k << "scope\");\n";
|
||||
target << I << " if ((scopeSel == \"\") || (scopeSel == \"global\")) global.variables[nameSel] = ix;\n";
|
||||
target << I << " else if (scopeSel == \"local\") scope.local->variables[nameSel] = ix;\n";
|
||||
target << I << " else if (scopeSel == \"parent\") scope.parent->local->variables[nameSel] = ix;\n";
|
||||
target << I << " else throw coreutils::Exception(\"scope value is not valid.\");\n";
|
||||
}
|
||||
emitBody(n->body, indent + 2);
|
||||
out << I << " }\n";
|
||||
out << I << "}\n";
|
||||
emitBody(n->body, indent + 2, target);
|
||||
target << I << " }\n";
|
||||
target << I << "}\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::WHILE: {
|
||||
std::string k = id("while_");
|
||||
out << I << "{\n";
|
||||
out << I << " bool cond;\n";
|
||||
target << I << "{\n";
|
||||
target << I << " bool cond;\n";
|
||||
if (n->cond.mode == CondMode::EXPR) {
|
||||
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
|
||||
out << I << " coreutils::MString exprSaved = scope.keywords[\"" << k << "expr\"];\n";
|
||||
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
out << I << " while (cond) {\n";
|
||||
emitBody(n->body, indent + 2);
|
||||
out << I << " scope.keywords[\"" << k << "expr\"].reset();\n";
|
||||
out << I << " scope.keywords[\"" << k << "expr\"] = exprSaved;\n";
|
||||
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
out << I << " }\n";
|
||||
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
|
||||
target << I << " coreutils::MString exprSaved = scope.keywords[\"" << k << "expr\"];\n";
|
||||
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
target << I << " while (cond) {\n";
|
||||
emitBody(n->body, indent + 2, target);
|
||||
target << I << " scope.keywords[\"" << k << "expr\"].reset();\n";
|
||||
target << I << " scope.keywords[\"" << k << "expr\"] = exprSaved;\n";
|
||||
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
|
||||
target << I << " }\n";
|
||||
} else {
|
||||
out << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
|
||||
out << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
|
||||
out << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
|
||||
out << I << " while (cond) {\n";
|
||||
emitBody(n->body, indent + 2);
|
||||
out << I << " int rc2 = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc2") << ");\n";
|
||||
out << I << " }\n";
|
||||
target << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
|
||||
target << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
|
||||
target << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
|
||||
target << I << " while (cond) {\n";
|
||||
emitBody(n->body, indent + 2, target);
|
||||
target << I << " int rc2 = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
|
||||
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc2") << ");\n";
|
||||
target << I << " }\n";
|
||||
}
|
||||
out << I << "}\n";
|
||||
target << I << "}\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::FALLBACK: {
|
||||
out << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
|
||||
target << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::CONTAINER_SLOT: {
|
||||
// Reuses the interpreter's own <container> scope-walking logic
|
||||
// verbatim (see Tag::renderContainer) rather than re-deriving
|
||||
// it - this is exactly what the runtime's own <container>
|
||||
// dispatch does when it's reached via interpretSpan, just
|
||||
// without the text-scanning step to get there.
|
||||
target << I << "scope.renderContainer(out);\n";
|
||||
break;
|
||||
}
|
||||
|
||||
case NodeKind::TAGDEF: {
|
||||
// Codegen can still fail for a node that parsed successfully -
|
||||
// e.g. an <if>/<while> whose type= isn't one of eq/ne/lt/le/gt/ge
|
||||
// (staticTypeOp's own check - real legacy content occasionally
|
||||
// has one of these sitting in a branch that's never actually
|
||||
// reached at runtime either, so there's nothing to "correctly"
|
||||
// compile). Parsing this definition's body already succeeded
|
||||
// (see parseTagDef's own try/catch for that stage) or this node
|
||||
// wouldn't exist as TAGDEF at all - so mirror that same
|
||||
// graceful-degradation approach here for the emit stage: try
|
||||
// building the compiled function into a throwaway stream first,
|
||||
// and only splice it into tagDefFuncs (and register the
|
||||
// compiledTags fast path) if that fully succeeds. A failure
|
||||
// here just means this one definition stays interpreted,
|
||||
// unchanged - zero risk to the rest of the file.
|
||||
std::string funcName = "jetc_tagdef_" + id("");
|
||||
std::ostringstream trial;
|
||||
bool compiledOk = true;
|
||||
try {
|
||||
trial << "static void " << funcName << "(jet::Tag &scope, coreutils::MString &out) {\n";
|
||||
emitBody(n->tagDefBody, 1, trial);
|
||||
trial << "}\n\n";
|
||||
} catch (const std::exception &) {
|
||||
compiledOk = false;
|
||||
}
|
||||
|
||||
// Emitted in place, at this TAGDEF's original position in
|
||||
// program flow - matches exactly what FALLBACK would have
|
||||
// emitted for this same <tag name="X">...</tag> span, so
|
||||
// global.tags["x"] still gets populated as before (needed as a
|
||||
// correctness fallback: any invocation this compiler doesn't
|
||||
// itself recognize - e.g. reached through content this pass
|
||||
// never compiled - still resolves it exactly as it always has).
|
||||
target << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
|
||||
if (compiledOk) {
|
||||
// The registration into compiledTags right after is the only
|
||||
// new behavior beyond the raw registration above - a pure
|
||||
// additive fast path __dotag checks first (see __dotag.cpp);
|
||||
// a miss there falls through to the now-unchanged interpreted
|
||||
// path, which is exactly what happens when compiledOk is
|
||||
// false here too.
|
||||
tagDefFuncs << trial.str();
|
||||
target << I << "global.compiledTags[coreutils::MString(" << cstr(n->tagDefName) << ")] = &" << funcName << ";\n";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -177,6 +234,9 @@ namespace jetc {
|
||||
const std::vector<ApiRoute> &apiRoutes, const std::string &apiSymbol) {
|
||||
out.str("");
|
||||
out.clear();
|
||||
tagDefFuncs.str("");
|
||||
tagDefFuncs.clear();
|
||||
|
||||
out << "// " << sourceFileComment << "\n";
|
||||
out << "// Generated by jetc - DO NOT EDIT BY HAND.\n";
|
||||
out << "#include \"Global.h\"\n";
|
||||
@@ -187,51 +247,61 @@ namespace jetc {
|
||||
out << "#include \"Exception.h\"\n";
|
||||
out << "#include <iostream>\n\n";
|
||||
|
||||
// The entry function's own text is built into a separate stream so
|
||||
// tagDefFuncs - populated as a SIDE EFFECT of the emitBody() call
|
||||
// below, since TAGDEF nodes append to it as they're encountered -
|
||||
// can be spliced in ahead of it. A compiled tag-definition function
|
||||
// never needs to be forward-declared for anything defined before it
|
||||
// in program order (nothing upstream calls it directly - see
|
||||
// __dotag.cpp's runtime lookup instead), so this ordering is purely
|
||||
// for readability, not a correctness requirement.
|
||||
std::ostringstream body;
|
||||
|
||||
if (sharedMode) {
|
||||
if (!apiRoutes.empty()) {
|
||||
// A plain C struct, not any CoreUtils/JetCore type - this is the
|
||||
// one piece of the plugin ABI a host loader needs to know about
|
||||
// independent of the rest of this same-ABI C++ boundary.
|
||||
out << "struct JetApiRoute { const char *method; const char *path; };\n";
|
||||
out << "extern \"C\" const JetApiRoute *" << apiSymbol << "(int *count) {\n";
|
||||
out << " static const JetApiRoute routes[] = {\n";
|
||||
body << "struct JetApiRoute { const char *method; const char *path; };\n";
|
||||
body << "extern \"C\" const JetApiRoute *" << apiSymbol << "(int *count) {\n";
|
||||
body << " static const JetApiRoute routes[] = {\n";
|
||||
for (auto &r : apiRoutes)
|
||||
out << " { " << cstr(r.method) << ", " << cstr(r.path) << " },\n";
|
||||
out << " };\n";
|
||||
out << " *count = " << apiRoutes.size() << ";\n";
|
||||
out << " return routes;\n";
|
||||
out << "}\n\n";
|
||||
body << " { " << cstr(r.method) << ", " << cstr(r.path) << " },\n";
|
||||
body << " };\n";
|
||||
body << " *count = " << apiRoutes.size() << ";\n";
|
||||
body << " return routes;\n";
|
||||
body << "}\n\n";
|
||||
}
|
||||
out << "extern \"C\" void " << entrySymbol << "(jet::Global &global, coreutils::MString &out) {\n";
|
||||
out << " coreutils::ZString jetc_empty(\"\");\n";
|
||||
out << " coreutils::MString jetc_scopeOut;\n";
|
||||
out << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
|
||||
emitBody(top, 1);
|
||||
out << "}\n";
|
||||
return out.str();
|
||||
body << "extern \"C\" void " << entrySymbol << "(jet::Global &global, coreutils::MString &out) {\n";
|
||||
body << " coreutils::ZString jetc_empty(\"\");\n";
|
||||
body << " coreutils::MString jetc_scopeOut;\n";
|
||||
body << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
|
||||
emitBody(top, 1, body);
|
||||
body << "}\n";
|
||||
return out.str() + tagDefFuncs.str() + body.str();
|
||||
}
|
||||
|
||||
out << "static void jetc_render(jet::Global &global, coreutils::MString &out) {\n";
|
||||
out << " coreutils::ZString jetc_empty(\"\");\n";
|
||||
out << " coreutils::MString jetc_scopeOut;\n";
|
||||
out << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
|
||||
emitBody(top, 1);
|
||||
out << "}\n\n";
|
||||
out << "int main(int argc, char **argv, char **envp) {\n";
|
||||
out << " jet::Global global(envp);\n";
|
||||
out << " coreutils::MString out;\n";
|
||||
out << " try {\n";
|
||||
out << " jetc_render(global, out);\n";
|
||||
out << " global.outputHeaders();\n";
|
||||
out << " std::cout << out;\n";
|
||||
out << " } catch(coreutils::Exception e) {\n";
|
||||
out << " std::cout << out;\n";
|
||||
out << " std::cout << \"\\n----- Error: \" << e.text << std::endl;\n";
|
||||
out << " return 1;\n";
|
||||
out << " }\n";
|
||||
out << " return 0;\n";
|
||||
out << "}\n";
|
||||
return out.str();
|
||||
body << "static void jetc_render(jet::Global &global, coreutils::MString &out) {\n";
|
||||
body << " coreutils::ZString jetc_empty(\"\");\n";
|
||||
body << " coreutils::MString jetc_scopeOut;\n";
|
||||
body << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
|
||||
emitBody(top, 1, body);
|
||||
body << "}\n\n";
|
||||
body << "int main(int argc, char **argv, char **envp) {\n";
|
||||
body << " jet::Global global(envp);\n";
|
||||
body << " coreutils::MString out;\n";
|
||||
body << " try {\n";
|
||||
body << " jetc_render(global, out);\n";
|
||||
body << " global.outputHeaders();\n";
|
||||
body << " std::cout << out;\n";
|
||||
body << " } catch(coreutils::Exception e) {\n";
|
||||
body << " std::cout << out;\n";
|
||||
body << " std::cout << \"\\n----- Error: \" << e.text << std::endl;\n";
|
||||
body << " return 1;\n";
|
||||
body << " }\n";
|
||||
body << " return 0;\n";
|
||||
body << "}\n";
|
||||
return out.str() + tagDefFuncs.str() + body.str();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -62,11 +62,28 @@ namespace jetc {
|
||||
|
||||
private:
|
||||
std::ostringstream out;
|
||||
|
||||
// Free functions generated for compiled <tag name="X"> definitions
|
||||
// (see the TAGDEF case in emitNode) accumulate here, in the order
|
||||
// encountered, and are spliced into the final output ahead of the
|
||||
// entry function (see generate()) - C++ doesn't care about
|
||||
// definition order within one translation unit as long as nothing
|
||||
// outside of it needs a forward declaration, but keeping them
|
||||
// grouped together ahead of the entry point makes the generated
|
||||
// file easier to read/debug than interleaving them positionally.
|
||||
std::ostringstream tagDefFuncs;
|
||||
|
||||
size_t nextId = 0;
|
||||
std::string id(const std::string &prefix) { return prefix + std::to_string(nextId++) + "_"; }
|
||||
|
||||
void emitBody(const std::vector<NodePtr> &nodes, int indent);
|
||||
void emitNode(const NodePtr &n, int indent);
|
||||
// target is the stream this node's statements are written to - `out`
|
||||
// for everything at the top level or nested inside ordinary control
|
||||
// flow (IF/FOR/WHILE bodies stay in the same stream as their
|
||||
// enclosing scope), but a TAGDEF's own body is rendered into a
|
||||
// fresh stream to become a separate generated function (see
|
||||
// emitNode's TAGDEF case) rather than being inlined in place.
|
||||
void emitBody(const std::vector<NodePtr> &nodes, int indent, std::ostringstream &target);
|
||||
void emitNode(const NodePtr &n, int indent, std::ostringstream &target);
|
||||
static std::string ind(int indent);
|
||||
static std::string cstr(const std::string &raw); // C++ string-literal escape
|
||||
static const char *staticTypeOp(const std::string &type, const char *rcVar);
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
#include "JetParser.h"
|
||||
#include <cctype>
|
||||
#include <stdexcept>
|
||||
#include <set>
|
||||
#include <cstdio>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <cstdio>
|
||||
|
||||
namespace jetc {
|
||||
|
||||
@@ -29,37 +34,148 @@ namespace jetc {
|
||||
return s.substr(start, p - start);
|
||||
}
|
||||
|
||||
namespace {
|
||||
// jet-1.4 (the language this parser also has to accept, alongside
|
||||
// real 2.0 source) was fully case-insensitive on tag names - the
|
||||
// production source mixes case freely, even within one tag's own
|
||||
// body (e.g. <SET ...> and <set ...> side by side). Tag names are
|
||||
// matched case-insensitively throughout this parser for that
|
||||
// reason; nothing else (attribute values, text content) is
|
||||
// affected by this helper.
|
||||
bool ciEquals(const char *a, size_t alen, const std::string &b) {
|
||||
if (alen != b.size()) return false;
|
||||
for (size_t i = 0; i < alen; i++)
|
||||
if (std::tolower((unsigned char)a[i]) != std::tolower((unsigned char)b[i]))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool Parser::matchTagOpen(const std::string &name, size_t at) const {
|
||||
if (s.compare(at, 1, "<") != 0) return false;
|
||||
size_t p = at + 1;
|
||||
size_t nstart = p;
|
||||
while (p < s.size() && isNameChar(s[p])) p++;
|
||||
if (s.compare(nstart, p - nstart, name) != 0) return false;
|
||||
if (!ciEquals(s.data() + nstart, p - nstart, name)) return false;
|
||||
if (p >= s.size()) return false;
|
||||
char c = s[p];
|
||||
return c == ' ' || c == '>' || c == '/';
|
||||
}
|
||||
|
||||
bool Parser::matchTagClose(const std::string &name, size_t at) const {
|
||||
std::string closer = "</" + name + ">";
|
||||
return s.compare(at, closer.size(), closer) == 0;
|
||||
if (s.compare(at, 2, "</") != 0) return false;
|
||||
size_t p = at + 2;
|
||||
size_t nstart = p;
|
||||
while (p < s.size() && isNameChar(s[p])) p++;
|
||||
if (!ciEquals(s.data() + nstart, p - nstart, name)) return false;
|
||||
return p < s.size() && s[p] == '>';
|
||||
}
|
||||
|
||||
bool Parser::skipOpenTag(size_t &p) const {
|
||||
namespace {
|
||||
// jet-1.4's real parser knew which tags never take a body (its own
|
||||
// "void element" list) - kept here, ahead of skipOpenTag/
|
||||
// skipEmbeddedTag/parseFallback, since all of them need it.
|
||||
bool isVoidTag(const std::string &name) {
|
||||
static const std::set<std::string> voidTags = {
|
||||
// jet's own built-ins that never take a body. exclude is
|
||||
// NOT here - __exclude.cpp's own constructor requires a
|
||||
// real body (throws "exclude must have a container"
|
||||
// otherwise), it was previously miscategorized as void.
|
||||
"set", "include", "cookie", "header", "read", "write",
|
||||
"call", "system", "dump",
|
||||
// <container> (see parseContainerSlot/Tag::renderContainer) -
|
||||
// real content always writes it as a bare marker with no
|
||||
// separate closing tag, even when it carries its own
|
||||
// attributes (e.g. SESSIONCTL.tag's own
|
||||
// <CONTAINER EVAL="NO">) - without this it was previously only
|
||||
// reachable via the generic FALLBACK path (scanBody would
|
||||
// incorrectly scan forward for a "</container>" that never
|
||||
// exists, consuming unrelated following content).
|
||||
"container",
|
||||
// standard HTML5 void elements - real 1.4-era content (e.g.
|
||||
// SESSIONCTL.tag) writes these the classic HTML way too,
|
||||
// bare '>' and never a closing tag.
|
||||
"br", "img", "input", "hr", "meta", "link", "area", "base",
|
||||
"col", "embed", "source", "track", "wbr",
|
||||
// <else> is a marker inside an <if>/<while>/<until> body
|
||||
// (scanBody's own lookForElse handles it at the top level) -
|
||||
// it never has its own close tag, so when it shows up
|
||||
// embedded (inside a quoted attribute or another tag's
|
||||
// attribute region, same as <if> does in <linkbutton>) it
|
||||
// needs the same void treatment.
|
||||
"else"
|
||||
};
|
||||
std::string lower = name;
|
||||
for (char &c : lower) c = (char)std::tolower((unsigned char)c);
|
||||
return voidTags.count(lower) != 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Real 1.4 content nests real jet tags in two places a plain
|
||||
// quote/angle-bracket scanner can't handle on its own:
|
||||
// 1. Inside a quoted attribute value - SESSIONCTL.tag's <linkbutton>
|
||||
// has HREF="javascript: <IF VALUE1="..." VALUE2="" TYPE=NE> ...
|
||||
// </IF> ... " - the outer string and the embedded tag's own
|
||||
// attributes reuse the same quote character with no escaping.
|
||||
// 2. Inside another tag's OWN opening-tag attribute region, before
|
||||
// its closing '>' - linkbutton's <A ...> has a conditional
|
||||
// <if value1="#[CLASS]" value2="" type="ne">CLASS="#[CLASS]"</if>
|
||||
// sitting between its other attributes and its own '>' - the
|
||||
// literal '>' that ends the embedded <if ...>'s OWN opening tag
|
||||
// would otherwise be mistaken for <A>'s closing '>'.
|
||||
// skipEmbeddedTag() skips one such nested tag as a whole unit -
|
||||
// its own attributes (recursing through skipOpenTag, so an embedded
|
||||
// tag's embedded tag works too) and, if it isn't a void tag and wasn't
|
||||
// self-closed, its real body up through its own matching close tag
|
||||
// (via the same matchTagOpen/matchTagClose depth-tracking scanBody
|
||||
// uses at the top level). skipOpenTag's own attribute scan and
|
||||
// skipQuotedValue both call this for anything that looks like a
|
||||
// nested tag, instead of treating it as ordinary content.
|
||||
void Parser::skipEmbeddedTag(size_t &p) {
|
||||
size_t nameStart = p + 1;
|
||||
size_t nameEnd = nameStart;
|
||||
while (nameEnd < s.size() && isNameChar(s[nameEnd])) nameEnd++;
|
||||
std::string tagName = s.substr(nameStart, nameEnd - nameStart);
|
||||
bool selfClosing = skipOpenTag(p);
|
||||
if (!selfClosing && !isVoidTag(tagName)) {
|
||||
auto span = scanBody(p, tagName, false);
|
||||
p = span.first + 3 + tagName.size();
|
||||
}
|
||||
}
|
||||
|
||||
void Parser::skipQuotedValue(size_t &p) {
|
||||
p++; // opening '"'
|
||||
while (p < s.size()) {
|
||||
if (s[p] == '"') { p++; return; }
|
||||
if (s[p] == '\\' && p + 1 < s.size()) { p += 2; continue; }
|
||||
if (s[p] == '<' && p + 1 < s.size() && isNameChar(s[p + 1])) {
|
||||
skipEmbeddedTag(p);
|
||||
continue;
|
||||
}
|
||||
if (s[p] == '<' && s.compare(p, 2, "</") == 0) {
|
||||
p += 2;
|
||||
while (p < s.size() && isNameChar(s[p])) p++;
|
||||
if (p < s.size() && s[p] == '>') p++;
|
||||
continue;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
bool Parser::skipOpenTag(size_t &p) {
|
||||
p++; // '<'
|
||||
while (p < s.size() && isNameChar(s[p])) p++;
|
||||
while (p < s.size()) {
|
||||
if (s[p] == '"') {
|
||||
p++;
|
||||
while (p < s.size() && s[p] != '"') {
|
||||
if (s[p] == '\\' && p + 1 < s.size()) p++;
|
||||
p++;
|
||||
}
|
||||
if (p < s.size()) p++;
|
||||
skipQuotedValue(p);
|
||||
continue;
|
||||
}
|
||||
if (s.compare(p, 2, "/>") == 0) { p += 2; return true; }
|
||||
if (s[p] == '>') { p += 1; return false; }
|
||||
if (s[p] == '<' && p + 1 < s.size() && isNameChar(s[p + 1])) {
|
||||
skipEmbeddedTag(p);
|
||||
continue;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
throw std::runtime_error("jetc: unterminated tag near end of input");
|
||||
@@ -74,14 +190,40 @@ namespace jetc {
|
||||
if (starts(">")) { pos += 1; hasContainer = true; break; }
|
||||
std::string aname = readName();
|
||||
if (aname.empty()) throw std::runtime_error("jetc: malformed attribute near offset " + std::to_string(pos));
|
||||
if (starts("=\"")) {
|
||||
pos += 2;
|
||||
if (starts("=")) {
|
||||
pos += 1;
|
||||
std::string val;
|
||||
while (!eof() && s[pos] != '"') {
|
||||
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
|
||||
val += s[pos++];
|
||||
if (!eof() && s[pos] == '"') {
|
||||
pos++;
|
||||
while (!eof() && s[pos] != '"') {
|
||||
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
|
||||
val += s[pos++];
|
||||
}
|
||||
if (!eof()) pos++; // closing quote
|
||||
} else if (!eof() && s[pos] == '\'') {
|
||||
// Single-quoted value - real 1.4 content writes both
|
||||
// (SESSIONCTL.tag's own name='tmp_#[name]' alongside
|
||||
// ordinary name="..." elsewhere in the same file).
|
||||
pos++;
|
||||
while (!eof() && s[pos] != '\'') {
|
||||
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
|
||||
val += s[pos++];
|
||||
}
|
||||
if (!eof()) pos++; // closing quote
|
||||
} else {
|
||||
// Unquoted bareword value - real 1.4 content writes this
|
||||
// too (type=eq, format=tobrowser, TYPE=NE throughout
|
||||
// SESSIONCTL.tag) - the runtime interpreter's own
|
||||
// attribute scanning already tolerates it; jetc's own
|
||||
// parser previously didn't, since nothing had ever
|
||||
// recursively parsed a tag definition's own body deeply
|
||||
// enough to reach one before (see parseTagDef). Runs to
|
||||
// the next whitespace or the tag's own closing '>'/'/>' .
|
||||
while (!eof() && !std::isspace((unsigned char)s[pos]) && s[pos] != '>' &&
|
||||
!(s[pos] == '/' && pos + 1 < s.size() && s[pos + 1] == '>')) {
|
||||
val += s[pos++];
|
||||
}
|
||||
}
|
||||
if (!eof()) pos++; // closing quote
|
||||
attrs[aname] = val;
|
||||
}
|
||||
}
|
||||
@@ -126,7 +268,40 @@ namespace jetc {
|
||||
}
|
||||
|
||||
std::vector<NodePtr> Parser::parseSub(size_t start, size_t end) {
|
||||
Parser sub(s.substr(start, end - start));
|
||||
// Always topLevel=false - an <if>/<for>/<while> body is never the
|
||||
// file's true top level, regardless of what topLevel this Parser
|
||||
// itself was constructed with (see parseTagDef/isVoidTag's doc
|
||||
// comments - a <tag name="X"> found here stays FALLBACK, unchanged).
|
||||
Parser sub(s.substr(start, end - start), baseDir, includeDepth, false);
|
||||
return sub.parseNodes();
|
||||
}
|
||||
|
||||
std::vector<NodePtr> Parser::parseInclude() {
|
||||
pos += 8; // "<include"
|
||||
bool hasContainer;
|
||||
// <include> is always void, the same way <set> is (see parseSet) -
|
||||
// real content writes it bare (<include file="X">, no explicit
|
||||
// '/>'), which parseAttrs reports as hasContainer=true since it
|
||||
// can't tell that apart from a real container tag on syntax alone.
|
||||
auto attrs = parseAttrs(hasContainer);
|
||||
(void)hasContainer;
|
||||
auto it = attrs.find("file");
|
||||
if (it == attrs.end())
|
||||
throw std::runtime_error("jetc: <include> must have a file attribute.");
|
||||
if (includeDepth > 32)
|
||||
throw std::runtime_error("jetc: <include> depth exceeded (possible include cycle) resolving " + it->second);
|
||||
std::string fullPath = baseDir.empty() ? it->second : baseDir + "/" + it->second;
|
||||
std::ifstream in(fullPath);
|
||||
if (!in)
|
||||
throw std::runtime_error("jetc: <include> cannot open " + fullPath);
|
||||
std::ostringstream ss;
|
||||
ss << in.rdbuf();
|
||||
// Inherits the includer's own topLevel - an <include> spliced in at
|
||||
// the file's true top level reads as if its content were written
|
||||
// inline there (see this method's own doc comment), so a <tag
|
||||
// name="X"> defined in the included file is just as eligible for
|
||||
// compilation as one written directly in the includer.
|
||||
Parser sub(ss.str(), baseDir, includeDepth + 1, topLevel);
|
||||
return sub.parseNodes();
|
||||
}
|
||||
|
||||
@@ -146,21 +321,19 @@ namespace jetc {
|
||||
}
|
||||
|
||||
NodePtr Parser::parseSet() {
|
||||
size_t origStart = pos;
|
||||
pos += 4; // "<set"
|
||||
bool hasContainer;
|
||||
auto attrs = parseAttrs(hasContainer);
|
||||
if (hasContainer) {
|
||||
// Container-form <set> (value comes from rendering nested content)
|
||||
// isn't modeled by this prototype - fall back to full interpretation
|
||||
// of the whole tag instead of failing to compile.
|
||||
auto span = scanBody(pos, "set", false);
|
||||
pos = span.first + 3 + 3; // "</set>"
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::FALLBACK;
|
||||
n->rawSpan = s.substr(origStart, pos - origStart);
|
||||
return n;
|
||||
}
|
||||
// jet-1.4's <set name=... value=... expr=...> is always a plain
|
||||
// attribute-based assignment - it never had a container/body form.
|
||||
// Real 1.4 content (config.cfg, SESSIONCTL.tag, throughout) writes
|
||||
// it with a bare closing '>' and no explicit </set>, which is
|
||||
// syntactically indistinguishable from a (speculative, and per the
|
||||
// comment this replaced, never actually implemented) 2.0
|
||||
// container-form <set>...</set>. Since the container form was never
|
||||
// real to begin with, <set> is always treated as self-closing here,
|
||||
// matching 1.4's actual, exclusive behavior rather than guessing.
|
||||
(void)hasContainer;
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::SET;
|
||||
n->setName = attrs.count("name") ? attrs["name"] : "";
|
||||
@@ -246,7 +419,7 @@ namespace jetc {
|
||||
std::string tagName = peekTagName(pos);
|
||||
size_t p = pos;
|
||||
bool selfClosing = skipOpenTag(p);
|
||||
if (!selfClosing) {
|
||||
if (!selfClosing && !isVoidTag(tagName)) {
|
||||
auto span = scanBody(p, tagName, false);
|
||||
p = span.first + 3 + tagName.size();
|
||||
}
|
||||
@@ -257,6 +430,94 @@ namespace jetc {
|
||||
return n;
|
||||
}
|
||||
|
||||
NodePtr Parser::parseTagDef() {
|
||||
size_t origStart = pos;
|
||||
pos += 4; // "<tag"
|
||||
bool hasContainer;
|
||||
auto attrs = parseAttrs(hasContainer);
|
||||
std::string name = attrs.count("name") ? attrs["name"] : "";
|
||||
// A dynamic name ($[...]/#[...]) or a body-less definition can't be
|
||||
// (and, per __tag.cpp, isn't even valid as) a compiled definition -
|
||||
// fall back to the exact same FALLBACK behavior as before rather
|
||||
// than failing to compile. Real content always uses a literal name.
|
||||
bool dynamicName = name.find("$[") != std::string::npos || name.find("#[") != std::string::npos;
|
||||
if (!hasContainer || name.empty() || dynamicName) {
|
||||
if (hasContainer) {
|
||||
auto span = scanBody(pos, "tag", false);
|
||||
pos = span.first + 3 + 3; // "</tag>"
|
||||
}
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::FALLBACK;
|
||||
n->rawSpan = s.substr(origStart, pos - origStart);
|
||||
return n;
|
||||
}
|
||||
std::string lowerName = name;
|
||||
for (char &c : lowerName) c = (char)std::tolower((unsigned char)c);
|
||||
|
||||
auto span = scanBody(pos, "tag", false);
|
||||
size_t closePos = span.first;
|
||||
size_t afterClose = closePos + 3 + 3; // "</tag>"
|
||||
|
||||
// Best-effort: this compiler's own modeled grammar is a real subset
|
||||
// of what the runtime interpreter tolerates (jet-1.4 content is
|
||||
// lenient in ways this parser doesn't fully cover yet - e.g. a
|
||||
// completely unrecognized bare tag like SESSIONCTL.tag's own
|
||||
// <setcookie ...>, which the interpreter just echoes as literal
|
||||
// text rather than treating as a real tag needing a close - see
|
||||
// Tag.cpp's own final dispatch fallback). Rather than teach every
|
||||
// such case to this parser up front, fall all the way back to the
|
||||
// exact same FALLBACK behavior a pre-TAGDEF compiler would have
|
||||
// produced for this whole span whenever the body can't be parsed -
|
||||
// this tag definition simply isn't compiled (stays fully
|
||||
// interpreted, unchanged), with zero risk to anything else in the
|
||||
// file. pos is never mutated by the failed parseSub call itself
|
||||
// (it operates on its own copied substring), so no explicit
|
||||
// rewind is needed before falling through.
|
||||
std::vector<NodePtr> body;
|
||||
bool bodyOk = true;
|
||||
try {
|
||||
body = parseSub(pos, closePos);
|
||||
} catch (const std::exception &) {
|
||||
bodyOk = false;
|
||||
}
|
||||
if (!bodyOk) {
|
||||
pos = afterClose;
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::FALLBACK;
|
||||
n->rawSpan = s.substr(origStart, pos - origStart);
|
||||
return n;
|
||||
}
|
||||
pos = afterClose;
|
||||
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::TAGDEF;
|
||||
n->tagDefName = lowerName;
|
||||
n->tagDefBody = body;
|
||||
// Exact original source text - codegen still emits the same
|
||||
// interpretSpan-based raw registration into global.tags alongside
|
||||
// the new compiled fast path (see JetCodegen's TAGDEF case), so
|
||||
// anything that reaches this tag some other way (a nested/locally-
|
||||
// scoped definition shadowing it, or interpreted content elsewhere)
|
||||
// keeps working exactly as it does today.
|
||||
n->rawSpan = s.substr(origStart, pos - origStart);
|
||||
return n;
|
||||
}
|
||||
|
||||
NodePtr Parser::parseContainerSlot() {
|
||||
pos += 10; // "<container"
|
||||
bool hasContainer;
|
||||
auto attrs = parseAttrs(hasContainer);
|
||||
// Attributes on <container> (eval=/name=/scope=, as real content
|
||||
// sometimes writes) are not consulted by the interpreter's own
|
||||
// <container> dispatch branch either (see Tag::renderContainer) -
|
||||
// matching that exactly rather than inventing new behavior here.
|
||||
(void)attrs;
|
||||
(void)hasContainer;
|
||||
auto n = std::make_shared<Node>();
|
||||
n->kind = NodeKind::CONTAINER_SLOT;
|
||||
return n;
|
||||
}
|
||||
|
||||
std::vector<NodePtr> Parser::parseNodes() {
|
||||
std::vector<NodePtr> nodes;
|
||||
std::string textBuf;
|
||||
@@ -287,6 +548,14 @@ namespace jetc {
|
||||
if (matchTagOpen("if", pos)) { flush(); nodes.push_back(parseIf()); continue; }
|
||||
if (matchTagOpen("for", pos)) { flush(); nodes.push_back(parseFor()); continue; }
|
||||
if (matchTagOpen("while", pos)) { flush(); nodes.push_back(parseWhile()); continue; }
|
||||
if (matchTagOpen("include", pos)) {
|
||||
flush();
|
||||
auto included = parseInclude();
|
||||
nodes.insert(nodes.end(), included.begin(), included.end());
|
||||
continue;
|
||||
}
|
||||
if (matchTagOpen("container", pos)) { flush(); nodes.push_back(parseContainerSlot()); continue; }
|
||||
if (topLevel && matchTagOpen("tag", pos)) { flush(); nodes.push_back(parseTagDef()); continue; }
|
||||
flush();
|
||||
nodes.push_back(parseFallback());
|
||||
continue;
|
||||
|
||||
@@ -21,7 +21,19 @@ namespace jetc {
|
||||
// gracefully instead of failing to compile.
|
||||
class Parser {
|
||||
public:
|
||||
explicit Parser(const std::string &src) : s(src), pos(0) {}
|
||||
// topLevel is false for any nested sub-parse (an <if>/<for>/<while>
|
||||
// body, via parseSub) and true for the file's own top-level flow and
|
||||
// for anything spliced in from an <include> (which inherits the
|
||||
// includer's own topLevel, since it's meant to read as if written
|
||||
// inline at that point - see parseInclude). Only used to decide
|
||||
// whether a <tag name="X"> definition is eligible for compilation
|
||||
// (see parseTagDef) - one found at topLevel==false (nested inside
|
||||
// another construct) stays FALLBACK, unchanged, matching __tag.cpp's
|
||||
// own locally-scoped-registration semantics that only a true
|
||||
// top-level definition is guaranteed to always be registered by the
|
||||
// time any invocation could reach it.
|
||||
explicit Parser(const std::string &src, std::string baseDir = "", int includeDepth = 0, bool topLevel = true)
|
||||
: s(src), pos(0), baseDir(baseDir), includeDepth(includeDepth), topLevel(topLevel) {}
|
||||
|
||||
std::vector<NodePtr> parseNodes();
|
||||
|
||||
@@ -29,6 +41,9 @@ namespace jetc {
|
||||
std::string s;
|
||||
size_t pos;
|
||||
size_t nextId = 0;
|
||||
std::string baseDir;
|
||||
int includeDepth;
|
||||
bool topLevel;
|
||||
|
||||
bool eof() const { return pos >= s.size(); }
|
||||
bool starts(const std::string &lit) const;
|
||||
@@ -42,7 +57,9 @@ namespace jetc {
|
||||
|
||||
// p points at '<' of some tag's opening; advances p past its '>' or
|
||||
// "/>", skipping quoted attribute values. Returns true if self-closing.
|
||||
bool skipOpenTag(size_t &p) const;
|
||||
bool skipOpenTag(size_t &p);
|
||||
void skipQuotedValue(size_t &p);
|
||||
void skipEmbeddedTag(size_t &p);
|
||||
|
||||
std::map<std::string, std::string> parseAttrs(bool &hasContainer);
|
||||
|
||||
@@ -54,6 +71,15 @@ namespace jetc {
|
||||
|
||||
std::vector<NodePtr> parseSub(size_t start, size_t end);
|
||||
|
||||
// <include file="..."> is spliced in at compile time - read the
|
||||
// referenced file (resolved relative to baseDir) and parse ITS
|
||||
// content as if it had been written inline here, so everything in
|
||||
// it (custom <tag> definitions included) goes through this real
|
||||
// compiler, not the separate runtime interpreter (which has its own,
|
||||
// independently-buggy nested-tag handling). Returns the parsed nodes
|
||||
// to be spliced into the caller's own node list.
|
||||
std::vector<NodePtr> parseInclude();
|
||||
|
||||
NodePtr parseVar();
|
||||
NodePtr parseSet();
|
||||
NodePtr parseIf();
|
||||
@@ -61,6 +87,21 @@ namespace jetc {
|
||||
NodePtr parseWhile();
|
||||
NodePtr parseFallback();
|
||||
|
||||
// <tag name="X">...</tag> at true top level (see topLevel above) -
|
||||
// compiles the definition body with a nested (topLevel=false) parse
|
||||
// instead of falling back to raw text, so jetc can generate a real
|
||||
// render function for it (see JetCodegen). Falls back to an ordinary
|
||||
// FALLBACK node (same as today) if the definition has no container
|
||||
// or no literal name= - degrades gracefully rather than failing to
|
||||
// compile.
|
||||
NodePtr parseTagDef();
|
||||
|
||||
// <container> (any case/attributes/closing style, always void - see
|
||||
// isVoidTag) - a leaf node; the actual rendering logic lives in
|
||||
// Tag::renderContainer, called from generated code exactly as the
|
||||
// interpreter's own <container> dispatch calls it today.
|
||||
NodePtr parseContainerSlot();
|
||||
|
||||
std::string newId(const std::string &prefix) { return prefix + std::to_string(nextId++) + "_"; }
|
||||
};
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
.controlframe {background: #888;
|
||||
padding: 5px 5px 15px 10px;
|
||||
}
|
||||
|
||||
.vm {position: relative;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmname {position: absolute;
|
||||
left: 0px; top: 0px;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmcover {position: absolute;
|
||||
left: 15px;
|
||||
top: 30px;
|
||||
font: 12px 'Dot Matrix';
|
||||
background: #bbb;
|
||||
color: white;
|
||||
border: 1pt solid white;
|
||||
border-radius: 5px;
|
||||
padding: 2px 10px 2px 10px;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,26 @@
|
||||
|
||||
.controlframe {background: #16161c;
|
||||
border: 1px solid rgba(197, 164, 90, 0.28);
|
||||
border-radius: 3px;
|
||||
padding: 5px 5px 15px 10px;
|
||||
}
|
||||
|
||||
.vm {position: relative;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmname {position: absolute;
|
||||
left: 0px; top: 0px;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmcover {position: absolute;
|
||||
left: 15px;
|
||||
top: 30px;
|
||||
font: 12px 'Dot Matrix';
|
||||
background: #101014;
|
||||
color: #e3c47e;
|
||||
border: 1px solid rgba(197, 164, 90, 0.4);
|
||||
border-radius: 5px;
|
||||
padding: 2px 10px 2px 10px;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,690 @@
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: avenir;
|
||||
src: url('https://barant.com/fonts/AvenirLTStd-Light.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: source;
|
||||
src: url('https://barant.com/fonts/jackinput.TTF');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: exo2;
|
||||
src: url('https://barant.com/fonts/Exo2-RegularCondensed.otf');
|
||||
}
|
||||
|
||||
:root {
|
||||
--bond-bg: #0a0a0d;
|
||||
--bond-bg-2: #131318;
|
||||
--bond-panel: #16161c;
|
||||
--bond-panel-2: #1c1c24;
|
||||
--bond-line: rgba(197, 164, 90, 0.28);
|
||||
--bond-line-soft: rgba(255, 255, 255, 0.07);
|
||||
--bond-gold: #c5a45a;
|
||||
--bond-gold-bright: #e3c47e;
|
||||
--bond-ice: #6fb8c9;
|
||||
--bond-text: #e7e4dc;
|
||||
--bond-text-dim: #8d8c92;
|
||||
--bond-red: #a13a3a;
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
background: radial-gradient(ellipse at top, #1a1a20 0%, #0a0a0d 60%, #060607 100%);
|
||||
background-attachment: fixed;
|
||||
font-family: exo2;
|
||||
color: var(--bond-text);
|
||||
margin: 10px 10px 10px 10px;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
a:link, a:visited { text-decoration: none; color: var(--bond-gold); }
|
||||
a:hover { text-decoration: none; color: var(--bond-gold-bright); }
|
||||
|
||||
h1 {
|
||||
font: 20pt exo2;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: var(--bond-text);
|
||||
text-shadow: 0 0 0.6em rgba(197, 164, 90, 0.25);
|
||||
opacity: 0.95;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font: 14pt exo2;
|
||||
letter-spacing: 0.06em;
|
||||
color: var(--bond-gold-bright);
|
||||
}
|
||||
|
||||
h3 {
|
||||
font: 12pt exo2;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--bond-text);
|
||||
}
|
||||
|
||||
p { font-family: 8pt exo2; color: var(--bond-text); }
|
||||
|
||||
ul { font-family: 8pt exo2; }
|
||||
|
||||
li { font-family: 8pt exo2; color: var(--bond-text); }
|
||||
|
||||
.project_header {
|
||||
background: linear-gradient(180deg, #1c1c24, #101014);
|
||||
color: var(--bond-gold-bright);
|
||||
padding: 5px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
}
|
||||
|
||||
.pageclass {
|
||||
background: var(--bond-bg-2);
|
||||
border-radius: 6px;
|
||||
border: 1px solid var(--bond-line);
|
||||
box-shadow: 0 0 0 1px rgba(0,0,0,0.6), 0 20px 60px rgba(0,0,0,0.65);
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
max-width: 1050px;
|
||||
min-width: 1050px;
|
||||
margin: auto;
|
||||
font-family: exo2;
|
||||
font-size: 10pt;
|
||||
color: var(--bond-text);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
input {
|
||||
background: #101014;
|
||||
color: var(--bond-text);
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 6px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
input:focus {
|
||||
border-color: var(--bond-gold);
|
||||
box-shadow: 0 0 0 1px rgba(197, 164, 90, 0.35);
|
||||
}
|
||||
|
||||
select {
|
||||
background: #101014;
|
||||
color: var(--bond-text);
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
padding: 1px 2px 1px 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
textarea.fieldinput {
|
||||
background: #101014;
|
||||
color: var(--bond-text);
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
textarea.fieldinputerror {
|
||||
background: #241213;
|
||||
color: var(--bond-text);
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid var(--bond-red);
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.sectionframe {
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
font-size: 10pt;
|
||||
margin: 3px;
|
||||
background: var(--bond-panel);
|
||||
padding: 0px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.sectionframe:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 1px;
|
||||
background: var(--bond-line);
|
||||
}
|
||||
|
||||
.sectionframecontents {
|
||||
padding: 10px;
|
||||
text-align: justify;
|
||||
color: var(--bond-text);
|
||||
border-top: 1px solid var(--bond-line-soft);
|
||||
background-color: var(--bond-panel);
|
||||
}
|
||||
.sectionframeheading {
|
||||
background: linear-gradient(180deg, #1c1c24, #131318);
|
||||
color: var(--bond-gold-bright);
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
vertical-align: middle;
|
||||
padding: 6px 10px;
|
||||
margin: 0px;
|
||||
font-family: 12pt avenir;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
font-size: 10pt;
|
||||
border-radius: 3px 3px 0px 0px;
|
||||
}
|
||||
|
||||
.sectionframeheading2 {
|
||||
background: var(--bond-panel-2);
|
||||
color: var(--bond-gold-bright);
|
||||
font-family: exo2;
|
||||
font-size: 20pt;
|
||||
letter-spacing: 0.06em;
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.heading {
|
||||
background: linear-gradient(180deg, #131318, #0d0d10);
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
max-height: 80px;
|
||||
}
|
||||
.entryform {
|
||||
background: #232330;
|
||||
padding: 6px;
|
||||
margin: 0px;
|
||||
border: 1px solid rgba(197, 164, 90, 0.5);
|
||||
border-radius: 3px;
|
||||
}
|
||||
.entryform table {
|
||||
font: 12px exo2;
|
||||
background: transparent;
|
||||
border: 0pt solid black;
|
||||
color: var(--bond-text);
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: linear-gradient(180deg, #0a0a0d, #000);
|
||||
border-top: 1px solid var(--bond-line);
|
||||
font: 8pt verdana;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--bond-gold);
|
||||
text-align: center;
|
||||
padding: 6px 0;
|
||||
border-radius: 0px 0px 5px 5px;
|
||||
}
|
||||
|
||||
.menubar {
|
||||
background: #0a0a0d;
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.baritem {
|
||||
background: transparent;
|
||||
color: var(--bond-text-dim);
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.06em;
|
||||
font-size: 8pt;
|
||||
padding: 6px 10px;
|
||||
margin: 6px 0px 0px 0px;
|
||||
border: none;
|
||||
border-bottom: 2px solid transparent;
|
||||
border-radius: 0px;
|
||||
transition: color 0.25s ease, border-color 0.25s ease;
|
||||
}
|
||||
|
||||
.baritem:after{
|
||||
content: none;
|
||||
}
|
||||
|
||||
.baritemselected {
|
||||
/* Deliberately styled to read as the same surface as the content
|
||||
panel it opens into (matching background, gold border wrapping
|
||||
only the top/sides) - the open bottom edge is the same color as
|
||||
its own background rather than a hard line, so it visually reads
|
||||
as "raised up out of the black bar, connected to the page below"
|
||||
rather than just another highlighted nav item. */
|
||||
background: var(--bond-panel);
|
||||
color: var(--bond-gold-bright);
|
||||
font-family: exo2;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.06em;
|
||||
font-size: 8pt;
|
||||
padding: 7px 10px 8px 10px;
|
||||
margin: 4px 0px 0px 0px;
|
||||
border: 1px solid var(--bond-gold);
|
||||
border-bottom: 1px solid var(--bond-panel);
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
box-shadow: 0 -2px 8px rgba(197, 164, 90, 0.18);
|
||||
text-shadow: 0 0 0.5em rgba(197, 164, 90, 0.35);
|
||||
}
|
||||
|
||||
.baritem:hover {
|
||||
color: var(--bond-gold-bright);
|
||||
border-bottom: 2px solid var(--bond-line);
|
||||
transition: color 0.2s ease, border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.panel {
|
||||
background: var(--bond-panel);
|
||||
margin: 10px;
|
||||
padding: 3px;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.panel table {
|
||||
font: 12px exo2;
|
||||
padding: 5px;
|
||||
background: var(--bond-panel-2);
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
border-radius: 6px;
|
||||
color: var(--bond-text);
|
||||
}
|
||||
.panel table th {
|
||||
background: #101014;
|
||||
color: var(--bond-gold-bright);
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
.panel table td {
|
||||
background: transparent;
|
||||
color: var(--bond-text);
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: right;
|
||||
padding-left: 20px;
|
||||
border-radius: 6px 0px 0px 6px;
|
||||
}
|
||||
|
||||
.right {
|
||||
border-radius: 0px 6px 6px 0px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.featured { background: var(--bond-panel); }
|
||||
|
||||
.buttonbay {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.fieldinput {
|
||||
font-family: exo2;
|
||||
border-radius: 3px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
background: #101014;
|
||||
color: var(--bond-text);
|
||||
}
|
||||
.fieldinputerror {
|
||||
font-family: exo2;
|
||||
border-radius: 3px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
background: #241213;
|
||||
border: 1px solid var(--bond-red);
|
||||
color: var(--bond-text);
|
||||
}
|
||||
.fieldprompt {
|
||||
font-size: 10pt;
|
||||
text-align: right;
|
||||
color: var(--bond-gold-bright);
|
||||
background: transparent;
|
||||
}
|
||||
.message { font: bold 10pt verdana; color: #d97a7a; }
|
||||
.collection_heading { font: bold 12pt verdana; color: var(--bond-gold-bright); }
|
||||
.collection_text { font: 10pt verdana; color: var(--bond-text); }
|
||||
.collection_tracks_background { font: 8pt bold verdana; color: var(--bond-text); background: #101014; }
|
||||
.warning { font: 10pt verdana; background: #3a1414; color: #e0a0a0; text-align: justify; border: 1px solid var(--bond-red); }
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 10pt;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.04em;
|
||||
color: var(--bond-gold-bright);
|
||||
border: 1px solid var(--bond-gold);
|
||||
background: linear-gradient(180deg, #1c1c24, #131318);
|
||||
padding: 2px 10px 3px 10px;
|
||||
margin: 0px;
|
||||
border-radius: 3px;
|
||||
transition: box-shadow 0.2s ease, background 0.2s ease;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
box-shadow: 0 0 0.6em rgba(197, 164, 90, 0.35);
|
||||
background: linear-gradient(180deg, #24242e, #1a1a20);
|
||||
}
|
||||
|
||||
.button:after{
|
||||
content: none;
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: source;
|
||||
font-weight: 400;
|
||||
font-size: 10pt;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
background: #101014;
|
||||
color: var(--bond-gold-bright);
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* SPA content-swap fade transition */
|
||||
#content {
|
||||
transition: opacity 0.18s ease;
|
||||
}
|
||||
#content.spa-fading {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Shopping cart */
|
||||
.cart-notice {
|
||||
background: var(--bond-panel-2);
|
||||
border: 1px solid var(--bond-line);
|
||||
border-left: 3px solid var(--bond-gold);
|
||||
color: var(--bond-text);
|
||||
padding: 8px 12px;
|
||||
margin: 0 0 10px 0;
|
||||
border-radius: 3px;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.cart-wrap {
|
||||
border: 1px solid var(--bond-line);
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
background: var(--bond-panel);
|
||||
}
|
||||
|
||||
.cart-header {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 90px 90px 100px 70px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
padding: 8px 14px;
|
||||
background: linear-gradient(180deg, #1c1c24, #131318);
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
color: var(--bond-gold-bright);
|
||||
font-size: 8pt;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.cart-header .cart-col-price,
|
||||
.cart-header .cart-col-qty,
|
||||
.cart-header .cart-col-total {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-items {
|
||||
max-height: 420px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.cart-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 90px 90px 100px 70px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
padding: 10px 14px;
|
||||
border-bottom: 1px solid var(--bond-line-soft);
|
||||
color: var(--bond-text);
|
||||
font-size: 9pt;
|
||||
transition: background 0.15s ease;
|
||||
}
|
||||
|
||||
.cart-row:last-child { border-bottom: none; }
|
||||
|
||||
.cart-row:hover {
|
||||
background: rgba(197, 164, 90, 0.06);
|
||||
}
|
||||
|
||||
.cart-row .cart-col-desc {
|
||||
font-weight: 500;
|
||||
color: var(--bond-text);
|
||||
}
|
||||
|
||||
.cart-row .cart-col-price,
|
||||
.cart-row .cart-col-total {
|
||||
text-align: right;
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
.cart-row .cart-col-total {
|
||||
color: var(--bond-gold-bright);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.cart-row .cart-col-qty {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-qty-input {
|
||||
width: 60px !important;
|
||||
text-align: center;
|
||||
margin: 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.cart-col-remove {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-remove-link {
|
||||
color: var(--bond-text-dim) !important;
|
||||
font-size: 8pt;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
border: 1px solid var(--bond-line-soft);
|
||||
border-radius: 3px;
|
||||
padding: 3px 8px;
|
||||
transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
|
||||
}
|
||||
|
||||
.cart-remove-link:hover {
|
||||
color: #d97a7a !important;
|
||||
border-color: var(--bond-red);
|
||||
background: rgba(161, 58, 58, 0.12);
|
||||
}
|
||||
|
||||
.cart-summary {
|
||||
padding: 12px 14px;
|
||||
background: linear-gradient(180deg, #131318, #0d0d10);
|
||||
border-top: 1px solid var(--bond-line);
|
||||
}
|
||||
|
||||
.cart-summary-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
color: var(--bond-text);
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.cart-summary-total {
|
||||
color: var(--bond-gold-bright);
|
||||
font-size: 14pt;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
.cart-empty {
|
||||
text-align: center;
|
||||
padding: 50px 20px;
|
||||
color: var(--bond-text-dim);
|
||||
}
|
||||
|
||||
.cart-empty-icon {
|
||||
font-size: 40pt;
|
||||
opacity: 0.5;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.cart-empty-title {
|
||||
font-size: 13pt;
|
||||
color: var(--bond-text);
|
||||
letter-spacing: 0.04em;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.cart-empty-text {
|
||||
font-size: 9pt;
|
||||
color: var(--bond-text-dim);
|
||||
}
|
||||
|
||||
/* Checkout */
|
||||
.checkout-header {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 90px 70px 100px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
padding: 8px 14px;
|
||||
background: linear-gradient(180deg, #1c1c24, #131318);
|
||||
border-bottom: 1px solid var(--bond-line);
|
||||
color: var(--bond-gold-bright);
|
||||
font-size: 8pt;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.checkout-header .checkout-col-qty {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.checkout-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 90px 70px 100px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
padding: 10px 14px;
|
||||
border-bottom: 1px solid var(--bond-line-soft);
|
||||
color: var(--bond-text);
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.checkout-row:last-child { border-bottom: none; }
|
||||
|
||||
.checkout-row .checkout-col-qty {
|
||||
text-align: right;
|
||||
color: var(--bond-text-dim);
|
||||
}
|
||||
|
||||
.checkout-pay-wrap {
|
||||
max-width: 380px;
|
||||
margin: 0 auto;
|
||||
padding: 6px 0 4px 0;
|
||||
}
|
||||
|
||||
.checkout-pay-label {
|
||||
font-size: 8pt;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
color: var(--bond-text-dim);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.checkout-card-input {
|
||||
background: var(--bond-panel-2);
|
||||
border: 1px solid var(--bond-line);
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
min-height: 40px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.checkout-pay-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 11pt;
|
||||
padding: 9px 10px 10px 10px;
|
||||
text-align: center;
|
||||
color: #0a0a0d;
|
||||
background: linear-gradient(180deg, var(--bond-gold-bright), var(--bond-gold));
|
||||
border: 1px solid var(--bond-gold);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.checkout-pay-btn:hover {
|
||||
background: linear-gradient(180deg, #f0d89a, var(--bond-gold-bright));
|
||||
box-shadow: 0 0 0.6em rgba(197, 164, 90, 0.45);
|
||||
}
|
||||
|
||||
.checkout-pay-btn:disabled {
|
||||
cursor: default;
|
||||
opacity: 0.55;
|
||||
background: linear-gradient(180deg, #1c1c24, #131318);
|
||||
color: var(--bond-text-dim);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.checkout-processing {
|
||||
visibility: hidden;
|
||||
background: var(--bond-panel-2);
|
||||
border: 1px solid var(--bond-line);
|
||||
border-left: 3px solid var(--bond-gold);
|
||||
color: var(--bond-text);
|
||||
padding: 8px 12px;
|
||||
margin-top: 12px;
|
||||
border-radius: 3px;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.checkout-error {
|
||||
color: #d97a7a;
|
||||
font-size: 9pt;
|
||||
margin-top: 12px;
|
||||
min-height: 1.2em;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 811 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -1,385 +0,0 @@
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: avenir;
|
||||
src: url('https://barant.com/fonts/AvenirLTStd-Light.ttf');
|
||||
}
|
||||
@font-face {
|
||||
font-family: source;
|
||||
src: url('https://barant.com/fonts/jackinput.TTF');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: exo2;
|
||||
src: url('https://barant.com/fonts/Exo2-RegularCondensed.otf');
|
||||
}
|
||||
|
||||
|
||||
body {background: linear-gradient(to bottom, #ccc, #444);
|
||||
font-family: exo2;
|
||||
margin: 10px 10px 10px 10px;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
a:link {text-decoration: none}
|
||||
a:visited {text-decoration:none}
|
||||
a:hover {text-decoration:none}
|
||||
|
||||
h1 {font: 20pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
color: #808080;
|
||||
opacity: 0.9;}
|
||||
|
||||
h2 {font: 14pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
h3 {font: 12pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
p {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
ul {font-family: 8pt exo2;}
|
||||
|
||||
li {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
.project_header {background: #88c;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pageclass {background: #fff;
|
||||
border-radius: 10px;
|
||||
border: 2pt outset;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
max-width: 1050px;
|
||||
min-width: 1050px
|
||||
margin: auto;
|
||||
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
|
||||
font-family: exo2;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
input {background: #fff;
|
||||
border: 1px inset;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
select {background: #fff;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
border: 1px solid #444;
|
||||
padding: 1px 2px 1px 2px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinput {background: #fff;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #444;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
-o-border-radius: 0px;
|
||||
-ms-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinputerror {background: #fcc;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #f00;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe {
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
border: 0px outset;
|
||||
font-size: 10pt;
|
||||
margin: 3px;
|
||||
background: #808080;
|
||||
padding: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 12px;
|
||||
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.sectionframecontents {
|
||||
padding: 10px;
|
||||
text-align: justify;
|
||||
color: #000000;
|
||||
border: 1pt inset;
|
||||
background-color: #F8F8FF;
|
||||
}
|
||||
.sectionframeheading {
|
||||
# background: linear-gradient(to bottom, #fff, #88f);
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
border: 1pt outset;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
font-family: 12pt avenir;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.sectionframeheading2 {
|
||||
background: #C0C0C0;
|
||||
font-family: exo2;
|
||||
font-size: 20pt;
|
||||
padding: 3px
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.heading {background: #fff;
|
||||
border-radius: 7px 7px 0px 0px;
|
||||
max-height: 80px;
|
||||
}
|
||||
.entryform {
|
||||
background: #2099f0;
|
||||
padding: 3px 3px 3px 3px;
|
||||
margin: 0px;
|
||||
border: 0px solid black;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.entryform table {
|
||||
font: 12px exo2;
|
||||
background: #c5e1f4;
|
||||
border: 0pt solid black;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: linear-gradient(to bottom, #000, #888);
|
||||
font: 8pt verdana;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
border-radius: 0px 0px 6px 6px;}
|
||||
|
||||
.menubar {
|
||||
# background: linear-gradient(to bottom, #fff, #2099f0);
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.baritem {
|
||||
background-image: linear-gradient(#2099f0, #c3ddef);
|
||||
color: #fff;
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 10px 0px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 0px 0px 1px 0px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
}
|
||||
|
||||
.baritem:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 50%;
|
||||
z-index: 5;
|
||||
pointer-events: none;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.baritemselected {
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 5px 10px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 1px 1px 0px 1px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
|
||||
}
|
||||
|
||||
.baritem:hover {
|
||||
background: #c3ddef;
|
||||
color: #fff;
|
||||
transition: background 5s;
|
||||
}
|
||||
|
||||
.panel {background: #ccc;
|
||||
margin: 10px;
|
||||
padding: 3px;
|
||||
border: 0pt inset;}
|
||||
|
||||
.panel table {
|
||||
font: 12px exo2;
|
||||
padding: 5px;
|
||||
background: #c5e1f4;
|
||||
border: 1pt solid black;
|
||||
border-radius: 9px;
|
||||
}
|
||||
.panel table th {
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
.panel table td {
|
||||
background: #c5e1f4;
|
||||
color: #000;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: right;
|
||||
padding-left: 20px;
|
||||
border-radius: 9px 0px 0px 9px;
|
||||
}
|
||||
|
||||
.right {
|
||||
border-radius: 0px 9px 9px 0px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.featured {background: #fff}
|
||||
|
||||
.buttonbay {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.fieldinput {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.fieldinputerror {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
background: #fcc;
|
||||
border: 1px solid red;
|
||||
}
|
||||
.fieldprompt {
|
||||
font-size: 10pt;
|
||||
text-align: right;
|
||||
background: #00f;
|
||||
}
|
||||
.message {font: bold 10pt verdana; color: #FF0000}
|
||||
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
|
||||
.collection_text {font: 10pt verdana; color: #FFFFFF}
|
||||
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
|
||||
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 10pt;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
border: 2px outset;
|
||||
background: #2099f0;
|
||||
padding: 2px 10px 3px 10px;
|
||||
margin: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.button:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: calc(100% - 0px);
|
||||
height: 10px;
|
||||
z-index: 5;
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: source;
|
||||
font-weight: 400;
|
||||
font-size: 10pt;
|
||||
border: 1pt solid black;
|
||||
background: #ff8;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,28 +12,27 @@ IMG_CACHE = ROOT + "/assets/images"
|
||||
os.makedirs(OUT, exist_ok=True)
|
||||
os.makedirs(IMG_CACHE, exist_ok=True)
|
||||
|
||||
IMG_MIME = {
|
||||
".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
|
||||
".gif": "image/gif", ".svg": "image/svg+xml", ".webp": "image/webp",
|
||||
".ico": "image/x-icon",
|
||||
}
|
||||
|
||||
|
||||
def resolve_images(html):
|
||||
"""Find any remaining /images/<file> reference (src="..." or url('...'))
|
||||
and inline it as a data: URI, fetching+caching from barant.com on first
|
||||
use - APIServer has no static-file serving, same reason the chrome logo
|
||||
and page CSS/fonts needed inlining earlier this session."""
|
||||
"""Find any /images/<file> or images/<file> reference (src="...",
|
||||
href="...", or CSS url('...')) and repoint it at the live APIServer
|
||||
GET /assets/{filename} route instead of inlining it as a data: URI -
|
||||
fetching+caching from barant.com into the same assets/images/ cache
|
||||
directory on first use (unchanged), just no longer embedding the raw
|
||||
bytes into every page's own HTML (undoes the earlier base64-inlining
|
||||
approach now that a real static-asset module exists to serve these).
|
||||
Matches both the absolute form (/images/x.png) and the relative form
|
||||
(images/x.png, no leading slash) - the previous version of this
|
||||
function only matched the absolute form, silently leaving several
|
||||
real <img src="images/.."> references un-rewritten and pointing
|
||||
nowhere (APIServer has no /images/ route at all)."""
|
||||
def repl(m):
|
||||
path = m.group(1) # e.g. images/grid.png
|
||||
fname = path.split("/")[-1]
|
||||
ext = os.path.splitext(fname)[1].lower()
|
||||
mime = IMG_MIME.get(ext, "application/octet-stream")
|
||||
local_path = IMG_CACHE + "/" + fname
|
||||
if not os.path.exists(local_path):
|
||||
subprocess.run(["curl", "-s", "-o", local_path, "https://barant.com/" + path], check=True)
|
||||
return data_uri(local_path, mime)
|
||||
html = re.sub(r'/images/([A-Za-z0-9_.-]+)(?=["\'])', repl, html)
|
||||
return "/assets/" + fname
|
||||
html = re.sub(r'/?images/([A-Za-z0-9_.-]+)(?=["\'])', repl, html)
|
||||
return html
|
||||
|
||||
|
||||
@@ -199,6 +198,72 @@ opensource_menu = flatten_linkbuttons(opensource_menu)
|
||||
|
||||
SIDEBAR_HTML = opensource_menu
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# SPA bootstrap script: present once, in the chrome, on every FULL page load
|
||||
# (never in a fragment-only response, which has no <head>/<script> of its
|
||||
# own). Intercepts clicks on internal <a href="/..."> links and swaps just
|
||||
# #jetc-content via fetch('/name?fragment=1') instead of a full navigation;
|
||||
# also drives the browser back/forward buttons via popstate. See the
|
||||
# FULL_PAGE_TMPL / FRAGMENT_TMPL split in convert_page() for how a single
|
||||
# route serves both the full page and the fragment-only response, decided
|
||||
# by the ?fragment=1 query flag.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Pages excluded from client-side fragment fetching entirely - a click on
|
||||
# one of these falls through to an ORDINARY browser navigation (hitting
|
||||
# the full-page route, confirmed safe) instead of being intercepted.
|
||||
# Real, deterministic finding: <name>?fragment=1 for a MYSQL_PAGES page
|
||||
# crashes the whole apiserver process on the very FIRST such request
|
||||
# (reproduced repeatedly - not state-dependent, not "two failures in a
|
||||
# row"), while the exact same page's full-page route (no ?fragment=1)
|
||||
# fails cleanly with the expected "database and host parameters are not
|
||||
# valid." and the server survives. Root cause not isolated (a <mysql>
|
||||
# connection failure unwinding through the smaller <tag name="_frag_X">
|
||||
# definition specifically, vs surviving fine through the larger
|
||||
# <tag name="_full_X"> one, for reasons not chased down further given
|
||||
# scope) - this is a mitigation, not a fix, and only matters while these
|
||||
# pages fail (no real DB password configured); worth re-testing once a
|
||||
# real DB is wired in, since a successful <mysql> connection takes a
|
||||
# completely different code path that may not hit this at all.
|
||||
FRAGMENT_EXCLUDED_PAGES = sorted(MYSQL_PAGES)
|
||||
|
||||
SPA_SCRIPT = """<script>
|
||||
(function() {
|
||||
var FRAGMENT_EXCLUDED = %s;
|
||||
function pageNameFromPath(path) {
|
||||
var name = path.replace(/^\\//, '').replace(/\\.page$/, '');
|
||||
return name || 'main';
|
||||
}
|
||||
function loadPage(name, push) {
|
||||
fetch('/' + name + '?fragment=1').then(function(resp) {
|
||||
if (!resp.ok) throw new Error('HTTP ' + resp.status);
|
||||
return resp.text();
|
||||
}).then(function(html) {
|
||||
var el = document.getElementById('jetc-content');
|
||||
if (el) el.innerHTML = html;
|
||||
if (push) history.pushState({page: name}, '', '/' + name);
|
||||
}).catch(function(err) {
|
||||
console.error('jetc-spa: failed to load page', name, err);
|
||||
});
|
||||
}
|
||||
document.addEventListener('click', function(ev) {
|
||||
if (ev.defaultPrevented || ev.button !== 0 || ev.metaKey || ev.ctrlKey || ev.shiftKey || ev.altKey) return;
|
||||
var target = ev.target.nodeType === 1 ? ev.target : ev.target.parentElement;
|
||||
var a = target ? target.closest('a') : null;
|
||||
if (!a) return;
|
||||
if (a.target === '_blank' || a.hasAttribute('download')) return;
|
||||
var href = a.getAttribute('href') || '';
|
||||
if (href.indexOf(':') !== -1 || href.indexOf('//') === 0 || href.indexOf('/') !== 0) return;
|
||||
if (FRAGMENT_EXCLUDED.indexOf(pageNameFromPath(href)) !== -1) return;
|
||||
ev.preventDefault();
|
||||
loadPage(pageNameFromPath(href), true);
|
||||
});
|
||||
window.addEventListener('popstate', function() {
|
||||
loadPage(pageNameFromPath(location.pathname), false);
|
||||
});
|
||||
})();
|
||||
</script>""" % (repr(FRAGMENT_EXCLUDED_PAGES).replace("'", '"'))
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Build the page chrome from mainpagetemplate.temp: the part of <template>
|
||||
# before <contents> and the part after.
|
||||
@@ -208,6 +273,39 @@ temp_raw = read(SRC + "/mainpagetemplate.temp")
|
||||
m = re.search(r'<template>(.*)</template>', temp_raw, re.DOTALL)
|
||||
template_body = m.group(1)
|
||||
|
||||
# mainpagetemplate.temp's own <tag name="title">...</tag> helper is dead
|
||||
# code in this conversion - title substitution happens via a plain Python
|
||||
# string-replace on <exclude>$[_title]</exclude> below, never by actually
|
||||
# invoking this helper. Stripped as genuinely dead code (not a bug fix -
|
||||
# see below for the real one).
|
||||
template_body = drop_tag_block(template_body, "title")
|
||||
|
||||
# Real bug found and isolated via a minimal standalone repro (bisecting
|
||||
# down from "the whole chrome throws 'comment must have a container'"):
|
||||
# a <comment>...</comment> block, when it ends up nested inside one of
|
||||
# this script's own <tag name="_full_NAME">/<tag name="_frag_NAME">
|
||||
# definitions (see convert_page() below) - needed so the fragment/full
|
||||
# <if> branches can hold real HTML content without jetc's compile-time
|
||||
# <if> body parser choking on it - fails at RUNTIME with "comment must
|
||||
# have a container", even though the exact same <comment> block renders
|
||||
# fine as ordinary top-level content. Reproduced with a 4-line synthetic
|
||||
# case (<tag name="x">text<comment>plain text, no nested tags</comment>
|
||||
# text</tag>) - so this is a genuine jetc/JetCore bug in how a custom tag
|
||||
# DEFINITION'S stored text gets re-processed at <dotag> invocation time,
|
||||
# not something specific to this page's content. Flagged for the project,
|
||||
# not fixed here (root cause not isolated further - the base Tag class's
|
||||
# container-boundary bookkeeping is shared by many tags and risky to
|
||||
# change without full regression coverage).
|
||||
#
|
||||
# Worked around instead: this specific <comment> block wraps content
|
||||
# gated on $[_login_id] (show a logged-in session var menu) - the EXACT
|
||||
# same "session-gated, always empty for an anonymous visitor" category
|
||||
# already established as this conversion's design for cart.menu/login.menu/
|
||||
# the ACCOUNT+ADMIN nav tabs (see below) - so stripping it entirely is
|
||||
# consistent with the rest of this file, not a new compromise.
|
||||
template_body = re.sub(r'<comment>\s*<if value1="\$\[_login_id\]".*?</if>\s*</comment>',
|
||||
'', template_body, flags=re.DOTALL)
|
||||
|
||||
# Substitute the chrome-level includes/placeholders that are now fixed for
|
||||
# every page in this conversion (no per-page menubar/menu overrides exist -
|
||||
# confirmed by grepping every source .page file for _menubar/_menu overrides
|
||||
@@ -221,7 +319,13 @@ template_body = re.sub(r'<if value1="\$\[_menu\]" value2="" type="eq">\s*<includ
|
||||
CONTENTS_MARKER = "<contents>"
|
||||
idx = template_body.index(CONTENTS_MARKER)
|
||||
CHROME_BEFORE = resolve_images(template_body[:idx])
|
||||
CHROME_AFTER = resolve_images(template_body[idx + len(CONTENTS_MARKER):])
|
||||
CHROME_AFTER = resolve_images(template_body[idx + len(CONTENTS_MARKER):]) + SPA_SCRIPT
|
||||
|
||||
FULL_PAGE_TMPL = (
|
||||
'<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]'
|
||||
'<html lang="en"><head><title>%s</title>%s</head><body>'
|
||||
'%s<div id="jetc-content">%s</div>%s</body></html>'
|
||||
)
|
||||
|
||||
|
||||
def convert_page(name):
|
||||
@@ -262,11 +366,60 @@ def convert_page(name):
|
||||
|
||||
chrome_before = CHROME_BEFORE.replace('<exclude>$[_title]</exclude>', page_title)
|
||||
|
||||
full_page = FULL_PAGE_TMPL % (page_title, STYLE_BLOCK, chrome_before, contents, CHROME_AFTER)
|
||||
|
||||
if name in MYSQL_PAGES:
|
||||
# Real, reproducible server crash (heap corruption - "free():
|
||||
# invalid pointer" seen live) when a <mysql> connection failure
|
||||
# unwinds through the smaller fragment-mode <tag name="_frag_X">
|
||||
# definition specifically - the exact same failure through the
|
||||
# larger _full_X definition is fine (clean caught exception, 500).
|
||||
# The client-side click handler already skips fetching these pages
|
||||
# as fragments (FRAGMENT_EXCLUDED, above), but that only protects
|
||||
# normal clicking - a stale already-open tab (running JS from
|
||||
# before that fix shipped) or anyone hitting the URL directly
|
||||
# would still trigger it. This is the real, server-side fix: the
|
||||
# fragment response for these pages never attempts the <mysql>
|
||||
# connection at all, so the crash is unreachable regardless of
|
||||
# how the request arrives. Re-test once a real DB password makes
|
||||
# these pages actually work - a successful connection takes a
|
||||
# different code path that may not need this at all.
|
||||
fragment_page = ('<div id="jetc-content"><p>This page requires a full load - '
|
||||
'<a href="/%s">view it directly</a>.</p></div>') % name
|
||||
else:
|
||||
fragment_page = '<div id="jetc-content">%s</div>' % contents
|
||||
|
||||
# A direct/full-page load and an SPA-driven fragment fetch both hit this
|
||||
# SAME route (/name) - distinguished by ?fragment=1 in the query string,
|
||||
# per the user's explicit choice over a separate /name.page route. A
|
||||
# normal load has no query string at all, so $[fragment] is simply
|
||||
# unset - referencing an unset global variable throws ("global variable
|
||||
# is not initialized.").
|
||||
#
|
||||
# Two real jetc bugs found and worked around while building this (both
|
||||
# confirmed via direct minimal reproduction, not guessed):
|
||||
# 1. <try> safely captures the possibly-unset $[fragment] into
|
||||
# fragflag (always "1" or "" afterward) - but <try> must wrap ONLY
|
||||
# the <set>, never an <if>. Nesting <if>/<else> INSIDE <try> silently
|
||||
# drops the <else> branch's output specifically when compiled
|
||||
# through jetc (works fine in jet-2.0's own interpreter; the bug is
|
||||
# jetc-compiled-only). The branching <if> lives entirely OUTSIDE/
|
||||
# AFTER <try> instead.
|
||||
# 2. A large/complex body (real inlined HTML+CSS+JS, hundreds of KB)
|
||||
# placed directly as an <if>'s branch content fails to COMPILE at
|
||||
# all ("unterminated <html> - no matching close tag found") - jetc's
|
||||
# own compile-time <if>/<else> body scanner isn't robust against
|
||||
# real-world markup at this scale. Worked around by keeping the
|
||||
# <if>'s own branches tiny (self-closing custom-tag invocations)
|
||||
# and moving the real content into <tag name="..."> DEFINITIONS
|
||||
# (which jetc never compile-time-parses at all - stored as opaque
|
||||
# raw text, exactly like a <try> body, and only actually rendered
|
||||
# via <dotag> at runtime).
|
||||
body = (
|
||||
'<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]'
|
||||
'<html lang="en"><head><title>%s</title>%s</head><body>'
|
||||
'%s%s%s</body></html>'
|
||||
) % (page_title, STYLE_BLOCK, chrome_before, contents, CHROME_AFTER)
|
||||
'<try name="_fragerr"><set name="fragflag" expr="$[fragment]" /><catch><set name="fragflag" value="" /></try>'
|
||||
'<tag name="_frag_%s">%s</tag><tag name="_full_%s">%s</tag>'
|
||||
'<if value1="$[fragflag]" value2="1" type="eq"><_frag_%s /><else><_full_%s /></if>'
|
||||
) % (name, fragment_page, name, full_page, name, name)
|
||||
|
||||
jet_text = "#api GET /%s\n%s\n" % (name, body)
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /applications
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>APPLICATIONS</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">APPLICATIONS</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Project Manager</b></div><div class="sectionframecontents">
|
||||
|
||||
<p>A comprehensive project manager that extends an agile like
|
||||
@@ -485,7 +480,7 @@ against transaction flow placed in a calendar.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -493,4 +488,4 @@ against transaction flow placed in a calendar.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /asm1802
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>RCA1802 Micro-Controller Assembler/Emulator</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">RCA1802 Micro-Controller Assembler/Emulator</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,16 +463,12 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>RCA1802</b></div><div class="sectionframecontents">
|
||||
<h1>The RCA1802 Micro-Controller</h1>
|
||||
<img src="images/rca1802chip.jpeg" align="right">
|
||||
<img src="/assets/rca1802chip.jpeg" align="right">
|
||||
<p>Back in the 1970's RCA released a chip that was widely used in
|
||||
satellites and other spacecraft to this day. It is a very simple
|
||||
8-bit micro-controller with 16-bit addressibility enabling memory
|
||||
@@ -496,7 +491,7 @@ device.</p>
|
||||
|
||||
</div></div>
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>RCA1802 Emulator</b></div><div class="sectionframecontents">
|
||||
<img src="images/emu1802a.png" align="right" width="500">
|
||||
<img src="/assets/emu1802a.png" align="right" width="500">
|
||||
<p>The 1802 emulator provides a fully functional RCA1802
|
||||
micro-controller device complete with interupt handling and DMA
|
||||
controls for memory access. Experiment with code structures and build
|
||||
@@ -518,7 +513,7 @@ change environment going for the Kicad project as well as the source
|
||||
code for the assembler and emulator components.
|
||||
</div></div>
|
||||
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -526,4 +521,4 @@ code for the assembler and emulator components.
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /barantmail
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANTMAIL OPEN SOURCE PROJECT</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">BARANTMAIL OPEN SOURCE PROJECT</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>BARANTMAIL OPEN SOURCE PROJECT</b></div><div class="sectionframecontents">
|
||||
<p>In the year 2000 I was extremely frustrated with the state of e-amil
|
||||
systems available to Linux. Sendmail and q-mail were pretty much the two
|
||||
@@ -489,7 +484,7 @@ I also wanted a scalable multi-server capability.</p>
|
||||
</ul>
|
||||
<p></p>
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -497,4 +492,4 @@ I also wanted a scalable multi-server capability.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,503 +1,16 @@
|
||||
#api GET /contact
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Support E-Mail</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: avenir;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
@font-face {
|
||||
font-family: source;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: exo2;
|
||||
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGG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 truncated
|
||||
}
|
||||
|
||||
|
||||
body {background: linear-gradient(to bottom, #ccc, #444);
|
||||
font-family: exo2;
|
||||
margin: 10px 10px 10px 10px;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
a:link {text-decoration: none}
|
||||
a:visited {text-decoration:none}
|
||||
a:hover {text-decoration:none}
|
||||
|
||||
h1 {font: 20pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
color: #808080;
|
||||
opacity: 0.9;}
|
||||
|
||||
h2 {font: 14pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
h3 {font: 12pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
p {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
ul {font-family: 8pt exo2;}
|
||||
|
||||
li {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
.project_header {background: #88c;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pageclass {background: #fff;
|
||||
border-radius: 10px;
|
||||
border: 2pt outset;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
max-width: 1050px;
|
||||
min-width: 1050px
|
||||
margin: auto;
|
||||
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
|
||||
font-family: exo2;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
input {background: #fff;
|
||||
border: 1px inset;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
select {background: #fff;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
border: 1px solid #444;
|
||||
padding: 1px 2px 1px 2px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinput {background: #fff;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #444;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
-o-border-radius: 0px;
|
||||
-ms-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinputerror {background: #fcc;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #f00;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe {
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
border: 0px outset;
|
||||
font-size: 10pt;
|
||||
margin: 3px;
|
||||
background: #808080;
|
||||
padding: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 12px;
|
||||
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.sectionframecontents {
|
||||
padding: 10px;
|
||||
text-align: justify;
|
||||
color: #000000;
|
||||
border: 1pt inset;
|
||||
background-color: #F8F8FF;
|
||||
}
|
||||
.sectionframeheading {
|
||||
# background: linear-gradient(to bottom, #fff, #88f);
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
border: 1pt outset;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
font-family: 12pt avenir;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.sectionframeheading2 {
|
||||
background: #C0C0C0;
|
||||
font-family: exo2;
|
||||
font-size: 20pt;
|
||||
padding: 3px
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.heading {background: #fff;
|
||||
border-radius: 7px 7px 0px 0px;
|
||||
max-height: 80px;
|
||||
}
|
||||
.entryform {
|
||||
background: #2099f0;
|
||||
padding: 3px 3px 3px 3px;
|
||||
margin: 0px;
|
||||
border: 0px solid black;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.entryform table {
|
||||
font: 12px exo2;
|
||||
background: #c5e1f4;
|
||||
border: 0pt solid black;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: linear-gradient(to bottom, #000, #888);
|
||||
font: 8pt verdana;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
border-radius: 0px 0px 6px 6px;}
|
||||
|
||||
.menubar {
|
||||
# background: linear-gradient(to bottom, #fff, #2099f0);
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.baritem {
|
||||
background-image: linear-gradient(#2099f0, #c3ddef);
|
||||
color: #fff;
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 10px 0px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 0px 0px 1px 0px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
}
|
||||
|
||||
.baritem:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 50%;
|
||||
z-index: 5;
|
||||
pointer-events: none;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.baritemselected {
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 5px 10px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 1px 1px 0px 1px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
|
||||
}
|
||||
|
||||
.baritem:hover {
|
||||
background: #c3ddef;
|
||||
color: #fff;
|
||||
transition: background 5s;
|
||||
}
|
||||
|
||||
.panel {background: #ccc;
|
||||
margin: 10px;
|
||||
padding: 3px;
|
||||
border: 0pt inset;}
|
||||
|
||||
.panel table {
|
||||
font: 12px exo2;
|
||||
padding: 5px;
|
||||
background: #c5e1f4;
|
||||
border: 1pt solid black;
|
||||
border-radius: 9px;
|
||||
}
|
||||
.panel table th {
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
.panel table td {
|
||||
background: #c5e1f4;
|
||||
color: #000;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: right;
|
||||
padding-left: 20px;
|
||||
border-radius: 9px 0px 0px 9px;
|
||||
}
|
||||
|
||||
.right {
|
||||
border-radius: 0px 9px 9px 0px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.featured {background: #fff}
|
||||
|
||||
.buttonbay {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.fieldinput {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.fieldinputerror {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
background: #fcc;
|
||||
border: 1px solid red;
|
||||
}
|
||||
.fieldprompt {
|
||||
font-size: 10pt;
|
||||
text-align: right;
|
||||
background: #00f;
|
||||
}
|
||||
.message {font: bold 10pt verdana; color: #FF0000}
|
||||
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
|
||||
.collection_text {font: 10pt verdana; color: #FFFFFF}
|
||||
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
|
||||
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 10pt;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
border: 2px outset;
|
||||
background: #2099f0;
|
||||
padding: 2px 10px 3px 10px;
|
||||
margin: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.button:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: calc(100% - 0px);
|
||||
height: 10px;
|
||||
z-index: 5;
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: source;
|
||||
font-weight: 400;
|
||||
font-size: 10pt;
|
||||
border: 1pt solid black;
|
||||
background: #ff8;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.controlframe {background: #888;
|
||||
padding: 5px 5px 15px 10px;
|
||||
}
|
||||
|
||||
.vm {position: relative;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmname {position: absolute;
|
||||
left: 0px; top: 0px;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmcover {position: absolute;
|
||||
left: 15px;
|
||||
top: 30px;
|
||||
font: 12px 'Dot Matrix';
|
||||
background: #bbb;
|
||||
color: white;
|
||||
border: 1pt solid white;
|
||||
border-radius: 5px;
|
||||
padding: 2px 10px 2px 10px;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Support E-Mail</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
|
||||
</div>
|
||||
<div class="menubar">
|
||||
|
||||
|
||||
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 20px;"> </td>
|
||||
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
</ifrow>
|
||||
</if>
|
||||
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 10px;"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
<a href="/jet">JET</a><br>
|
||||
<a href="/synthmax">SYNTHMAX</a><br>
|
||||
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Contact</b></div><div class="sectionframecontents">
|
||||
<p>Please contact us by phone at <b>(702) 232-0050</b>.</p>
|
||||
<p>To e-mail us, just enter text below and press the buttons:</p>
|
||||
|
||||
<entryform>
|
||||
<field prompt="Name" type="text" name="name" size="50" maxlength="50">
|
||||
<field prompt="E-Mail" type="text" name="email" size="50" maxlength="50">
|
||||
<field prompt="Message" type="multiline" name="message" rows="5" cols="60">
|
||||
|
||||
<captcha>
|
||||
|
||||
<buttonbay>
|
||||
<div class="button">Send Message</div>
|
||||
</buttonbay>
|
||||
</entryform>
|
||||
|
||||
<messages>
|
||||
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
<include file="../src/SESSIONCTL.tag">
|
||||
<include file="../src/barant.tag">
|
||||
<include file="../src/project.tag">
|
||||
<set name="host" value="localhost">
|
||||
<set name="database" value="barant">
|
||||
<set name="user" value="barant">
|
||||
<set name="password" value="uversa1960">
|
||||
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="">
|
||||
<sessionctl page="contact">
|
||||
<defaultnav>
|
||||
<setpage name="contact">
|
||||
</defaultnav>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
<link rel="stylesheet" href="/assets/control.css">
|
||||
</sessionctl>
|
||||
</database>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /crystal
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>CRYSTAL</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">CRYSTAL</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Crystal - High Security Communications</b></div><div class="sectionframecontents">
|
||||
|
||||
@@ -478,7 +473,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
Android.</p>
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -486,4 +481,4 @@ Android.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /davidarant
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>barant.com - David Eugene Arant</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">barant.com - David Eugene Arant</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,14 +463,10 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<img src="images/arant2.jpg" align="left">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<img src="/assets/arant2.jpg" align="left">
|
||||
<h1>David Eugene Arant</h1>
|
||||
<p>David Eugene Arant was born in South Gate California on April 17th, 1935
|
||||
to parents May L. Arant and Francis M. Arant.</p>
|
||||
@@ -491,7 +486,7 @@ on these pages.</p>
|
||||
</whiledir>
|
||||
|
||||
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -499,4 +494,4 @@ on these pages.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /documents
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Document Management</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Document Management</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Document Management</b></div><div class="sectionframecontents">
|
||||
<h1>Online Document Management</h1>
|
||||
<p>BARANT Technology Group now offers document management storage and
|
||||
@@ -481,7 +476,7 @@ upon department for internal documents use. Or if you are a service
|
||||
group you can establish accounts and store correspondence and
|
||||
documents for any activity with that account.</p>
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -489,4 +484,4 @@ documents for any activity with that account.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,503 +1,16 @@
|
||||
#api GET /help
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Support E-Mail</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: avenir;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
@font-face {
|
||||
font-family: source;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: exo2;
|
||||
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGG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 truncated
|
||||
}
|
||||
|
||||
|
||||
body {background: linear-gradient(to bottom, #ccc, #444);
|
||||
font-family: exo2;
|
||||
margin: 10px 10px 10px 10px;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
a:link {text-decoration: none}
|
||||
a:visited {text-decoration:none}
|
||||
a:hover {text-decoration:none}
|
||||
|
||||
h1 {font: 20pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
color: #808080;
|
||||
opacity: 0.9;}
|
||||
|
||||
h2 {font: 14pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
h3 {font: 12pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
p {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
ul {font-family: 8pt exo2;}
|
||||
|
||||
li {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
.project_header {background: #88c;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pageclass {background: #fff;
|
||||
border-radius: 10px;
|
||||
border: 2pt outset;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
max-width: 1050px;
|
||||
min-width: 1050px
|
||||
margin: auto;
|
||||
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
|
||||
font-family: exo2;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
input {background: #fff;
|
||||
border: 1px inset;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
select {background: #fff;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
border: 1px solid #444;
|
||||
padding: 1px 2px 1px 2px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinput {background: #fff;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #444;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
-o-border-radius: 0px;
|
||||
-ms-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinputerror {background: #fcc;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #f00;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe {
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
border: 0px outset;
|
||||
font-size: 10pt;
|
||||
margin: 3px;
|
||||
background: #808080;
|
||||
padding: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 12px;
|
||||
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.sectionframecontents {
|
||||
padding: 10px;
|
||||
text-align: justify;
|
||||
color: #000000;
|
||||
border: 1pt inset;
|
||||
background-color: #F8F8FF;
|
||||
}
|
||||
.sectionframeheading {
|
||||
# background: linear-gradient(to bottom, #fff, #88f);
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
border: 1pt outset;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
font-family: 12pt avenir;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.sectionframeheading2 {
|
||||
background: #C0C0C0;
|
||||
font-family: exo2;
|
||||
font-size: 20pt;
|
||||
padding: 3px
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.heading {background: #fff;
|
||||
border-radius: 7px 7px 0px 0px;
|
||||
max-height: 80px;
|
||||
}
|
||||
.entryform {
|
||||
background: #2099f0;
|
||||
padding: 3px 3px 3px 3px;
|
||||
margin: 0px;
|
||||
border: 0px solid black;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.entryform table {
|
||||
font: 12px exo2;
|
||||
background: #c5e1f4;
|
||||
border: 0pt solid black;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: linear-gradient(to bottom, #000, #888);
|
||||
font: 8pt verdana;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
border-radius: 0px 0px 6px 6px;}
|
||||
|
||||
.menubar {
|
||||
# background: linear-gradient(to bottom, #fff, #2099f0);
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.baritem {
|
||||
background-image: linear-gradient(#2099f0, #c3ddef);
|
||||
color: #fff;
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 10px 0px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 0px 0px 1px 0px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
}
|
||||
|
||||
.baritem:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 50%;
|
||||
z-index: 5;
|
||||
pointer-events: none;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.baritemselected {
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 5px 10px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 1px 1px 0px 1px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
|
||||
}
|
||||
|
||||
.baritem:hover {
|
||||
background: #c3ddef;
|
||||
color: #fff;
|
||||
transition: background 5s;
|
||||
}
|
||||
|
||||
.panel {background: #ccc;
|
||||
margin: 10px;
|
||||
padding: 3px;
|
||||
border: 0pt inset;}
|
||||
|
||||
.panel table {
|
||||
font: 12px exo2;
|
||||
padding: 5px;
|
||||
background: #c5e1f4;
|
||||
border: 1pt solid black;
|
||||
border-radius: 9px;
|
||||
}
|
||||
.panel table th {
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
.panel table td {
|
||||
background: #c5e1f4;
|
||||
color: #000;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: right;
|
||||
padding-left: 20px;
|
||||
border-radius: 9px 0px 0px 9px;
|
||||
}
|
||||
|
||||
.right {
|
||||
border-radius: 0px 9px 9px 0px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.featured {background: #fff}
|
||||
|
||||
.buttonbay {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.fieldinput {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.fieldinputerror {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
background: #fcc;
|
||||
border: 1px solid red;
|
||||
}
|
||||
.fieldprompt {
|
||||
font-size: 10pt;
|
||||
text-align: right;
|
||||
background: #00f;
|
||||
}
|
||||
.message {font: bold 10pt verdana; color: #FF0000}
|
||||
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
|
||||
.collection_text {font: 10pt verdana; color: #FFFFFF}
|
||||
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
|
||||
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 10pt;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
border: 2px outset;
|
||||
background: #2099f0;
|
||||
padding: 2px 10px 3px 10px;
|
||||
margin: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.button:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: calc(100% - 0px);
|
||||
height: 10px;
|
||||
z-index: 5;
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: source;
|
||||
font-weight: 400;
|
||||
font-size: 10pt;
|
||||
border: 1pt solid black;
|
||||
background: #ff8;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.controlframe {background: #888;
|
||||
padding: 5px 5px 15px 10px;
|
||||
}
|
||||
|
||||
.vm {position: relative;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmname {position: absolute;
|
||||
left: 0px; top: 0px;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmcover {position: absolute;
|
||||
left: 15px;
|
||||
top: 30px;
|
||||
font: 12px 'Dot Matrix';
|
||||
background: #bbb;
|
||||
color: white;
|
||||
border: 1pt solid white;
|
||||
border-radius: 5px;
|
||||
padding: 2px 10px 2px 10px;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Support E-Mail</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
|
||||
</div>
|
||||
<div class="menubar">
|
||||
|
||||
|
||||
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 20px;"> </td>
|
||||
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
</ifrow>
|
||||
</if>
|
||||
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 10px;"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
<a href="/jet">JET</a><br>
|
||||
<a href="/synthmax">SYNTHMAX</a><br>
|
||||
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Contact</b></div><div class="sectionframecontents">
|
||||
<p>Please contact us by phone at <b>(702) 755-8235</b>.</p>
|
||||
<p>To e-mail us, just enter text below and press the buttons:</p>
|
||||
|
||||
<entryform>
|
||||
<field prompt="Name" type="text" name="name" size="50" maxlength="50">
|
||||
<field prompt="E-Mail" type="text" name="email" size="50" maxlength="50">
|
||||
<field prompt="Message" type="multiline" name="message" rows="5" cols="60">
|
||||
|
||||
<captcha>
|
||||
|
||||
<buttonbay>
|
||||
Send Message
|
||||
</buttonbay>
|
||||
</entryform>
|
||||
|
||||
<messages>
|
||||
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
<include file="../src/SESSIONCTL.tag">
|
||||
<include file="../src/barant.tag">
|
||||
<include file="../src/project.tag">
|
||||
<set name="host" value="localhost">
|
||||
<set name="database" value="barant">
|
||||
<set name="user" value="barant">
|
||||
<set name="password" value="uversa1960">
|
||||
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="">
|
||||
<sessionctl page="help">
|
||||
<defaultnav>
|
||||
<setpage name="help">
|
||||
</defaultnav>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
<link rel="stylesheet" href="/assets/control.css">
|
||||
</sessionctl>
|
||||
</database>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /hosting
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>HOSTING</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">HOSTING</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,14 +463,10 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<retain name="sku">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Virtual Machine Hosting</b></div><div class="sectionframecontents">
|
||||
|
||||
<p>We offer several virtual machine hosting options. Everything to run your business.</p>
|
||||
@@ -531,7 +526,7 @@ telephony solution.</p>
|
||||
<hr>
|
||||
</div></div>
|
||||
<set name="pagemenu" value="davidarant" />
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -539,4 +534,4 @@ telephony solution.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /jet
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>barant.com - JET Extension Tags</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">barant.com - JET Extension Tags</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div class="sectionframe"><div class="sectionframeheading"><b>JET Extension Tags</b></div><div class="sectionframecontents">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content"><div class="sectionframe"><div class="sectionframeheading"><b>JET Extension Tags</b></div><div class="sectionframecontents">
|
||||
|
||||
<p>Complete reference documentation go <a href="/jet/contents">here</a>.</p>
|
||||
|
||||
@@ -523,7 +518,7 @@ identifier.</li>
|
||||
<li>Pretty URLS with clean navigation.</li>
|
||||
</ul>
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -531,4 +526,4 @@ identifier.</li>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,506 +0,0 @@
|
||||
#api GET /main
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANT Technology Group</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
}
|
||||
|
||||
@keyframes rotation {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(359deg);
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: avenir;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
@font-face {
|
||||
font-family: source;
|
||||
src: url('data:font/ttf;base64,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 truncated
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: exo2;
|
||||
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGG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 truncated
|
||||
}
|
||||
|
||||
|
||||
body {background: linear-gradient(to bottom, #ccc, #444);
|
||||
font-family: exo2;
|
||||
margin: 10px 10px 10px 10px;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
a:link {text-decoration: none}
|
||||
a:visited {text-decoration:none}
|
||||
a:hover {text-decoration:none}
|
||||
|
||||
h1 {font: 20pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
color: #808080;
|
||||
opacity: 0.9;}
|
||||
|
||||
h2 {font: 14pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
h3 {font: 12pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
p {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
ul {font-family: 8pt exo2;}
|
||||
|
||||
li {font-family: 8pt exo2;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
}
|
||||
|
||||
.project_header {background: #88c;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pageclass {background: #fff;
|
||||
border-radius: 10px;
|
||||
border: 2pt outset;
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
max-width: 1050px;
|
||||
min-width: 1050px
|
||||
margin: auto;
|
||||
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
|
||||
font-family: exo2;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
input {background: #fff;
|
||||
border: 1px inset;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
select {background: #fff;
|
||||
font-family: exo2;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
border: 1px solid #444;
|
||||
padding: 1px 2px 1px 2px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinput {background: #fff;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #444;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
-o-border-radius: 0px;
|
||||
-ms-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
textarea.fieldinputerror {background: #fcc;
|
||||
resize: none;
|
||||
font-family: exo2;
|
||||
border: 1px solid #f00;
|
||||
font-size: 14px;
|
||||
min-height: 18px;
|
||||
display: block;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 0px;
|
||||
outline: none;
|
||||
padding: 2px 2px 2px 5px;
|
||||
-webkit-border-radius: 7px;
|
||||
-moz-border-radius: 7px;
|
||||
-o-border-radius: 7px;
|
||||
-ms-border-radius: 7px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe {
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
border: 0px outset;
|
||||
font-size: 10pt;
|
||||
margin: 3px;
|
||||
background: #808080;
|
||||
padding: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.sectionframe:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 12px;
|
||||
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.sectionframecontents {
|
||||
padding: 10px;
|
||||
text-align: justify;
|
||||
color: #000000;
|
||||
border: 1pt inset;
|
||||
background-color: #F8F8FF;
|
||||
}
|
||||
.sectionframeheading {
|
||||
# background: linear-gradient(to bottom, #fff, #88f);
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
border: 1pt outset;
|
||||
vertical-align: middle;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
font-family: 12pt avenir;
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.sectionframeheading2 {
|
||||
background: #C0C0C0;
|
||||
font-family: exo2;
|
||||
font-size: 20pt;
|
||||
padding: 3px
|
||||
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.heading {background: #fff;
|
||||
border-radius: 7px 7px 0px 0px;
|
||||
max-height: 80px;
|
||||
}
|
||||
.entryform {
|
||||
background: #2099f0;
|
||||
padding: 3px 3px 3px 3px;
|
||||
margin: 0px;
|
||||
border: 0px solid black;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.entryform table {
|
||||
font: 12px exo2;
|
||||
background: #c5e1f4;
|
||||
border: 0pt solid black;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background: linear-gradient(to bottom, #000, #888);
|
||||
font: 8pt verdana;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
border-radius: 0px 0px 6px 6px;}
|
||||
|
||||
.menubar {
|
||||
# background: linear-gradient(to bottom, #fff, #2099f0);
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.baritem {
|
||||
background-image: linear-gradient(#2099f0, #c3ddef);
|
||||
color: #fff;
|
||||
position: relative;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 10px 0px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 0px 0px 1px 0px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
}
|
||||
|
||||
.baritem:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
width: calc(100% - 2px);
|
||||
height: 50%;
|
||||
z-index: 5;
|
||||
pointer-events: none;
|
||||
border-radius: 4px 4px 0px 0px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.baritemselected {
|
||||
background: #ccc;
|
||||
color: #000;
|
||||
font-family: exo2;
|
||||
font-weight: 1000;
|
||||
font-size: 8pt;
|
||||
padding: 2px 10px;
|
||||
margin: 5px 10px 0px 0px;
|
||||
border: solid;
|
||||
border-width: 1px 1px 0px 1px;
|
||||
border-color: #fff;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
border-style: outset;
|
||||
transition: background 2s;
|
||||
|
||||
}
|
||||
|
||||
.baritem:hover {
|
||||
background: #c3ddef;
|
||||
color: #fff;
|
||||
transition: background 5s;
|
||||
}
|
||||
|
||||
.panel {background: #ccc;
|
||||
margin: 10px;
|
||||
padding: 3px;
|
||||
border: 0pt inset;}
|
||||
|
||||
.panel table {
|
||||
font: 12px exo2;
|
||||
padding: 5px;
|
||||
background: #c5e1f4;
|
||||
border: 1pt solid black;
|
||||
border-radius: 9px;
|
||||
}
|
||||
.panel table th {
|
||||
background: #2099f0;
|
||||
color: #fff;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
.panel table td {
|
||||
background: #c5e1f4;
|
||||
color: #000;
|
||||
padding: 2px 3px 3px 3px;
|
||||
border: 0pt;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: right;
|
||||
padding-left: 20px;
|
||||
border-radius: 9px 0px 0px 9px;
|
||||
}
|
||||
|
||||
.right {
|
||||
border-radius: 0px 9px 9px 0px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.featured {background: #fff}
|
||||
|
||||
.buttonbay {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.fieldinput {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.fieldinputerror {
|
||||
font-family: exo2;
|
||||
border-radius: 7px;
|
||||
padding: 2px 2px 2px 5px;
|
||||
background: #fcc;
|
||||
border: 1px solid red;
|
||||
}
|
||||
.fieldprompt {
|
||||
font-size: 10pt;
|
||||
text-align: right;
|
||||
background: #00f;
|
||||
}
|
||||
.message {font: bold 10pt verdana; color: #FF0000}
|
||||
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
|
||||
.collection_text {font: 10pt verdana; color: #FFFFFF}
|
||||
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
|
||||
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
|
||||
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 10pt;
|
||||
font-weight: 400;
|
||||
color: #fff;
|
||||
border: 2px outset;
|
||||
background: #2099f0;
|
||||
padding: 2px 10px 3px 10px;
|
||||
margin: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.button:after{
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: calc(100% - 0px);
|
||||
height: 10px;
|
||||
z-index: 5;
|
||||
border-radius: 3px;
|
||||
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
|
||||
}
|
||||
|
||||
.code {
|
||||
font-family: source;
|
||||
font-weight: 400;
|
||||
font-size: 10pt;
|
||||
border: 1pt solid black;
|
||||
background: #ff8;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.controlframe {background: #888;
|
||||
padding: 5px 5px 15px 10px;
|
||||
}
|
||||
|
||||
.vm {position: relative;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmname {position: absolute;
|
||||
left: 0px; top: 0px;
|
||||
height: 55px;
|
||||
}
|
||||
|
||||
.vmcover {position: absolute;
|
||||
left: 15px;
|
||||
top: 30px;
|
||||
font: 12px 'Dot Matrix';
|
||||
background: #bbb;
|
||||
color: white;
|
||||
border: 1pt solid white;
|
||||
border-radius: 5px;
|
||||
padding: 2px 10px 2px 10px;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">BARANT Technology Group</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
|
||||
</div>
|
||||
<div class="menubar">
|
||||
|
||||
|
||||
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tr>
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 20px;"> </td>
|
||||
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
</ifrow>
|
||||
</if>
|
||||
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||
|
||||
<td style="border-bottom: 1pt solid #bbb; width: 10px;"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
<a href="/jet">JET</a><br>
|
||||
<a href="/synthmax">SYNTHMAX</a><br>
|
||||
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Welcome to BARANT Systems</b></div><div class="sectionframecontents">
|
||||
|
||||
<div style="width: 48%;">
|
||||
<p>We are BARANT Technology Group. Contact us for information on how we can
|
||||
help you with your technical objectives.</p>
|
||||
|
||||
<h1>Modular1 VST Synthesizer</h1>
|
||||
<p>Check out our <a href="/vst">Modular1 VST3
|
||||
Synthesizer</a> If you appreciate the art of modular analog
|
||||
synthesizers then you will really enjoy the Modular1 with all the
|
||||
features of an analog modular synthesizer put into a single VST3
|
||||
instrument. With the added features of polyphony and patches that
|
||||
change instantaneously this synthesizer is truly a powerhouse in the
|
||||
audio toolbox.</p>
|
||||
<a href="/vst"><img src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvbW9kdWxhcjEucG5nJyk7PC9zY3JpcHQ+ICAgICAgICAgICAgICA8IURPQ1RZUEUgaHRtbD4gICAgICA8IS0tW2lmIGx0IElFIDcgXT48aHRtbCBjbGFzcz0iaWUgaWU2IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTciIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA4IF0+PGh0bWwgY2xhc3M9ImllIGllOCIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIChndGUgSUUgOSl8IShJRSldPjwhLS0+PGh0bWwgbGFuZz0iZW4iPiA8IS0tPCFbZW5kaWZdLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkPgogPHRpdGxlPlBhZ2UgTm90IEZvdW5kPC90aXRsZT4KICAgICAgIDxNRVRBIE5BTUU9QVVUSE9SIENPTlRFTlQ9IiI+ICAgICAgIDxNRVRBIE5BTUU9REVTQ1JJUFRJT04gQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1LRVlXT1JEUyBDT05URU5UPSIiPiAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9tYWluLmNzcyI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9jc3MvY29udHJvbC5jc3MiPgogPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbS9pbWFnZXMvZmF2aWNvbi5wbmciPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2NrZWRpdG9yL2NrZWRpdG9yLmpzIj48L3NjcmlwdD4KIDwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+CiA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLVQyV1lSUDBDMEgiPjwvc2NyaXB0PgogPHNjcmlwdD4KICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsKICBndGFnKCdjb25maWcnLCAnRy1UMldZUlAwQzBIJyk7CiA8L3NjcmlwdD4KICAgICAgICAgICAgIDwvaGVhZD4gICAgICA8Ym9keSAgICAgICAgICAgICA+ICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJfTEFTVFBBR0UiIFZBTFVFPSJtb2R1bGFyMS5wbmciID4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBST0NFU1MiIFZBTFVFPSIiID4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IkVYSVRQUk9DRVNTIiBWQUxVRT0iIiA+CTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkRJUiIgdmFsdWU9IiI+CTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9DVExESVIiIHZhbHVlPSIiPgk8SU5QVVQgVFlQRT1ISURERU4gTkFNRT0iUEFHRSIgVkFMVUU9Im1vZHVsYXIxLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdtb2R1bGFyMS5wbmcnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0udGFyZ2V0PScnOyIgICAgICAgICAgICAgICAgICAgICAgCQkgICAgICA+PGEgaHJlZj0iL21haW4iPkhPTUU8L2E+PC9BPjwvdGQ+Cjx0ZCBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB0IHNvbGlkICNiYmI7Ij4mbmJzcDs8L3RkPgo8dGQgY2xhc3M9ImJhcml0ZW0iPgo8QSBIUkVGPSJqYXZhc2NyaXB0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUFJPQ0VTUy52YWx1ZT0nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUEFHRS52YWx1ZT0nbW9kdWxhcjEucG5nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnRhcmdldD0nJzsiICAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgPjxhIGhyZWY9Ii9zZXJ2aWNlcyI+U0VSVklDRVM8L2E+PC9BPjwvdGQ+Cjx0ZCBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB0IHNvbGlkICNiYmI7Ij4mbmJzcDs8L3RkPgo8dGQgY2xhc3M9ImJhcml0ZW0iPgo8QSBIUkVGPSJqYXZhc2NyaXB0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUFJPQ0VTUy52YWx1ZT0nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUEFHRS52YWx1ZT0nLine truncated
|
||||
<p>Excellent quality and technical performance provide a performance level
|
||||
instrument for musicians or students who wish to learn sound wave
|
||||
synthesis techniques or for musicians to enable that old analog sound
|
||||
in their DAW recording system..</p>
|
||||
<p>Checkout the product page for more information on the capabilities
|
||||
of the Modular1 synthesizer.</p>
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /notfound
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Page Not Found</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Page Not Found</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,15 +463,11 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<p>Requested page is not found.</p>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -480,4 +475,4 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /opensource
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>OPEN SOURCE</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">OPEN SOURCE</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Open Source Projects</b></div><div class="sectionframecontents">
|
||||
<h1>Open Source Projects</h1>
|
||||
<p>We have several open source projects that we have created.</p>
|
||||
@@ -520,7 +515,7 @@ firmware code utilizing the RCA1802 micro-controller chip.</li>
|
||||
Check out our git server at <a href="https://git.barant.com">git.barant.com</a>.
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -528,4 +523,4 @@ firmware code utilizing the RCA1802 micro-controller chip.</li>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /serverframework
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Server Core Framework</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Server Core Framework</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Server Core Framework</b></div><div class="sectionframecontents">
|
||||
<p>It is finally here! The Server Core Framework is now available. The
|
||||
framework offers support for just about any server you can devise.</p>
|
||||
@@ -503,14 +498,14 @@ Unty 3D and for the Unreal Engine 4 with drop in and play options that
|
||||
can be heavily modified to support unique game features. Offers
|
||||
support for mySQL backends.</p>
|
||||
|
||||
<img src="images/ServerCoreMap.png" width="80%">
|
||||
<img src="/assets/ServerCoreMap.png" width="80%">
|
||||
<br>
|
||||
<code>
|
||||
git clone https://barant.com/git@ServerCore.git
|
||||
</code>
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -518,4 +513,4 @@ git clone https://barant.com/git@ServerCore.git
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /services
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANT Technology Group</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">BARANT Technology Group</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>Welcome to BARANT Systems</b></div><div class="sectionframecontents">
|
||||
|
||||
@@ -517,7 +512,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
</div>
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -525,4 +520,4 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /siptrunk
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>SIP Trunking</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">SIP Trunking</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>SIP Trunking</b></div><div class="sectionframecontents">
|
||||
<h1>For PBX Systems</h1>
|
||||
<p>Some of the best prices around for adding trunks to your PBX. We
|
||||
@@ -504,7 +499,7 @@ We can also host a PBX for you as well. Complete functionality
|
||||
utilizing FreePBX can be provided on the internet so you do not need
|
||||
to worry about the hardware. We manage and maintain everything for you.
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -512,4 +507,4 @@ to worry about the hardware. We manage and maintain everything for you.
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /synthedit
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>SYNTHEDIT</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">SYNTHEDIT</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>SYNTHEDIT</b></div><div class="sectionframecontents">
|
||||
<h1>Modules</h1>
|
||||
<p>Several modules are under development for Synthedit 1.4.</p>
|
||||
@@ -492,9 +487,9 @@ synthesizers. Using a superfast algorithm to generate with precision
|
||||
the harmonics up to the nyquist limit. Precise control over the amplitude and phase
|
||||
of each harmonic allows traditional waveforms to be generated without
|
||||
aliasing problems. </p>
|
||||
<img src="images/sawtooth.png" width="120px">
|
||||
<img src="images/square.png" width="120px">
|
||||
<img src="images/triangle.png" width="120px">
|
||||
<img src="/assets/sawtooth.png" width="120px">
|
||||
<img src="/assets/square.png" width="120px">
|
||||
<img src="/assets/triangle.png" width="120px">
|
||||
<br>
|
||||
<p>Individual control over each and every harmonic affords the
|
||||
generation of many waveforms that require a harmonic purity.</p>
|
||||
@@ -502,7 +497,7 @@ generation of many waveforms that require a harmonic purity.</p>
|
||||
</div>
|
||||
|
||||
</div></div>
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -510,4 +505,4 @@ generation of many waveforms that require a harmonic purity.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,4 +1,3 @@
|
||||
#api GET /wordpress
|
||||
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Wordpress Plugins</title><style>
|
||||
.rotate {
|
||||
animation: rotation 1s infinite linear;
|
||||
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<div class="pageclass">
|
||||
<div class="heading">
|
||||
<div style="display: inline-block; width: 500px;">
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
|
||||
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
|
||||
<div style="padding-top: 15px;">
|
||||
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||
<div style="left: 80px; color: #2099f0;">Wordpress Plugins</div>
|
||||
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
|
||||
<div style="display: table-row; width: 100%;">
|
||||
<div style="display: table-cell; border:
|
||||
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
|
||||
background-image: url('/assets/grid.png') repeat-x repeat-y;">
|
||||
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
|
||||
<a href="/barantmail">BARANTMAIL</a><br>
|
||||
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
|
||||
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
|
||||
</div></div>
|
||||
|
||||
<comment>
|
||||
<if value1="$[_login_id]" value2="1" type="eq">
|
||||
<include file="sessionvar.menu">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
</div>
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
|
||||
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
|
||||
|
||||
|
||||
<div class="sectionframe"><div class="sectionframeheading"><b>BARANT Shopping Cart for WordPress</b></div><div class="sectionframecontents">
|
||||
@@ -491,7 +486,7 @@ textarea.fieldinputerror {background: #fcc;
|
||||
Square, with no WooCommerce required.</p>
|
||||
</div>
|
||||
<div style="display: table-cell; vertical-align: top; width: 90px; text-align: center;">
|
||||
<img src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvc2hvcHBpbmdfY2FydC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9InNob3BwaW5nX2NhcnQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJzaG9wcGluZ19jYXJ0LnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdzaG9wcGluZ19jYXJ0LnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdzaG9wcGluZ19jYXJ0LnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWLine truncated
|
||||
<img src="/assets/shopping_cart.png" width="64">
|
||||
</div>
|
||||
</div>
|
||||
</div></div>
|
||||
@@ -534,7 +529,7 @@ touch</a> - BARANT Technology Group can also handle hosting and setup for
|
||||
you directly.</p>
|
||||
</div></div>
|
||||
|
||||
</div>
|
||||
</div></div>
|
||||
<div style="clear: both;"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -542,4 +537,4 @@ you directly.</p>
|
||||
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||
</div>
|
||||
|
||||
</body></html>
|
||||
</body></html>
|
||||
@@ -1,10 +1,3 @@
|
||||
# --------------------------------------------------------------
|
||||
# SESSIONCTL lib
|
||||
#
|
||||
# Session Control Function Library
|
||||
#
|
||||
#
|
||||
# --------------------------------------------------------------
|
||||
|
||||
<tag name="ifadmin">
|
||||
<if value1="$[__admin__]" value2="1" type="eq">
|
||||
@@ -18,9 +11,6 @@
|
||||
</if>
|
||||
</tag>
|
||||
|
||||
#==============================================================================
|
||||
# RETAIN tag definition.
|
||||
#==============================================================================
|
||||
|
||||
<tag name="retain" keywords="name value empty">
|
||||
<if value1="#[empty]" value2="" type=eq>
|
||||
@@ -36,17 +26,8 @@
|
||||
</if>
|
||||
</tag>
|
||||
|
||||
#==============================================================================
|
||||
# IFNOTSESSION tag definition.
|
||||
#==============================================================================
|
||||
|
||||
<tag name="ifnotsession">
|
||||
<if value1="$[_SESSIONID]" value2="" type="eq"><container></if>
|
||||
</tag>
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# LINKBUTTON tag definition.
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
<tag name="linkbutton" keywords="pagedir page process name name2 value value2 target class multipart">
|
||||
|
||||
@@ -93,8 +74,8 @@
|
||||
document.forms[0].N_LEVEL.value='$[X_LEVEL]';
|
||||
</IF>
|
||||
|
||||
document.forms[0].submit();
|
||||
document.forms[0].target='';"
|
||||
document.forms[0].target='';
|
||||
document.forms[0].requestSubmit();"
|
||||
<if value1="#[CLASS]" value2="" type="ne">
|
||||
CLASS="#[CLASS]"
|
||||
</if>
|
||||
@@ -102,9 +83,6 @@
|
||||
|
||||
</TAG>
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# ABUTTON tag definition.
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
<TAG NAME="ABUTTON" KEYWORDS="PAGE PROCESS NAME VALUE MULTIPART">
|
||||
<BUTTON ONCLICK="javascript:
|
||||
@@ -126,81 +104,20 @@
|
||||
document.forms[0].encoding='multipart/form-data';
|
||||
</IF>
|
||||
|
||||
document.forms[0].submit();"> <CONTAINER> </BUTTON>
|
||||
document.forms[0].requestSubmit();"> <CONTAINER> </BUTTON>
|
||||
</TAG>
|
||||
|
||||
# ----------------------------------------------
|
||||
# CREATESESSION
|
||||
# ----------------------------------------------
|
||||
<tag name="createsession" keywords="page timeout">
|
||||
<if value1="$[_session_id]" value2="" type="ne">
|
||||
<sql>
|
||||
delete from sessions
|
||||
where uuid='$[_session_id]'
|
||||
</sql>
|
||||
</if>
|
||||
<set name="_uuid" expr="uuid()">
|
||||
<set name="_timestamp" expr="now()">
|
||||
<if value1="#[timeout]" value2="" type="eq">
|
||||
<set name="timeout" value="0" scope="local">
|
||||
</if>
|
||||
<sql>
|
||||
insert into sessions
|
||||
set uuid='$[_uuid]',
|
||||
timestamp='$[_timestamp]',
|
||||
timeout_page='#[page]',
|
||||
timeout=#[timeout]
|
||||
</sql>
|
||||
<if value1="#[timeout]" value2="" type="eq">
|
||||
<setcookie name="_session_id" value="$[_uuid]">
|
||||
<else>
|
||||
<setcookie name="_session_id" value="$[_uuid]" timeout="#[timeout]">
|
||||
</if>
|
||||
</tag>
|
||||
|
||||
# ----------------------------------------------
|
||||
# ENDSESSION
|
||||
# ----------------------------------------------
|
||||
<tag name="endsession">
|
||||
<if value1="$[_session_id]" value2="" type="ne">
|
||||
<sql>
|
||||
delete from sessions
|
||||
where uuid='$[_session_id]'
|
||||
</sql>
|
||||
<setcookie name="_session_id" value="">
|
||||
</if>
|
||||
</tag>
|
||||
|
||||
#--------------------------------------------------
|
||||
#SETENV
|
||||
#--------------------------------------------------
|
||||
<tag name="setenv" keywords="name">
|
||||
<if value1="$[_session_id]" value2="" type="ne">
|
||||
<eval name="_envvalue" scope="local"><container></eval>
|
||||
<set name="_envvalue" value="#[_envvalue]" format="binary" scope="local">
|
||||
<sql>
|
||||
replace into sessionenv
|
||||
set session_uuid='$[_session_id]',
|
||||
name='#[name]',
|
||||
value='#[_envvalue]'
|
||||
</sql>$[sqlerror]
|
||||
<eval name="#[name]"><container></eval>
|
||||
</if>
|
||||
<eval name="_envvalue" scope="local"><container></eval>
|
||||
<set name="#[name]" value="#[_envvalue]">
|
||||
<set name="@#[name]" value="#[_envvalue]">
|
||||
</tag>
|
||||
|
||||
#--------------------------------------------------
|
||||
#CLEARENV
|
||||
#--------------------------------------------------
|
||||
<tag name="clearenv" keywords="name">
|
||||
<sql>
|
||||
DELETE FROM sessionenv WHERE session_uuid='$[_session_id]' AND name='#[name]'
|
||||
</sql>$[sqlerror]
|
||||
<SET NAME='#[name]' VALUE="">
|
||||
</tag>
|
||||
<tag name="clearenv" keywords="name">
|
||||
<set name="#[name]" value="">
|
||||
<set name="@#[name]" value="">
|
||||
</tag>
|
||||
|
||||
#--------------------------------------------------
|
||||
#SETPAGE
|
||||
#--------------------------------------------------
|
||||
<tag name="setpage" keywords="NAME DIR">
|
||||
<SET NAME=PAGE VALUE='#[NAME]'>
|
||||
<IF VALUE1="#[DIR]" VALUE2="" TYPE="NE">
|
||||
@@ -209,79 +126,21 @@
|
||||
</IF>
|
||||
</TAG>
|
||||
|
||||
#--------------------------------------------------
|
||||
#SETPROCESS
|
||||
#--------------------------------------------------
|
||||
|
||||
<TAG NAME='SETPROCESS' KEYWORDS='VALUE'>
|
||||
<SET NAME=PROCESS VALUE='#[VALUE]'>
|
||||
</TAG>
|
||||
|
||||
#--------------------------------------------------
|
||||
#CHECKSESSION
|
||||
#--------------------------------------------------
|
||||
|
||||
<tag name="checksession">
|
||||
|
||||
<sql>
|
||||
select *,
|
||||
if((timeout > 0) && (unix_timestamp(now()) - unix_timestamp(timestamp) > (timeout * 60)),'0','1') as session_valid
|
||||
from sessions
|
||||
where uuid="$[_session_id]"
|
||||
</sql>$[sqlerror]
|
||||
|
||||
<ifrow>
|
||||
<if value1="$[.session_valid]" value2="1" type="eq">
|
||||
<set name="session_timestamp" value="$[.timestamp]">
|
||||
<set name="_timestamp" expr="now()">
|
||||
<sql>
|
||||
update sessions
|
||||
set timestamp='$[_timestamp]'
|
||||
where uuid="$[_session_id]"
|
||||
</sql>
|
||||
|
||||
<sql>
|
||||
select * from sessionenv where session_uuid="$[_session_id]"
|
||||
</sql>$[sqlerror]
|
||||
<whilerow>
|
||||
<eval name="$[.name]">$[.value]</eval>
|
||||
</whilerow>
|
||||
|
||||
<else>
|
||||
<setpage name="$[.timeout_page]">
|
||||
<set name="_session_id" value="">
|
||||
</if>
|
||||
|
||||
<else>
|
||||
<setpage name="">
|
||||
<set name="_session_id" value="">
|
||||
</ifrow>
|
||||
|
||||
<set name="_login_id" value="$[@_login_id]">
|
||||
<set name="_login_name" value="$[@_login_name]">
|
||||
<set name="_login_email" value="$[@_login_email]">
|
||||
<set name="_login_type" value="$[@_login_type]">
|
||||
<set name="_login_uuid" value="$[@_login_uuid]">
|
||||
</tag>
|
||||
|
||||
#--------------------------------------------------
|
||||
#FIRST RUN - See FETCHPROC in SESSIONCTL tag
|
||||
#--------------------------------------------------
|
||||
|
||||
<TAG NAME='FIRSTRUN'>
|
||||
<IF VALUE1='$[_PROCESSRAN]' VALUE2='FALSE' TYPE=EQ>
|
||||
<EVAL NAME='_FIRSTRUN'>$[_FIRSTRUN] <CONTAINER></EVAL>
|
||||
</IF>
|
||||
</TAG>
|
||||
|
||||
#--------------------------------------------------
|
||||
#RUNERROR - See FETCHPROC in SESSIONCTL tag
|
||||
#--------------------------------------------------
|
||||
|
||||
<TAG NAME='RUNERROR'>
|
||||
<IF VALUE1='$[_PROCESSRAN]' VALUE2='TRUE' TYPE=EQ>
|
||||
<EVAL NAME="_RUNERROR">$[_RUNERROR] <CONTAINER></EVAL>
|
||||
</IF>
|
||||
</TAG>
|
||||
|
||||
#--------------------------------------------------
|
||||
#SESSIONCTL
|
||||
#--------------------------------------------------
|
||||
<tag name='sessionctl' keywords="page stylesheet">
|
||||
<tag name="defaultnav"><if expr="('$[PAGE]' = '') and ('$[PROCESS]' = '')"><eval><container></eval></if></tag>
|
||||
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="_SESSIONCTL">
|
||||
@@ -292,10 +151,10 @@
|
||||
<fetchpage>
|
||||
</tag>
|
||||
<tag name="page" keywords="template class onload secure loggedin admin" scope="local">
|
||||
<tag name="author" scope="local"><eval name="author" scope="parent"><container></eval></tag>
|
||||
<tag name="author" scope="local"><eval name="AUTHOR" scope="parent"><container></eval></tag>
|
||||
<tag name="description" scope="local"><container name="description" eval="no" scope="parent"></tag>
|
||||
<tag name="keywords" scope="local"><container name="keywords" eval="no" scope="parent"></tag>
|
||||
<tag name="contents" scope="local"><eval name="_body"><container></eval></tag>
|
||||
<tag name="contents" scope="local"><eval name="_BODY"><container></eval></tag>
|
||||
<TAG NAME='TEMPLATE' SCOPE=LOCAL>
|
||||
<tag name="contents" scope="local">
|
||||
$[_BODY]
|
||||
@@ -331,7 +190,7 @@ $[_BODY]
|
||||
</head>
|
||||
<body <if value1="#[CLASS]" value2="" type="ne">class="#[CLASS]"</if>
|
||||
<if value1="#[onload]" value2="" type="ne">onload="#[onload]"</if>>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<form method="post" enctype="multipart/form-data" action="$[REQUEST_URI]">
|
||||
<INPUT TYPE=HIDDEN NAME="_LASTPAGE" VALUE="$[PAGE]" >
|
||||
<INPUT TYPE=HIDDEN NAME="PROCESS" VALUE="" >
|
||||
<INPUT TYPE=HIDDEN NAME="EXITPROCESS" VALUE="$[EXITPROCESS]" >
|
||||
@@ -361,14 +220,7 @@ $[_BODY]
|
||||
</TAG>
|
||||
<tag name="fetchproc">
|
||||
<tag name="process">
|
||||
<if value1="$[_TIMESTAMP:0]" value2="$[session_timestamp]" type="eq">
|
||||
<set name="_PROCESSRAN" value="FALSE">
|
||||
<else>
|
||||
<set name="_PROCESSRAN" value="TRUE">
|
||||
</if>
|
||||
<eval><container></eval>
|
||||
<eval>$[_FIRSTRUN]</eval>
|
||||
<eval>$[_RUNERROR]</eval>
|
||||
</tag>
|
||||
<EVAL><INCLUDE FILE="./$[DIR]/$[PROCESS].proc"></EVAL>
|
||||
</TAG>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<heading>
|
||||
<title>Barant Systems - West Coast Wing Chun Open House 2014</title>
|
||||
</heading>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" loggedin="yes">
|
||||
<page secure="yes" loggedin="yes">
|
||||
<title>ACCOUNT</title>
|
||||
<contents>
|
||||
<retain name="download_file">
|
||||
@@ -46,7 +46,7 @@
|
||||
<br><span style="font-size: 9pt;"><b>barant.com</b></span>
|
||||
<br><span style="font-size: 7pt;">IP:</span> <span style="font-size: 9pt; font-family: monospace;">74.80.233.78</span></div>
|
||||
|
||||
<div style="float: right; padding: 5px;"><img src="images/power_on.png" width="32"></div>
|
||||
<div style="float: right; padding: 5px;"><img src="/assets/power_on.png" width="32"></div>
|
||||
<div style="float: right; width: 90px; height: 48px; background: #444;"></div>
|
||||
<div style="float: right; margin-right: 25px;">3 days 2:10:33<br><br>34% of 40.2GB</div>
|
||||
<div style="clear: both;"></div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>BARANT Systems</title>
|
||||
<contents>
|
||||
<sectionframe title="E-Mail Confirmation">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<heading>
|
||||
<title>The Digital Gods - The MP3 Music Store</title>
|
||||
</heading>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<menu>
|
||||
<include file="projects.menu">
|
||||
<include file="sessionvar.menu">
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
<if value1="$[_session_id]" value2="" type="eq">
|
||||
<createsession>
|
||||
</if>
|
||||
$[_session_id]-$[sku]
|
||||
<sql>select * from cart_item where session_uuid='$[_session_id]' and sku='$[sku]'</sql>
|
||||
$[sqlerror]
|
||||
<ifrow><set name="qty" value="$[.quantity]"></ifrow>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
|
||||
<page secure="yes" loggedin="yes" admin="true">
|
||||
<title>ADMINISTRATION</title>
|
||||
<contents>
|
||||
<eval name="_menu">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" admin="true" loggedin="yes">
|
||||
<page secure="yes" admin="true" loggedin="yes">
|
||||
<title>INVOICE</title>
|
||||
<contents>
|
||||
<eval name="_menu">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
|
||||
<page secure="yes" loggedin="yes" admin="true">
|
||||
<title>ADMIN INVOICES</title>
|
||||
<contents>
|
||||
<eval name="_menu">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>APPLICATIONS</title>
|
||||
<contents>
|
||||
<sectionframe title="Project Manager">
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>RCA1802 Micro-Controller Assembler/Emulator</title>
|
||||
<contents>
|
||||
<sectionframe title="RCA1802">
|
||||
<h1>The RCA1802 Micro-Controller</h1>
|
||||
<img src="images/rca1802chip.jpeg" align="right">
|
||||
<img src="/assets/rca1802chip.jpeg" align="right">
|
||||
<p>Back in the 1970's RCA released a chip that was widely used in
|
||||
satellites and other spacecraft to this day. It is a very simple
|
||||
8-bit micro-controller with 16-bit addressibility enabling memory
|
||||
@@ -26,7 +26,7 @@ device.</p>
|
||||
|
||||
</sectionframe>
|
||||
<sectionframe title="RCA1802 Emulator">
|
||||
<img src="images/emu1802a.png" align="right" width="500">
|
||||
<img src="/assets/emu1802a.png" align="right" width="500">
|
||||
<p>The 1802 emulator provides a fully functional RCA1802
|
||||
micro-controller device complete with interupt handling and DMA
|
||||
controls for memory access. Experiment with code structures and build
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<table width="100% cellpadding="5" cellspacing="0">
|
||||
<tr>
|
||||
<td class="featured">
|
||||
<p><img src="images/organ1.png" align="right"></p>
|
||||
<p><img src="/assets/organ1.png" align="right"></p>
|
||||
<p>
|
||||
<whiledir dir="/var/www/barant/musiclink" name="filename">
|
||||
<if expr="substring('$[filename]',1,1) != '.'">
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</if>
|
||||
<div class="sectionframe"><if value1="#[title]" value2="" type="ne">
|
||||
<div class="$[sectionframeheading]"><b>#[title]</b>
|
||||
<if value1="#[edit]" value2="true" type="eq"><img src="images/edit.png" width="16"></if></div></if>
|
||||
<if value1="#[edit]" value2="true" type="eq"><img src="/assets/edit.png" width="16"></if></div></if>
|
||||
<div class="sectionframecontents"><container></div></div>
|
||||
</tag>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>BARANTMAIL OPEN SOURCE PROJECT</title>
|
||||
<contents>
|
||||
<sectionframe title="BARANTMAIL OPEN SOURCE PROJECT">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<heading>
|
||||
<title>BARANT Systems</title>
|
||||
</heading>
|
||||
|
||||
@@ -1,80 +1,122 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>SHOPPING CART</title>
|
||||
<contents>
|
||||
<retain name="sku">
|
||||
<set name="tranonce" expr="unix_timestamp()">
|
||||
<setenv name="tranonce">$[tranonce]</setenv>
|
||||
<sectionframe title="SHOPPING CART">
|
||||
<input type="hidden" name="sku" value="">
|
||||
<input type="hidden" name="qty" value="">
|
||||
<script>
|
||||
function update(input) {
|
||||
PROCESS.value="updatecartqty";
|
||||
submit();
|
||||
function cartQtyChange(sku, qty) {
|
||||
if (qty === '' || isNaN(qty)) return;
|
||||
document.forms[0].PROCESS.value = 'updatecartqty';
|
||||
document.forms[0].PAGE.value = 'cart';
|
||||
document.forms[0].sku.value = sku;
|
||||
document.forms[0].qty.value = qty;
|
||||
document.forms[0].requestSubmit();
|
||||
}
|
||||
</script>
|
||||
|
||||
<set name="hasrecurring" value="false">
|
||||
<set name="hasfiles" value="false">
|
||||
|
||||
<showtable>
|
||||
select product_list.sku as SKU,
|
||||
description as Description,
|
||||
quantity as Qty,
|
||||
price as Price
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
</showtable>
|
||||
<br>
|
||||
|
||||
<comment>//these need to be incorporated into a query.
|
||||
<if value1="$[.type]" value2="subscription" type="eq">
|
||||
<set name="hasrecurring" value="true">
|
||||
</if>
|
||||
<if value1="$[.type]" value2="file" type="eq">
|
||||
<set name="hasfiles" value="true">
|
||||
</if>
|
||||
</comment>
|
||||
|
||||
<showtable>
|
||||
select count(*) as number_of_items,
|
||||
sum(price * quantity) as total
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
</showtable>
|
||||
|
||||
<sql>
|
||||
select if(find_in_set('physical', group_concat(distinct type)),'true','false') as physical,
|
||||
if(find_in_set('file', group_concat(distinct type)),'true','false') as file,
|
||||
if(find_in_set('subscription', group_concat(distinct type)),'true','false') as subscription
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
select count(*) as number_of_items,
|
||||
sum(price * quantity) as total
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
</sql>
|
||||
$[sqlerror]
|
||||
<ifrow>
|
||||
<set name="cart_count" value="$[.number_of_items]">
|
||||
<set name="cart_total" value="$[.total]">
|
||||
</ifrow>
|
||||
|
||||
<if value1="$[.subscription]" value2="true" type="eq">
|
||||
<div style="border: 1pt solid black; width: 400px; padding: 5px;">Please note that you have recurring charge items. On the terms of
|
||||
the recurrence (monthly or annually) you will not be charged
|
||||
automatically but you will be notified via e-mail that your service is
|
||||
about to expire. It is your responsibility to renew the services.</div>
|
||||
<sectionframe title="Shopping Cart">
|
||||
|
||||
<if expr="$[cart_count] > 0">
|
||||
|
||||
<sql>
|
||||
select if(find_in_set('SUBSCRIPTION', group_concat(distinct type)),'true','false') as subscription,
|
||||
if(find_in_set('FILE', group_concat(distinct type)),'true','false') as file
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
</sql>
|
||||
$[sqlerror]
|
||||
<ifrow>
|
||||
<set name="cart_has_subscription" value="$[.subscription]">
|
||||
<set name="cart_has_file" value="$[.file]">
|
||||
</ifrow>
|
||||
|
||||
<if value1="$[cart_has_subscription]" value2="true" type="eq">
|
||||
<div class="cart-notice">Some items in your cart are recurring subscriptions. You will not be
|
||||
charged automatically - you'll be notified by e-mail before each renewal, and it's your
|
||||
responsibility to renew.</div>
|
||||
</if>
|
||||
|
||||
<if value1="$[.file]" value2="true" type="eq">
|
||||
<div style="margin-top: 3px; width: 400px; border: 1pt solid black; padding: 5px;">Please note that
|
||||
you have purchased items that must be downloaded from your account
|
||||
page after you checkout.</div>
|
||||
<if value1="$[cart_has_file]" value2="true" type="eq">
|
||||
<div class="cart-notice">Some items in your cart are downloadable files - available from your
|
||||
account page after checkout.</div>
|
||||
</if>
|
||||
|
||||
<div class="cart-wrap">
|
||||
<div class="cart-header">
|
||||
<div class="cart-col-desc">Item</div>
|
||||
<div class="cart-col-price">Price</div>
|
||||
<div class="cart-col-qty">Qty</div>
|
||||
<div class="cart-col-total">Total</div>
|
||||
<div class="cart-col-remove"></div>
|
||||
</div>
|
||||
<div class="cart-items">
|
||||
<sql>select product_list.sku as SKU,
|
||||
description as Description,
|
||||
quantity as Qty,
|
||||
price as Price
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
order by description</sql>
|
||||
$[sqlerror]
|
||||
<whilerow>
|
||||
<set name="linetotal" expr="$[.Price] * $[.Qty]">
|
||||
<div class="cart-row">
|
||||
<div class="cart-col-desc">$[.Description]</div>
|
||||
<div class="cart-col-price">$$[.Price]</div>
|
||||
<div class="cart-col-qty">
|
||||
<input type="number" class="cart-qty-input" min="0" value="$[.Qty]"
|
||||
onchange="cartQtyChange('$[.SKU]', this.value); return true;">
|
||||
</div>
|
||||
<div class="cart-col-total">$$[linetotal]</div>
|
||||
<div class="cart-col-remove">
|
||||
<a href="#" class="cart-remove-link" onclick="
|
||||
document.forms[0].PROCESS.value='removecartitem';
|
||||
document.forms[0].PAGE.value='cart';
|
||||
document.forms[0].sku.value='$[.SKU]';
|
||||
document.forms[0].requestSubmit();
|
||||
return false;">Remove</a>
|
||||
</div>
|
||||
</div>
|
||||
</whilerow>
|
||||
</div>
|
||||
<div class="cart-summary">
|
||||
<div class="cart-summary-row">
|
||||
<span>$[cart_count] item<if expr="$[cart_count] != 1">s</if></span>
|
||||
<span class="cart-summary-total">$$[cart_total]</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="text-align: center; width: 100%; margin-top: 10px;">
|
||||
<linkbutton page="checkout" class="button">Check Out</linkbutton>
|
||||
</div>
|
||||
|
||||
<else>
|
||||
<div class="cart-empty">
|
||||
<div class="cart-empty-icon">🛒</div>
|
||||
<div class="cart-empty-title">Your cart is empty</div>
|
||||
<div class="cart-empty-text">Items you add will show up here.</div>
|
||||
</div>
|
||||
</if>
|
||||
|
||||
<br>
|
||||
<div style="text-align: center; width: 100%">
|
||||
<linkbutton page="checkout" class="button">Check
|
||||
Out</linkbutton></div>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<br>
|
||||
|
||||
</sectionframe>
|
||||
|
||||
</contents>
|
||||
</page>
|
||||
</page>
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
|
||||
<sectionframe title="Change Project Icon">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<page template="mainpagetemplate" loggedin="yes">
|
||||
<page loggedin="yes">
|
||||
<title>SHOPPING CART - CHECKOUT</title>
|
||||
<script src="https://web.squarecdn.com/v1/square.js"></script>
|
||||
<contents>
|
||||
<script>
|
||||
<script src="https://web.squarecdn.com/v1/square.js"></script>
|
||||
<script>
|
||||
function processCardForm(token) {
|
||||
xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', '/pp.cgi', true);
|
||||
@@ -11,50 +11,111 @@
|
||||
console.log(">" + this.responseText + "<");
|
||||
if(this.responseText == "OK\n") {
|
||||
document.forms[0].PAGE.value = 'thankyou';
|
||||
document.forms[0].submit();
|
||||
} else {
|
||||
message.innerText = this.responseText;
|
||||
document.forms[0].requestSubmit();
|
||||
} else {
|
||||
var payBtn = document.getElementById('pay');
|
||||
payBtn.disabled = false;
|
||||
var processbanner = document.getElementById('process');
|
||||
processbanner.style.visibility = 'hidden';
|
||||
message.innerText = this.responseText;
|
||||
}
|
||||
};
|
||||
let data = 'id=$[_session_id]&token=' + token + '&tranonce=$[tranonce]';
|
||||
xhr.send(data);
|
||||
xhr.send(data);
|
||||
}
|
||||
var card;
|
||||
async function buildForm() {
|
||||
let payments = Square.payments('sq0idp-V4R4vEferpF9kr7d5x5abQ','LV0MRENX5ED3Z');
|
||||
const card = await payments.card({
|
||||
style: {
|
||||
'.input-container.is-focus': { borderColor: '#006AFF' },
|
||||
'.message-text.is-error': { color: '#BF0020' }
|
||||
input: {
|
||||
backgroundColor: '#1c1c24',
|
||||
color: '#e7e4dc',
|
||||
fontSize: '14px'
|
||||
},
|
||||
'input::placeholder': { color: '#8d8c92' },
|
||||
'.input-container': { borderColor: 'rgba(197, 164, 90, 0.28)' },
|
||||
'.input-container.is-focus': { borderColor: '#c5a45a' },
|
||||
'.input-container.is-error': { borderColor: '#a13a3a' },
|
||||
'.message-text': { color: '#8d8c92' },
|
||||
'.message-text.is-error': { color: '#a13a3a' }
|
||||
}
|
||||
});
|
||||
await card.attach('#card');
|
||||
let button = document.getElementById('pay');
|
||||
button.addEventListener('click', async () => {
|
||||
message.innerText = '';
|
||||
let result = await card.tokenize();
|
||||
if (result.status === 'OK') {
|
||||
button.disabled = true;
|
||||
let processbanner = document.getElementById('process');
|
||||
processbanner.style.visibility = 'visible';
|
||||
processCardForm(result.token);
|
||||
} else {
|
||||
let errorMessage = 'Please check your card details and try again.';
|
||||
if (result.errors && result.errors.length && result.errors[0].message)
|
||||
errorMessage = result.errors[0].message;
|
||||
message.innerText = errorMessage;
|
||||
}
|
||||
});
|
||||
}
|
||||
buildForm();
|
||||
buildForm();
|
||||
</script>
|
||||
<sql>select count(*) as number_of_items,
|
||||
sum(price * quantity) as total
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
</sql>
|
||||
<sectionframe title="Pay with Credit Card">
|
||||
<div>Please enter your payment information:</div>
|
||||
<div style="font-size: 20px;">$[total]</div>
|
||||
<div id="card" style="background-color: #ddd;width: 300px; padding: 5px;"></div>
|
||||
<div style="padding: 5px;"><button id= "pay" type="button">Pay</button></div>
|
||||
<div id="process" style="background-color: #0f0; border: 2px solid #000; padding:
|
||||
5px; display: block-inline; margin: 10px; visibility: hidden;"> Processing Payment - Please wait... </div>
|
||||
<div id="message" style="color: #f00; margin-top: 20px;"></div>
|
||||
|
||||
<sql>select sum(price * quantity) as total
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'</sql>
|
||||
$[sqlerror]
|
||||
<ifrow>
|
||||
<set name="checkout_total" value="$[.total]">
|
||||
</ifrow>
|
||||
|
||||
<sectionframe title="Order Summary">
|
||||
<sql>select product_list.sku as SKU,
|
||||
description as Description,
|
||||
quantity as Qty,
|
||||
price as Price
|
||||
from product_list
|
||||
join cart_item on product_list.sku=cart_item.sku
|
||||
where cart_item.session_uuid='$[_session_id]'
|
||||
order by description</sql>
|
||||
$[sqlerror]
|
||||
<div class="cart-wrap">
|
||||
<div class="checkout-header">
|
||||
<div class="cart-col-desc">Item</div>
|
||||
<div class="cart-col-price">Price</div>
|
||||
<div class="checkout-col-qty">Qty</div>
|
||||
<div class="cart-col-total">Total</div>
|
||||
</div>
|
||||
<div class="cart-items">
|
||||
<whilerow>
|
||||
<set name="linetotal" expr="$[.Price] * $[.Qty]">
|
||||
<div class="checkout-row">
|
||||
<div class="cart-col-desc">$[.Description]</div>
|
||||
<div class="cart-col-price">$$[.Price]</div>
|
||||
<div class="checkout-col-qty">$[.Qty]</div>
|
||||
<div class="cart-col-total">$$[linetotal]</div>
|
||||
</div>
|
||||
</whilerow>
|
||||
</div>
|
||||
<div class="cart-summary">
|
||||
<div class="cart-summary-row">
|
||||
<span>Total Due</span>
|
||||
<span class="cart-summary-total">$$[checkout_total]</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</sectionframe>
|
||||
|
||||
<sectionframe title="Payment">
|
||||
<div class="checkout-pay-wrap">
|
||||
<div class="checkout-pay-label">Card Details</div>
|
||||
<div id="card" class="checkout-card-input"></div>
|
||||
<button id="pay" type="button" class="button checkout-pay-btn">Pay $$[checkout_total]</button>
|
||||
<div id="process" class="checkout-processing">Processing Payment — Please wait…</div>
|
||||
<div id="message" class="checkout-error"></div>
|
||||
</div>
|
||||
</sectionframe>
|
||||
</contents>
|
||||
</page>
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>Support E-Mail</title>
|
||||
<contents>
|
||||
<sectionframe title="Contact">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
|
||||
<sectionframe title="Create Project">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
|
||||
<sectionframe title="Create Release Target">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
<projectheader />
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
|
||||
<sectionframe title="Create Task">
|
||||
|
||||
@@ -17,6 +17,6 @@ alt="Buy now with PayPal" /></td>
|
||||
<messages>
|
||||
|
||||
<div id="processing" style="position: absolute; background: white; visibility: hidden; top:280px; left: 400px; display: inline-block; padding: 0px 10px 0px 10px; border: 1pt solid black; border-radius: 5px;">
|
||||
<img class="rotate" src="/images/spinning.png" width="50" align="center">
|
||||
<img class="rotate" src="/assets/spinning.png" width="50" align="center">
|
||||
<span style="padding: 0px 0px 0px 10px; font-size: 16px"> PROCESSING...</span>
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>CRYSTAL</title>
|
||||
<contents>
|
||||
<setenv name="_menubar"></setenv>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<heading>
|
||||
<title>barant.com - David Eugene Arant</title>
|
||||
</heading>
|
||||
<contents>
|
||||
<img src="images/arant2.jpg" align="left">
|
||||
<img src="/assets/arant2.jpg" align="left">
|
||||
<h1>David Eugene Arant</h1>
|
||||
<p>David Eugene Arant was born in South Gate California on April 17th, 1935
|
||||
to parents May L. Arant and Francis M. Arant.</p>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>Document Management</title>
|
||||
<style>
|
||||
.price {display: table-cell;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
|
||||
<page secure="yes" loggedin="yes" admin="true">
|
||||
<title>ADMIN INVOICES</title>
|
||||
<contents>
|
||||
<database host="$[host]" name="$[database]" user="$[user]" password="$[password]" sessionid="1">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<contents>
|
||||
|
||||
$[_project_header]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<menu>
|
||||
<include file="projects.menu">
|
||||
<include file="sessionvar.menu">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>Support E-Mail</title>
|
||||
<contents>
|
||||
<sectionframe title="Contact">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>HOSTING</title>
|
||||
<contents>
|
||||
<retain name="sku">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>Barant Systems</title>
|
||||
<contents>
|
||||
<include file="barantstream.section">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
where i.id=$[_invoice_id]</sql>
|
||||
<set name="amount" value="$[.amount]">
|
||||
<div style="width: 500px; border: 1pt solid #000; padding: 3px; background: #fff;">
|
||||
<div><div style="display: inline-block;"><img style="width: 300px;" src="images/invoice_logo.png"></div>
|
||||
<div><div style="display: inline-block;"><img style="width: 300px;" src="/assets/invoice_logo.png"></div>
|
||||
<div style="display: flex; float: right; align-items: center;">
|
||||
Invoice: $[.invnumber] $[.status]
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
where i.id=30</sql>
|
||||
<set name="amount" value="$[.amount]">
|
||||
<div style="width: 500px; border: 1pt solid #000; padding: 3px;">
|
||||
<div><div style="display: inline-block;"><img style="width: 50px;" src="images/btglogo.png"></div>
|
||||
<div><div style="display: inline-block;"><img style="width: 50px;" src="/assets/btglogo.png"></div>
|
||||
<div style="display: inline-block;">
|
||||
<div>BARANT TECHNLOGY GROUP</div>
|
||||
<div>INVOICE</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>barant.com - JET Extension Tags</title>
|
||||
<contents>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> COMMENT</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> COMMENT</h2>
|
||||
<hr>
|
||||
<p>Use the COMMENT tag to prevent JET from recognizing and forwarding
|
||||
the contents to the output. This is not the same as an HTML command
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CONTAINER</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CONTAINER</h2>
|
||||
<hr>
|
||||
<p>Use the CONTAINER tag inside a TAG set to insert the contents of
|
||||
the define macro tag into the output stream. </p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> DATABASE</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> DATABASE</h2>
|
||||
<hr>
|
||||
<p>Use the DATABASE tag to gain access to the mySQL database specified in the tag arguments.
|
||||
Access to the database is only available inside the container of this tag.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<sectionframe title="JET Command Reference">
|
||||
|
||||
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
|
||||
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
|
||||
<hr>
|
||||
<p>Use the CALL tag to transfer control to an executable file on the
|
||||
host system. Use a fully qualified name for the executable file.</p>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate" secure="yes" loggedin="no">
|
||||
<page secure="yes" loggedin="no">
|
||||
<title>JUKEBOX</title>
|
||||
<contents>
|
||||
<script>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<if value1="$[_login_id]" value2="" type="ne">
|
||||
<div style="color: #444; margin-bottom: 3px;">Welcome $[_login_name]</div>
|
||||
<div>
|
||||
<linkbutton page="cart"><img style="margin-top: 0px; margin-right: 10px;" src="/images/shopping_cart.png" width="30px" align="center"></linkbutton>
|
||||
<linkbutton page="cart"><img style="margin-top: 0px; margin-right: 10px;" src="/assets/shopping_cart.png" width="30px" align="center"></linkbutton>
|
||||
<linkbutton process="logout" class="button">Logout</linkbutton>
|
||||
</div>
|
||||
</if>
|
||||
@@ -8,19 +8,16 @@
|
||||
<set name="login_email" value="$[login_email]">
|
||||
<set name="login_type" value="$[.type]">
|
||||
<set name="login_uuid" value="$[.uuid]">
|
||||
<if value1="$[_session_id]" value2="" type="eq">
|
||||
<createsession>
|
||||
</if>
|
||||
<setenv name="_login_id">$[login_id]</setenv>
|
||||
<setenv name="_login_name">$[login_name]</setenv>
|
||||
<setenv name="_login_email">$[login_email]</setenv>
|
||||
<setenv name="_login_type">$[login_type]</setenv>
|
||||
<setenv name="_login_uuid">$[login_uuid]</setenv>
|
||||
<sql>update users set last_login=now() where id=$[login_id]</sql>
|
||||
<if value1="$[start]" value2="" type="eq">
|
||||
<if value1="$[@start]" value2="" type="eq">
|
||||
<setpage name="account">
|
||||
<else>
|
||||
<setpage name="$[start]">
|
||||
<setpage name="$[@start]">
|
||||
</if>
|
||||
<clearenv name="start">
|
||||
<else>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>LOGIN</title>
|
||||
<contents>
|
||||
<setenv name="start">$[start:0]</setenv>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>Barant Systems</title>
|
||||
<contents>
|
||||
<sectionframe title="Log Out">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<page template="mainpagetemplate">
|
||||
<page>
|
||||
<title>BARANT Technology Group</title>
|
||||
<contents>
|
||||
<setenv name="_menubar"></setenv>
|
||||
@@ -16,7 +16,7 @@ features of an analog modular synthesizer put into a single VST3
|
||||
instrument. With the added features of polyphony and patches that
|
||||
change instantaneously this synthesizer is truly a powerhouse in the
|
||||
audio toolbox.</p>
|
||||
<a href="/vst"><img src="/images/modular1.png" style="width: 200px;" align="left"></a>
|
||||
<a href="/vst"><img src="/assets/modular1.png" style="width: 200px;" align="left"></a>
|
||||
<p>Excellent quality and technical performance provide a performance level
|
||||
instrument for musicians or students who wish to learn sound wave
|
||||
synthesis techniques or for musicians to enable that old analog sound
|
||||
|
||||