From 3df1334782ce8a7e0c2d3f2e0090796320b2939b Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Sun, 1 Mar 2026 20:10:34 -0500 Subject: [PATCH 01/16] Add TDD tests for ListView EditItemTemplate rendering (Issue #406) Write 6 bUnit tests in EditTemplateTests.razor verifying EditItemTemplate renders when EditIndex matches item index. 2 pass (negative/null edge cases), 4 fail pre-fix confirming the template swap bug described in Issue #406. Tests cover: EditIndex parameter rendering, non-matching items still using ItemTemplate, default EditIndex=-1, HandleCommand edit/cancel template swap, and EditItemTemplate null fallback. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .ai-team/agents/rogue/history.md | 18 +++ .../inbox/rogue-listview-edit-tests.md | 4 + .../ListView/EditTemplateTests.razor | 141 ++++++++++++++++++ 3 files changed, 163 insertions(+) create mode 100644 .ai-team/decisions/inbox/rogue-listview-edit-tests.md create mode 100644 src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor diff --git a/.ai-team/agents/rogue/history.md b/.ai-team/agents/rogue/history.md index 5c78a8d1b..66614daff 100644 --- a/.ai-team/agents/rogue/history.md +++ b/.ai-team/agents/rogue/history.md @@ -118,3 +118,21 @@ All 1437 tests pass (0 failures). Cyclops's auto-sync fix was already in place Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge +### ListView EditItemTemplate Rendering Tests (Issue #406) + +Wrote 6 bUnit tests in `src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor` for the EditItemTemplate rendering fix: + +1. `EditIndex_MatchingItem_RendersEditItemTemplate` — EditIndex=0 parameter, verify span.edit appears for item 0 +2. `EditIndex_NonMatchingItems_StillUseItemTemplate` — EditIndex=0, verify items 1+ still use span.display +3. `EditIndexNegativeOne_AllItemsUseItemTemplate` — default EditIndex=-1, all items use ItemTemplate ✅ +4. `HandleCommand_Edit_SwapsToEditItemTemplate` — HandleCommand("Edit") triggers template swap in DOM +5. `HandleCommand_Cancel_RestoresItemTemplate` — Start in edit mode, cancel returns to ItemTemplate +6. `EditItemTemplateNull_FallsBackToItemTemplate` — EditIndex=0 but no EditItemTemplate, falls back to ItemTemplate ✅ + +**TDD results:** 2 pass (negative/null cases), 4 fail (template swap behavior — the exact bug #406 describes). All 39 pre-existing ListView tests unaffected. + +📌 Test pattern: ListView EditItemTemplate rendering tests use CSS class selectors (`span.display` vs `span.edit`) to distinguish which template rendered for each item. This avoids fragile markup matching and clearly shows template selection per row. — Rogue + +📌 Edge case: ListView.razor line 59 has the correct template selection logic (`EditIndex >= 0 && dataItemIndex == EditIndex && EditItemTemplate != null`) but it doesn't produce the expected DOM output when EditIndex is set via parameter. The bug is in the rendering pipeline, not the conditional logic. Tests confirm this — `theListView.EditIndex` is correctly set but the rendered HTML doesn't reflect it. — Rogue + +📌 Test pattern: For HandleCommand-based tests, use `cut.InvokeAsync(() => theListView.HandleCommand(...))` pattern (from CrudEvents.razor) to ensure Blazor dispatcher context. Verify DOM state with `cut.FindAll()` AFTER the invoke, not just property values. — Rogue diff --git a/.ai-team/decisions/inbox/rogue-listview-edit-tests.md b/.ai-team/decisions/inbox/rogue-listview-edit-tests.md new file mode 100644 index 000000000..c36df9e4b --- /dev/null +++ b/.ai-team/decisions/inbox/rogue-listview-edit-tests.md @@ -0,0 +1,4 @@ +### 2026-03-01: ListView EditItemTemplate TDD tests use CSS class selectors for template identification +**By:** Rogue +**What:** Created `EditTemplateTests.razor` with 6 tests for Issue #406. Tests use `span.display` and `span.edit` CSS classes to identify which template (ItemTemplate vs EditItemTemplate) rendered for each row. 4 tests intentionally fail pre-fix (TDD), 2 pass for negative/null edge cases. +**Why:** Previous CrudEvents.razor tests only verified `EditIndex` property values, not the actual rendered DOM. The new tests verify the **visual template swap** — which is the actual user-facing bug. CSS class selectors are stable, readable, and clearly communicate which template owns each row. Cyclops should ensure the fix makes all 6 tests pass. diff --git a/src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor b/src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor new file mode 100644 index 000000000..1cebc2590 --- /dev/null +++ b/src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor @@ -0,0 +1,141 @@ +@using BlazorWebFormsComponents.Enums + +@code { + + ListView theListView; + + // Event tracking + ListViewEditEventArgs _editingArgs; + ListViewCancelEventArgs _cancelingArgs; + + [Fact] + public void EditIndex_MatchingItem_RendersEditItemTemplate() + { + // Set EditIndex=0 via parameter — the first item should render EditItemTemplate + int editIdx = 0; + var cut = Render(@ + @Item.Name + EDITING @Item.Name + ); + + // Item 0 should use EditItemTemplate + var editSpans = cut.FindAll("span.edit"); + editSpans.Count.ShouldBe(1); + editSpans[0].TextContent.ShouldContain("EDITING"); + editSpans[0].TextContent.ShouldContain("First Widget"); + } + + [Fact] + public void EditIndex_NonMatchingItems_StillUseItemTemplate() + { + // EditIndex=0 — items 1+ should still render via ItemTemplate + int editIdx = 0; + var cut = Render(@ + @Item.Name + EDITING @Item.Name + ); + + // All items except item 0 should use ItemTemplate + var displaySpans = cut.FindAll("span.display"); + displaySpans.Count.ShouldBe(Widget.SimpleWidgetList.Length - 1); + + // Only one item in edit mode + cut.FindAll("span.edit").Count.ShouldBe(1); + } + + [Fact] + public void EditIndexNegativeOne_AllItemsUseItemTemplate() + { + // Default EditIndex=-1 — no items should be in edit mode + var cut = Render(@ + @Item.Name + EDITING + ); + + cut.FindAll("span.display").Count.ShouldBe(Widget.SimpleWidgetList.Length); + cut.FindAll("span.edit").Count.ShouldBe(0); + } + + [Fact] + public void HandleCommand_Edit_SwapsToEditItemTemplate() + { + // After HandleCommand("edit"), the edited row should render EditItemTemplate + var cut = Render(@ + @Item.Name + EDITING @Item.Name + ); + + // Before edit — all items in display mode + cut.FindAll("span.edit").Count.ShouldBe(0); + + // Trigger edit on item 1 + cut.InvokeAsync(() => theListView.HandleCommand("Edit", null, 1)); + + // After edit — item 1 should be in edit mode + var editSpans = cut.FindAll("span.edit"); + editSpans.Count.ShouldBe(1); + editSpans[0].TextContent.ShouldContain("Second Widget"); + + // Other items should remain in display mode + cut.FindAll("span.display").Count.ShouldBe(Widget.SimpleWidgetList.Length - 1); + } + + [Fact] + public void HandleCommand_Cancel_RestoresItemTemplate() + { + // Start with item 1 in edit mode, then cancel — should go back to ItemTemplate + int editIdx = 1; + var cut = Render(@ + @Item.Name + EDITING @Item.Name + ); + + // Verify edit mode is active first + cut.FindAll("span.edit").Count.ShouldBe(1); + + // Cancel editing + cut.InvokeAsync(() => theListView.HandleCommand("Cancel", null, 1)); + + // All items should be back to display mode + cut.FindAll("span.edit").Count.ShouldBe(0); + cut.FindAll("span.display").Count.ShouldBe(Widget.SimpleWidgetList.Length); + } + + [Fact] + public void EditItemTemplateNull_FallsBackToItemTemplate() + { + // Even with EditIndex=0, if no EditItemTemplate is provided, ItemTemplate is used + int editIdx = 0; + var cut = Render(@ + @Item.Name + ); + + // All items should use ItemTemplate since EditItemTemplate is null + cut.FindAll("span.display").Count.ShouldBe(Widget.SimpleWidgetList.Length); + } + + // Event handlers + void OnEditing(ListViewEditEventArgs args) => _editingArgs = args; + void OnCanceling(ListViewCancelEventArgs args) => _cancelingArgs = args; +} From 0fbff386683b15a6450364ad4c2a9227aeeafd87 Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Sun, 1 Mar 2026 20:25:33 -0500 Subject: [PATCH 02/16] Fix ListView EditItemTemplate not rendering when EditIndex changes (#406) The template selection logic and even/odd toggle were inside CascadingValue's ChildContent, which is a deferred RenderFragment. Variables like dataItemIndex captured by this closure had their final loop value (item count) instead of the per-iteration value when the CascadingValue rendered. Moved template selection and even/odd toggle before the CascadingValue so they execute during BuildRenderTree when dataItemIndex has the correct value per iteration. Also updated the CrudEvents test to assert actual template rendering instead of documenting the gap. Closes #406 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ListView/CrudEvents.razor | 14 ++++++++------ src/BlazorWebFormsComponents/ListView.razor | 8 +++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor b/src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor index 279e216ca..d95d8879d 100644 --- a/src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor +++ b/src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor @@ -134,8 +134,7 @@ public void EditItemTemplate_RendersWhenEditIndexMatchesItemIndex() { // Verify that the HandleCommand("Edit") properly sets EditIndex and the re-render - // shows EditItemTemplate. This test uses HandleCommand since parameter-only - // EditIndex changes aren't fully re-evaluated by the ListView's Razor template. + // shows EditItemTemplate. var widgets = Widget.SimpleWidgetList; var cut = Render(@= 0 && dataItemIndex == EditIndex && EditItemTemplate != null) + ? EditItemTemplate : oddOrEvenTemplate(even); + even = !even; - @{ - var currentTemplate = (EditIndex >= 0 && dataItemIndex == EditIndex && EditItemTemplate != null) - ? EditItemTemplate : oddOrEvenTemplate(even); - } @currentTemplate(item) - @{ even = !even; } if (ItemSeparatorTemplate != null) { From e0c92a68e8ca814630bac907fec910109ca67f51 Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Sun, 1 Mar 2026 20:26:59 -0500 Subject: [PATCH 03/16] Update Cyclops history and decision inbox for #406 fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .ai-team/agents/cyclops/history.md | 7 +++++++ .ai-team/decisions/inbox/cyclops-listview-editindex-fix.md | 4 ++++ 2 files changed, 11 insertions(+) create mode 100644 .ai-team/decisions/inbox/cyclops-listview-editindex-fix.md diff --git a/.ai-team/agents/cyclops/history.md b/.ai-team/agents/cyclops/history.md index 9169844d9..811fee0f7 100644 --- a/.ai-team/agents/cyclops/history.md +++ b/.ai-team/agents/cyclops/history.md @@ -97,3 +97,10 @@ Team update (2026-02-28): GetCssClassOrNull() uses IsNullOrEmpty not IsNullOrWhi Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge +### Issue #406 — ListView EditItemTemplate Closure Bug (2026-03-01) + +- **Root cause:** In `ListView.razor`, the template selection logic (`EditIndex >= 0 && dataItemIndex == EditIndex`) and even/odd toggle (`even = !even`) were inside ``'s ChildContent — a deferred RenderFragment. The `dataItemIndex` variable was declared outside the foreach loop and captured by the closure. Since CascadingValue components render their ChildContent AFTER the parent's BuildRenderTree completes, all closures saw the final loop value (item count) instead of the per-iteration value. +- **Fix:** Moved template selection and even/odd toggle from inside the CascadingValue's ChildContent to before the CascadingValue element. These expressions now execute during BuildRenderTree when `dataItemIndex` has the correct per-iteration value. The resolved `currentTemplate` variable is captured correctly by the closure since it's a new local each iteration. +- **Key files:** `src/BlazorWebFormsComponents/ListView.razor` (lines 57-61), `src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor`, `src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor` +- **Pattern:** In Blazor Razor templates, NEVER reference loop-external mutable variables inside a component's ChildContent (CascadingValue, etc.). Either capture values in loop-local variables before the component, or evaluate expressions before the component tag. This applies to any `@{code using loop var}` pattern. +- **Lesson:** `foreach` iteration variables are safe in closures (new per iteration since C# 5), but variables declared outside the loop body are shared across all closures. Blazor components defer ChildContent rendering, so loop-external variables will have their final values. diff --git a/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md b/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md new file mode 100644 index 000000000..7a33a4595 --- /dev/null +++ b/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md @@ -0,0 +1,4 @@ +### 2026-03-01: Blazor CascadingValue ChildContent defers loop variable evaluation — never use loop-external mutable variables inside component ChildContent +**By:** Cyclops +**What:** Fixed ListView EditItemTemplate not rendering by moving template selection and even/odd toggle from inside ``'s ChildContent to before the CascadingValue tag. The `dataItemIndex` loop counter was captured by the deferred ChildContent closure, causing all items to see the final loop value instead of the per-iteration value. +**Why:** In Blazor, component ChildContent (``, custom components, etc.) is rendered AFTER the parent's BuildRenderTree completes. Any mutable variables from enclosing scopes will have their final values by that point. This is a C# closure semantics issue — foreach iteration variables (like `item`) are safe (new per iteration since C# 5), but variables declared outside the loop are shared. This pattern affects any data control that uses `` or similar components inside iteration loops. The grouped rendering path in ListView may have the same latent issue if EditIndex is used there. From 904458070f1e96771bdc894c0c16d7889a239c3b Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Sun, 1 Mar 2026 20:32:40 -0500 Subject: [PATCH 04/16] Fix ListView EditItemTemplate not rendering on EditIndex change (#406) Add @key="dataItemIndex" to CascadingValue elements in ListView.razor's foreach loops (both non-grouped and grouped paths). Without @key, Blazor's positional diff did not detect template swaps when EditIndex changed because the CascadingValue structure looked identical to the diff engine. Closes #406 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .ai-team/agents/cyclops/history.md | 7 +++++++ .ai-team/decisions/inbox/cyclops-listview-editindex-fix.md | 7 ++++--- src/BlazorWebFormsComponents/ListView.razor | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/.ai-team/agents/cyclops/history.md b/.ai-team/agents/cyclops/history.md index 811fee0f7..7effb40dc 100644 --- a/.ai-team/agents/cyclops/history.md +++ b/.ai-team/agents/cyclops/history.md @@ -97,6 +97,13 @@ Team update (2026-02-28): GetCssClassOrNull() uses IsNullOrEmpty not IsNullOrWhi Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge +### Issue #406 — ListView EditItemTemplate Not Rendering (2026-03-02) + +- **Bug:** Clicking Edit in a ListView with EditItemTemplate fired the ItemEditing event and set EditIndex correctly, but the ListView did not visually swap from ItemTemplate to EditItemTemplate. +- **Root cause:** The `` elements wrapping each item in the `foreach` loop lacked `@key` directives. Without `@key`, Blazor's positional diff algorithm could not reliably detect that a specific row's template changed from `ItemTemplate` to `EditItemTemplate` when `EditIndex` changed, because the surrounding structure (CascadingValue with same Name/Value shape) looked identical to the diff engine. +- **Fix:** Added `@key="dataItemIndex"` to both `` elements in `ListView.razor` — the non-grouped rendering path (line 60) and the grouped rendering path (line 105). This forces Blazor to track each row by its data index, ensuring template swaps are detected and re-rendered. +- **Lesson:** Always add `@key` to elements inside loops where the rendered content can change based on external state (like EditIndex, SelectedIndex). Without `@key`, Blazor's positional diffing may skip re-rendering rows where only the template selection changed but the data stayed the same. This applies to any data-bound component (GridView, DetailsView, etc.) that uses template switching inside iteration loops. + ### Issue #406 — ListView EditItemTemplate Closure Bug (2026-03-01) - **Root cause:** In `ListView.razor`, the template selection logic (`EditIndex >= 0 && dataItemIndex == EditIndex`) and even/odd toggle (`even = !even`) were inside ``'s ChildContent — a deferred RenderFragment. The `dataItemIndex` variable was declared outside the foreach loop and captured by the closure. Since CascadingValue components render their ChildContent AFTER the parent's BuildRenderTree completes, all closures saw the final loop value (item count) instead of the per-iteration value. diff --git a/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md b/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md index 7a33a4595..375905b67 100644 --- a/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md +++ b/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md @@ -1,4 +1,5 @@ -### 2026-03-01: Blazor CascadingValue ChildContent defers loop variable evaluation — never use loop-external mutable variables inside component ChildContent +### ListView EditItemTemplate rendering fix (Issue #406) **By:** Cyclops -**What:** Fixed ListView EditItemTemplate not rendering by moving template selection and even/odd toggle from inside ``'s ChildContent to before the CascadingValue tag. The `dataItemIndex` loop counter was captured by the deferred ChildContent closure, causing all items to see the final loop value instead of the per-iteration value. -**Why:** In Blazor, component ChildContent (``, custom components, etc.) is rendered AFTER the parent's BuildRenderTree completes. Any mutable variables from enclosing scopes will have their final values by that point. This is a C# closure semantics issue — foreach iteration variables (like `item`) are safe (new per iteration since C# 5), but variables declared outside the loop are shared. This pattern affects any data control that uses `` or similar components inside iteration loops. The grouped rendering path in ListView may have the same latent issue if EditIndex is used there. +**What:** Added `@key="dataItemIndex"` to the `` elements wrapping each item's template in `ListView.razor` — both in the non-grouped path (line 60) and the grouped path (line 105). This ensures Blazor's diff algorithm tracks each item by its data index, forcing correct re-evaluation of template selection when `EditIndex` changes. +**Why:** Without `@key`, Blazor uses positional diffing in the `foreach` loop. When `EditIndex` changes (e.g., from -1 to 1), the template selection at line 57 switches from `ItemTemplate` to `EditItemTemplate` for one row. However, since the items themselves don't change (same list, same count), Blazor's positional diff may not detect that a specific row's template changed — the `CascadingValue` at that position looks structurally similar. Adding `@key="dataItemIndex"` forces Blazor to identify each row by index, ensuring template swaps are always detected and re-rendered. +**Impact:** All 1443 tests pass including all 6 EditTemplate tests. No changes to sample pages or ListView.razor.cs. Minimal two-line change in ListView.razor. diff --git a/src/BlazorWebFormsComponents/ListView.razor b/src/BlazorWebFormsComponents/ListView.razor index d9d35f294..33d72926f 100644 --- a/src/BlazorWebFormsComponents/ListView.razor +++ b/src/BlazorWebFormsComponents/ListView.razor @@ -57,7 +57,7 @@ else var currentTemplate = (EditIndex >= 0 && dataItemIndex == EditIndex && EditItemTemplate != null) ? EditItemTemplate : oddOrEvenTemplate(even); even = !even; - + @currentTemplate(item) if (ItemSeparatorTemplate != null) @@ -102,7 +102,7 @@ else { DataItem = item }; - + @builderTemplate(item) From 010be03a406b235fa33773d401001660080a885e Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Mon, 2 Mar 2026 09:25:44 -0500 Subject: [PATCH 05/16] docs(ai-team): log M22 planning session, merge decisions Session: 2026-03-02-m22-planning-release Requested by: Jeffrey T. Fritz Changes: - Logged session to .ai-team/log/2026-03-02-m22-planning-release.md - Merged Forge M22 planning decision from inbox - Merged Cyclops ListView EditItemTemplate fix decision from inbox - Merged Rogue ListView EditTemplate TDD tests decision from inbox - Propagated M22 planning updates to agent histories Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .ai-team/agents/beast/history.md | 3 + .ai-team/agents/colossus/history.md | 3 + .ai-team/agents/cyclops/history.md | 3 + .ai-team/agents/forge/history.md | 21 +++++++ .ai-team/agents/jubilee/history.md | 3 + .ai-team/agents/rogue/history.md | 3 + .ai-team/decisions.md | 63 +++++++++++++++++++ .../copilot-directive-20260302-wingtip.md | 4 ++ .../inbox/cyclops-listview-editindex-fix.md | 5 -- .../inbox/rogue-listview-edit-tests.md | 4 -- 10 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 .ai-team/decisions/inbox/copilot-directive-20260302-wingtip.md delete mode 100644 .ai-team/decisions/inbox/cyclops-listview-editindex-fix.md delete mode 100644 .ai-team/decisions/inbox/rogue-listview-edit-tests.md diff --git a/.ai-team/agents/beast/history.md b/.ai-team/agents/beast/history.md index 7e3e344e2..d3998abd9 100644 --- a/.ai-team/agents/beast/history.md +++ b/.ai-team/agents/beast/history.md @@ -77,3 +77,6 @@ Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/agents/colossus/history.md b/.ai-team/agents/colossus/history.md index 9cab40930..9c980d458 100644 --- a/.ai-team/agents/colossus/history.md +++ b/.ai-team/agents/colossus/history.md @@ -52,3 +52,6 @@ Added 5 smoke tests (Timer, UpdatePanel, UpdateProgress, ScriptManager, Substitu 📌 Team update (2026-03-02): CascadedTheme (not Theme) is the cascading parameter name on BaseWebFormsComponent — decided by Cyclops Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/agents/cyclops/history.md b/.ai-team/agents/cyclops/history.md index 7effb40dc..cf340a2ed 100644 --- a/.ai-team/agents/cyclops/history.md +++ b/.ai-team/agents/cyclops/history.md @@ -111,3 +111,6 @@ Team update (2026-02-28): GetCssClassOrNull() uses IsNullOrEmpty not IsNullOrWhi - **Key files:** `src/BlazorWebFormsComponents/ListView.razor` (lines 57-61), `src/BlazorWebFormsComponents.Test/ListView/EditTemplateTests.razor`, `src/BlazorWebFormsComponents.Test/ListView/CrudEvents.razor` - **Pattern:** In Blazor Razor templates, NEVER reference loop-external mutable variables inside a component's ChildContent (CascadingValue, etc.). Either capture values in loop-local variables before the component, or evaluate expressions before the component tag. This applies to any `@{code using loop var}` pattern. - **Lesson:** `foreach` iteration variables are safe in closures (new per iteration since C# 5), but variables declared outside the loop body are shared across all closures. Blazor components defer ChildContent rendering, so loop-external variables will have their final values. + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/agents/forge/history.md b/.ai-team/agents/forge/history.md index f0eaa6754..c94148fef 100644 --- a/.ai-team/agents/forge/history.md +++ b/.ai-team/agents/forge/history.md @@ -170,3 +170,24 @@ Line-by-line classification: DataList (110 lines), GridView (33 lines), ListView - `docs.yml` deploy guard: `github.event_name != 'pull_request' && (endsWith(github.ref, 'main') || steps.prepare.outputs.release == 'true')` Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) + +### Summary: M22 Planning — Copilot-Led Migration Showcase (2026-03-02) + +**By:** Forge +**What:** Comprehensive plan for M22 strategic milestone. 12 work items across 4 waves. Targets a live demo where Jeff migrates a Web Forms app to Blazor using Copilot + BWFC in under 30 minutes. + +**Component inventory assessment:** 57 total controls (51 functional, 6 stubs/deferred). ~35 are Tier 1 demo-ready with high migration fidelity. All 16 core demo controls (Button, TextBox, GridView, validators, etc.) are ready — no blocking component work needed. + +**Key scope decisions:** +- Use existing BeforeWebForms sample (curate 6-8 pages, not build from scratch) +- Create separate `.github/copilot-migration-instructions.md` for migration guidance (distinct from library dev instructions) +- Skins & Themes (#369) OUT — CssClass styling sufficient for demo +- AJAX Toolkit extenders (#297) OUT — not core WF controls +- ListView CRUD (#356) partially in — 4 essential events only if demo needs them +- ListView EditItemTemplate bug (#406) IN — real bug, fix regardless +- New migration walkthrough doc, before/after comparison, demo script, integration test + +**Files:** `planning-docs/MILESTONE22-COPILOT-MIGRATION-SHOWCASE.md`, `.ai-team/decisions/inbox/forge-m22-copilot-migration-plan.md` + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/agents/jubilee/history.md b/.ai-team/agents/jubilee/history.md index 6b3433581..3ba08f24c 100644 --- a/.ai-team/agents/jubilee/history.md +++ b/.ai-team/agents/jubilee/history.md @@ -57,3 +57,6 @@ Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/agents/rogue/history.md b/.ai-team/agents/rogue/history.md index 66614daff..7220faf69 100644 --- a/.ai-team/agents/rogue/history.md +++ b/.ai-team/agents/rogue/history.md @@ -136,3 +136,6 @@ Wrote 6 bUnit tests in `src/BlazorWebFormsComponents.Test/ListView/EditTemplateT 📌 Edge case: ListView.razor line 59 has the correct template selection logic (`EditIndex >= 0 && dataItemIndex == EditIndex && EditItemTemplate != null`) but it doesn't produce the expected DOM output when EditIndex is set via parameter. The bug is in the rendering pipeline, not the conditional logic. Tests confirm this — `theListView.EditIndex` is correctly set but the rendered HTML doesn't reflect it. — Rogue 📌 Test pattern: For HandleCommand-based tests, use `cut.InvokeAsync(() => theListView.HandleCommand(...))` pattern (from CrudEvents.razor) to ensure Blazor dispatcher context. Verify DOM state with `cut.FindAll()` AFTER the invoke, not just property values. — Rogue + + + Team update (2026-03-02): M22 Copilot-Led Migration Showcase planned decided by Forge diff --git a/.ai-team/decisions.md b/.ai-team/decisions.md index 2ddf68ab3..cc8f16556 100644 --- a/.ai-team/decisions.md +++ b/.ai-team/decisions.md @@ -3918,3 +3918,66 @@ Wave 3 (after Wave 2): *— Forge, Lead / Web Forms Reviewer* *"Sub-component styles are the whole game. Without HeaderStyle on GridView, theming is a toy demo."* + +### ListView EditItemTemplate rendering fix (Issue #406) +**By:** Cyclops +**What:** Added `@key="dataItemIndex"` to the `` elements wrapping each item's template in `ListView.razor` — both in the non-grouped path (line 60) and the grouped path (line 105). This ensures Blazor's diff algorithm tracks each item by its data index, forcing correct re-evaluation of template selection when `EditIndex` changes. +**Why:** Without `@key`, Blazor uses positional diffing in the `foreach` loop. When `EditIndex` changes (e.g., from -1 to 1), the template selection at line 57 switches from `ItemTemplate` to `EditItemTemplate` for one row. However, since the items themselves don't change (same list, same count), Blazor's positional diff may not detect that a specific row's template changed — the `CascadingValue` at that position looks structurally similar. Adding `@key="dataItemIndex"` forces Blazor to identify each row by index, ensuring template swaps are always detected and re-rendered. +**Impact:** All 1443 tests pass including all 6 EditTemplate tests. No changes to sample pages or ListView.razor.cs. Minimal two-line change in ListView.razor. + + +### 2026-03-02: M22 — Copilot-Led Migration Showcase plan +**By:** Forge +**What:** Comprehensive plan for M22 focusing on demonstrating BlazorWebFormsComponents value through Copilot-guided migration +**Why:** Jeff wants to show these components provide significant value as part of a Copilot-led migration workflow + +#### Summary + +M22 is a strategic milestone that repositions BlazorWebFormsComponents from a component library into a **migration platform**. The plan delivers 12 work items across 4 waves: + +**Wave 1 (Critical):** Reference Web Forms app (curated from existing BeforeWebForms sample), Copilot migration instructions file, step-by-step migration walkthrough document. + +**Wave 2 (High):** Migrated "after" Blazor app, before/after diff document, migration docs updated to .NET 10, readiness checklist. + +**Wave 3 (Medium):** Fix ListView EditItemTemplate bug (#406), optional ListView CRUD events subset (#356 — 4 of 16 events). + +**Wave 4 (High):** Demo script with timing marks, integration test for migrated app. + +#### Key Decisions + +1. **Use existing BeforeWebForms sample as demo base** — curate 6-8 pages into a "Contoso Widgets" narrative rather than building from scratch. The 48 existing control samples provide a strong foundation. + +2. **All 16 core demo controls are already Tier 1 ready** — Button, TextBox, Label, DropDownList, CheckBox, GridView, Repeater, FormView, validators, Panel, HyperLink, Menu/SiteMapPath, ScriptManager. No blocking component work needed. + +3. **Create separate migration instructions file** (`.github/copilot-migration-instructions.md`) — distinct from the existing `copilot-instructions.md` which is for library development. Migration instructions are for library *consumption*. + +4. **Skins & Themes (#369) OUT of M22** — CssClass-based styling is sufficient for the demo. Full theming is a separate feature milestone. + +5. **AJAX Control Toolkit extenders (#297) OUT of M22** — Not core Web Forms controls. Migration guide will note they're unsupported. + +6. **ListView CRUD (#356) partially in** — Take 4 essential events (ItemEditing, ItemUpdating, ItemDeleting, ItemCanceling) only if demo includes ListView editing. Defer remaining 12. + +7. **ListView EditItemTemplate bug (#406) IN M22** — Real bug that blocks realistic ListView usage regardless of demo needs. + +#### Component Inventory Assessment + +- 57 total controls (51 functional, 6 stubs/deferred) +- ~35 controls are "Tier 1 demo-ready" with high migration fidelity +- ~10 controls are "Tier 2" with known gaps (mostly ListView events, Calendar divergences, JS-heavy nav) +- 1,367+ unit tests +- 48 BeforeWebForms sample pages, 162+ AfterBlazor sample pages + +#### Success Criteria + +Jeff can perform a live 30-minute migration demo from running Web Forms to running Blazor, with same visual appearance, using Copilot + BWFC migration instructions. A developer watching can replicate it independently. + +#### Full Plan + +See `planning-docs/MILESTONE22-COPILOT-MIGRATION-SHOWCASE.md` for complete 12-work-item plan with timeline, agent assignments, risk assessment, and control translation table. + + +### 2026-03-01: ListView EditItemTemplate TDD tests use CSS class selectors for template identification +**By:** Rogue +**What:** Created `EditTemplateTests.razor` with 6 tests for Issue #406. Tests use `span.display` and `span.edit` CSS classes to identify which template (ItemTemplate vs EditItemTemplate) rendered for each row. 4 tests intentionally fail pre-fix (TDD), 2 pass for negative/null edge cases. +**Why:** Previous CrudEvents.razor tests only verified `EditIndex` property values, not the actual rendered DOM. The new tests verify the **visual template swap** — which is the actual user-facing bug. CSS class selectors are stable, readable, and clearly communicate which template owns each row. Cyclops should ensure the fix makes all 6 tests pass. + diff --git a/.ai-team/decisions/inbox/copilot-directive-20260302-wingtip.md b/.ai-team/decisions/inbox/copilot-directive-20260302-wingtip.md new file mode 100644 index 000000000..a8253bc32 --- /dev/null +++ b/.ai-team/decisions/inbox/copilot-directive-20260302-wingtip.md @@ -0,0 +1,4 @@ +### 2026-03-02: User directive — Use WingTip Toys as M22 demo app +**By:** Jeffrey T. Fritz (via Copilot) +**What:** Do NOT build a custom "Contoso Widgets" demo app. Use the official Microsoft WingTip Toys Web Forms sample application as the M22 migration demo source. Jeff will provide a copy. +**Why:** User request — WingTip Toys is a well-known, realistic Web Forms demo that the community recognizes. More credible than a purpose-built sample. diff --git a/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md b/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md deleted file mode 100644 index 375905b67..000000000 --- a/.ai-team/decisions/inbox/cyclops-listview-editindex-fix.md +++ /dev/null @@ -1,5 +0,0 @@ -### ListView EditItemTemplate rendering fix (Issue #406) -**By:** Cyclops -**What:** Added `@key="dataItemIndex"` to the `` elements wrapping each item's template in `ListView.razor` — both in the non-grouped path (line 60) and the grouped path (line 105). This ensures Blazor's diff algorithm tracks each item by its data index, forcing correct re-evaluation of template selection when `EditIndex` changes. -**Why:** Without `@key`, Blazor uses positional diffing in the `foreach` loop. When `EditIndex` changes (e.g., from -1 to 1), the template selection at line 57 switches from `ItemTemplate` to `EditItemTemplate` for one row. However, since the items themselves don't change (same list, same count), Blazor's positional diff may not detect that a specific row's template changed — the `CascadingValue` at that position looks structurally similar. Adding `@key="dataItemIndex"` forces Blazor to identify each row by index, ensuring template swaps are always detected and re-rendered. -**Impact:** All 1443 tests pass including all 6 EditTemplate tests. No changes to sample pages or ListView.razor.cs. Minimal two-line change in ListView.razor. diff --git a/.ai-team/decisions/inbox/rogue-listview-edit-tests.md b/.ai-team/decisions/inbox/rogue-listview-edit-tests.md deleted file mode 100644 index c36df9e4b..000000000 --- a/.ai-team/decisions/inbox/rogue-listview-edit-tests.md +++ /dev/null @@ -1,4 +0,0 @@ -### 2026-03-01: ListView EditItemTemplate TDD tests use CSS class selectors for template identification -**By:** Rogue -**What:** Created `EditTemplateTests.razor` with 6 tests for Issue #406. Tests use `span.display` and `span.edit` CSS classes to identify which template (ItemTemplate vs EditItemTemplate) rendered for each row. 4 tests intentionally fail pre-fix (TDD), 2 pass for negative/null edge cases. -**Why:** Previous CrudEvents.razor tests only verified `EditIndex` property values, not the actual rendered DOM. The new tests verify the **visual template swap** — which is the actual user-facing bug. CSS class selectors are stable, readable, and clearly communicate which template owns each row. Cyclops should ensure the fix makes all 6 tests pass. From ef2f91a8a147886c1b455297f91758ad096c9f3e Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Mon, 2 Mar 2026 09:29:43 -0500 Subject: [PATCH 06/16] docs(ai-team): summarize oversized agent histories Session: 2026-03-02-m22-planning-release Requested by: Jeffrey T. Fritz Changes: - Summarized forge history.md (17KB > 10KB): M17 gate review through Themes roadmap - Summarized cyclops history.md (17KB > 12KB): M20 theming and release process - Summarized rogue history.md (13KB > 10KB): M20 theming and FontInfo tests Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .ai-team/agents/cyclops/history.md | 50 +++++----------- .ai-team/agents/forge/history.md | 94 ++---------------------------- .ai-team/agents/rogue/history.md | 53 ++--------------- 3 files changed, 25 insertions(+), 172 deletions(-) diff --git a/.ai-team/agents/cyclops/history.md b/.ai-team/agents/cyclops/history.md index cf340a2ed..36de4685c 100644 --- a/.ai-team/agents/cyclops/history.md +++ b/.ai-team/agents/cyclops/history.md @@ -58,43 +58,19 @@ Team update (2026-02-27): No-op stub property coverage 41-50% acceptable decide Team update (2026-02-27): UpdatePanel Triggers deliberately omitted decided by Forge Team update (2026-02-28): GetCssClassOrNull() uses IsNullOrEmpty not IsNullOrWhiteSpace low priority noted by Rogue Team update (2026-03-01): Skins & Themes has dual docs SkinsAndThemes.md (practical guide, update first) and ThemesAndSkins.md (architecture). Update SkinsAndThemes.md first for API changes decided by Beast - Team update (2026-03-01): D-11 through D-14 formally registered D-11 GUID IDs needs fix, D-12 boolean attrs intentional, D-13/D-14 Calendar fixes recommended decided by Forge - -### Issue #366 — Base Class Theme Integration (2026-03-01) - -- **Theme wiring moved to BaseWebFormsComponent:** Added `[CascadingParameter] ThemeConfiguration CascadedTheme` to BaseWebFormsComponent. Added `OnParametersSet` override that resolves the ControlSkin via `GetType().Name + SkinID` and calls virtual `ApplyThemeSkin(ControlSkin)`. Base implementation is no-op; BaseStyledComponent overrides to apply IStyle properties. -- **BaseStyledComponent simplified:** Removed `[CascadingParameter] Theme` and `OnParametersSet` override. Renamed `ApplySkin` to `ApplyThemeSkin` (protected override). StyleSheetTheme semantics preserved: theme sets defaults, explicit values win. -- **Property naming:** Named the cascading parameter `CascadedTheme` (not `Theme`) because `_Imports.razor` has `@inherits BaseWebFormsComponent` making ALL `.razor` files inherit from it. WebFormsPage and ThemeProvider both have their own `[Parameter] Theme` — same name would cause Blazor's "declares more than one parameter" error. -- **ThemeProvider fix:** Added `@inherits ComponentBase` to ThemeProvider.razor so it doesn't inherit BaseWebFormsComponent via _Imports.razor. ThemeProvider is infrastructure, not a Web Forms control. -- **WebFormsPage fix:** Changed `` to `Value="@(Theme ?? CascadedTheme)"` so the cascade works whether the user passes Theme explicitly or inherits it from a parent ThemeProvider. -- **Lesson:** `_Imports.razor @inherits BaseWebFormsComponent` affects ALL .razor files in the project, including infrastructure components like ThemeProvider. When adding properties to BaseWebFormsComponent, check for name conflicts with every .razor component's @code block. -- **Lesson:** C# `virtual`/`override` on properties with different attributes ([CascadingParameter] vs [Parameter]) does NOT work for Blazor — reflection returns the base class's attribute, not the override's. Use different property names instead. - -### FontInfo Name/Names Auto-Sync Fix (2026-03-01) - -- **FontInfo auto-sync:** Converted `Name` and `Names` from auto-properties to backing-field properties with bidirectional sync. Setting `Name` also sets `Names` (single value). Setting `Names` also sets `Name` (first comma-separated entry, trimmed). Setting either to null/empty clears both. Matches ASP.NET Web Forms `FontInfo` behavior. -- **ApplyThemeSkin guard:** Updated `BaseStyledComponent.ApplyThemeSkin` to check both `Font.Name` AND `Font.Names` are empty before applying theme font. Prevents theme from overriding an explicitly set `Names` value. -- **Root cause:** `ApplyThemeSkin` set `Font.Name` but `HasStyleExtensions.ToStyle()` reads `Font.Names` for `font-family`. Without auto-sync, theme fonts were silently lost. -- **Lesson:** When Web Forms has paired/synced properties (Name↔Names, Value↔SelectedValue, etc.), our Blazor equivalents must replicate the sync behavior or the rendering pipeline breaks at property boundaries. - -### CI/CD Unified Release Process (2026-03-02) - -- **Unified release.yml:** Created `.github/workflows/release.yml` triggered on `release: published`. Single workflow coordinates all release artifacts: NuGet publish, Docker build+push to GHCR, docs deploy to GitHub Pages, demo builds with release attachment. All jobs extract version from `github.event.release.tag_name` stripping the `v` prefix, ensuring every artifact gets the same version. -- **Version extraction pattern:** Use `${{ github.event.release.tag_name }}` (not `${{ github.ref_name }}`) for release events. Strip `v` prefix via bash `${VERSION#v}` and write to `$GITHUB_ENV` for use across steps. -- **NuGet version override:** Pass both `-p:PackageVersion=$VERSION` and `-p:Version=$VERSION` to `dotnet pack` and `dotnet build` respectively, overriding NBGV-computed versions with the exact release tag version. -- **Secret-gating pattern:** Use `env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}` at step level, then `if: env.NUGET_API_KEY != ''` — this is the GitHub Actions idiom for conditional steps based on secret availability. -- **gh CLI in workflows:** Set `GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}` as env var for `gh release upload` commands. -- **Docker image tags lowercase:** Registry/image path must be lowercase: `ghcr.io/fritzandfriends/blazorwebformscomponents/serversidesamples`. -- **deploy-server-side.yml refactored:** Removed `push: branches: [main]` trigger and path filters. Now `workflow_dispatch` only — emergency manual escape hatch. -- **nuget.yml refactored:** Removed `push: tags: [v*]` trigger. Now `workflow_dispatch` with version input — emergency manual NuGet republish. -- **docs.yml fix:** Replaced deprecated `echo ::set-output name=release::${RELEASE}` with `echo "release=${RELEASE}" >> "$GITHUB_OUTPUT"`. Kept push-to-main deploy for doc-only changes between releases. -- **demo.yml versioned artifacts:** Added NBGV version computation step. Artifact names now include version: `demo-server-side-${{ steps.nbgv.outputs.version }}`. -- **version.json:** Changed from `"version": "0.17"` (2-segment) to `"version": "0.17.0"` (3-segment SemVer). NBGV now computes clean 3-segment versions matching our tag format. -- **NBGV key lesson:** NBGV ignores git tags entirely — it reads `version.json` for major.minor and computes patch from git height. Tags are informational; `version.json` must be kept in sync. For releases, override NBGV output with explicit `-p:Version=` from the tag. -- **Workflow dependency order:** release.yml uses `needs:` to enforce: build-and-test → [publish-nuget, deploy-docker, deploy-docs, build-demos] (fan-out after gate job). -- **Lesson:** GitHub Actions `$GITHUB_OUTPUT` replaced `::set-output` (deprecated Oct 2022). Always use `echo "key=value" >> "$GITHUB_OUTPUT"` for step outputs. - - Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) + + + +### M20 Theming & Release Process Summary (2026-03-01 through 2026-03-02) + +**Issue #366 theme wiring:** Moved CascadingParameter ThemeConfiguration to BaseWebFormsComponent (named CascadedTheme to avoid Blazor duplicate-parameter error from _Imports.razor). ApplySkin renamed to ApplyThemeSkin (virtual override chain). ThemeProvider got @inherits ComponentBase to exclude from BaseWebFormsComponent inheritance. WebFormsPage cascades Theme ?? CascadedTheme. Lesson: _Imports.razor @inherits affects ALL .razor files including infrastructure components. + +**FontInfo auto-sync:** Name and Names converted to backing-field properties with bidirectional sync (setting Name updates Names and vice versa). ApplyThemeSkin guard checks both Font.Name AND Font.Names before applying theme font. Root cause: ApplyThemeSkin set Font.Name but ToStyle() reads Font.Names. Lesson: paired/synced Web Forms properties must replicate sync behavior. + +**Unified release.yml:** Single workflow on release:published coordinates NuGet + Docker + GHCR + docs + demos. Version from tag_name stripping v prefix. NuGet override: -p:PackageVersion + -p:Version. version.json changed to 3-segment SemVer (0.17.0). deploy-server-side.yml and nuget.yml refactored to workflow_dispatch-only. docs.yml fixed deprecated ::set-output. NBGV ignores git tags -- reads version.json only. + +Team updates: Unified release process (PR #408), Skins & Themes roadmap (3 waves, 15 WIs). + Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge ### Issue #406 — ListView EditItemTemplate Not Rendering (2026-03-02) diff --git a/.ai-team/agents/forge/history.md b/.ai-team/agents/forge/history.md index c94148fef..762c2d96d 100644 --- a/.ai-team/agents/forge/history.md +++ b/.ai-team/agents/forge/history.md @@ -44,100 +44,18 @@ Line-by-line classification: DataList (110 lines), GridView (33 lines), ListView Team update (2026-02-27): M17 sample pages created for Timer, UpdatePanel, UpdateProgress, ScriptManager, Substitution. Default.razor filenames. ComponentCatalog already populated decided by Jubilee -### Summary: M17 AJAX Controls Gate Review (2026-02-28) + -**By:** Forge -**What:** Full Web Forms fidelity review of all 6 M17 controls (Timer, ScriptManager, ScriptManagerProxy, UpdatePanel, UpdateProgress, Substitution) against .NET Framework 4.8 API documentation. - -**Verdict: APPROVE WITH NOTES** — All 6 controls pass for PR. Four minor fidelity notes for follow-up: - -1. **ScriptManager `EnablePartialRendering` default** — Web Forms defaults to `true`, Blazor stub defaults to `false` (bare bool). No functional impact (no-op stub), but fidelity gap if property is read. -2. **ScriptManager missing `Scripts` property** — Web Forms ScriptManager has a `Scripts` collection (ScriptReferenceCollection). Only ScriptManagerProxy has it in the Blazor implementation. Low-priority since ScriptManager is a no-op stub. -3. **UpdateProgress `CssClass` not rendered** — Inherits BaseStyledComponent so accepts CssClass parameter, but the .razor template doesn't apply it to the `
` output. Migrating `` would silently drop the class. -4. **UpdateProgress non-dynamic layout style** — Renders `visibility:hidden` but Web Forms renders `display:block;visibility:hidden`. Functionally identical (div is block by default) but not byte-identical. - -**What passed clean:** -- All 6 component names match Web Forms originals exactly -- Timer: Interval (60000 default), Enabled (inherited), OnTick event — all correct -- ScriptManager/Proxy: correct as no-op stubs with BaseWebFormsComponent -- UpdatePanel: RenderMode (Block=div, Inline=span), UpdateMode, ChildrenAsTriggers — all correct. ChildContent instead of ContentTemplate is intentional per Blazor conventions. -- UpdateProgress: AssociatedUpdatePanelID, DisplayAfter (500), DynamicLayout (true), ProgressTemplate — all correct -- Substitution: MethodName preserved for migration, SubstitutionCallback for Blazor, no wrapper element — all correct -- All 3 enums (ScriptMode, UpdatePanelRenderMode, UpdatePanelUpdateMode) match Web Forms values exactly with correct int assignments -- ComponentCatalog properly categorizes AJAX and Migration Helper controls -- Base class choices appropriate: stubs use BaseWebFormsComponent, UpdateProgress uses BaseStyledComponent (has CssClass in WF) - -**Key pattern learned:** AJAX controls split cleanly into two categories: (1) functional components that change Blazor behavior (Timer, UpdatePanel, UpdateProgress) and (2) pure migration stubs that render nothing (ScriptManager, ScriptManagerProxy, Substitution). The stub pattern is sound — accept-but-ignore properties to prevent compilation errors during migration. - -### Summary: M17 Formal Fidelity Audit (2026-02-28) - -**By:** Forge -**What:** Full Web Forms fidelity audit of all 6 M17 controls against Microsoft Learn .NET Framework 4.8.1 API documentation. Report saved to `planning-docs/M17-CONTROL-AUDIT.md`. +### M17-M18 Audit & Themes Roadmap Summary (2026-02-28 through 2026-03-01) -**Property coverage by control:** -- Timer: 2/2 (100%) — Interval, Enabled. OnTick event 1/1. -- ScriptManager: 7/17 (41%) — Appropriate for no-op stub. Only declarative-markup properties needed. -- ScriptManagerProxy: 2/4 core (50%) — Scripts and Services collections present. Service manager properties omitted (no Blazor equivalent). -- UpdatePanel: 4/5 (80%) — Only `Triggers` missing (unnecessary in Blazor's rendering model). ContentTemplate→ChildContent is intentional adaptation. -- UpdateProgress: 4/4 (100%) — All control-specific properties present with correct defaults. -- Substitution: 1/1 (100%) — MethodName preserved, SubstitutionCallback added as Blazor adaptation. +**M17 gate review:** All 6 AJAX controls approved with notes. Property coverage: Timer 100%, UpdateProgress 100%, UpdatePanel 80%, ScriptManager 41% (appropriate for no-op stub), Substitution 100%. 5 follow-up fidelity fixes all resolved in PR #402 (EnablePartialRendering default, Scripts collection, CssClass rendering, display:block, ScriptReference properties). Key pattern: AJAX controls split into functional (Timer, UpdatePanel, UpdateProgress) and migration stubs (ScriptManager, ScriptManagerProxy, Substitution). Audit report: planning-docs/M17-CONTROL-AUDIT.md. -**5 follow-up issues identified:** -1. ScriptManager `EnablePartialRendering` default should be `true` (currently `false`) -2. ScriptManager missing `Scripts` collection (only on Proxy) -3. UpdateProgress `CssClass` not rendered on output `
` — medium severity -4. UpdateProgress non-dynamic mode missing `display:block;` prefix -5. ScriptReference only has 3 of ~8 WF properties +**Divergence registry D-11 to D-14:** D-11 GUID IDs (fix recommended), D-12 boolean attrs (intentional, normalize), D-13 Calendar day padding (fix recommended), D-14 Calendar style pass-through (fix progressively). File: planning-docs/DIVERGENCE-REGISTRY.md. -**All 3 enums** (ScriptMode, UpdatePanelRenderMode, UpdatePanelUpdateMode) verified as exact int-value matches with Web Forms originals. +**Skins & Themes roadmap (#369):** 3 waves, 15 work items. Sub-component styles via Dictionary on ControlSkin. ThemeMode enum (StyleSheetTheme vs Theme). 6 style container interfaces with ~41 sub-style slots. EnableTheming propagation via cascading bool. .skin parser as build-time source generator. - Team update (2026-02-27): M17 audit fixes resolved 5 fidelity issues fixed (EnablePartialRendering default, Scripts collection, CssClass rendering, display:block style, ScriptReference properties). 9 new tests, 1367 total. PR #402 decided by Forge, Cyclops +Team updates: M17 audit fixes resolved (PR #402), Skins dual docs (SkinsAndThemes.md + ThemesAndSkins.md), Normalizer pipeline codified (Issue #387). -� Team update (2026-02-27): M17 audit fix test patterns ScriptReference tested via C# instantiation, UpdateProgress CssClass tested with/without value, 9 new tests decided by Rogue - -### Summary: Divergence Registry Update D-11 through D-14 (2026-02-28) - -**By:** Forge -**What:** Added 4 new divergence entries to `planning-docs/DIVERGENCE-REGISTRY.md` based on findings from M15-M18 audit work. Issue #388. - -**New entries:** -- **D-11 (GUID-Based IDs):** CheckBox, RadioButton, RadioButtonList, FileUpload generate GUID-based IDs instead of predictable naming-hierarchy IDs. Status: Fix recommended -- GUIDs are non-deterministic and untargetable. Separate from D-01 (prefix mangling). -- **D-12 (Boolean Attribute Format):** `selected=""` (HTML5) vs `selected="selected"` (XHTML). Status: Intentional -- both are valid HTML per W3C spec. Normalizer should canonicalize. -- **D-13 (Calendar Previous-Month Day Padding):** Web Forms renders full 42-cell grid with adjacent-month days; Blazor may not fill leading cells. Status: Fix recommended -- visible structural content. -- **D-14 (Calendar Style Property Pass-Through):** Web Forms applies inline styles from TitleStyle, DayStyle, TodayDayStyle etc.; Blazor doesn't fully pass through. Status: Fix progressively. - -**Also updated:** Summary table, category definitions (added ID Generation, Attribute Format, Style), revision history, header status line. - -### Summary: Full Skins & Themes Roadmap (#369) (2026-02-28) - -**By:** Forge -**What:** Created prioritized 3-wave roadmap for full theming implementation, 15 work items total. - -**Architecture decisions:** -- Sub-component styles use `Dictionary` on `ControlSkin`, keyed by style name ("HeaderStyle", "RowStyle", etc.) -- ThemeMode enum (`StyleSheetTheme` vs `Theme`) controls priority — StyleSheetTheme = defaults, Theme = overrides -- Container-level EnableTheming propagation via dedicated cascading bool, not parent chain walking (O(1) vs O(n)) -- Runtime theme switching requires new ThemeConfiguration instance (CascadingValue reference equality) -- .skin file parser recommended as build-time source generator (works in all Blazor hosting models) -- JSON theme format is complementary to C# config, not a replacement - -**Key findings from code audit:** -- DataBound inheritance chain is correct: DataBoundComponent → BaseDataBoundComponent → BaseStyledComponent — all data controls get top-level theming automatically -- 6 style container interfaces already exist (IGridViewStyleContainer, IDetailsViewStyleContainer, IFormViewStyleContainer, ICalendarStyleContainer, IDataGridStyleContainer, IDataListStyleContainer) with ~41 total sub-style slots -- UiStyle / UiTableItemStyle classes provide sub-component style rendering infrastructure -- ControlSkin is flat (no sub-styles) — extending it is the biggest single work item - -**File paths:** -- Roadmap: `.ai-team/decisions/inbox/forge-themes-full-roadmap.md` -- Existing theming code: `src/BlazorWebFormsComponents/Theming/` (ThemeConfiguration.cs, ControlSkin.cs, ThemeProvider.razor) -- Style container interfaces: `src/BlazorWebFormsComponents/Interfaces/I*StyleContainer.cs` -- Base class wiring: `src/BlazorWebFormsComponents/BaseStyledComponent.cs` (OnParametersSet + ApplySkin) - - Team update (2026-03-01): Skins & Themes has dual docs SkinsAndThemes.md (guide) and ThemesAndSkins.md (strategy). Review both for architecture audits decided by Beast - Team update (2026-03-01): Normalizer pipeline order codified with 4 enhancements (case-insensitive, boolean attrs, empty styles, GUID IDs). Issue #387 decided by Cyclops -📌 Team update (2026-03-02): FontInfo.Name/Names now auto-synced bidirectionally (backing fields). Theme font-family renders correctly. 11 tests verify. No code changes needed elsewhere — decided by Cyclops, Rogue -📌 Team update (2026-03-02): CascadedTheme (not Theme) is the cascading parameter name on BaseWebFormsComponent. Avoids Blazor duplicate-parameter error from _Imports.razor inheritance — decided by Cyclops -📌 Team update (2026-03-02): Theming sample page uses 6-section progressive layout. BorderStyle enum needs FQN in theming code — decided by Jubilee ### Summary: Build/Version/Release Process Audit (2026-03-02) diff --git a/.ai-team/agents/rogue/history.md b/.ai-team/agents/rogue/history.md index 7220faf69..ca0568795 100644 --- a/.ai-team/agents/rogue/history.md +++ b/.ai-team/agents/rogue/history.md @@ -64,58 +64,17 @@ Key patterns: Timer parameter inheritance -- use C# API, not Razor templates. No Team update (2026-02-28): Cyclops fixed MenuItemStyle Font- attributes (SetFontsFromAttributes call in OnInitialized) and CheckBox bare input missing id attribute may warrant additional test coverage. Issue #379 confirmed already fixed in M15. -### M20 Skins & Themes Pipeline Tests (Issue #368) + -Wrote 13 bUnit end-to-end tests in `src/BlazorWebFormsComponents.Test/Theming/ThemingPipelineTests.razor` validating the ThemeProvider → BaseWebFormsComponent → BaseStyledComponent pipeline using real components (Button, Label, Panel): +### M20 Theming & FontInfo Test Summary (2026-03-01 through 2026-03-02) -1. `DefaultSkin_AppliesBackColor_ToButton` — default skin applies BackColor via `#FFDEAD` -2. `NamedSkin_AppliesVia_SkinID` — SkinID="highlight" selects named skin with BackColor + Font.Bold -3. `ExplicitValue_OverridesTheme_StyleSheetThemeSemantics` — explicit BackColor="Red" overrides theme Blue -4. `EnableThemingFalse_IgnoresTheme` — EnableTheming=false skips all theme application -5. `NoThemeProvider_WorksNormally` — Button renders normally without ThemeProvider -6. `MissingSkinID_DoesNotThrow_FallsBackGracefully` — SkinID="nonexistent" silently skips -7. `NestedThemeProvider_InnerOverridesOuter` — inner ThemeProvider wins for its children -8. `Theme_AppliesForeColor_ToPanel` — ForeColor on Panel div -9. `Theme_AppliesCssClass_ToLabel` — CssClass on Label span -10. `Theme_AppliesWidthAndHeight_ToButton` — Width/Height on Button input -11. `Theme_AppliesFontProperties_ToLabel` — Bold, Italic, Underline on Label span -12. `MultipleControlTypes_ThemedSimultaneously` — Button+Label+Panel in same ThemeProvider -13. `ExplicitCssClass_OverridesThemeCssClass` — explicit CssClass beats theme CssClass +**Skins & Themes pipeline tests (13 tests, Issue #368):** ThemingPipelineTests.razor validates ThemeProvider > BaseWebFormsComponent > BaseStyledComponent pipeline using Button/Label/Panel. Covers: default skin, named SkinID, explicit-overrides-theme, EnableTheming=false, no ThemeProvider, missing SkinID graceful, nested ThemeProvider override, ForeColor/CssClass/Width/Height/Font properties, multi-control theming. Total: 1426 tests. -Total: 1426 tests (1413 existing + 13 new), 0 failures. +**FontInfo sync tests (11 tests):** 9 unit tests (FontInfoSyncTests.cs) + 2 pipeline tests verifying Name/Names bidirectional sync. Setting Name updates Names, setting Names updates Name (first entry). Null/empty clears both. Last-write-wins semantics. Pipeline tests confirm theme Font.Name renders font-family via auto-sync. Total: 1437 tests. -📌 Bug found: `ApplyThemeSkin` sets `Font.Name` but the style builder reads `Font.Names` for `font-family` rendering. Theme font-family does not render. Not blocking — deferred to M11 skin implementation. — Rogue +Key patterns: Button=input, Label=span, Panel=div for theme tests. Missing SkinID returns null (no skin, not even default). FontInfo sync tests are pure C# (no bUnit). Theme font-family pipeline: ApplyThemeSkin sets Font.Name > auto-sync > Font.Names > style builder renders. -📌 Test pattern: Button renders as ``, Label as ``, Panel as `
`. For theme pipeline tests, use `cut.Find("input")`, `cut.Find("span")`, `cut.Find("div")` respectively. Style attribute contains CSS properties like `background-color:Red`, `color:Blue`, `font-weight:bold`. — Rogue - -📌 Test pattern: Missing SkinID (named skin not registered) returns null from `GetSkin()` — no skin applied at all, not even the default skin for that control type. This is by design per Jeff's decision. — Rogue - -### FontInfo Name/Names Auto-Sync Tests - -Wrote 11 tests (9 unit + 2 pipeline) validating the FontInfo Name/Names auto-sync fix by Cyclops: - -**FontInfoSyncTests.cs (9 unit tests):** -1. `SettingName_UpdatesNames` — Name="Arial" → Names="Arial" -2. `SettingNames_UpdatesName_ToFirstFont` — Names="Verdana" → Name="Verdana" -3. `SettingNames_WithMultipleFonts_SetsNameToFirst` — Names="Arial, sans-serif" → Name="Arial" -4. `SettingName_ToNull_ClearsNames` — Name=null → Names is null/empty -5. `SettingName_ToEmpty_ClearsNames` — Name="" → Names is null/empty -6. `SettingNames_ToNull_ClearsName` — Names=null → Name is null/empty -7. `SettingNames_ToEmpty_ClearsName` — Names="" → Name is null/empty -8. `SettingNames_ThenName_NameWins` — Last-write-wins: Name overrides Names for both properties -9. `SettingName_ThenNames_NamesWins` — Last-write-wins: Names overrides Name for both properties - -**ThemingPipelineTests.razor (2 pipeline tests):** -14. `Theme_FontName_RendersFontFamily_ViaAutoSync` — Button with theme Font.Name="Arial" renders font-family:Arial -15. `Theme_FontName_MultipleViaNames_RendersFontFamily` — Label with theme Font.Name="Verdana" renders font-family:Verdana - -All 1437 tests pass (0 failures). Cyclops's auto-sync fix was already in place — the previously-documented bug (ApplyThemeSkin sets Font.Name but style builder reads Font.Names) is now resolved. - -📌 Bug resolved: The Font.Name/Font.Names disconnect is fixed. ApplyThemeSkin sets Font.Name → auto-sync propagates to Font.Names → style builder reads Font.Names → font-family renders correctly. Full pipeline verified. — Rogue - -📌 Test pattern: FontInfo sync tests are pure C# unit tests (no bUnit needed). Use `new FontInfo()` then set properties and assert the counterpart. Last-write-wins semantics: setting Name then Names means Names wins, and vice versa. — Rogue - - Team update (2026-03-02): Unified release process implemented single release.yml triggered by GitHub Release publication coordinates all artifacts (NuGet, Docker, docs, demos). version.json now uses 3-segment SemVer (0.17.0). Existing nuget.yml and deploy-server-side.yml are workflow_dispatch-only escape hatches. PR #408 decided by Forge (audit), Cyclops (implementation) +Team updates: Unified release process (PR #408), Skins & Themes roadmap (3 waves, 15 WIs). Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge ### ListView EditItemTemplate Rendering Tests (Issue #406) From 2cf0f822e378eeae89fa6984c6937c20257afbad Mon Sep 17 00:00:00 2001 From: "Jeffrey T. Fritz" Date: Mon, 2 Mar 2026 10:22:43 -0500 Subject: [PATCH 07/16] Added WingtipToys --- .../Catalog/Images/Thumbs.db | Bin 0 -> 261120 bytes .../Catalog/Images/Thumbs/Thumbs.db | Bin 0 -> 141824 bytes .../Catalog/Images/Thumbs/boatbig.png | Bin 0 -> 3704 bytes .../Catalog/Images/Thumbs/boatpaper.png | Bin 0 -> 3525 bytes .../Catalog/Images/Thumbs/boatsail.png | Bin 0 -> 3527 bytes .../Catalog/Images/Thumbs/busdouble.png | Bin 0 -> 4041 bytes .../Catalog/Images/Thumbs/busgreen.png | Bin 0 -> 3898 bytes .../Catalog/Images/Thumbs/busred.png | Bin 0 -> 3882 bytes .../Catalog/Images/Thumbs/carconvert.png | Bin 0 -> 5669 bytes .../Catalog/Images/Thumbs/carearly.png | Bin 0 -> 6634 bytes .../Catalog/Images/Thumbs/carfast.png | Bin 0 -> 6753 bytes .../Catalog/Images/Thumbs/carfaster.png | Bin 0 -> 6664 bytes .../Catalog/Images/Thumbs/carracer.png | Bin 0 -> 6844 bytes .../Catalog/Images/Thumbs/planeace.png | Bin 0 -> 7329 bytes .../Catalog/Images/Thumbs/planeglider.png | Bin 0 -> 6600 bytes .../Catalog/Images/Thumbs/planepaper.png | Bin 0 -> 6597 bytes .../Catalog/Images/Thumbs/planeprop.png | Bin 0 -> 6537 bytes .../Catalog/Images/Thumbs/rocket.png | Bin 0 -> 7047 bytes .../Catalog/Images/Thumbs/truckbig.png | Bin 0 -> 5424 bytes .../Catalog/Images/Thumbs/truckearly.png | Bin 0 -> 5897 bytes .../Catalog/Images/Thumbs/truckfire.png | Bin 0 -> 6040 bytes .../Catalog/Images/boatbig.png | Bin 0 -> 3704 bytes .../Catalog/Images/boatpaper.png | Bin 0 -> 3525 bytes .../Catalog/Images/boatsail.png | Bin 0 -> 3527 bytes .../Catalog/Images/busdouble.png | Bin 0 -> 4041 bytes .../Catalog/Images/busgreen.png | Bin 0 -> 3898 bytes .../Catalog/Images/busred.png | Bin 0 -> 3882 bytes .../Catalog/Images/carconvert.png | Bin 0 -> 5669 bytes .../Catalog/Images/carearly.png | Bin 0 -> 6634 bytes .../Catalog/Images/carfast.png | Bin 0 -> 6753 bytes .../Catalog/Images/carfaster.png | Bin 0 -> 6664 bytes .../Catalog/Images/carracer.png | Bin 0 -> 6844 bytes .../Catalog/Images/planeace.png | Bin 0 -> 7329 bytes .../Catalog/Images/planeglider.png | Bin 0 -> 6600 bytes .../Catalog/Images/planepaper.png | Bin 0 -> 6597 bytes .../Catalog/Images/planeprop.png | Bin 0 -> 6537 bytes .../Catalog/Images/rocket.png | Bin 0 -> 7047 bytes .../Catalog/Images/truckbig.png | Bin 0 -> 5424 bytes .../Catalog/Images/truckearly.png | Bin 0 -> 5897 bytes .../Catalog/Images/truckfire.png | Bin 0 -> 6040 bytes .../WingtipToys/WingtipToys-Assets/logo.jpg | Bin 0 -> 12245 bytes samples/WingtipToys/WingtipToys.sln | 22 + samples/WingtipToys/WingtipToys/About.aspx | 7 + samples/WingtipToys/WingtipToys/About.aspx.cs | 17 + .../WingtipToys/About.aspx.designer.cs | 17 + .../WingtipToys/Account/AddPhoneNumber.aspx | 28 + .../Account/AddPhoneNumber.aspx.cs | 34 + .../Account/AddPhoneNumber.aspx.designer.cs | 33 + .../WingtipToys/Account/Confirm.aspx | 18 + .../WingtipToys/Account/Confirm.aspx.cs | 37 + .../Account/Confirm.aspx.designer.cs | 43 + .../WingtipToys/Account/Forgot.aspx | 39 + .../WingtipToys/Account/Forgot.aspx.cs | 40 + .../Account/Forgot.aspx.designer.cs | 60 + .../WingtipToys/Account/Lockout.aspx | 8 + .../WingtipToys/Account/Lockout.aspx.cs | 17 + .../Account/Lockout.aspx.designer.cs | 17 + .../WingtipToys/Account/Login.aspx | 65 + .../WingtipToys/Account/Login.aspx.cs | 65 + .../Account/Login.aspx.designer.cs | 78 + .../WingtipToys/Account/Manage.aspx | 81 + .../WingtipToys/Account/Manage.aspx.cs | 127 + .../Account/Manage.aspx.designer.cs | 51 + .../WingtipToys/Account/ManageLogins.aspx | 42 + .../WingtipToys/Account/ManageLogins.aspx.cs | 61 + .../Account/ManageLogins.aspx.designer.cs | 24 + .../WingtipToys/Account/ManagePassword.aspx | 93 + .../Account/ManagePassword.aspx.cs | 97 + .../Account/ManagePassword.aspx.designer.cs | 105 + .../Account/OpenAuthProviders.ascx | 22 + .../Account/OpenAuthProviders.ascx.cs | 43 + .../OpenAuthProviders.ascx.designer.cs | 24 + .../WingtipToys/Account/Register.aspx | 45 + .../WingtipToys/Account/Register.aspx.cs | 42 + .../Account/Register.aspx.designer.cs | 51 + .../Account/RegisterExternalLogin.aspx | 33 + .../Account/RegisterExternalLogin.aspx.cs | 128 + .../RegisterExternalLogin.aspx.designer.cs | 24 + .../WingtipToys/Account/ResetPassword.aspx | 45 + .../WingtipToys/Account/ResetPassword.aspx.cs | 46 + .../Account/ResetPassword.aspx.designer.cs | 51 + .../Account/ResetPasswordConfirmation.aspx | 8 + .../Account/ResetPasswordConfirmation.aspx.cs | 8 + ...ResetPasswordConfirmation.aspx.designer.cs | 24 + .../TwoFactorAuthenticationSignIn.aspx | 50 + .../TwoFactorAuthenticationSignIn.aspx.cs | 77 + ...actorAuthenticationSignIn.aspx.designer.cs | 105 + .../Account/VerifyPhoneNumber.aspx | 28 + .../Account/VerifyPhoneNumber.aspx.cs | 49 + .../VerifyPhoneNumber.aspx.designer.cs | 42 + .../WingtipToys/Account/Web.config | 12 + .../WingtipToys/WingtipToys/AddToCart.aspx | 16 + .../WingtipToys/WingtipToys/AddToCart.aspx.cs | 34 + .../WingtipToys/AddToCart.aspx.designer.cs | 26 + .../WingtipToys/Admin/AdminPage.aspx | 66 + .../WingtipToys/Admin/AdminPage.aspx.cs | 116 + .../Admin/AdminPage.aspx.designer.cs | 204 + .../WingtipToys/WingtipToys/Admin/Web.config | 9 + .../WingtipToys/App_Data/ErrorLog.txt | 50 + .../WingtipToys/App_Readme/Elmah.txt | 15 + .../WingtipToys/App_Start/BundleConfig.cs | 50 + .../WingtipToys/App_Start/IdentityConfig.cs | 102 + .../WingtipToys/App_Start/RouteConfig.cs | 18 + .../WingtipToys/App_Start/Startup.Auth.cs | 69 + samples/WingtipToys/WingtipToys/Bundle.config | 7 + .../WingtipToys/Catalog/Images/Thumbs.db | Bin 0 -> 261120 bytes .../Catalog/Images/Thumbs/Thumbs.db | Bin 0 -> 141824 bytes .../Catalog/Images/Thumbs/boatbig.png | Bin 0 -> 3704 bytes .../Catalog/Images/Thumbs/boatpaper.png | Bin 0 -> 3525 bytes .../Catalog/Images/Thumbs/boatsail.png | Bin 0 -> 3527 bytes .../Catalog/Images/Thumbs/busdouble.png | Bin 0 -> 4041 bytes .../Catalog/Images/Thumbs/busgreen.png | Bin 0 -> 3898 bytes .../Catalog/Images/Thumbs/busred.png | Bin 0 -> 3882 bytes .../Catalog/Images/Thumbs/carconvert.png | Bin 0 -> 5669 bytes .../Catalog/Images/Thumbs/carearly.png | Bin 0 -> 6634 bytes .../Catalog/Images/Thumbs/carfast.png | Bin 0 -> 6753 bytes .../Catalog/Images/Thumbs/carfaster.png | Bin 0 -> 6664 bytes .../Catalog/Images/Thumbs/carracer.png | Bin 0 -> 6844 bytes .../Catalog/Images/Thumbs/planeace.png | Bin 0 -> 7329 bytes .../Catalog/Images/Thumbs/planeglider.png | Bin 0 -> 6600 bytes .../Catalog/Images/Thumbs/planepaper.png | Bin 0 -> 6597 bytes .../Catalog/Images/Thumbs/planeprop.png | Bin 0 -> 6537 bytes .../Catalog/Images/Thumbs/rocket.png | Bin 0 -> 7047 bytes .../Catalog/Images/Thumbs/truckbig.png | Bin 0 -> 5424 bytes .../Catalog/Images/Thumbs/truckearly.png | Bin 0 -> 5897 bytes .../Catalog/Images/Thumbs/truckfire.png | Bin 0 -> 6040 bytes .../WingtipToys/Catalog/Images/boatbig.png | Bin 0 -> 3704 bytes .../WingtipToys/Catalog/Images/boatpaper.png | Bin 0 -> 3525 bytes .../WingtipToys/Catalog/Images/boatsail.png | Bin 0 -> 3527 bytes .../WingtipToys/Catalog/Images/busdouble.png | Bin 0 -> 4041 bytes .../WingtipToys/Catalog/Images/busgreen.png | Bin 0 -> 3898 bytes .../WingtipToys/Catalog/Images/busred.png | Bin 0 -> 3882 bytes .../WingtipToys/Catalog/Images/carconvert.png | Bin 0 -> 5669 bytes .../WingtipToys/Catalog/Images/carearly.png | Bin 0 -> 6634 bytes .../WingtipToys/Catalog/Images/carfast.png | Bin 0 -> 6753 bytes .../WingtipToys/Catalog/Images/carfaster.png | Bin 0 -> 6664 bytes .../WingtipToys/Catalog/Images/carracer.png | Bin 0 -> 6844 bytes .../WingtipToys/Catalog/Images/planeace.png | Bin 0 -> 7329 bytes .../Catalog/Images/planeglider.png | Bin 0 -> 6600 bytes .../WingtipToys/Catalog/Images/planepaper.png | Bin 0 -> 6597 bytes .../WingtipToys/Catalog/Images/planeprop.png | Bin 0 -> 6537 bytes .../WingtipToys/Catalog/Images/rocket.png | Bin 0 -> 7047 bytes .../WingtipToys/Catalog/Images/truckbig.png | Bin 0 -> 5424 bytes .../WingtipToys/Catalog/Images/truckearly.png | Bin 0 -> 5897 bytes .../WingtipToys/Catalog/Images/truckfire.png | Bin 0 -> 6040 bytes .../WingtipToys/Checkout/CheckoutCancel.aspx | 6 + .../Checkout/CheckoutCancel.aspx.cs | 17 + .../Checkout/CheckoutCancel.aspx.designer.cs | 17 + .../Checkout/CheckoutComplete.aspx | 11 + .../Checkout/CheckoutComplete.aspx.cs | 84 + .../CheckoutComplete.aspx.designer.cs | 33 + .../WingtipToys/Checkout/CheckoutError.aspx | 20 + .../Checkout/CheckoutError.aspx.cs | 17 + .../Checkout/CheckoutError.aspx.designer.cs | 17 + .../WingtipToys/Checkout/CheckoutReview.aspx | 40 + .../Checkout/CheckoutReview.aspx.cs | 113 + .../Checkout/CheckoutReview.aspx.designer.cs | 42 + .../WingtipToys/Checkout/CheckoutStart.aspx | 3 + .../Checkout/CheckoutStart.aspx.cs | 39 + .../Checkout/CheckoutStart.aspx.designer.cs | 17 + .../WingtipToys/Checkout/Web.config | 8 + samples/WingtipToys/WingtipToys/Contact.aspx | 17 + .../WingtipToys/WingtipToys/Contact.aspx.cs | 17 + .../WingtipToys/Contact.aspx.designer.cs | 17 + .../WingtipToys/WingtipToys/Content/Site.css | 38 + .../Content/bootstrap-original.css | 6816 ++++++++++++ .../Content/bootstrap-original.min.css | 20 + .../WingtipToys/Content/bootstrap.css | 6296 +++++++++++ .../WingtipToys/Content/bootstrap.min.css | 7 + samples/WingtipToys/WingtipToys/Default.aspx | 9 + .../WingtipToys/WingtipToys/Default.aspx.cs | 31 + .../WingtipToys/Default.aspx.designer.cs | 17 + .../WingtipToys/WingtipToys/ErrorPage.aspx | 27 + .../WingtipToys/WingtipToys/ErrorPage.aspx.cs | 83 + .../WingtipToys/ErrorPage.aspx.designer.cs | 69 + samples/WingtipToys/WingtipToys/Global.asax | 1 + .../WingtipToys/WingtipToys/Global.asax.cs | 66 + .../WingtipToys/WingtipToys/Images/logo.jpg | Bin 0 -> 12245 bytes .../WingtipToys/Logic/AddProducts.cs | 30 + .../WingtipToys/Logic/ExceptionUtility.cs | 54 + .../WingtipToys/Logic/PayPalFunctions.cs | 313 + .../WingtipToys/Logic/RoleActions.cs | 54 + .../WingtipToys/Logic/ShoppingCartActions.cs | 226 + .../WingtipToys/Models/CartItem.cs | 21 + .../WingtipToys/Models/Category.cs | 19 + .../WingtipToys/Models/IdentityModels.cs | 108 + .../WingtipToys/WingtipToys/Models/Order.cs | 67 + .../WingtipToys/Models/OrderDetail.cs | 20 + .../WingtipToys/WingtipToys/Models/Product.cs | 25 + .../WingtipToys/Models/ProductContext.cs | 16 + .../Models/ProductDatabaseInitializer.cs | 203 + .../WingtipToys/ProductDetails.aspx | 28 + .../WingtipToys/ProductDetails.aspx.cs | 41 + .../ProductDetails.aspx.designer.cs | 24 + .../WingtipToys/WingtipToys/ProductList.aspx | 83 + .../WingtipToys/ProductList.aspx.cs | 41 + .../WingtipToys/ProductList.aspx.designer.cs | 24 + .../WingtipToys/Project_Readme.html | 150 + .../WingtipToys/Properties/AssemblyInfo.cs | 35 + .../Scripts/WebForms/DetailsView.js | 34 + .../WingtipToys/Scripts/WebForms/Focus.js | 93 + .../WingtipToys/Scripts/WebForms/GridView.js | 36 + .../Scripts/WebForms/MSAjax/MicrosoftAjax.js | 6 + .../MicrosoftAjaxApplicationServices.js | 6 + .../MSAjax/MicrosoftAjaxComponentModel.js | 6 + .../WebForms/MSAjax/MicrosoftAjaxCore.js | 6 + .../MSAjax/MicrosoftAjaxGlobalization.js | 6 + .../WebForms/MSAjax/MicrosoftAjaxHistory.js | 6 + .../WebForms/MSAjax/MicrosoftAjaxNetwork.js | 6 + .../MSAjax/MicrosoftAjaxSerialization.js | 6 + .../WebForms/MSAjax/MicrosoftAjaxTimer.js | 6 + .../WebForms/MSAjax/MicrosoftAjaxWebForms.js | 6 + .../MSAjax/MicrosoftAjaxWebServices.js | 6 + .../WingtipToys/Scripts/WebForms/Menu.js | 898 ++ .../Scripts/WebForms/MenuStandards.js | 697 ++ .../WingtipToys/Scripts/WebForms/SmartNav.js | 280 + .../WingtipToys/Scripts/WebForms/TreeView.js | 220 + .../WingtipToys/Scripts/WebForms/WebForms.js | 567 + .../WingtipToys/Scripts/WebForms/WebParts.js | 647 ++ .../Scripts/WebForms/WebUIValidation.js | 684 ++ .../WingtipToys/Scripts/_references.js | Bin 0 -> 396 bytes .../WingtipToys/Scripts/bootstrap.js | 2014 ++++ .../WingtipToys/Scripts/bootstrap.min.js | 21 + .../Scripts/jquery-1.10.2.intellisense.js | 2671 +++++ .../WingtipToys/Scripts/jquery-1.10.2.js | 9803 +++++++++++++++++ .../WingtipToys/Scripts/jquery-1.10.2.min.js | 23 + .../WingtipToys/Scripts/jquery-1.10.2.min.map | 1 + .../WingtipToys/Scripts/modernizr-2.6.2.js | 1416 +++ .../WingtipToys/Scripts/respond.js | 340 + .../WingtipToys/Scripts/respond.min.js | 20 + .../WingtipToys/WingtipToys/ShoppingCart.aspx | 50 + .../WingtipToys/ShoppingCart.aspx.cs | 101 + .../WingtipToys/ShoppingCart.aspx.designer.cs | 69 + samples/WingtipToys/WingtipToys/Site.Master | 111 + .../WingtipToys/WingtipToys/Site.Master.cs | 102 + .../WingtipToys/Site.Master.designer.cs | 60 + .../WingtipToys/Site.Mobile.Master | 23 + .../WingtipToys/Site.Mobile.Master.cs | 17 + .../Site.Mobile.Master.designer.cs | 51 + samples/WingtipToys/WingtipToys/Startup.cs | 12 + .../WingtipToys/WingtipToys/ViewSwitcher.ascx | 4 + .../WingtipToys/ViewSwitcher.ascx.cs | 43 + .../WingtipToys/ViewSwitcher.ascx.designer.cs | 15 + .../WingtipToys/WingtipToys/Web.Debug.config | 30 + .../WingtipToys/Web.Release.config | 31 + samples/WingtipToys/WingtipToys/Web.config | 133 + .../WingtipToys/WingtipToys.csproj | 564 + samples/WingtipToys/WingtipToys/favicon.ico | Bin 0 -> 32038 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 14079 bytes .../fonts/glyphicons-halflings-regular.svg | 228 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 29512 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 16448 bytes .../WingtipToys/WingtipToys/packages.config | 36 + 253 files changed, 40873 insertions(+) create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs.db create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/Thumbs.db create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/boatbig.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/boatpaper.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/boatsail.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/busdouble.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/busgreen.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/busred.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carconvert.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carearly.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfast.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfaster.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carracer.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeace.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeglider.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planepaper.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeprop.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/rocket.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/truckbig.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/truckearly.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/truckfire.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/boatbig.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/boatpaper.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/boatsail.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/busdouble.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/busgreen.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/busred.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carconvert.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carearly.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfast.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfaster.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carracer.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeace.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeglider.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planepaper.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeprop.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/rocket.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/truckbig.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/truckearly.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/Catalog/Images/truckfire.png create mode 100644 samples/WingtipToys/WingtipToys-Assets/logo.jpg create mode 100644 samples/WingtipToys/WingtipToys.sln create mode 100644 samples/WingtipToys/WingtipToys/About.aspx create mode 100644 samples/WingtipToys/WingtipToys/About.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/About.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Confirm.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Confirm.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Confirm.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Forgot.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Forgot.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Forgot.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Lockout.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Lockout.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Lockout.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Login.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Login.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Login.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Manage.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Manage.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Manage.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx create mode 100644 samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Register.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/Register.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Register.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx create mode 100644 samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Account/Web.config create mode 100644 samples/WingtipToys/WingtipToys/AddToCart.aspx create mode 100644 samples/WingtipToys/WingtipToys/AddToCart.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/AddToCart.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx create mode 100644 samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Admin/Web.config create mode 100644 samples/WingtipToys/WingtipToys/App_Data/ErrorLog.txt create mode 100644 samples/WingtipToys/WingtipToys/App_Readme/Elmah.txt create mode 100644 samples/WingtipToys/WingtipToys/App_Start/BundleConfig.cs create mode 100644 samples/WingtipToys/WingtipToys/App_Start/IdentityConfig.cs create mode 100644 samples/WingtipToys/WingtipToys/App_Start/RouteConfig.cs create mode 100644 samples/WingtipToys/WingtipToys/App_Start/Startup.Auth.cs create mode 100644 samples/WingtipToys/WingtipToys/Bundle.config create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs.db create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/Thumbs.db create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/boatbig.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/boatpaper.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/boatsail.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/busdouble.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/busgreen.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/busred.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carconvert.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carearly.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfast.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfaster.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carracer.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeace.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeglider.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planepaper.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeprop.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/rocket.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/truckbig.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/truckearly.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/truckfire.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/boatbig.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/boatpaper.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/boatsail.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/busdouble.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/busgreen.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/busred.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/carconvert.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/carearly.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/carfast.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/carfaster.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/carracer.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/planeace.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/planeglider.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/planepaper.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/planeprop.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/rocket.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/truckbig.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/truckearly.png create mode 100644 samples/WingtipToys/WingtipToys/Catalog/Images/truckfire.png create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Checkout/Web.config create mode 100644 samples/WingtipToys/WingtipToys/Contact.aspx create mode 100644 samples/WingtipToys/WingtipToys/Contact.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Contact.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Content/Site.css create mode 100644 samples/WingtipToys/WingtipToys/Content/bootstrap-original.css create mode 100644 samples/WingtipToys/WingtipToys/Content/bootstrap-original.min.css create mode 100644 samples/WingtipToys/WingtipToys/Content/bootstrap.css create mode 100644 samples/WingtipToys/WingtipToys/Content/bootstrap.min.css create mode 100644 samples/WingtipToys/WingtipToys/Default.aspx create mode 100644 samples/WingtipToys/WingtipToys/Default.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/Default.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/ErrorPage.aspx create mode 100644 samples/WingtipToys/WingtipToys/ErrorPage.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/ErrorPage.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Global.asax create mode 100644 samples/WingtipToys/WingtipToys/Global.asax.cs create mode 100644 samples/WingtipToys/WingtipToys/Images/logo.jpg create mode 100644 samples/WingtipToys/WingtipToys/Logic/AddProducts.cs create mode 100644 samples/WingtipToys/WingtipToys/Logic/ExceptionUtility.cs create mode 100644 samples/WingtipToys/WingtipToys/Logic/PayPalFunctions.cs create mode 100644 samples/WingtipToys/WingtipToys/Logic/RoleActions.cs create mode 100644 samples/WingtipToys/WingtipToys/Logic/ShoppingCartActions.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/CartItem.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/Category.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/IdentityModels.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/Order.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/OrderDetail.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/Product.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/ProductContext.cs create mode 100644 samples/WingtipToys/WingtipToys/Models/ProductDatabaseInitializer.cs create mode 100644 samples/WingtipToys/WingtipToys/ProductDetails.aspx create mode 100644 samples/WingtipToys/WingtipToys/ProductDetails.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/ProductDetails.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/ProductList.aspx create mode 100644 samples/WingtipToys/WingtipToys/ProductList.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/ProductList.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Project_Readme.html create mode 100644 samples/WingtipToys/WingtipToys/Properties/AssemblyInfo.cs create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/DetailsView.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/Focus.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/GridView.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjax.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxApplicationServices.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxComponentModel.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxCore.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxGlobalization.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxHistory.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxNetwork.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxSerialization.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxTimer.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxWebForms.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxWebServices.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/Menu.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/MenuStandards.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/SmartNav.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/TreeView.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/WebForms.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/WebParts.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/WebForms/WebUIValidation.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/_references.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/bootstrap.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/bootstrap.min.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/jquery-1.10.2.intellisense.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/jquery-1.10.2.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/jquery-1.10.2.min.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/jquery-1.10.2.min.map create mode 100644 samples/WingtipToys/WingtipToys/Scripts/modernizr-2.6.2.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/respond.js create mode 100644 samples/WingtipToys/WingtipToys/Scripts/respond.min.js create mode 100644 samples/WingtipToys/WingtipToys/ShoppingCart.aspx create mode 100644 samples/WingtipToys/WingtipToys/ShoppingCart.aspx.cs create mode 100644 samples/WingtipToys/WingtipToys/ShoppingCart.aspx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Site.Master create mode 100644 samples/WingtipToys/WingtipToys/Site.Master.cs create mode 100644 samples/WingtipToys/WingtipToys/Site.Master.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Site.Mobile.Master create mode 100644 samples/WingtipToys/WingtipToys/Site.Mobile.Master.cs create mode 100644 samples/WingtipToys/WingtipToys/Site.Mobile.Master.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Startup.cs create mode 100644 samples/WingtipToys/WingtipToys/ViewSwitcher.ascx create mode 100644 samples/WingtipToys/WingtipToys/ViewSwitcher.ascx.cs create mode 100644 samples/WingtipToys/WingtipToys/ViewSwitcher.ascx.designer.cs create mode 100644 samples/WingtipToys/WingtipToys/Web.Debug.config create mode 100644 samples/WingtipToys/WingtipToys/Web.Release.config create mode 100644 samples/WingtipToys/WingtipToys/Web.config create mode 100644 samples/WingtipToys/WingtipToys/WingtipToys.csproj create mode 100644 samples/WingtipToys/WingtipToys/favicon.ico create mode 100644 samples/WingtipToys/WingtipToys/fonts/glyphicons-halflings-regular.eot create mode 100644 samples/WingtipToys/WingtipToys/fonts/glyphicons-halflings-regular.svg create mode 100644 samples/WingtipToys/WingtipToys/fonts/glyphicons-halflings-regular.ttf create mode 100644 samples/WingtipToys/WingtipToys/fonts/glyphicons-halflings-regular.woff create mode 100644 samples/WingtipToys/WingtipToys/packages.config diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs.db b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..099bf612633cecb6d785b0a97995b10dcfe004d8 GIT binary patch literal 261120 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%0Agv;{t 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%0D&*BZ7Nt*MvRR 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/Thumbs.db b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..26c5ab9edd40adb8e97241051868142460eecaa7 GIT binary patch literal 141824 zcmeI*c|25o|3C19q$o>LwoIWYZFVA43ZWDgB80LQmnCGIHYr)!m5L;-^Eu1RG|$I5pVC(Xjq!Ix zn}~6f7QsOPAyN=&$Xv)ghzvv)G9R)4A_rLrSp*@=Il_D?L>{65QG_T#lp!h*Rfrly z9kL9f0nvnzWwl^Vg{*+AglI!nK~_U_Ai5Ae$Qp<~!~jB;TMP4b5F^NX$Oecp#00Vt zvI(*oVhS;Xm_x{N7BIJjY=u}stRXg#Z4g_C9mF289kK)B03pl8!`vC-0&#`xgzSR2 zLEIs~Ks+Fx5HE-~WH*E?OKw*`xV;DB4+($-LV_T{5E^7J!~|Z+9ZJrIp1Z-^bF>63 z_{nJo>@iT)=rrL!l}R;oaq4`|Mz(M4sS2>gRA6l=!PZoUziO~G?Ot7!w+bK)#kT8wauLx^i8ETS;wXX`TAlsq}TSpn5p)k5t zetZ7-zhwR7F)+FUezN{)@ci-hlXcs{noxp%+d=(1;I;$o5h`$h$LO9szUJTVL;a)2 zD0#g8Z2xD&bI0l*Yd6mSZ?1u{{a*$4F?rbE>__)_c{mzXMvsT>uoo`<562%H>`&xp z!q4u1Oa8F`jnz*camu56ygVFt+u=A^3dg~Y(Idcq^j#hbeP<%~|37ZI?>yz-9$F5M zjP3vbtlt6NZ&XL?REHyeDcn|obwWO-_+KA?Y~<%4`C0k1{Wtth{mRf+d8kJT)`1$V z`|Z#Y^1j3GYXXXVcOu_^$oG@6b@1IMjeBql+#l;d`58^Vck;vgA-NqR!_UZzXt_;c zyU@QP9|yOVVSy!oK72lccooD$JcL<|AB)che8h@2|ID} z)af(PXV1l4PPmeI_1g6tH&gGXrQgfA|KMS6UVcGgQE|!B@`}o;*VS*{)-*M@yl-u5 z|M0Pc-t)D$uYZ6sI7Ie~?C03@+ol-TF9GsX5H`yMF0x;2?7n2j1txILk)Jqir7@SS zhoGdwzDd)ykH_E1nJlGf(k*1?S;jp>TB&I+o$T6Z&wj3B`~OtW{?W02_N#`N!oda` zk3#^yj4>+a9jJ&=w9e>G$&;8_891@#(VYaElaV0F{kJlqOJ^Ty-?MH!WADkvcTpo<%(Q7R6lr zfR-lfs}(h(|AIxdH#A2P|G7xiXYN^f|13}-^o2!qA7St@LxkamRtt+bnlQdnrwv_{ z4kLFKp~WJm`*8}V&{)L5^-pNMvPCRn-vDLUiZcEszG;X4!Xiw(XoCZcgeS5E0W4xz zGMIx!#OqRr`R=ob<`4h&8a2~3LWfSCXA!R+7f7(_$~CZvCc$pX2)8_oXbgg?X6lW9 z4Q6S49kud812c#z+s!R+%_3ODq`18-;)8J%i{R*@G9FULzeaxuZxi!M8;kh*g|4^P zIBbALFjfz9u?X#O8iV4&A_~g>{Y79s^YzK7vWPfZm?rz5DRau~F}d~D|8wg_k<~Wj z{uyIk`$XGc4%DvhjZm2v_Og7)e4DOk!3OwD>j_SOVYaI) z@Jh7YU2fUS`#7f?uNVuDbyN2NroI7-c;ng5B34^ghq8!}fY4mN!MSoQ!uDC*h=BXn zvtI`GPz-Y^J?iltEMlIwlCe%;&ItQ-V;$l<;ebl^{$9~Kx3$a}eqRbx2IZ{hvxr|W zGzmeub8Ye|H>uy zFxg9-EP{K0?;xeez>Jv}O&yY~&!P^?)oJn5O6J>q2`y_8B^IUuHi@?gwHF{sZMlal&e5aIQ_#}7%eFa~_M}?A!zqm9znVWwfLWj`3C#$Jl7ta)3i6l7m0Avwb$ zP%EhQnaHdoxz}GB%70Q%F-&JzHa>ec%W(a#bnogI=0%r^mr@%RRff|C{2dQ`b3aK#1oJmFcHv5!L}W-)A=FM8$PWt?~|=eP56#Fdqbr}vy*DSe4(zp7rO zOf$WCeru-quosRL@Cf~+Z$kra?K0H58z+P%Y`QtC|_HY;0C#;}hr%2daI3P~R*W=C_k9;&1|UdePy> zALb^~8a!!qp@D&6*@n<;t)g4-F5TA2A|j2UfMU~^;lYjuhWbMm(Q;a=b`iXDdVVYT zq!=~$jWW!|oZQVfJU>bxYVhz!n}IrL`Ud*U+|TZ-%iMNb-ukSyW>=-+Lbuk)HR3x~ zeCf1_zt-rO*D(0C>T$Q%ZWd7_*UESFHT|uhUO_*9+996hy8Sg21?^8#k$q)scKT|Y zIb>qxE=Me!I8Sj?V}*Y9H}U)7y3PkKs+xMZm>BBpdUZ}Lc`jG7(AV}V@;#G>Dbz)o zM16lMWh8Vltyd@8kH#>&A2^#uoG^LZFa7{l<&3_PNEYFHyfQ*i-l!=a%ZSEbA@Hi+pKg^|Iu?{ zMa#9C#pi3euF~Gl{#Kpw@vix>J|p0|i`L@qtYw=@wO!4U>FqI>Tiqkus|uy3&{uPvrPjV@YS6fw9?c0fqVt6dCB5HX(VMmZp6T#nHfcAv zB!7QiE|HYYrXj*=PXp`q+Bf$Mo4Otj|JW3C@MPx2zQMT zom)n`?EE%*EpUG$9~qZV6Rm?C$C7WV^UQjQ*Xf1dr+YI7hhHA~rOo#6EeoM}2_hN|KA*c&R{Ot*+o!p_yF>SN*6y2cT~wEf z*EpX!m=V*EYdM=@Egz|PvOL?>@?mOL_tlW*cP?s;slR4?3s@1_s<2ax-@nD9sMM_3 zvqU=ip}t7%RrB}N#<%^x1-cY2bHpCZLW+*mk;|b#o zTZgUl!waesO%knrX?s394NAQY7G1xGu8~te|A1-s+x~2Q@!Ot~hj(hsEVW%DF+5cD zg`1I^XT>;wgJGS!ecimNN;O+Tnye0~{>ohSvB+Yub0u9RGk#0`+mFk_?;UH9H4Isy z^^0O%c;vO?k?9wA?AdMa6Yb+GXj!N0d7`j&%lbRBWX=18gxqc9pB)fyx2!i<(r6VM z^Z0&W#F89QT3)r*YO}yg^cx!9BNEYd*Rz zF&cT%0N<|ysoh$)yqaHl&XU<&wQtIngHfVhrH*aE`dtdTUd7k7co})Q-F{CSa$^O{ zLmtJJsRwkXFc_J~R}_`n%M5XMFS6WNsq9*mRhi@Ib3|#Fpj-)>noWNye>PRvX{oSDT}?;I-ELP8A=E zbWjM zEYI;wZ1G_ZY*;xY5zuz?bl~#&N)P+g;)KZDihKQMSH0!xY{m603UM#fA-D zx15+dZJnb2y^*Ta=T~KSB?ybR-zbvd$PhY8=XRg^(SO(D5KT3ytfdC?9#tM5ympE` zeiMuM#f=)dTwT+iZdfQGo1v27`_b8{!N0z2ty9Cs6ZrvxQ7+A{G3ib&@zp*C@hYnS5b*?P>m|aBC1`ZM#N9|`+kD|DM%lB#>^Fs zVxDpb$Tup1+++EESn#v-I(;MTa^)5HtSU$YUexc8=4IR;n4L9|u=cXM!5|Mj7D8ct> zqa#ObZg$ogUeD_Zw>$zQB=$tc%a*xV%rAJHHMlJ7L)NM$K7J}OZxM2v(kqj>k9o+wBeXVT$ zPV-ZnzdnmTGbCP~YkYc#RZ)XM$sl}aZSW3(PcHbDaLv|h_T{koi8qu*Tm8?)jDG&J zh|c69W~4#ytC=6q3@l4h)L+zb*Su!CUcds`f-L(GQzCeCTMQp1jS@kxAKfuJCFZh- zs7~4tJsm#nCfoR)yO-)uYo;9^UY@^s$9lz^%|lCGoZCh$RV=!ZcsY!5x6Q3S-Xd1^ zRsRKQUlVNCD`lou&Wr@6_A%JkLgJVwb!=R77A0-g8>!ILO|u9pYw}kuoE@K>{%*;O z8iT=K`Bm*_ZKB6sIkuvgJ-thb78g$zA-G~Fa&#(A$3Dw;7kL*qnQXBj-5O>9JcEZfhOH;jDTQlC>`Cz@6vH6x$ zfAq}PW*h2jo`f_+MBbdJKbziJ+AGw)+T)~+G4uJuwbrU-$(qYkwptmw()!Qqc}Gvv zJv4*ES)GWSR4f&_QrzrWN=40`=Qqj@9K3$@)ag&&JA~*$LTl_q-FT}Fs>Qq&&o5l3}1IO~XWN8L;k4^6kjO06l;&@x; zZ@ar-b4RAG>hQTQ6u#hTe&-8kP--@uUAWMkvcNT**}Z=mTWyL~C5xa0Qs{aI)2b`$ za;|S#ed)#AM_$71C$3%KRR|i12-0Yd(5}s)^7gH>sIL?Y5;Q#1G^eE1HvC>)--mR* zyb=E;vjUfu53lIYl}!(jS3P~9$x=$FIJHJID|>x>w1mSFfzKPaMl*Ka8)iC|Jmw4J zOkvb~ZYhu7bnnRCn2xQ7OD}kIdA#K66MDmlYFrZ5o2_8@%rbMiP6B6)u&>-PHW?A| zICuYnxPvp6?T*TOC+~e<^SZQI;57XbuM6*EUNWTUB3g5uYF@_AI-G8$x;ffN?*7FB zAu(U-m-0ha`nu(HNj9_E1oPEPomYCNR?)1YqPA=izIDTN!v0C`MGZP=P8S_>B*Ymx zx1FQ?FMdvZ;?#CV_*3{z(KY4TtK3CiermbrVI9OGCO^(&5kq_~RK`N;u+^Tg&pPKT z9Um}vQ-0cE5`NRD+;y{Kf{JVsjj@hNfnQSs;2Ua=?eD)qG&He@5w3K~@C*ub@wE;i z7ICU}#Pcb&{Y&GEFgXfSkOrTmy%LqQZgU#>Yl12Re*IYaS&v0=3#y@4;YiPyW46gb!RV0j7aif7l(UHRKAr=)?Y*8f|_;C3vi|*(gD?_V_X(O+Bgtu=f+w-aQf&^pMa+>H%dQtAJ zFWlOTZzm@_xVv!XtB_jm_3NJWmNZi6LcKE!8bmCIH5gtu7!L#NHJ8y&KUD4rEHRNE z%C>%RKfO9wBD*hNJ>yY@X1~$O8hTfec&~C_8hulhj=D+IqW;u3!=hKh#`aqYY36C{{sTNiA^*M{yudc9WD(z>=o=UsL zqt(hGzSn<%8WPYD+L~6*l(4XVn`>G#Ro+cV@#Ta7`W68W{ed#(OdGB{-YUN}@gk;X%=h3wK+V9 z^B8=_zh2}?3CE?|QTdPQBkoayzrAs8_04~EI9L$AbmTALciOpx|4oPBip_R)Y-Un7 z)Tt4UIrMg;j3cuTY^`oSGJS!hM#u&YwoJk-{d{?jgPOTXqRG;G_o!-Hd>lF|{SF(f z`xw;kXr<#B+Ax0GSVH+=`YEyA{J#X=T&@TmVTn~*SDMXD^Kr`OFk~7aADV)>$>6TuDh?bc~QBk z&<2UXRi&YaYnoqaSGalh@AAKG-K3azkYf(thV{n9jr%&|ArFfF01Qe`nQuRU$ATo>w} zCB)9H5oxciJ{Wtt)8S>}cmjilt`vOx?oBrgP;| zI3GzQSC(144T-o^u5`=1O0%6KWKA`ju_uoN`+kjMe67JPox1uRP8_{b{i=+2R~Qv} zrG9c-V#KI|Zzqci?|l<}?EO8v67?NiZPxcW53SG$ir#cShc+ck=4R)v9asGV)`Z0L z^w!i$%Sngw+`q~8P*-DPTX27sh}MJKOO#G+V1HkBQeTHyyiVlb@4SvX*mpjK*YBD>eQH=?wT0Cu)niB4 z7Ff&hUJ4Hnzn=6^mZQ)2iPrpXvqJY!=j%DnJ8pjTwKN$p$_|+)V326}?2O8UX;V+njbw*qRXS*k-JSFnIm1fvio?IcOrAFs` z6_#b6~^S#o?$+F1_262vGt!>^Vl$$V2?sx9~qd%yF{U+tFG zdH;6Pw8a|(-DY_zC@66Gzf7DEMvRy+Y+9l?19vg}+->isKT1Ej(<1gHjoa}3)1|f2 zx}4_QCz=-WD&|a>5(ht13uS3^+cXX7I145DC!Hy5SXD76e8Ie`nsDP^W=tRS6Mo4a zWjuIDIPy@$i+2%(h|Eb{FW5YP_-gs5ZqrzAe`A;beSgRM-(06}PC9lMozef$|Go>G z=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zr*c=zo7{ zG#u}Lvkqi9xi3>1M*l<4-MQS#cOd+hq7WA!V+^-mSyTBqcd zU&(9HE`^X+q_zM3I<$W%{x3Jl`pIjOlXa8RzbyR09bb5SeEkkklLB1pmAvZf_TT?1 z!koMsts=DHN7GpUf2;lH>JRx&{p7l~gTC9tdQgU*lh?c^*Md6yTMCc;Xd>$;uggwe zqy1<5e-fTM*8lPTt3`G5iA>Y|hW?BGi~fuLi~fuLi~fuLi~fuLi~fuLi~fuLi~fuL zi~fuLi~fuLi~fuLi~fuLi~fuLi`Resk<$HjA0O|38ScK{@DxunsiW7fk{KL!eYGdOMj@7ROwK~Aai^`*8E^dc056O`q9pF*29rFKG z{r?#I@n^?B{PjEa+rc=Cwooe>wb2nMm7pbdqpeYaw)|*<{u2{nArItd>wg5#9p8U- z=&J*)Z*}Oc0<>TUw1J$fLVHx;-;XA;{;{zqf42VTf2e=F|5nfE4y|h8kVgMS|3&{r z|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&{r|3&}(k<$Hj zAKwQ}+YdPaIS63_A|8TyDC98Y2qX-06cP@JfJ8!~AjcrbAtxYYxl=Gd4LJjehMa|* zgTz42LoPrrLSi9tkV_D<9GL{TeFc&TxeB=kxemDjxe2)iNrEIpZbMQaWVt&qPleot zq(Ral_aGUN`;Z5ahmcH279<-&mU|5ICy*RSE+h|<4=I2YLW&^8kP^sK$TJ98?gh+W zLS8{iA!U$qNCl)4QU!SpsfN6PyoHeE$f*u)zk}368X%33CP*`+1@a!!3TcD1Lq0&r zvK=t*gnWX0hIB!`K)NAxNDt&Iq!-c$>4%WzMj(T5dkFFkG7K4kFd-}m!A20{{rB6^ zTe+t4KKYa4<3u<9Le*8;$ zs96z4yCg^9RDqVL!9Q{|P(nZxZ<9azFZwU~ zFZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~FZwU~@86FG z$NS$JQL}P0ci$-VKlDHJKlDHJKlDHJKlDHJKlDHJKlDHJKlDHJKlDHJKlDHJKlDHJ zKlDHJKlDHJKlDHJzrUaVv9S>ZJA?x=0m2DkvREuGm`{RChHyi8AX6YyA-oVi2tPys zG7TaKA1a$WBGp zlzp-{_91H|#`2x_&v?)I{&4SoKA-cPbD#6M=iYmsXbUqmHWxNZS+7q1iu0)DuF)UY&C%cg$skqVx;h!x;GKhDE>Qw^Y5AohC|4 z%Q3B{;oGX%t?~m41RcP}SCps+t_=fl-Y^FMkt=|3B3~G?Pg{=#!~kqs>`Ta>wK>V= zoFAaN{G!8EFaY7ZA4;Cgy7X8QUhIVi04ruAt#mH{2!9MbZw!(EV3!W=g2(y*;AV7R zQQ>(ukv5Xp^}PrHct$YC(o~CG_4#>?LU*dXISwyiOqx zeq)B_izq>Y%Xq*ubsRZ>r*3XH8q7kve~u9S{muIAoUVX7uZj?Ziuu4Z@<+#xjTydg zy1z?J`qZZR91UCSFITqo(+SKVIv+#U={g4?2-7l9?WSZ^OaI?Mw5n9E@;rhirkEnGZW@TwEKUhf8s~5 zs~VkLfoC~|Y%-#^snTS*+5*rBeAzMhvArZ({v2&_mc6&i6jn0+-dY5kaN7#$J+eb=RW)M z=Z8uR8#b(|bRntBM}6Ts@bx(JKA@AA#+$8Mus0VB8>k&5QRaqqfFZTS>Jnk7(G9N# zooc`<&M&yWee3MB<~8;nr#$>73E6A^NL40*aR)+YjfDe=aX_`tVA_+M9X|*RQgzd>A=6hjz+tY*c$`Gb1qloM@aqINHHz4ZKZvD2*!;rq;*R9a}DIEdAwV z605f7aAiU^Ogvw}x~|0>V@eqsva9l-32S2a^Dpmwb;S3DUD&nK-j(voh+Ue4UF<^L zT-9`H)p3Yd_jNElo@(xI8%xCN*tUMujIO>hEF6I>)`RWtJX*e-ecpZ~Egw0a=gm}F z9`yhSoyoXdY4%muP0AeFecwJkAT5JO0xd>Urj({P&ySZ44i%zgq$&BWQtw@ETJu!i zx*3)*o)WwxW*NM?PkNAUc-5z~qGIi_l!|e1bZq3`{pJ1EUTsahmX>#PLn?kKzdjy; zbR)0>zf1t=4`+lUk;TmUAJwNQTCvajT`7q(F1xz#f?koytxbla+z`#w$k^{gI(fz z`}b=`gA!zvvR&XMVvI=RI5Et=MB#f^{pX`5Eyfc4@VBduf^9eRaBZwE+Wo3l+Ddt5 zht$Q|N&oDVU@K6T(pqMhF7ov8rYN<@H!y5uJQpA6tyc4#xqDxO7=6hSN;ohIofB3a zi(8_8bW?!3I2QXEUB@Aj;!S(Y*s8mulmqa!F1IYlMVc$^&!`%u&m14{AS^M_%EzZh zawoy~8q+o0w;lR2_>%b->v%Gndd%?J-~ZKuZbJN3b-%T}S1xULD(2ycjrml8+eYSW zZ!*p+`RKdDCh(%l8~SJ_qOuU1J6$t;G}N=}IvW9t3Z3z2HGUKTvJ}3_-U9I)Kvgb{ zu;rP|(O>nR))2TYB9%6HQCyrxR)5l>Iic-$be%)fEr4=L93O30z3L)-Id65NLnOi) zJx2qh=RgOwAt%;ve!$5bd!U|mC{J{3&7-rTInWo-au4#~WePzW1 zVi8B+L;FqHV{-;S7f!M8;J`ucBpEL=4&J7f+J4dc@x)hLAgPJNb;NQ?L@D~UBXz}l z;Qn0rB@J;&>pOg2ZHZI--C2*Qc=-3diLIdJRzcuEy>IhYIqt{6z>oFxZ4M8pxoR-+ z92Y{XuC_dkJN}*ttmdDs_UWWX+*GQ>$OcbR)C;ybm>2w#(38Z#%#ynb&2H&t@X+PT zWSqB3QaGMgV#?CS#g=g{@xPb|WqUYzDr;B!{MBH+lrT;iP0pbn zPZJc{ELV&PhRErULnYoGU0OT)Yzc)A?ahxZF*CK5Q(6$v5fGR85){ z;=vj{gWZj{sKDotfInXX6loOc+6G!~gi> zA%2PaxZz<1N_ge#y2Y9+?EPzcTMbo;9TeR)^rTN@>h%5kQD+C6q1KcTzY7{@AO>Ta zS2|72In}Y-l31nZn9LuK7TV`+j*6VtN$KrR{(C6XTfr%586isOR8FO>Z@;-&v!ETiOaavdW*$H)5k#8hjQR4m_C%ZaO z?a>KI(|9F&ax%EE6=aNFfo|R3U|4r}O8X8*pWw(4h@Z+sQG8@-t`iXXx+JjVZlvGA zyVRlWF|*NZZO#ov*_c1p*)b6?LQyg3DOP~AQUB@_~^-6&YspB hoBzlE6+Jd2MxG_`sjFXDVf_{X7(+9IGJWT#{{z21&0GKg literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/boatpaper.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/boatpaper.png new file mode 100644 index 0000000000000000000000000000000000000000..68cde434ff9a2b70ccd616bbb81f8d3ac245f4b1 GIT binary patch literal 3525 zcmeH~={Fl%7si7$hN_0#5@Tbos!9y))tEwploUk~vzQV}iz-!Gv`7aMGeOjp2JNk> zmsZtuiK%8fp>@q;4UMUI)4$>U_`VSN%2sOL#R!VPv~urU~d49NC*xJ;V77;j}MXHeQ!nkCMTUX7LBqEcU{RN2H16o z#~U=Le}obOM%|Ggu0RX(nM;pw2V@wEt87JGt16m4hF6-_@_k&7@GE?CsgywTQk* zUpmsKd((f9pC4%G?!b-x#?1|bYj8n^M=cD+`DVm(yw)mIuVm-!wjN$=3wS=X(nO$>E)^lx_$&JW<(5-a?PV z|E=vto!ar{SW8@~U?XKJ6(Hz|6+@WXTdI#Z*Im*6IfgxyR5|1nDMJg3y;3N-;v^X+e>nsh6~4ut z<0$$Qx;hF^#Gs0^(=$@g+kM&Xy)P{A@9Xg+a?g#=J<^!wta_`-)tZguE`-*W~|^JknnJ#dUsC z$$q#}myYxO1J(9s@iEk8$bA8}HjIgB_bIhLwT%g`9wcry;uq)UjMO~cq@Zn$phf;W z;b{NQZO&(DIhJ4Qvh5-($tl*49qf5QmFJtAcoI<^o5(WDzibN}wMFcex-<=b+_*aL|DYNGuYknkZCUriherRDuj}Z}AjO%^eq!4DI z@w-`y!?yK1kB3(m(cVNxzNn(?8Rgi~^er~hE^3Gi|L#ms zJz&?4lSUJPC@)~zKoOAjUbFrn=(ch#=Dg#HNS znR(h6@!6yCj21u%F(<+CIxoo68%P_k99F-%4P9P>a?W(6Z32PU9l!iYyC^nRH0mw)j^3s zU?ADCUwI(I|Kk(rKN6tF4J=5ork$peSqj!5f?Bc$Zdb&qAc8zxMWa@#L*|*M(n*h3 z4GjK7slT(q;hevCgsLWb9?``>;xUZe^CF?o+=EVAve%EFGiG_XT+Q#<@x7_}qmuXR zJlV2uw)uhnov1M^emhLtC1}N}v<5jMzG_aY)(RaoEl{uR2$7s%*x!~K8#R4Bm^AlK z!k{l7l8Je;9LxTY|K&hIr)6u?+-LA&oex#QYE|+uuQf@bu{#bGKVX`pvVl7&w+|bP zNBF1k^Yx;g(zxqO%o$HI5}+a%)Y4PJ~0Q@4W=$>w=HON~)1H8=3LTf?u$ zN2oBx!uk?*prFQs@us`Rya!SH2z`gW9DT=bof*UBxeEadn_rA9Gzl~E*Q0fBapP}a zA_>3#{#4G%4wdRS7Nk!lW zaq0chnCoZO7Z=F5RNPaSw9MWR1r-Eco{DozzDIg30jHF@$tlg9kZY&>w5kf7wz}S$ zDAAewP_WyzZg4S8C!jGcxMK0-`-TTHj=DB_CUSx7jY6{G%35_MjmaKljV+ktY;V^e zo8=p@CPmM-O1PFy7Di)Lg;T{q)O<8PRv;}=edL?3{?##72Q%N!Kr}6}`j;zIVZf~l z9UUz`7w)|zJTY%)@anG#D|lIQ#FD_KDBLVd%X;(`&cfd}LwqooCa0@ZI>@HO22_T*B%>!n5dmMT8ZKd!lTlX{Hqsj)D`D(IRir7b2{ zZRggREk!iXPQI2d61_03JWi-Vb@ZOes4UA=Zui z?sTRvy}|9exex*3=nO^o$R-qJ|LJYx-mOpeb^U0DOm=>?9ro=*S?Xa=(eVYrT`RZBNt;>11zp*kIaM&H{K)WBshjRl%wQYgEY<`PAO%{ zf6nBlpN7F^!}q>N)C5~I7lX3krak@?mj2p-cIN!a1`=B&*%tQuls2hJXGd)EMz;Hg z&8cy&lRIyR4hW-dkFp4posYL@_P2R2T~Wpt>@*;O(*bZqN169bmsH-kF5UBo)}bMY z8b)u}Aw<|tUCGSN&F@UT<(cGmM7Y>#BBKCK%(#D!?p9mzx<+eJ}V8pa1i zTIUERhC&mmJ|knNbGkcT_>>Q+5c1q94v>xm6P!EeF}?-5IS`JVrSLvPnW%~BL(RF< z6(I{wC;J%KUBXC8m=iy!5+k!MO}(E*SP>Jm@y0&WFx^>tYkKlDNL)|#t_J9L0q5K{ z^X&1@_oOcL3fGYp|Lw1eKg|zpfx+oG*;z`CagXq5eiE!t)K3OIy5)AASfs`u#(f9u z&hk&XKP*wbcGil=p_Lk54c%W{HA&AT{{BaKE9t*g% zp!B@Z!k6Q}KA4dWEx`9t7FL+-4;fA~ymB03lGPye}C8 zKsQY;13hCob}sg8S7w*e{<{h^-2)g;1bnHiiiqR5Eza^u@c{sUvuG63 zo{bE4ya1hIujms<1sgab>@CcICZF(~Y{KPhYGVojP#>K>^5kZ7-cXcF1OUKK|4(rI zONC#WElNh3-;BHw;u9I=8IA+k_+!IEBG?R!@$vD;;^NmYhq2S?qLHQ!_ubcvd9xgy zCA-_EB+mIHc>0%A;Z&^L^2Pbayo5&b?Q1h1I+nh^{?bVVYpqJO(ix`H{m^zIZj~>p zUxOkr6h=vvC$r2>ps&r`$T}E=`hmk$3ARbJGklxF9#o8#A4K1o2^Uge%($6 zaL*H8`M;KA>siu)(Pjz2E&8y|XcmCmtLtHdp_~cf{=8q2|Fs0*rG+lnXM!(G48wE= zbRZ^#|GD%fW4#PU_H?UEPu~~bG6Y=Mh=UIr_d04!o_-zw>KbXyxZ22<>%@n6fvw9w z_xAPe9aovaZEWT68s>Xu3A)5D9npX78ydp9@Ox@D#}EX!N0 zyvLe;ms*>XZC3ZRGmy)Vy3}n5$YsGZ@5001;U*#Y-O#|}r;Y|0q3yCIH>7SA0g00m zM5Pg@)Q1}?5*oM2h;NUqNK!FWdJ=$Jn0i6beEW1bZkZ8VR)2$f_hy6J%Id15x%{5h z_O>YMj0}O5O+gqei&d+w3NVgu!?^oCsSb<0ka)RI0B49c4i?M>6pnweA;i_+Z^@8v zR}$u&wF6%Y1qPQizIM{s-&-4X`C2or*3Do1Bg5%T+*Jbo6K_*WQIUcF4SOZd3v23P z1vNh(UKOSInXiKRpsvTdH6&tmwQx_i5DmAxz=`|W_MTC(fScCKnlu(g(fOO0+l85V z^?_xuRoqf9j+JrSAW<^|xdi1~6yHOM_d7~QUB}m+kc*2IlG2!YbJ)Y4Ui0T~XkMj8V0s1HYQlMoFIH7bpR8$PVK#F~NtgjNw(Q4wvH~keOH2y>Ag! zvPsoVwnM{l^Efb$=Y#k^vq= zSlF5T8vN$PW_uw+DbIs_`zbM(Uj>)zTz>?JiAgXrYqD~?pUb{=rs=`_KfZf%#0^1l z2ArFfsPD}+W9rxM*XMb(2DCd)NNScou`blI-VCa@?@2c`;;!BEq-Nz;w^KtvX=eXUI9 zlEJTa*)E=|7m>uh^WPZS9&tz`^0Vdta0dZnCPYNWLduf@fu zrMjP~Z<_3USdkx9pSBGbM!K7lMBfLMId__A7!a>7#^9I((ZWvsU5JAOYu5I;^Bk9) z=d?mK*^>u3(v)e}Wv+R=`Bzn0fP%_HzWkgP=8DqnKcBr>x$?Y!x8A{~-I0X#iqz}&JH%nj4KD8$N`>gYiq-g0e(xGHTozMiG zFj-S6H&5pD4OSPtlk6Yt3+ zf!OFv^mZh3ad;>EXsB7yxO*&lk51kZwMfrsKkgT9Fivv7x1v?fXG#D+y94-%K4=61 ze+9F=;4sSMHgyL9hr$?hLpeOIi z#CopP%I=}&pp0#XT(cHYPUivU_{=E#DzYxRTZsk+I$Uc{b&TCb(wg7<%}AXMzWofN z7-#0)96e=l<*G27x{`HR|)-X>m(`LkQ5joZv#={o;)BmLUn zrAA-a{RSE`u5_?1Iy^DG8v91)iSOfNiO+DykfY)tJs!~Dol_|+sB@tV3|vduX}{6@gk@m7glR=}jhmQC{5>16kOKi<4I zHXX2Mc+~U#1{~`_@v}!P*j?z$3np9)SW>9#d<_L*iThL6xZK@$!kJhBuSXQ1xN{6Y z_;jYZjg#S-ivgWXKU#NXc``uOzspd*Di;gpM=G|i3MpijI0_@Zb9YPioYbck<72V< zo#Y&fLM%fWlMb|1CSb+>mj2c zQ1Qxzxe8Hz3V$33LK%7rM&d_bnul zzi)b0JwKvcqx+Oz2ow)8k@qmfqy70^Y44h9-efRX2dT9E>z^tmMA)~_#sHTvx z8x6v?=gq~;_BZN<#uM_R$?aL9VP^`0opUrE=-*odLM*Iexli0hP#FtT{#Yh&?&Pg{ zN&TEjPF}9=h*_-=~h?F zA^g__+Ya4aUA~3pyYnMhx}RNZj`KVk;hI+AKBb-(zxd-N6-YFX=-~S&VvMo(dT5UO@4#*y7%T& z_*`04X|^T;9gpuq;(+N=`~1rDe^Y1U%f`W`oYYCM z31RX@FT9v-QS}xqrM%eg$Ls$G{MT#nDW0PN6^MW||EYw?>7lAaZxVXwHS{J;!9o*4Q+f+h6hcQJNThc}LhmmfL`nbw z5rV)A8UaIx(EM`#gL7`qd>4D~SRQUx7->an0XcR|D{If{REgK(6WtbpW6~<<^BW6{WuEqxaAs0H7QApLH!ugpLyc zpm);OQnw6p+R4A=WBHYRxMz8L^HNyZ@*h`#nHhtaG{h&B2)ExATZD+M*`i5{^+#s2 z{ENR~iXPNvVTeR+PevB6w3`xCAl7SCNub`;*Sdtdaqm|Rm))F93$1*4p*F}r3V-{T zUXK#||BxeA$RAErw(M|KvPNJi0BClzwU-J6FYp91fDNd@TrmI;YV8`O_zVE&2t+{! zxa0?>UjslzZ;GAE6o3o~3f>8&H?M)Un05P&{6SC#|0M=PW{NJH9GANZhC?@7`Q8ar zbOaZz%s68d{EM%qD1xG6U>wge0)Xh8^*CD$Llj)rSN4mnE&wPsOj|F@2Z(lCbIWm0 z27p|WIbGZ}06_czUUG)(8ugLrykQ-|kI0CRA9R5q8TbNu$KbUXiP*^ZQ_x)_gxp?V>jq7JAw zpR>yP`eeJdIr(W9buzgje1(;hs;RutgaG(VoFOH^VdH`jV-LHywC?ypOy>K(HAF$? zY`~Rht`1f{8t1=%Po#ss)b;s6SFX+$>kD^J^rH66Oy{q#o;jeDM~L`i^94a!9Js2Q zZo0dx!|gnqvvS{5fsEm}?JIlE;ZAB%qQxK1N&YI~%S=n_7c&rU5ogaFvbiD_|H{0O zsYLdy)2=4e^1pB=egU_%EM94D7#c?3Sr+2q)RV7h|ILuKeZOctZ_d~kd;^8H%X>0P**aLYXk%_^)D14Rgl0)_ znJTgYy+CWLzOlF60$IIEzw%zicN4DIy}oxkZFvtBFdwv?zl5Okcl{MfDE%SZvRLY~ zI}5yNZ}x$Vu6N5z%pJX0#UcawY9F1ehBrNnfz)c(=p1uOrs^cMr$z*mML871ENAa; z+Rm8osFqUkuj%O{*6Rno?ansC?2ad@b!>oqiqWeA5gIm=tuZ=}e56cR$j=fr8HZ~u@IT!ZWNXRhT@}!^!-boNtZ0&gs>An!G zb+~G-&xxN>iDtrf2E8P3odswXNXAQ1$&&@LwJ zqq;)$$ScN&N8%1wkgvP^P*gCm+D5djtE1;#ZH`x-jNI+dH?`V98=bo?EkWgTo?LtP z#;mfalVUB^0&Pmy@KX0&n`Q&DSkKYfdttLu?4`?6ywsbgG%pW^tQen()scKAt92zx^_HcJE+>+oN)euL)pB@{R22OW)sQ<}p zh!V$2=l|aF*sgf3h|TRqlEoe!-%z>wQIin%UM7U=a)(?xyR$sF`|G3~@T zz*{|&BWA(wY|lrCVh#rFtU7~<01%Tzx}L5+#dXuYW6k#X0nr1Ag41T{6q_!wced=L z*zF$wn}AF~K=eJL^&M6TAcJ0~9zXa0&l6D)VA>49!rTHaF*Rhe@bfJ(gbpbi>*>2aS@WHzOzHyt5kY&5ZO*}9)wkw5O>SXB@Aa|uPr$POw38mH zUY{QxzFM$h9GiEcwnxdHMCT4=(>GD)r(EJSpvSBVa@d*%c;hdZN;4zpSZ)e=lq%M9 zlPN@j4Oxv;{1*$2%n4%~MXy07!$Pj+d+MgIKDF%RdbcR0N9VCawS)@3)~jj8rIaMz zH7Q?p%{LjnUwI=HgE2U}$jEA3yOci_tq3<@%K&}6J(T>H3Y`Z--^iEE)J})j*4A1& zor%@jHziru*&0RkkV0<p*rD`u`rFTB0kscKcW7=X zsd|$9f?NLy+nuOBJWEWmuo}Edo-Fr`ZeLpjR@K${f`k|&2MeV!;gfQr7taMIr_CLL z@RpdD-vu(~NkI^;TP<9L0=HXnySS(@1iJADIo^$oi=AcK4Gg1;hV>mSyW&Km9h44u z+V|&MEL_ZSX0ReEqzk{54Ns9PPfx~!h|bRScezyb`0>E;GK@!Pir5a}tXb*b?Uj9; zO2Bfd!05`7+XZ6c@^W23V!G{#u-_Pybh}l)W~g@kdNty3;Zmj&w*~<9fg10W&~IM7 zdT#BVy_T9j#RQ&;Vm6lbSSXGOP{VLscj$Nk+w?eoBbm&#zqLBIN@3#YxY!F>--Iq_ zRTdbRcWH)+O21ny<09Bi>PB1S9}#6(59YT=bqevMW?MOAU!r9y6e;nmRYIvnV&j-- z!pBn$;~N>>rpzz~J>R`pf^M?sD#-ptzZ5)f`t+lNW}5X@tVX~Xa>#;0)JEtc_+Nas z`&uT^a-|l2_6bhI4_X761!U_oj@-JXR<`}VdznUXWW52!&Y$W6*2)&Q9xU`*ucl9u zOA$xSV!v8ZKh&~X&XOMv7r(wwfwRs@RW*CtaSyMuX&=9$G(7Nqz3;>)h-1ycuyGM5 z@`GlK36Fu-<$-bZ`R4wHT;7~md9cZfiBRZUMeiIxBGR41B;^(MEUAHa?cIB$6>ICv znJ4sL)<~T0d4u~wT>)e{D%s1k4zzlh(29AkZ$8-%1 zo(4RDB(hyS=aNelGHdYLciSANpVn6ENM};!!Twg29^ZP^5#)F;y4lNVxFIOejD1+` zEH5kok^pJ2HP7fiC$SM@%l|%Q0ea9{Fqx1)ZydmO&C&AJjVJV6L^>Y zt^+Ot|9~OoqN-}~H%&W`sI<0K+)n)_?;S=A`{1PBrAZzhre$KV`nAf= zh4!Y#(CID%eT0k?IKB2ck-akD1YtoAj}JtUkK<7B!I+cD_TMG%1FctlVz(=$%{4E4X%FU8=8R%S`L%v=WXn_bN zyx2_k|H+|HQp&jx(asbF4>(fZPJTn-DzorX$^YWQ1{J@^KRD?Z4@Oo!C+xI01C>u@ znIru(?q@uEQZym*Gr#bD3tM$V^#0J2D<=)PR>A-0AMAs}7f%|norqtrp>-2yVYG*P zRVPN=R)P{{Xl}LG6q?U+tSdK@Leh09ujjFCs01k3%^Ia*T5}~7ke}K4z62wFATSTh z>{Y+Tmu_up?btE6vUvQ9Yhm&+Xj-r*^F4aY90g|yl>E}50|3?!(bu!yrSSjH;~ZBs zC03z%T||s2d2gv#a*~4*t2opKtlv`xhSnHotQ=*Mkc&vDg;Bo7m%3lslR{C?3kG{% zioQk{7d%J#s<~6X<~52w$bI{uhLY=Q_B3A%Qbv-uN_RFNQgWT`di=tFVFSC7pPHM> VLa#{p$Hg6Ly_Kl1QFy_I!KLz(iJIElp>H& zA_#dQAP6WSpdx`ckq*M#`4i^Ltod;6S$nUu?k@MP=XZ9xwUsf)8KE;E5QxLn#K0EV zhk^Bs?KJQ-JrS=3HkMFZV?D6Whj=1jKViN`nP-n~K>-^UWa1nO0&x=lvsm)w zIE4YHV3;8~%r5XwSmdn`Z;+*rS4dzeU?EX=?)Z3lC(>1efzx%S2DgTD3}yH<*oZhcr4MfPo3c3t?~+7{O9b81c z{dwiXTwJDP(YE#?f^eC})D$NRy~WM%QYDt-oAQylkE7|`k)yMrJ$E}0=#6Xpf3$jk zcYlu_AG{|U*M-m00YOqFzp?PcLAY#~4zlI~Qt1o}8-#KSf`m`8z~2~y6w)*UhP~NX z*a%rV1D3IXKXyLrBODA*6T_vJ?6Bz|cRIuh#Q?uPm_vn_+)}0m`vdiK|K&ySz;n+QUnMjqDH%% z0{BgyEmdg(f&RM$(gw(tw9y~}wEA@F=ueKQQcJvc7 zsUuDp%3#dw&P;R$~re@sk(VVz`lSF)B?w-PYi2u1A)6=&EIPgO8w|daW%w9;Y??AQ?T#`6L^>RQ+1@ zs;91f>8t92Lln7_X*BCH<oY{cwJ^p(hCcGAdL9%gA;5(!DZ zqQO!L=~p-%Y1k1H@ zu~wI}Da1Y%4Tlwut)112b3NNh>!IQtD9^r%*{~ta8Pash-7X}zvT$vv_fkPJkuhEW zU~8k`Vw%@qo_KXztHzT6R^E8De05GV>C4s&1s3nE!@IPyp|K5X{WOsGtlB_5sD9Z1~*q-^scPj;G z4zlgmd99#gt@#AVf^13nw!aStJ!Z2vMDFoSy|=0$zaU+s(A9uYryAU@*V)hi{T33gRJ4Xp^a-J*IqVSSw8ILRhHAOKr^xhadZ;Gn<#{Hr{l_D`W- zUkt2cFF0`C<~)b3LC6!SVwr{(7IV>KUq&^dj%hoYLu*(2vroKmZl8In*py4N z&8!@EBirMdPg%zH`nZ~1yrth~qx0wa9iCFUqhI9mQr@axl~-{_8ih4sDuw#ZcmYL` zHG*E1(FcKTqQaIimM26 zsP=7VE+=o*>%4tuP9&f z4_-o@M!RF%M?H&uk1cthpz8!FAeBDbTQkCu8mBo_N-7>DRj*&EI*dMFmETsHxMa`79&#T=FcI(OD&0h zpH#_nfv?3ABO6<13rlq}kC;{m%>3WC3w__H%U3tB8jdubp;j7~tg*V-=0Y(9WPHJo zz-pA4pv`$V(>=HOpDHTeyM93!-SF^(l}S~{*Bh_P(^L`=2KD_nO~`0YInJHJamebg z{;u;($p?dXO)6sV>GA&}OZQ5$e!r(sRykODNbCJWag5mvJRI0%pd~|ng@B8LS4B^d z`GoYltnVaYgI8Qdr3Kj*m;B?bpIkHY)!o)R(} z5~0Gg!=dJtZ^1%+cF*C!L22(!lJsSOLw{j)3*7Qiej>+0W9225^V*`t4YQ4?oxBOr znQmi1!IxYEdhW?EEF6u$5E9ylqvYhr2URKUsG0_Q|G!DDj!1&wgs3*HB8o|9xw5O|veYrVf9a4v~3Vp=D{(y;{ zeyySE;z}_PE>FaBu50P`_26Wz%ZUfas3<0QFu=+b4@}q2K*WPJ&S+*&ULqKcvNtg=HKKfXRg${ zYRK&JiBxZ+0xOea&BY0Q`N{94=U38RX7F#NCfMJeR&IYnbD zUG-wVS;$F0Gl%V+S!S5vKjk^vojfDz$f0uf6b;Hrs|9(kZhYL@5>cgBZPmDM%JYif z8<2{FmT+K~hcV4Mt?L-)<&0p0NPE(U8b~V-8&`k!ytvZ*G|#S?(|d_mgUG*%tL0F< z_{yE%lg&LZATeHlSnWev`yC|$y0&dynnGm4BlhmCoK&bVzP)#D_};ZQrM*t?;cbcW zOWfh;qz}5-(`F!hat&VIYPgcow+J?_>$!GuONM<@TM{wr$1^oprzVAfCiSt8CA^!x zf7F)79+A~QxgL7V9Vx9SjB+#zGTg854Vh&8Ma~oT+x49xQjtuI=R@?h!a}U+>G6GI zVdNq~K=Grj-4edb>zR3Lgno5&C8GpNR&3jKO~`Bmi&}OzMKwl%(}~CrcftY8uMM6q zkkJ7!k7QHQy$N9cT@%jx41jqaHn4?tA%OV+f6pQ?fO+VB5MoLaz`U?9x(Wnf9*6t@ z35Q`X!8@B39aHI2T8~tw+tB~W9t0VuJ$cB|tB+xl_N|TP=tQA4WUq2$&{xy_>C&>i zcF)r*8I{+gKbp!*B!m}uB+c#Om)q3%-J|1i8nVNLvGhS$3cgCF)|830xsi^N-iq8M z*vs`RxEFtZA>+}}p1t?f!A?zDNE$A@eacw}X`yqd%!c6rTLH6+)eo`89Uxn}K09j} zP)6y5zB?VLbMB!4=XGFqQGfohYYx!+Rxai9VZiJXtj87oRvOTKQH=TzV0NLVh%kLo zATU{r5HtY;E($PB8l@a)LwwrOGX&5dM9gr#CQ$t$d_Y$k2qe9g}?s4}aWf2%{L8gXQ2Cwxz@BbVAJqDuy literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/busred.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/busred.png new file mode 100644 index 0000000000000000000000000000000000000000..1a10be1cf964a2d5c5bee20f8c0fa141c44bb029 GIT binary patch literal 3882 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carconvert.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..82a19dd2146095418a6ced38e8b5a06a46ac763e GIT binary patch literal 5669 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carearly.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carearly.png new file mode 100644 index 0000000000000000000000000000000000000000..ea61bf14236a51c8fe61d7aeb8a2a1406daea5f1 GIT binary patch literal 6634 zcmeHMWmgnX*CixH36&a}p`^Q{V;C4DWKcpnrMpAAV}=?UK}tXYN$DPtl9HAfVu+y| zeRzMv`|VlJhjY)`_w04fT4$~MVecEO{TlRyn3fm|3+oA3O?LIo<;%a#b_%z`}ak_kV$%&ixeda7p8-^3L;( zi;bs`xw|!%roE-Ri^l_E(z3C!x3ms95OsUt7=o1*^n6VY-aEKL=e$f{696DHvpiv6 zZ(Fy#pjp@NB-7aLtbv;M;$Txm>D23BPbnwbT(O$P=F#7;OOuhF*$69LpBr@!H(GQS zhz?EdsAK^E9O070h!X-CC=@ZEPM76?J{99#hGh@zy!tttr>)5zV={Y-w~GM>4ReOl zdo$;zhcCFJLYW1aaOR^Dnav1El0sAa3}cv6aIjfpMah-A)GVC3$OxlC6M@}F^YmK$pm1JddF+Lu^xE1>5eS;4^#>gxgQJIj}m}S_3C1&Nw8VL0(bi#2p*^s z+DLW_frrX}dy|q_Q_7k>>AE@~H!?MG+`Xh|xu)3)4wU*W?a$7Bn@;6kc@{{B~;mkw`hFbC}? zTrSB|+EfW7e@Xq1 z$4|b#ZEX!GDdxV&{@hTnv>+vYOUs7ocAzyfMCom)1g>)JlFZ9A`{+2=KsdSKupULW zxVe>U0Nz!NnQ~2%P#UXGA0bU@_;&wZ8(rH#{b{!Is{nqN(z^F8(V#9_3Q09AITmS6 z3bCqJB0R8?>Us@u*T6Xb>f{XX=z){_-I8C+^en!Gr-pQgW%!3dpKAJpo9xdttESGF zoxKCg584^IP9IA4QNbW3*7N?$S3eI} zM|6C$SuCkhS|-PvfrQk!RMyX&a->$sxye{7E^fXI`zvQdYc|y)I<|y#2Xa>!kWTXV zNJq#?N#OSOqSfW`M$nM&%O^RTJD*sb^a9@-Yhyv#LCCI)?Bo>*DvTwY80c7?L9ftw zN$vs)@zQAOE2XI&Se&1t2c)mFUAW!-xKbM&SId9h=F&|#=#sOz*zhby?zJ%@VR^F= z2}eElS>^JmYL{QG%w~-O2#iM-QE*I6gKYF5w zCUjTMWhLUSE%_$z%}|xTE#{nNnI-(HaZ}9C6Gi$-Jf5AwA31%KlJgn5h$%x7o49;DWbIFHP)3Mr` znfa2ww0+|cpA@QJquRv_D-8JjV(04m@yS+qxVEVj>RG)lvZ~U}?&_OKMPz*GigSa_ zdEsR3M|;*iACji1O&U^)f~kND>I#`(7v;I{nHCe=Ha5o)!cftG(=P0OHmb_f7tvtF zdJbMFhE5Xa3p6~5g}YRXYK++q-%Ew6EH};P`Sj~yt-ZHSLE-yS{(5ts%_|ltVw^)y zfE~?uyF7W9meUDlDEu&6R3nxGAh`5_lFqvIM}Rf{^iOG9bCK?n5CYY?H&lEkwLe?% zkfFb%lwjoZl9j3l9}n9Z_4Ck^*6z~ml_JO9e>~o*l7D5>UU|xs?=E5xJ6Tft$@n5q zmNh^tccSHq^mA^(N4W}N4zy(e0E)i+Ij<9aoz<`&A`Hy!bp_$QiLBP?SB2;QUWzCt z(yMNI%9tVb$LeLKC7N%A?=To%%_(JKEHB`^GSM1|Lk zTC+5{It?mpyJL4Uw#JI~$q?^}-Ab*yVNDLZh{;OcmkXkOHl>7q-b~zXLj)qvQhZOZ za+Az%Z1!HttMd6KYItm+_g$h~v9rV&?q*LekjiFtRa~M(pZU>`9+>urSy8x9RKWau~ZyJ?%bbl zRo;RDvl{rG+-_A+GJ=|9y&n31`H~(Y+6m8mv%_V$GpXu@IJe0Ac|Cze;VMtJsPSCo zdFcL_2~con7UKn_@1RCftpe>UAkl2m8GPB2)y4{;+$Ra*2pRJ*y-=Q8tvO`=v%wh% zgf5l?TH7sP+YXE`B#|B~@^H1Xo)I^Ny`kbqhnWe3gTCeFGY|cy28d?gkzAAzz0_e)x>Edu$I=VcOpgq-PAR-S}6y zw2H`6*V+xfN&HhYyq-$iPxF~V3YNw^un~P^a(~$9gg(r3v_T@TxAl24$9YWo7B4ZG zwx%oP`L(8o_gv@DU*{iVpjPa(){q8tdO^@t(cK2O+#B0LIny8d`b+NdcZ)eL!y)(U znXZGKQdqnfKiYK-wSgh7-|Bs+z8*&HP_^c3Zv=7A8Sg#5}Kp+n{_9szWnRH zB5TcYeX`kw5T*?_68r$1t`>sMNa!@U^Wx|!(9}v4@lYNvMi9N4(F+cKOv0cy2wNNV zw^Pl1ES=9ecB%-X(08I_&zOe8UsP&~#w7oFDdcqTxnRl0pCzJ0HL@d|AICz=w|A*# zF0W>7MtBlrn$6rfp8d(T@DiJfj7Ce2+*#T)ERZxl{+y7DDIXrXCm(rEt`erbGLfoG zg|(X^(PgJi?B%#S%@woC*E4*~MGvNiHoN`;R(+!?2M||_)9JwIjRDjj8KyAZeUB4# z*1CuK0bahHgR7UfRsIZ{05$L6F)M0IL4p>SLpoq8XG-$7j_;%(NuDs0bL-g*tA}|2 z@F#KAXy@0uI23Is-M1$_jdLhVvck^Q7c*7o4*Cw-lb4N7nV5ekyjB3NXy^MBo^0b{ zB*Qxd1cyBSZD*^#ecq%QSKz9g_x%DI1Ep^#|3C!#0+^TG;pmd^w^8DXn6du`mE(uO zkPH&thm2l~0EHA7XC^}5tY6V;tEL#V>0;_n!<9;ls&885D**Xo2zER>YVF~4_7XlX zp0{~Z_7sF*YNWmDR;iQAl8N6xEdJ>p{c_&UGTLe?zrF5$BN^&*Fv%i1VE(?d564kDk95l{ZbYlkm%Fs|Jnst$Fd@tTGqo)F`<#B3d)Cs2o8r#^4fj`~o` zta9mU#aS{=-J10Z$G@HEvGxi;OZ*Y`Zgb{B0tZ(zhRdp93}ZTrIr!*nfEw zy!?}dHI0iSGHHV?>1ay;8B^jRz+bOH$3ZKrRw$@Ob_^RZ?_wMAWwL6Z$+AEg`)WF6}`xVA2v&h87hiBw@Uim+kzaXj|aEYf)9ZSe(imEQ;{ z&)Mp~2cjA6B}TaA)b>MF5d?p_hgbN9U-+>4jie6srs>x#l7A4Osni!&-6|iIgRRl} z!*<$24dx~n-F~U<%}AD;B*cG%Nj}=an#b~Cs>vhU&O(a!^n!3aQ<;cR$LM(O9?hYx zLq*a|N#c@@XHdQ^ltmAr*0N?0RAelM1pJQv`-w648t?^t@EE^ zFPbm|Ue8*)SJlSD)T_wjpGjOPdye=4=C%W7K|v2J9v2cU9tnuh!w zrL|+zExfvqis)RY#FG?_i?&To2JgY1;^kzEu-iuSP{D9Yt{Z1T_Go8LrEb&`%I1mH zZT$@C@cq%a6hYv7W(W{`!qccnZK_-OLaL@j`57&VSZfMyG4bi=3&-%gUT(P=QA&z^ zEyh6YU~Bb6!;v1tofo6N=bejnDosXNG9BuFsrlGN-)%QPDro9<+lBH+!KwI%P66T$ zgGwMBR`5F`-26oVSPh1JVYxX!$f#u8XXj-DQGxyXr07Kyf(FTj#oyZ_LZPVb0$;_$ z(B4gzi0@Gi3Hb9N9WDh`|1gZ@GcMR-?EYJG3^P@NXF(b&6tI0xSp2EK|04jnXMtjU zJWmY}W-zNb>I#Fen zETaYQc(uM7m8C{`+FvTcEPsoi@SEH*RyYX3A{yw=WPCzkuY`fH=XNXyU;Dv5l0;rU zQ8>|(OPO3IyOFNs^mtV7z_3n8IMCE93z%B(Y#q1jsO{-uuAd=Q&Sfrhbw{W06PNiu z!yHJ1C2jcdD`X`;Euu%_0T89ySA0K7if+V4kWxlnM|O$t31+0%b# zqK$MYEYB zUc=3KzdPUK2=0!%EL3?^N&a?U*Le5OT!f?D|BXRYmT&m+p(#i=2H#i<_A0c$58ntv z@)ll*7d=}pNJzNQ96%~0=GnRg@;_?#{Q;Qn#+7=7Ht)@+V{;L7;=<&rHf)gK zrU`h2fs_fJVAkK#2VwgrCtqa=7f#c6g8ihwLK-3dOS`6%9GWra@+dui7w#{*Oa^+U z%I<%ifiOaFWqmSM)S@^PJ?R0s49$|trhzh-qMnyorg7Sw{0yxBT+A`kuy9j z9Dcez;!1if16a^8?6*%wqr|@n~=5lCrnAl!r;F?L0ZFwkSh)y^EQ@;u9*=;V_ zfogz^6%$y3RFZIS)yE{@i8S?iPcT1sBCxkTx{&_gXP;Gg2%e4|@{?$se&u%?isK-S zEImVytpQ=yIyV7n<|(Qt8F+3IW+>}|>AqDW#LBhg6FSIFp_LYEy{Po#fw}L6&(`l{ zL$+TU)Vmh(>1MZz(tQXCwKY>JWZUbDJY9k-%sny*ygm3XG1cC+(E~TfE1nXGVG6%l z=Yoq0R6MATWjIg9$ z*6omFexsM9W*+*6FYHn4gn;wHl?iEyy0GTLe#r5G#Fcm+zWmLEXe28k$G>Im>gI82 zsCelVP5g_y2kBrJH@;?^6_qBW$HD?%1RY&-5p2I(((}4LyCOtHkv`@E(joSA_h90p@?1KxJ*X!Wl)-g4<-HyX_6hpGK=z(fY`M*AI?C+?um+->uSEsvLy{A69f&H>#^wyS~ zJ*txDnc1k-)uoRIzv58(JGV>SKF!a?ES#4IBHPESjcXR!Cg@Sa5wyVQ)-&$|bHAHG zz_fuNbggI2_H9*Y)r|it4w((h7BeJ;{M=8CMJ$zth@;#SZl*PEl9C!{ocM1cD$}z* zPcO2=L`&xG8&A7+rAV*L${tsX0796>2>osO+!^v`+tQ(B9=Z`dvlOwY9q4*e;{36R z5XeZ%zr|On?8a>O)4~`D5J(T9&jHLZo5(=dR^VFy&{A3cwv~AC#auHyR9nokzm*l2 zPad6YaZLBNu=1SFx_?5?HSGx1RSHC8n)KpPOM2dZzjAA7peG_9>y>U+#{HIM9Cpdb zM^F$=vx-1P3hs{jt{9))t(;PYDxcYuMhm0P-dL2xm?IlF*3rYSfOSA{ZUNBQaidJ( zh)(SLlXo8TZQDWT|15BsiL$IC061>e2w+jtm?&H?XM1S~gWyi^5OgM1Z%E++bK&y3 zr4=)P>BJ6JxcSZB3V7oLYlP4kBche{m(`yqq=Vrohuce}hil$tad^O-a7GDnK*!Xk z#!O=AG~zcfW;b@Ah}>P!S%ST)*ia4b`=D+sGjCI9V{aut`0J+Zh-@)0{TXsulNy4P zRx22OrfG#|nc~K*-bSO^)GCY+IC(Mxprm%SHcj`5shP#D`hTUlh?`N!Qgk2c)NRyG zOpLDG;ezM=hB=Pgu<-LRt98Fm?xd_pCQ&4wFngKNE9*GE{N0ssS)68Pn+@#(VJViL zIuJqMi{I&S&IkIxKwWA=gx(?r?mD%P9Y}J&-H2k9n9?I!bT8qXQbf}{d{wQL?AG|B zF+A)x#0h^dk14q-1|r;g(3-7Zsbp)G=2R)(epuLq03HnBg^Bsd8YVJ7m@7kSO)u-$ z$0M(-3i0<^?+{Gxn_$HhYEI?t{vw7myr~v7T5NShd2ZKbm&fTf*Pyob_I2N=dY^YI z+O+5_4zc-zK zD8{d~xwiZZo9@%3Im5C)M=?<_(mB@}Rni$n73k;cFK%teY%u05FK+I^yL?nFYS zq*Ptd&ICAL@b|D-G%2*+3_nfjQkVlNE=9T@xf=Y1=q;0-B}49(5<3Z~W+kw-E(wJd zVjA~OY(Mp@@z15P-j}JCFftq*RA|W++sU`%zLhw*wWSZx4W;Fx4 z{rIct&-hRY47Dn2PJEyq+=%Z6F_{66v0-`Z|7-I9+{vBX^0x?ABg%Eq!&eLzSmm{H JjiOoDe*gk#vU~sl literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfast.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfast.png new file mode 100644 index 0000000000000000000000000000000000000000..4efb55d0c0462ea4276141aeea00ae13670bfe5e GIT binary patch literal 6753 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfaster.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carfaster.png new file mode 100644 index 0000000000000000000000000000000000000000..261618444b53b7bcd3c1b55af47fb28e402adabc GIT binary patch literal 6664 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carracer.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/carracer.png new file mode 100644 index 0000000000000000000000000000000000000000..dd66f9465d7c0d6529bcb5b8df317c5ad5db7b47 GIT binary patch literal 6844 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 YD{TWHsSiG^@Zk~ySXM=*TFNx!Kk{rKD*ylh literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeace.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeace.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb2a9781b4b54d076cdf7c962455e1cad87dd2d GIT binary patch literal 7329 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 v*i$R=2?mj2Xnd~+KV|#>QvSDZxh710#sRApXI literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeglider.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeglider.png new file mode 100644 index 0000000000000000000000000000000000000000..35d2fef7b0e9a19194b3b8bb4fd6056a47a391e2 GIT binary patch literal 6600 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 DotRL< literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeprop.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/planeprop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4043ca8e769e930a398b47b0e800db26e18fa37 GIT binary patch literal 6537 zcmeI1=QkWq*!PtcmZ%~6TC0R;(OWF5{8&ADm(_c8(Pi}-L|H95Av#O+UZW;@lwc8c z6GRWU=Z|>KxnJBbuDQP7IcKhOop~{5<}?!u8TomdBIp2_Aef0DG7Q3YQ`17@rOMUA?8#C|GpK-bziDYKlL?j!ZjIyPeYXOi#0c- zl8)Gu_^{13uJcw$H~g?@$OrZ3K@9Y3U{#6mRFfmro5+Mg58~~YJ#!#T4w#x8JC7JrkONYYi+A#{5^=$( zgl441-#&=VjWRzD04|4$Jf}%CJ^6!pxpGz$0WJW*M-&fUY_S#qVxx1`(kTFGU|^O5 zv)#)F@yGppI~6jFik$igZSUx4BsC=QVPI|AxC&2paQdW6kQLC+pm0QH}Vs< zYI$oR>K?|SUTThSAakK;UrMSv{9Tqv4%zI?ymO>Qj#{r;b(WHr=7WPegUhnkMEVlw z4V;}Y7piS(;B=9ke-cld`oS~Q?Mb-T?5cl6Yp{hSloqOwy+6~_OyXbM|)2G-EO z{4{1pd!pA@%4xtcUKB0(`0yKu(Kr7Wj4T`Kah$po@~f%U6D_lysh3<`3ityyD-?g% zK~7yE>s~b2ae3UF&`&Q_vOJz8GNu=s(Hhbz)I^A{kBs2&1YKjBhObwLC+dZ1g`0`q z4JCbQRIDsf1M0vVm$a;5zb-)1&LJsEfz!Ou;ZIQ}j1!ei{|XsO@)avRLGjihdt;)F zsu08BDT^_Q7b^9e8L?$uzV3q(yKV)Qu;KrH? z6Z(l<$2+C6iqPc95l#YHl$(NE%J>$!XQG^rUd zRTq%@7gwaOPc4xMQI^fFb{oi2t!963GyJM?cd<2h zI!532sXC)`)Z85A*5wn6HYwHq_+N!?!Auoy|GjW#f0;a$g%imwrNEz|7#}rv79Au& z-1gsh#E8c$F#^fQKEE+n9SjJ<;BTm?IG<@;7%(-HEA3bTB|~JDc=>2X;4VsAxtnO} zzwVQX&p!5Ffd}UqI;lzWV=xvI5BiQ7kLNJeXE&0jL%2|$9By|utxlRy#pMFoGRjlgUYRu` z6`i=APdmn>hMBbG@n=V{q-fD7na8)dMXC<;5$on9#p`09XS}_=RR=1*L+urV6SE}j zP@>g$cah{11cHqxt&iaM&~Aq~|D92RMKK_$w5LI;bP-@wnL+h8y?W_swd+nq393=2 z(WB*lK=S6sR&qI@^(cFFz&RaTeZt(mksVaiLIUB-hE77?zvK}aW07qem?fuo3Hg0` z!GYaZUt?p23~a3_XG|sYuDvU(DQo+&^0^vLt-FPfv)9SrlDfum^ z_fU4ts%Gq-m9%g4{)%bxV$`d8XJn5==D)zHP41n*_X6VGw+`i3wd<~XPpHn~nW})r z2d?);fZnElSyqBbVTeORR9mkvuR>(P@PcxKlUb*1e(+LT`tvyOP|9tO zA0Q#0QtG2K5W*0NeTCGH1XxD-UP|W&|7_lquXEnX%J1~kWsQ1?*!ycOTtZDjR~Pe| zOrG8S7iY}tUb?4Kbk9P*QQY{&4EVX@3p|C4!@F9{omTj^Q4s@CRQA?2JLWW3r|)1KeOTA1mi>jEvEi zLW(3ZIF*T!weUFQRh6KvihjzSwr20cGUOcC$|HGWPkMOr}DQeA*l3N9v zvG4S zjgM`l732j0f82F#O=Uy#>AAv0gZwP2v@!co?!fu;wpX67{%^s>E@E7Oy{I(rK+j`X zax=)`_`q5y1f-+xtX^H01SY~qfk(EK=W-l1xba9o=+hhxUbtZP;?3XR_dx#MIx~(> ztuHU{{`pxT+vQn9^Lkv;UZ;(4<5oDIb|8AJ8D~?skn)%KGQZN@Eadfs?v)g`keAZ+ zUQIi#rjTW~eV3jVy=&~2f*mo02oE4fG;IObkO(<1BBhn5klPBy=^cZMCiFL)c&_rd z*M2Z29iVQtUIVnJLby~u&qexhvL_xfWP>k%6r20D@bV(c9MLj(a4g5xifhGKUwWv^N{ z9WCZ<@PymxlhKww@x8B+9KR(cL+=j#Ky{xb?nqrrEyp+fQwX~3pL=g&*iC;VKlWb^ z#<*NaWK4kGWK1!?p{@4TIk$ZreB}ZI6c(cxSlnb>?ry62#Hg1RNE(v)6R#t9t)t1& z^6$>MX^bg`ydb{>Iy&d1x=zay#4dP0I-x-+ED`JhXp{1+5uNr!wx%(pM{kht&omk+ z1js~;4gJj&&t@%kV0Xk?p;j`+S z?xc1^JbJkY7O|Bgv5vUL2K*?SuOoFzte@AF_x#7g5R3X<3Uq-T<6wJtb z`Z9QlA^{p$LV+dJT6f+df$_oOW|o9P{(}J!W<-S95p#ILHgiMxc7M;=#H@5iN@P1+ z+RW>-FnbVnho_v(!|3AtBDy4|`@1nI#=Prz0Rdq@K9tM93UxchH>dl#)=w!7P7MvQ z8QS}H&Z$i4?gtB9?(tV+W0EH~qK)vFw<_m?E@}S_`KpSL+xL1g8$6FRtLM4TU%yW^ z?>GT6q!qm%bZJyI7_lb~2K#d2DdJko`^J|gHp)K9mt|Y#n0&6#Cb~?dyWJCe+I+~t z&VCl16~6EDyleW-OZHqkn_}1}I(cg*NI(PP3~;+h|#~YSeHh+mylZG#b?%X3U&7KVaRZJ z#fW9O#8xWkS@@RX`n#8nPB*41E2n?_7G?5z5%VQx4`(4hX*Bh2B57kOmA^w8O18Va zud6fPV-mG)QPB=_pkz$FEs*V$^O?j8loCjg%`GS#GSviw`Z3Vdi$nM(dq9JI*UTgWZc3ri|biwG6JqSvGHpjW=$K z_G?cQ|BNZOkJk>AKuicEDZG(*hv$u2brwM&oe9Bc_vIznx<97rZ#fuk1oJgy{6?{i zwtpd1N8km-Q;?T$pRMBnhwW@#T{<2*DvEdM?5z3#wMEv`UZVua25*@nEB<_aJHhZz z^_#vsN}S(FOoSIHr+&vwX#}9{EHo?b(?>QRKt1r8(l4zjn(A`rC?;gvW zh5MU=q1)$Bpi986jgr7l z02Pd?C`llW2u!r)tWr)E(4fEQI{>uED8c zzac!N9c5lMfcgFVB1o&{>JeY3%sCGQhFn(KC76+RJ_?M{NSVhiT)Y5RD%;_h*c{y1 zF*>|v^B()Maem2**)rmrvfj;`FkCnMaCT)%&My?|y^iNBe?1m>A~PAZ%p(aaQba@t zoh)wbbaCiT00a@!oS%F=^WgwSb*QBJwy+>FM}OTlEM48_`(U)O;VkHEl6;B9U& z8mEgYdx!LozJ(EbuB)z$8q=eNq4Io4frfm5Xp^dQqg}SL;--U;1ET6cAnjlomNG_ zS4IEx>@FIOUpyOJ46E`!Np8^mmDRY%9#(1BFlPlI!U_W56&+T_&C!l7-R#6F(MS}`9aI~-DF`lWtSG#ar{|ujG;-1(Xhbu|0;-f${%Juz3kwd7O~EMZ@T?6TXi|J6qIst*ze<9$UXBv(aCqw+TqhWZc&@Z=oWy_ zVmbX>QuQ=*SvO1@(w3Yznc8{whc3-}qxI6yPijTByfnw`SlAZ|mJoLDH}W(HG43;Z z#ss@Yz0cInMd8Cgc?oMDv+V*KejCS#$ZK|aKnZXW)=9!!aQNIK-8e+@y;4k;pMUbr zP?3DI5W-By%FJk$!+SYfugF|yw^tY4VumX%(j=p`=A*Mh(={m?T6iZ*M{4zb$kuZS z!Fl%8V}(VvhN=Rz#GgCeeKn-Yn1?u#%)4Be>NXamZ-7Qd%~F!ROA$hf+0FEn0pA`+T;s786umuhq-9+dRFT_KX8x+NZf| z2t@d^56fnm@HMYpxxJ18vDS9oQ85-%VbYnT5(Ki66H?hHOIN}t*p{z+O|*$KH2ias zFNIe}>ZH{oV8^+6nH75zvWc~5-eU>)%Yx@3l{!UW%*7>PGMW74!$${xKShSkh_um5jUw$sTg|LnN{plo#M_9}J1&rzv~u#CA3EZeSIbVipr5c^dR zA#07MVGS8q7=Kxwa>*M}FF?It3N_@XMzRro9;Khbkqz((_t)BYFU|krB@l}%qWV3^ zu=0bpZEhz8nTkh~*xtsPnLOpUdu;M2CVw}V#~*0qTrEeCvBNNt82eFbFYR8+fh!2n z%gB8RZR+6SZ=I>Yg#DqCqU%RIWcH#XpMot^O4|noIXDV_B&TpRa6$QKjEtB_D%NS3 zU@I?M`&?w66OPH&!~Mx0MZOmt6gw{5+$wCyu{d-V$^Be$Fpk6dJufBJH`_y~Ifq!u z@5ubO-v|re`Q9;b+e|}{6G#%?M-|GYR5QanIU9F#_!_v$)U57kI9Vz z8Omq(s8ONRK|4NPWH;0@@z6$W&$=WY1-inV!)IvtD$60u ztm&Dxa-f}*29W+oW3FJ!{ny_^mB&tpjyZ7tiSjfXCO(qMaJBNRH*4L~2{ieQbXRX- zPfA+!d-LqUO=@v32{z_OmwwOw$SQ$m5^09!hWZ8f39t)=7mwcIDi#z0TeX;K2Q8Wf zx)Yq4E)ej9)G|~2uPjR%(e7DK>4}$0ck5bn`6e5~5NDq0cb2A&!%*>m4LPawk4Pw2 zZ%DsmHzYjElqP8Eee<7P4}M(8EKTE~6j494%0pHeAr(a*KXG2CH{Tg3E_Ea8;`87=|B=SO~~S zTQ}%iV)2KG@3?Y04mZoa0I;3GlAn2QAf3plNZv|~8B}f;rUN=IdSez>hDh6QQv8NukjFn3X4i(pw^ zT~RGmOel^$Wp;K76oO^0x*qBDPx5Paz7qXA7p`s&52z^a77tZ|?;QJ0VcMN}V84eL zD*G!0*1vls&AEfbIg-FxFGj@#YkX84}|y@QO!pX z^T2p};NSUg9w722xw9*`+ye&2)y(!?V!>0T2sLt6!+l`WK=*G=U+*4J^ku(^DKW(Z zOb+`{W`6zvhzD5amvzD(s^R5|95u*3EWWFo&%jfBK+-=;95eqtVCFy3=w@p01GUC^ wrqO=*K%!%0tI(x5l-mE-%K!IW>AA)@7PK>`GVyIXJw9)blw z^WJ;zt@9hshkm-cs{85c-g~dT_UdRY4Mkiq1sDJT;3_N0=^*<-WGlb~A-~Gc3>C-@ z#a%~H22eXrb$}e8zmry%1^^lou^+5}$T60yl94+AfYQYp(x>v@}> zm|?q`?tYY9Hj~glYk6ywZn4;a+uYE@3$g)+SQg0YqH-3(SaStuWbDX9OVlIw<}}K5 zKTq4qgg7Xvu0XnRAOh$zK1++1Xg}$`uQ$IvdJH^1Y%;Fc7xOyvHNZD%zWMIQkh_kl zT;=!tyzYM5vLEpDY0TtEQ8`iv%F6Q!D6T?U8mwdK24;a?9%zAc;HY4N0P#<#;H34k zcXZ)8Gt;b$jJqukGc%rbY|^HE#=*Tu7dj@YXr2_#tkz!p-$^zJE?`ITU-cP9utIZ6 zy*vc^Bndd5=dd+rFcn95{VNW>zV8?Kl((6 zLfbz;Hc0Mrf>a`G&X znVOqFH`TxKZhF^7c3TfmKPEVU3HI%sm+)|c1@&trAHALUg~{51==dw2DTSkiRbn%0 z>|ExTVr1mjOtOz=@nA{szyui4W0-^$A!Rs^ROI=tJi&K{{S@Tnb{Q_bYk$Jm_ZwF{ z+K2&8)pezXui_(x`vrkfx}PF^!-u7>^#tY@HemU#wt(`z9jgQ%92L38Wy({!pfcNP z*``XdfH)ahw9gs41nb0fc!b6fzyJ?OhjV$a zHun{m5`D8-fsZ#7`+2B+!qGKAj(d1{XH9galt^}t@YLUc9`p2XA?^7yC;Qji0OVRzvs5JJ@fqdRm-B_KBvm~!z!_Mh5zdHe$1N%9bd>5 zI`rtk5y4aCNWsHDAr6f4p-^PR)KRYXNOo83ojSzW0zDH5v1Y$vjE-xjp6-@bAUn*v z7~P&U$(|o!fl^u5$xSW+&JH(rSw(?;DKcccL2}A4+6zb9SiK)l8T5 zM;cnrp1rd(+r1_)10$#r<;O!~KYRZknS8t`8WS@!H`ifTEIR?by39dtP5gqGZqI?^ z8eNZR$56m6W~fbZxRsa~!ufNVa?Q+nw#SUDi8{$=j}kgP{Cb}TR?1B_BWRM=}iNz6MEffFY*|p1- z#0Qjs{VBhL{O6}vp^rpj8-nwu)fd_q)6cblHV+C72ax}C;)$2QRJ>I}!14ZYPwt9& zMxB}1uPt|3PuNI)Ve81i^?B|z(`6BMSupBOsIup#5Zyo04YI*zFN>^{7=bjBq`8%u zweiTnys^vN;Q-&UaBV1xo7LsF@+!g=XyV%E7Z|rsi%htr0=cWReJ3Fx5k_;({BPbA z8oL_6LA~-%!A^hZ82D~<6ky8otA%;s1l7X5*;DnUjwVT7S_fSd7X|Zh{USu0?F2li zLz?2}E#H@eW-+1YT*$RB^x z(j-3_l4(k|gumo8v+XzVAS*mtCC*oGm zcN0c*X<dCxA?BN^iBqB_=?Of#~VeQn)fvgkSt_%h;%JYm8Adx!(#BDJS{<9e6IhLSz8#AnEWrAq)fyxIYfXnGCNoQexKfVX{crd>z~`kb!Muj@D^UWpoS!9s z<9}sk-0_|SUSK*d1Z}Vlkj-6VhHQW5* zET|Of(sFz^wBI~gR9f}*MTayE8x)6VA- zAV0uIAjZ0JKVtVr`&E0m1Wh7pAJ6lwl8~CE8onzuraR5=@E?lkR~OQg)h7@x?zOJH zw^D~Ll2gIXmeDMg_FEN=zga-SxdqbZ&Ar%bIu3n53;5-=26dV%5lCpRL9j{am@35V zJ^+9gO61ZU#Z7Gq%VhkyCu1JRS_0IIH_40aGSsz#-LVF^$9)EE!JJc|A^^DYn@14^7$vftkWD^a)cz$tFK{dS z@+sZGGB;{CoO?w-x)V!B{wbBiJox8bXzWd)A}wNTdWqP&qUZ+|a5mO9p&7>KXY{(8 zB`9dbZn@#42?^Wi!LS7GlCJ}S;gK~9Fx)tQv9-tIo9Dz|en$ozR;cto9+}0+fTwb{ zv5N>(D%_5|ndE!^OXgR@CDD2_6Le2Qy?UW7hssK+-k{Cu6w}Ci;oC_gI1JB;zh|{= z2+2)PhbdR}0&}v`WFxQ7il7DArBRLNDVV+q*>fOX`K3%BtDIucj>nj`W2KmKB>r*P z$=QdOS6ElnT2&jrs7;Pgnnw3kU;Ln!`oVJJ_B7}0^`VF)r&)*hT_HN2RX!9rlkAO* zR3gop^PeIET*ktC=NI{s8nJDG#b5pLI9yObG!JDzjSuae3TtwvX($@OMRX+drZ@7H zIqu}Ud!*Wg12QqH>@0N!Q99)OWIyUPdl_=jv&gRkMgDl&%@QHq{J0qvF2|g3T8iJ? zrP8trqZJUCoqn3|)S{(a!WaMNoRIl0hB#P}t@%)#gqH|JutoR&y(QM& z>>qh)YrS;dzZ;?Q5`V$RyWQu4QUlX5R+dmCw;P zjV@vdmk0Xs@X+4szEBPVdXKO4NsY@FH8=u}g zFe}7$ZWtkHfqS4M>XcB@nDJ(Gm-v&&G2XSwg&!LRDSCbF$05Pt(b05GzgGWt(G{a2;t^)44lT;1kFi9?5METR^pSEcMV;a6v?IP^dzhoJ63NXdqLUdScnRzGzDfv8ofl<=)CS1P= zfJ?uiJuk%dUb2YmJV0ow>^B&QFhZD}QY5Ups7`Z%bhuwsfZg2*2d9n*f&u9J=(m43 z$66~$=oE~`r$gUVZcY}6FVdvb{ov5{6=_aRHDMu=*IBlDmxJJKIzi>ycUvheMA2TO z3j`!dH!E|M5H?S>h>tND1e3jGQ3IF2(S7|`%!r6@fgsdlg4yf=-&{J}ve(nX-+qze zXnDUCu1$Z-c5^5|su5BF+wI+-6N83C#Q^;nvKiKSs$WUp!5_pRn0j0wY-@_$FZ+r% zl&v4bLc$g@%mW3y>_&+fcmQb@hV-m#Np#x56*t3+7i9omh2_D%WHzXYOgD%;xU-w+ zM_}!F0irBHWEl$BDxHA6ySa?R;T?uii)LM3dl>%wE)kMPX&n~}Ca@_<3pLh8fbP(W zj5mEiP!Kttx#xv37st`F{o~BkJej)M*Os);=`Rs6JvG=B3=M=&85tI89}${SdeWov ziq@HpO6_+hU;6l~neeVT_3y;Gt=mHUKuZRM6ij(U@cXHj-$d<7D#9>@On-BT&uiDvun= zBM!nSzcx7gB&X1hHcW?sS5teQDiVd;HRK@KgiL;L&h}Sb*zIc8;&p=H1Ndg~eO9Tdx-5OR`w#hz2s< zM@s;(u+e$?B&vUx>o*4&Tc=Gc_9=zjQ}0Qi+IQ@;HjN!{5i4sGw}|>?$h$ zn58{;?B~Lzq@P?NUtlG4)a6 zA0J_68`O(Wapp3}Abd=57TZl1f7hwiJQeWLbnuA6_Ta_Nj0-mcrxtfgUn(LCLDa_) zGIhhoER3xEKl$rX@=*QCG)eep|AS>YpmoVd*G0+=LbW8l;+ zdS^|wC}CA5*tWSLtBYm5U*uI1zmom&p3>u$&@W|qe@J#3Y8^xJfB1RIXPdpyKIj$g z_#;$0)$EZue&c6J%MT4KbS-URpB~~T5TMWpZP*Kjf4DGpj54-=*;moWr;C!}{rTru zlqstRAC{XV=6j+Yof@<6+8Qw_#MhZsHi@t6<2^z~F0B+E`QUskD_<0Z%0v zxLQA290t|CPmb_6O$bQu71@$7(J~09Ya2yz|3xsWf6r8@ucO2s(AO~U{Sj_VnN$A`3SW}%aZ zKJ2P7=8d7A!ilL)tmY%3exai#O}gfT;aRHf?7e-Ia}xfq`=*CAY~@$Xs|iY@Hfs@L zC8ATcYNmm^qS5oJ!P<(w|3MdF_AzH~^-z(nfi?$Il$1%T>)S@)WPcCd*I!0y%qtO%C2ab5A@!lz>s>-+qpP z1%^cBhlh8<DxZ<`EKNif0R5N(U^Pm2_eWP#2B;i9y8nPN3s}CSzmCwLqT6LZRCCmj7&cXZC zDMCFC|4DUwSQ-bNS+VfeLnI#({$*PBfe*)n-S~79P2^~ILt~Mi z9EYXcu$8pVz}0V>N+amZb`Gc3Y>`&qg_CnYosM$*L{ay}M4u0*pY>LXu@VaUbBrn* zWP)w&46&_vt-|0~Vj=CeQ5Z>zolCX=lPUH_7zTt|;RSQFS;v!|VzhF<#CsmK_2MR? z`-o)GDoN-w`gg~T4H8Sxc#${{?`i^Q*f}m%NHO8Y0TDN;>gQ5Z0sCBS`;YMFogXa~ z^{sk32Cf?4T7wxJSg-=IMa^)Kr6-6ca!8LxiO@rK^quQQ;Q%7YAkwzn#t=oCtHl}L_>>R&@PbnVy*?6bx@@FnSX^d(KebO5wPTN#mWEZVvtzYR=hN|+|nGF#D zSm?0LJXHN#BJM3o)q*O3@FPvV#55VfACD^x)M?OQ9ZKZv z*CW^es1u5V;(>%p$tlw+%ijA;Sf~-LTHupl0^9GtYovW};0+fWA--OalF-_9WJ;yA z2td#GzXe^IFL)G!-RkWR!%jx@Vf5#CRa~8Jr!pX=&pEljrsm~@oIA2>zwI$KC?l7Q z@BpK}T+-}M4ewc6NL#ga;9WV4eam)uNx2nOi^jn-d3HA}t7j~z2oF`>NJE8S$+cvB z-KLfA2PnmOBlOJ!B-&x`qA9{L{ZJN?iD8#(hlAynX*0(9lZ&oV}O#QLl`lKqdP@nfPjL8bVw+pQAz~qlm=l^Ln#UA5NVWd zX>bw(ci;cvKKGaV!#U^kKF>MlJ^;8Z`wA1qlfWwT3#{kl6MTOCIPZvDUce zDI+!jFGDqDl8?h|TSNi)6s3bAA;Be3{<9?`%H;0qkGx1oXuAF@fD|DbRuU5WZVfcb z*dMcNMec7hQIBa#?^OVkhNpu;$QM$T}M>SvqLC-g_$erVy2aJUx-k6UOuuV zSJz;UQy|NKRSY}6qYnV2Z-_+-*u##qKEC8*G~yinnH;#Mc#%_oxp!+@?qcV-`gmV@ zr+$iX5fp4HtU(6^hB|XEf-Qjn)Z#e^gj)R#2D-g^1x72;qV9vZ7hb_^r~uz#-`tbG zxL{v_yLhpwQ&N#cU~=<(uLA~Sr_rNF8Q+M&)Ty)giJVj!oCz|={9q!29lp;>hB(V( zI@EwO%L5`%-D?`)C2Dcub_~$5Bf^^{UcVV2fGb)DC|vDCMFjDmt0I{&7!VhewdiCim@UR?oz@T&Q6nCbh( zHzO6qEo-J|Q~0?}gh~-E=G=!6FxDR$5`do|f|-@Fginq>91$%<0n8u~zp=2cF+CKVA!ZaM`Ql z0~!pm}h2TS#9~}&l!{O>o=He>4+=B)|bdWK;QY<8QfUsdNvq;i!(Aa_Vmdl_S_EMMct6O21}AWK<>!ochLR84+L~oSy68*o8#fa^WMr_EuUW5Ta7L)0 z#|E8N0s?mzw$9S`M@wSMC*io0F&B1}p)jShb#MZ*% zeW5tsYIM&;&NAz`I2h*JW)X-Tm)ofKCX5@L6Efra7w`@wS;vkkmHawjM+(weIv^z{ ztb32$`mn<$RH6cLhu6s6U2>9RIqTlqN@8G49ba@9x#wMEl*AQ*E9H1Tfm7jxzTWkH zX!=spcP(T$q=|W*-_VHz4gC|fZ%IGKixO9_fbyiea5ZnoS-v~0A31geBdb|-d zR}3}Am}<71Qxyzb1tuZ)k2T?8`&2IzpgvQjrbc|clyuCQ3F30I^fU&6ui z;!OwLqIfo~A&WZRTh6JGQ!;D&{tZ$W+%}K4rXZcxu09b+z%^;>O_}>kQEeMmt?F}) zm4-849EF$X+|wGPk32=KT80B!aLC%Sf`Xr|)=|xJk9<4ndkqXQnoo5(9fUpJ={j%} z_y{q2&c3+3Wzi;UW@=hMA(_WjS3wBIZ#jx4(j|#k;(8+m{(e$USqi)sznbS(a zFT+&iGThXD&}8;TYvesWG!#3X3`>>7B}TmVPLkWdj%OGN)Jr#XDC)-CjS56kZ|U#> z;VNL+F0rS+!L^|cZkYTl5gqUWFDV00bX$MduOWfox@{eqi@mjE0B1-z`_9-H_v|N+ zbahp54UjaI8w5rHDUt+;w+0HXVMCEnC^wG*0YWev4Xhb}i8&0G$Lk!50)v4c6Nvt# zl?JtVlW4V8kHJI}enbr-B{~i2{}qn_ujf;Y9*D>pL1-B9Qmr8#>gWYlSLZL9gH|+$Jk#zCO@8HpVrd z=6h&jc8R{NBmZ4vE0b=AV9g1R)8ro7v7GEo$F1drQv7EBHET;XUAUIR=(Jjhrs8uJ z_3XDV42_MwBAA~g$oW4uknRX&wKMJJ^R*=v!oTgo?>XqgoWfT46tw6{23HGd4F%wE!(FFpo3F~f)2|}7V`X<4d;$+C zDV`N;i%12L;FaJCu{UX&GIK)q9F$+?+b%IcGXo-eaBDH!}Qqh;BOvV4laAI|{2L z+X_|7F>p}JXSPv7NruxC{Hj)Bvi4PKJ(6Zq0mLQyPV>!^n|oR5>SFX z!+=l(M|iq3y3RGfT@N{+s9I)m_-z`b+9XG`Qg|~fMhNslh&Hz)Gz~M_l|7^2JX6lT z`^4*ys)>{Lci61_7OhU!w^e^rCu$I|7-i!w#x7r%$q;-*W7X`gnr&rfoLH^-7Qs3U ziE-i>Sw~Z;sH*&^Nm>E%vOH0Dq{|Y0+p~JUnEj~k#Y~Bm&$)&70=}<*J3}$}cGa0@ zE7|%zy9Xc|ntZ+x0(YGK4~i$QCJsds=?A#|d0c4f;LBVJJO{ITXLSv1e>==3L`Aj7 zW05E0{NzjaO&Z-oH$|g&Gh|+a3&_Oks-;3a<0$9CsWg<45#yD(9LAKGU7^&=q(r&; zl^prhn#Vk;b73Jr-p1mp+uCV9YicvIdP<+rU8_00kf4uBJMaU?p;oCjSTPDOQE!ju3mYK(vL z_p_$yn+xG0ENCrGAm1zvvr@)4rIWfb5)%`s=5%StDPjL5%Io^yg7<2>?tA`>fry&- z!e^8%G8fFVU%NWqm=CR+mWZ@Cp5Xbm+4|2}+C_X^@?S6cQ9sp5S0ae}pwZHq#;3>d zDP)Mlq*2}C_0{`?Px6zSkT5u(B<)y%-a^s)CrY~MY6O9w<9!%50ydHqlHnnxJym=c z_00L1(|DT3xPnq>gk@P)-@j&;7yI?r-&Nzqq@~C$AyjNeXxsUhUN>E@ZzZFl9Ul#f z8HX*WTGFi49hrW4T_?yfL54O;+Vv>)d(@i$9C_9GO)+#j>p`Iol^P9WnWB0Qxvsg} zjIC^g;|6vdh3+yv-mbF{p!iwccRK#0gn(}|;bteDh;M<_mwc|~@0S?l?6c)Q?rdaR zOx0TL<(Uyolsmb%b2n1e{F~`cEk`-n<@tn;A<6wswdp78T1HzWnW#O-9-95)dw8TH zv?%mU&J}UT@cc%yiMm-&F+0kCyHI}bEdSH4c7R6&+XT zt-HR5K(VQJ56x>`auD}!KVj&)JupK>jQ@;(3w)NY`am<+aP8`cqh{Br4}m+%;AB2x z3QX&N`8eu60HnG{dtR1zzw0iJ9ySNg@~lll=zGzCNMg*}T#QTftQAc=YFU;NJ+V&9 zwcu3pE#0u=GHfh{qHI`TJF)I!9aRBMj5GVE9pg9TY4@)qX>iP>65K&$cAbN9#w^m= zLRFb%gNBl<3`}~t2-4u9I#UHv4sP{4iyxZHVmNMYyAYrJm%yq?H zK*GBzp0Y`DJ>F5LHQ1WsZPdydiEtOyhO)CB7+xTzyOdA=05i>U982^#Oaqad!&6bCN!}Y}k?pUTlO*)w7UX;rKP-I{ug$ggn|yuo;NVHZ+)P^oFtlCK z79$s`jA-OT!fTaC&?^cW-jxxsIn;lTE0L2dnQLuQeq5Em)*?!`j}5a|dRg{Gx>@fg zDtE@tKBd7ESR50bVL zN)=f^GWHzvTD2i({Lf=0o+m+9(+1aWwsUt&P{9$ zGL#>cBz(CvsJe|9J(ip=-n&P=D2(sjOcAS|L%C^3k+iA|G}V?~7Tmd4-s^l7Fvt5#mulLX^n;SXt>@tO5m-i#`MDE4@-{#Uloa_i+S{$eh- z<}dil$7E7c9QJl*e+P4whi~&dh+5DKiz@o!qc9zx_+sitKQMylV_>bZ6`aTBaU{jE z1XA&WYBd9QH!Eb>92e=VDB1K7`Qm7!t#Ebza{F~DGjn?V{@2zk5P^IVU3f%ED85(! zhtr!;Ct&Yx{gYM7RT2(j-XjVS#@5j#0!?m11W=#rE2wE)`rDVJ4$GJ=3w>V+78ies zap$4R3r&ig536@jdKlif7F6qbBgLYoL4sd8n-?khdmCF`y;xkId=qvJ58etIgmv6JteO)jIEzhu4kV2=?EKjg{>jNTvK$dZaW~FsdM3vF zTbPkrMMt15BuObMQxAeJL&uNi$?T*XsX6@_(`(}YNgn?3_k7$`Xw-rmqaySi=-kTFOE0s*6h^gy6isyE?lF zpB2QX-LkvRZ$8(G#=7Q9yP;)`G2u-Vk1b{WG)=Md*?D5&Ae^U78>pXC~#1f_?aTpG1fLo%xdZw za;fHBh>6V;9{8nm95LT9SQi-r&(H$S=lE3a*}AM=%PO=+hG3(=vo1~ literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/truckearly.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/Thumbs/truckearly.png new file mode 100644 index 0000000000000000000000000000000000000000..b325fa1d31e2fdc84faee54fab2b3e902853033e GIT binary patch literal 5897 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/boatpaper.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/boatpaper.png new file mode 100644 index 0000000000000000000000000000000000000000..68cde434ff9a2b70ccd616bbb81f8d3ac245f4b1 GIT binary patch literal 3525 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 VLa#{p$Hg6Ly_Kl1QFy_I!KLz(iJIElp>H& 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/busred.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/busred.png new file mode 100644 index 0000000000000000000000000000000000000000..1a10be1cf964a2d5c5bee20f8c0fa141c44bb029 GIT binary patch literal 3882 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carconvert.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..82a19dd2146095418a6ced38e8b5a06a46ac763e GIT binary patch literal 5669 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carearly.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carearly.png new file mode 100644 index 0000000000000000000000000000000000000000..ea61bf14236a51c8fe61d7aeb8a2a1406daea5f1 GIT binary patch literal 6634 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 JjiOoDe*gk#vU~sl literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfast.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfast.png new file mode 100644 index 0000000000000000000000000000000000000000..4efb55d0c0462ea4276141aeea00ae13670bfe5e GIT binary patch literal 6753 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfaster.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carfaster.png new file mode 100644 index 0000000000000000000000000000000000000000..261618444b53b7bcd3c1b55af47fb28e402adabc GIT binary patch literal 6664 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carracer.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/carracer.png new file mode 100644 index 0000000000000000000000000000000000000000..dd66f9465d7c0d6529bcb5b8df317c5ad5db7b47 GIT binary patch literal 6844 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 YD{TWHsSiG^@Zk~ySXM=*TFNx!Kk{rKD*ylh literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeace.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeace.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb2a9781b4b54d076cdf7c962455e1cad87dd2d GIT binary patch literal 7329 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 v*i$R=2?mj2Xnd~+KV|#>QvSDZxh710#sRApXI literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeglider.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeglider.png new file mode 100644 index 0000000000000000000000000000000000000000..35d2fef7b0e9a19194b3b8bb4fd6056a47a391e2 GIT binary patch literal 6600 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 DotRL< literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeprop.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/planeprop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4043ca8e769e930a398b47b0e800db26e18fa37 GIT binary patch literal 6537 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/truckearly.png b/samples/WingtipToys/WingtipToys-Assets/Catalog/Images/truckearly.png new file mode 100644 index 0000000000000000000000000000000000000000..b325fa1d31e2fdc84faee54fab2b3e902853033e GIT binary patch literal 5897 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 Idb{}F0M4tp!T + + +

<%: Title %>.

+

Your application description page.

+

Use this area to provide additional information.

+
diff --git a/samples/WingtipToys/WingtipToys/About.aspx.cs b/samples/WingtipToys/WingtipToys/About.aspx.cs new file mode 100644 index 000000000..b0e8f6d92 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/About.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys +{ + public partial class About : Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/About.aspx.designer.cs b/samples/WingtipToys/WingtipToys/About.aspx.designer.cs new file mode 100644 index 000000000..759f3e16c --- /dev/null +++ b/samples/WingtipToys/WingtipToys/About.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys +{ + + + public partial class About + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx new file mode 100644 index 000000000..a108d0e1e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx @@ -0,0 +1,28 @@ +<%@ Page Title="Phone Number" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AddPhoneNumber.aspx.cs" Inherits="WingtipToys.Account.AddPhoneNumber" %> + + +

<%: Title %>.

+ +
+

Add a phone number

+
+ +

+ +

+
+ Phone Number +
+ + +
+
+
+
+ +
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.cs b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.cs new file mode 100644 index 000000000..0386ac5a2 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using System.Threading.Tasks; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class AddPhoneNumber : System.Web.UI.Page + { + protected void PhoneNumber_Click(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + var code = manager.GenerateChangePhoneNumberToken(User.Identity.GetUserId(), PhoneNumber.Text); + if (manager.SmsService != null) + { + var message = new IdentityMessage + { + Destination = PhoneNumber.Text, + Body = "Your security code is " + code + }; + + manager.SmsService.Send(message); + } + + Response.Redirect("/Account/VerifyPhoneNumber?PhoneNumber=" + HttpUtility.UrlEncode(PhoneNumber.Text)); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.designer.cs new file mode 100644 index 000000000..7908fb946 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/AddPhoneNumber.aspx.designer.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class AddPhoneNumber { + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal ErrorMessage; + + /// + /// PhoneNumber control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox PhoneNumber; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Confirm.aspx b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx new file mode 100644 index 000000000..5ef3d0da0 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx @@ -0,0 +1,18 @@ +<%@ Page Title="Account Confirmation" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Confirm.aspx.cs" Inherits="WingtipToys.Account.Confirm" Async="true" %> + + +

<%: Title %>.

+ +
+ +

+ Thank you for confirming your account. Click here to login +

+
+ +

+ An error has occurred. +

+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.cs new file mode 100644 index 000000000..6bfbacd8a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.cs @@ -0,0 +1,37 @@ +using System; +using System.Web; +using System.Web.UI; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class Confirm : Page + { + protected string StatusMessage + { + get; + private set; + } + + protected void Page_Load(object sender, EventArgs e) + { + string code = IdentityHelper.GetCodeFromRequest(Request); + string userId = IdentityHelper.GetUserIdFromRequest(Request); + if (code != null && userId != null) + { + var manager = Context.GetOwinContext().GetUserManager(); + var result = manager.ConfirmEmail(userId, code); + if (result.Succeeded) + { + successPanel.Visible = true; + return; + } + } + successPanel.Visible = false; + errorPanel.Visible = true; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.designer.cs new file mode 100644 index 000000000..594c6afd5 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Confirm.aspx.designer.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class Confirm { + + /// + /// successPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder successPanel; + + /// + /// login control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink login; + + /// + /// errorPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder errorPanel; + + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Forgot.aspx b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx new file mode 100644 index 000000000..1eb961442 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx @@ -0,0 +1,39 @@ +<%@ Page Title="Forgot password" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Forgot.aspx.cs" Inherits="WingtipToys.Account.ForgotPassword" Async="true" %> + + +

<%: Title %>.

+ +
+
+ +
+

Forgot your password?

+
+ +

+ +

+
+
+ Email +
+ + +
+
+
+
+ +
+
+
+
+ +

+ Please check your email to reset your password. +

+
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.cs new file mode 100644 index 000000000..7269a0d21 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.cs @@ -0,0 +1,40 @@ +using System; +using System.Web; +using System.Web.UI; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class ForgotPassword : Page + { + protected void Page_Load(object sender, EventArgs e) + { + } + + protected void Forgot(object sender, EventArgs e) + { + if (IsValid) + { + // Validate the user's email address + var manager = Context.GetOwinContext().GetUserManager(); + ApplicationUser user = manager.FindByName(Email.Text); + if (user == null || !manager.IsEmailConfirmed(user.Id)) + { + FailureText.Text = "The user either does not exist or is not confirmed."; + ErrorMessage.Visible = true; + return; + } + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 + // Send email with the code and the redirect to reset password page + //string code = manager.GeneratePasswordResetToken(user.Id); + //string callbackUrl = IdentityHelper.GetResetPasswordRedirectUrl(code, Request); + //manager.SendEmail(user.Id, "Reset Password", "Please reset your password by clicking
here."); + loginForm.Visible = false; + DisplayEmail.Visible = true; + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.designer.cs new file mode 100644 index 000000000..4656218a1 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Forgot.aspx.designer.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class ForgotPassword { + + /// + /// loginForm control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder loginForm; + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder ErrorMessage; + + /// + /// FailureText control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal FailureText; + + /// + /// Email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Email; + + /// + /// DisplayEmail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder DisplayEmail; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Lockout.aspx b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx new file mode 100644 index 000000000..58321b5b7 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx @@ -0,0 +1,8 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Lockout.aspx.cs" Inherits="WingtipToys.Account.Lockout" %> + + +
+

Locked out.

+

This account has been locked out, please try again later.

+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.cs new file mode 100644 index 000000000..b3dc9222e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys.Account +{ + public partial class Lockout : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.designer.cs new file mode 100644 index 000000000..dce8f3c4e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Lockout.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account +{ + + + public partial class Lockout + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Login.aspx b/samples/WingtipToys/WingtipToys/Account/Login.aspx new file mode 100644 index 000000000..08af9c8dd --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Login.aspx @@ -0,0 +1,65 @@ +<%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WingtipToys.Account.Login" Async="true" %> + +<%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> + + +

<%: Title %>.

+ +
+
+
+
+

Use a local account to log in.

+
+ +

+ +

+
+
+ Email +
+ + +
+
+
+ Password +
+ + +
+
+
+
+
+ + Remember me? +
+
+
+
+
+ +
+
+
+

+ Register as a new user +

+

+ <%-- Enable this once you have account confirmation enabled for password reset functionality + Forgot your password? + --%> +

+
+
+ +
+
+ +
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/Login.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Login.aspx.cs new file mode 100644 index 000000000..3c1520a36 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Login.aspx.cs @@ -0,0 +1,65 @@ +using System; +using System.Web; +using System.Web.UI; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class Login : Page + { + protected void Page_Load(object sender, EventArgs e) + { + RegisterHyperLink.NavigateUrl = "Register"; + // Enable this once you have account confirmation enabled for password reset functionality + //ForgotPasswordHyperLink.NavigateUrl = "Forgot"; + OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"]; + var returnUrl = HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]); + if (!String.IsNullOrEmpty(returnUrl)) + { + RegisterHyperLink.NavigateUrl += "?ReturnUrl=" + returnUrl; + } + } + + protected void LogIn(object sender, EventArgs e) + { + if (IsValid) + { + // Validate the user password + var manager = Context.GetOwinContext().GetUserManager(); + var signinManager = Context.GetOwinContext().GetUserManager(); + + // This doen't count login failures towards account lockout + // To enable password failures to trigger lockout, change to shouldLockout: true + var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false); + + switch (result) + { + case SignInStatus.Success: + WingtipToys.Logic.ShoppingCartActions usersShoppingCart = new WingtipToys.Logic.ShoppingCartActions(); + String cartId = usersShoppingCart.GetCartId(); + usersShoppingCart.MigrateCart(cartId, Email.Text); + + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + break; + case SignInStatus.LockedOut: + Response.Redirect("/Account/Lockout"); + break; + case SignInStatus.RequiresVerification: + Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}", + Request.QueryString["ReturnUrl"], + RememberMe.Checked), + true); + break; + case SignInStatus.Failure: + default: + FailureText.Text = "Invalid login attempt"; + ErrorMessage.Visible = true; + break; + } + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Login.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Login.aspx.designer.cs new file mode 100644 index 000000000..6ca3b9408 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Login.aspx.designer.cs @@ -0,0 +1,78 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class Login { + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder ErrorMessage; + + /// + /// FailureText control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal FailureText; + + /// + /// Email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Email; + + /// + /// Password control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Password; + + /// + /// RememberMe control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox RememberMe; + + /// + /// RegisterHyperLink control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink RegisterHyperLink; + + /// + /// OpenAuthLogin control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::WingtipToys.Account.OpenAuthProviders OpenAuthLogin; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Manage.aspx b/samples/WingtipToys/WingtipToys/Account/Manage.aspx new file mode 100644 index 000000000..a2d9dcfe0 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Manage.aspx @@ -0,0 +1,81 @@ +<%@ Page Title="Manage Account" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Manage.aspx.cs" Inherits="WingtipToys.Account.Manage" %> + +<%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> + + +

<%: Title %>.

+ +
+ +

<%: SuccessMessage %>

+
+
+ +
+
+
+

Change your account settings

+
+
+
Password:
+
+ + +
+
External Logins:
+
<%: LoginsCount %> + + +
+ <%-- + Phone Numbers can used as a second factor of verification in a two-factor authentication system. + See this article + for details on setting up this ASP.NET application to support two-factor authentication using SMS. + Uncomment the following block after you have set up two-factor authentication + --%> + +
Phone Number:
+ <%-- + <% if (HasPhoneNumber) + { %> +
+ +
+ <% } + else + { %> +
+ +  |  + +
+ <% } %> + --%> + +
Two-Factor Authentication:
+
+

+ There are no two-factor authentication providers configured. See this article + for details on setting up this ASP.NET application to support two-factor authentication. +

+ <% if (TwoFactorEnabled) + { %> + <%-- + Enabled + + --%> + <% } + else + { %> + <%-- + Disabled + + --%> + <% } %> +
+
+
+
+
+ +
diff --git a/samples/WingtipToys/WingtipToys/Account/Manage.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Manage.aspx.cs new file mode 100644 index 000000000..6297c4934 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Manage.aspx.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class Manage : System.Web.UI.Page + { + protected string SuccessMessage + { + get; + private set; + } + + private bool HasPassword(ApplicationUserManager manager) + { + return manager.HasPassword(User.Identity.GetUserId()); + } + + public bool HasPhoneNumber { get; private set; } + + public bool TwoFactorEnabled { get; private set; } + + public bool TwoFactorBrowserRemembered { get; private set; } + + public int LoginsCount { get; set; } + + protected void Page_Load() + { + var manager = Context.GetOwinContext().GetUserManager(); + + HasPhoneNumber = String.IsNullOrEmpty(manager.GetPhoneNumber(User.Identity.GetUserId())); + + // Enable this after setting up two-factor authentientication + //PhoneNumber.Text = manager.GetPhoneNumber(User.Identity.GetUserId()) ?? String.Empty; + + TwoFactorEnabled = manager.GetTwoFactorEnabled(User.Identity.GetUserId()); + + LoginsCount = manager.GetLogins(User.Identity.GetUserId()).Count; + + var authenticationManager = HttpContext.Current.GetOwinContext().Authentication; + + if (!IsPostBack) + { + // Determine the sections to render + if (HasPassword(manager)) + { + ChangePassword.Visible = true; + } + else + { + CreatePassword.Visible = true; + ChangePassword.Visible = false; + } + + // Render success message + var message = Request.QueryString["m"]; + if (message != null) + { + // Strip the query string from action + Form.Action = ResolveUrl("~/Account/Manage"); + + SuccessMessage = + message == "ChangePwdSuccess" ? "Your password has been changed." + : message == "SetPwdSuccess" ? "Your password has been set." + : message == "RemoveLoginSuccess" ? "The account was removed." + : message == "AddPhoneNumberSuccess" ? "Phone number has been added" + : message == "RemovePhoneNumberSuccess" ? "Phone number was removed" + : String.Empty; + successMessage.Visible = !String.IsNullOrEmpty(SuccessMessage); + } + } + } + + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError("", error); + } + } + + // Remove phonenumber from user + protected void RemovePhone_Click(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + var result = manager.SetPhoneNumber(User.Identity.GetUserId(), null); + if (!result.Succeeded) + { + return; + } + var user = manager.FindById(User.Identity.GetUserId()); + if (user != null) + { + IdentityHelper.SignIn(manager, user, isPersistent: false); + Response.Redirect("/Account/Manage?m=RemovePhoneNumberSuccess"); + } + } + + // DisableTwoFactorAuthentication + protected void TwoFactorDisable_Click(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + manager.SetTwoFactorEnabled(User.Identity.GetUserId(), false); + + Response.Redirect("/Account/Manage"); + } + + //EnableTwoFactorAuthentication + protected void TwoFactorEnable_Click(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + manager.SetTwoFactorEnabled(User.Identity.GetUserId(), true); + + Response.Redirect("/Account/Manage"); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Manage.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Manage.aspx.designer.cs new file mode 100644 index 000000000..589156dc0 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Manage.aspx.designer.cs @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class Manage { + + /// + /// successMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder successMessage; + + /// + /// ChangePassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink ChangePassword; + + /// + /// CreatePassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink CreatePassword; + + /// + /// PhoneNumber control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label PhoneNumber; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx new file mode 100644 index 000000000..03ce6b75b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx @@ -0,0 +1,42 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ManageLogins.aspx.cs" Inherits="WingtipToys.Account.ManageLogins" %> +<%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> + + +

Manage your external logins.

+ +

<%: SuccessMessage %>

+
+
+
+ + + + +

Registered Logins

+ + + + +
+ +
+ + + <%#: Item.LoginProvider %> + + + + + +
+ +
+
+
+ +
+
diff --git a/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.cs b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.cs new file mode 100644 index 000000000..7b0b89fe4 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; + +namespace WingtipToys.Account +{ + public partial class ManageLogins : System.Web.UI.Page + { + protected string SuccessMessage + { + get; + private set; + } + protected bool CanRemoveExternalLogins + { + get; + private set; + } + + private bool HasPassword(ApplicationUserManager manager) + { + return manager.HasPassword(User.Identity.GetUserId()); + } + + protected void Page_Load(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + CanRemoveExternalLogins = manager.GetLogins(User.Identity.GetUserId()).Count() > 1; + + SuccessMessage = String.Empty; + successMessage.Visible = !String.IsNullOrEmpty(SuccessMessage); + } + + public IEnumerable GetLogins() + { + var manager = Context.GetOwinContext().GetUserManager(); + var accounts = manager.GetLogins(User.Identity.GetUserId()); + CanRemoveExternalLogins = accounts.Count() > 1 || HasPassword(manager); + return accounts; + } + + public void RemoveLogin(string loginProvider, string providerKey) + { + var manager = Context.GetOwinContext().GetUserManager(); + var result = manager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); + string msg = String.Empty; + if (result.Succeeded) + { + var user = manager.FindById(User.Identity.GetUserId()); + IdentityHelper.SignIn(manager, user, isPersistent: false); + msg = "?m=RemoveLoginSuccess"; + } + Response.Redirect("~/Account/ManageLogins" + msg); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.designer.cs new file mode 100644 index 000000000..64fbf51b0 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManageLogins.aspx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class ManageLogins { + + /// + /// successMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder successMessage; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx new file mode 100644 index 000000000..f6180a894 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx @@ -0,0 +1,93 @@ +<%@ Page Title="Manage Password" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ManagePassword.aspx.cs" Inherits="WingtipToys.Account.ManagePassword" %> + + +

<%: Title %>.

+
+
+ +

+ You do not have a local password for this site. Add a local + password so you can log in without an external login. +

+
+

Set Password Form

+ +
+
+ Password +
+ + + +
+
+ +
+ Confirm password +
+ + + + +
+
+
+
+ +
+
+
+
+ + +
+

Change Password Form

+
+ +
+ Current password +
+ + +
+
+
+ New password +
+ + +
+
+
+ Confirm new password +
+ + + +
+
+
+
+ +
+
+
+
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.cs b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.cs new file mode 100644 index 000000000..a950cf176 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; + +namespace WingtipToys.Account +{ + public partial class ManagePassword : System.Web.UI.Page + { + protected string SuccessMessage + { + get; + private set; + } + + private bool HasPassword(ApplicationUserManager manager) + { + return manager.HasPassword(User.Identity.GetUserId()); + } + + protected void Page_Load(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + + if (!IsPostBack) + { + // Determine the sections to render + if (HasPassword(manager)) + { + changePasswordHolder.Visible = true; + } + else + { + setPassword.Visible = true; + changePasswordHolder.Visible = false; + } + + // Render success message + var message = Request.QueryString["m"]; + if (message != null) + { + // Strip the query string from action + Form.Action = ResolveUrl("~/Account/Manage"); + } + } + } + + protected void ChangePassword_Click(object sender, EventArgs e) + { + if (IsValid) + { + var manager = Context.GetOwinContext().GetUserManager(); + IdentityResult result = manager.ChangePassword(User.Identity.GetUserId(), CurrentPassword.Text, NewPassword.Text); + if (result.Succeeded) + { + var user = manager.FindById(User.Identity.GetUserId()); + IdentityHelper.SignIn(manager, user, isPersistent: false); + Response.Redirect("~/Account/Manage?m=ChangePwdSuccess"); + } + else + { + AddErrors(result); + } + } + } + + protected void SetPassword_Click(object sender, EventArgs e) + { + if (IsValid) + { + // Create the local login info and link the local account to the user + var manager = Context.GetOwinContext().GetUserManager(); + IdentityResult result = manager.AddPassword(User.Identity.GetUserId(), password.Text); + if (result.Succeeded) + { + Response.Redirect("~/Account/Manage?m=SetPwdSuccess"); + } + else + { + AddErrors(result); + } + } + } + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError("", error); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.designer.cs new file mode 100644 index 000000000..83c635601 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ManagePassword.aspx.designer.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class ManagePassword { + + /// + /// setPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder setPassword; + + /// + /// password control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox password; + + /// + /// confirmPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox confirmPassword; + + /// + /// changePasswordHolder control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder changePasswordHolder; + + /// + /// CurrentPasswordLabel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label CurrentPasswordLabel; + + /// + /// CurrentPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox CurrentPassword; + + /// + /// NewPasswordLabel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label NewPasswordLabel; + + /// + /// NewPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox NewPassword; + + /// + /// ConfirmNewPasswordLabel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label ConfirmNewPasswordLabel; + + /// + /// ConfirmNewPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox ConfirmNewPassword; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx new file mode 100644 index 000000000..59bb6d8bc --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx @@ -0,0 +1,22 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OpenAuthProviders.ascx.cs" Inherits="WingtipToys.Account.OpenAuthProviders" %> + +
+

Use another service to log in.

+
+ + +

+ +

+
+ +
+

There are no external authentication services configured. See this article for details on setting up this ASP.NET application to support logging in via external services.

+
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.cs b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.cs new file mode 100644 index 000000000..6a8edf455 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.Owin.Security; + +namespace WingtipToys.Account +{ + public partial class OpenAuthProviders : System.Web.UI.UserControl + { + protected void Page_Load(object sender, EventArgs e) + { + if (IsPostBack) + { + var provider = Request.Form["provider"]; + if (provider == null) + { + return; + } + // Request a redirect to the external login provider + string redirectUrl = ResolveUrl(String.Format(CultureInfo.InvariantCulture, "~/Account/RegisterExternalLogin?{0}={1}&returnUrl={2}", IdentityHelper.ProviderNameKey, provider, ReturnUrl)); + var properties = new AuthenticationProperties() { RedirectUri = redirectUrl }; + // Add xsrf verification when linking accounts + if (Context.User.Identity.IsAuthenticated) + { + properties.Dictionary[IdentityHelper.XsrfKey] = Context.User.Identity.GetUserId(); + } + Context.GetOwinContext().Authentication.Challenge(properties, provider); + Response.StatusCode = 401; + Response.End(); + } + } + + public string ReturnUrl { get; set; } + + public IEnumerable GetProviderNames() + { + return Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes().Select(t => t.AuthenticationType); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.designer.cs b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.designer.cs new file mode 100644 index 000000000..406c1f78e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/OpenAuthProviders.ascx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class OpenAuthProviders { + + /// + /// providerDetails control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ListView providerDetails; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Register.aspx b/samples/WingtipToys/WingtipToys/Account/Register.aspx new file mode 100644 index 000000000..83bfecb7b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Register.aspx @@ -0,0 +1,45 @@ +<%@ Page Title="Register" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="WingtipToys.Account.Register" %> + + +

<%: Title %>.

+

+ +

+ +
+

Create a new account

+
+ +
+ Email +
+ + +
+
+
+ Password +
+ + +
+
+
+ Confirm password +
+ + + +
+
+
+
+ +
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/Register.aspx.cs b/samples/WingtipToys/WingtipToys/Account/Register.aspx.cs new file mode 100644 index 000000000..23b1175a7 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Register.aspx.cs @@ -0,0 +1,42 @@ +using System; +using System.Linq; +using System.Web; +using System.Web.UI; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class Register : Page + { + protected void CreateUser_Click(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text }; + IdentityResult result = manager.Create(user, Password.Text); + if (result.Succeeded) + { + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 + //string code = manager.GenerateEmailConfirmationToken(user.Id); + //string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); + //manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking here."); + + IdentityHelper.SignIn(manager, user, isPersistent: false); + + using (WingtipToys.Logic.ShoppingCartActions usersShoppingCart = new WingtipToys.Logic.ShoppingCartActions()) + { + String cartId = usersShoppingCart.GetCartId(); + usersShoppingCart.MigrateCart(cartId, user.Id); + } + + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + } + else + { + ErrorMessage.Text = result.Errors.FirstOrDefault(); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/Register.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/Register.aspx.designer.cs new file mode 100644 index 000000000..7ae66ecff --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Register.aspx.designer.cs @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class Register { + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal ErrorMessage; + + /// + /// Email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Email; + + /// + /// Password control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Password; + + /// + /// ConfirmPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox ConfirmPassword; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx new file mode 100644 index 000000000..60381c242 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx @@ -0,0 +1,33 @@ +<%@ Page Title="Register an external login" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="RegisterExternalLogin.aspx.cs" Inherits="WingtipToys.Account.RegisterExternalLogin" Async="true" %> + + +

Register with your <%: ProviderName %> account

+ + +
+

Association Form

+
+ +

+ You've authenticated with <%: ProviderName %>. Please enter an email below for the current site + and click the Log in button. +

+ +
+ Email +
+ + + +
+
+ +
+
+ +
+
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.cs b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.cs new file mode 100644 index 000000000..82735b3d9 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.cs @@ -0,0 +1,128 @@ +using System; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class RegisterExternalLogin : System.Web.UI.Page + { + protected string ProviderName + { + get { return (string)ViewState["ProviderName"] ?? String.Empty; } + private set { ViewState["ProviderName"] = value; } + } + + protected string ProviderAccountKey + { + get { return (string)ViewState["ProviderAccountKey"] ?? String.Empty; } + private set { ViewState["ProviderAccountKey"] = value; } + } + + private void RedirectOnFail() + { + Response.Redirect((User.Identity.IsAuthenticated) ? "~/Account/Manage" : "~/Account/Login"); + } + + protected void Page_Load() + { + // Process the result from an auth provider in the request + ProviderName = IdentityHelper.GetProviderNameFromRequest(Request); + if (String.IsNullOrEmpty(ProviderName)) + { + RedirectOnFail(); + return; + } + if (!IsPostBack) + { + var manager = Context.GetOwinContext().GetUserManager(); + var loginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(); + if (loginInfo == null) + { + RedirectOnFail(); + return; + } + var user = manager.Find(loginInfo.Login); + if (user != null) + { + IdentityHelper.SignIn(manager, user, isPersistent: false); + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + } + else if (User.Identity.IsAuthenticated) + { + // Apply Xsrf check when linking + var verifiedloginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(IdentityHelper.XsrfKey, User.Identity.GetUserId()); + if (verifiedloginInfo == null) + { + RedirectOnFail(); + return; + } + + var result = manager.AddLogin(User.Identity.GetUserId(), verifiedloginInfo.Login); + if (result.Succeeded) + { + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + } + else + { + AddErrors(result); + return; + } + } + else + { + email.Text = loginInfo.Email; + } + } + } + + protected void LogIn_Click(object sender, EventArgs e) + { + CreateAndLoginUser(); + } + + private void CreateAndLoginUser() + { + if (!IsValid) + { + return; + } + var manager = Context.GetOwinContext().GetUserManager(); + var user = new ApplicationUser() { UserName = email.Text, Email = email.Text }; + IdentityResult result = manager.Create(user); + if (result.Succeeded) + { + var loginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(); + if (loginInfo == null) + { + RedirectOnFail(); + return; + } + result = manager.AddLogin(user.Id, loginInfo.Login); + if (result.Succeeded) + { + IdentityHelper.SignIn(manager, user, isPersistent: false); + + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 + // var code = manager.GenerateEmailConfirmationToken(user.Id); + // Send this link via email: IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id) + + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + return; + } + } + AddErrors(result); + } + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError("", error); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.designer.cs new file mode 100644 index 000000000..7cc1039d3 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/RegisterExternalLogin.aspx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class RegisterExternalLogin { + + /// + /// email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox email; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx new file mode 100644 index 000000000..d9a2d7335 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx @@ -0,0 +1,45 @@ +<%@ Page Title="Reset Password" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ResetPassword.aspx.cs" Inherits="WingtipToys.Account.ResetPassword" Async="true" %> + + +

<%: Title %>.

+

+ +

+ +
+

Enter your new password

+
+ +
+ Email +
+ + +
+
+
+ Password +
+ + +
+
+
+ Confirm password +
+ + + +
+
+
+
+ +
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.cs b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.cs new file mode 100644 index 000000000..a6d152ac5 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.cs @@ -0,0 +1,46 @@ +using System; +using System.Linq; +using System.Web; +using System.Web.UI; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class ResetPassword : Page + { + protected string StatusMessage + { + get; + private set; + } + + protected void Reset_Click(object sender, EventArgs e) + { + string code = IdentityHelper.GetCodeFromRequest(Request); + if (code != null) + { + var manager = Context.GetOwinContext().GetUserManager(); + + var user = manager.FindByName(Email.Text); + if (user == null) + { + ErrorMessage.Text = "No user found"; + return; + } + var result = manager.ResetPassword(user.Id, code, Password.Text); + if (result.Succeeded) + { + Response.Redirect("~/Account/ResetPasswordConfirmation"); + return; + } + ErrorMessage.Text = result.Errors.FirstOrDefault(); + return; + } + + ErrorMessage.Text = "An error has occurred"; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.designer.cs new file mode 100644 index 000000000..86b6b1788 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPassword.aspx.designer.cs @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class ResetPassword { + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal ErrorMessage; + + /// + /// Email control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Email; + + /// + /// Password control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Password; + + /// + /// ConfirmPassword control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox ConfirmPassword; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx new file mode 100644 index 000000000..31b237a96 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx @@ -0,0 +1,8 @@ +<%@ Page Title="Password Changed" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ResetPasswordConfirmation.aspx.cs" Inherits="WingtipToys.Account.ResetPasswordConfirmation" Async="true" %> + + +

<%: Title %>.

+
+

Your password has been changed. Click here to login

+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.cs b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.cs new file mode 100644 index 000000000..f15d3141f --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.cs @@ -0,0 +1,8 @@ +using System.Web.UI; + +namespace WingtipToys.Account +{ + public partial class ResetPasswordConfirmation : Page + { + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.designer.cs new file mode 100644 index 000000000..970560115 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/ResetPasswordConfirmation.aspx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class ResetPasswordConfirmation { + + /// + /// login control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HyperLink login; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx new file mode 100644 index 000000000..0f296fae8 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx @@ -0,0 +1,50 @@ +<%@ Page Title="Two-Factor Authentication" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="TwoFactorAuthenticationSignIn.aspx.cs" Inherits="WingtipToys.Account.TwoFactorAuthenticationSignIn" %> + + +

<%: Title %>.

+ +
+

Send verification code

+
+
+
+ Select Two-Factor Authentication Provider: + + + +
+
+
+
+ +
+

Enter verification code

+
+ + +

+ +

+
+
+ +
+ +
+
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.cs b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.cs new file mode 100644 index 000000000..cd66837c2 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using WingtipToys.Models; + +namespace WingtipToys.Account +{ + public partial class TwoFactorAuthenticationSignIn : System.Web.UI.Page + { + private ApplicationSignInManager signinManager; + private ApplicationUserManager manager; + + public TwoFactorAuthenticationSignIn() + { + manager = Context.GetOwinContext().GetUserManager(); + signinManager = Context.GetOwinContext().GetUserManager(); + } + + protected void Page_Load(object sender, EventArgs e) + { + var userId = signinManager.GetVerifiedUserId(); + if (userId == null) + { + Response.Redirect("/Account/Error", true); + } + var userFactors = manager.GetValidTwoFactorProviders(userId); + Providers.DataSource = userFactors.Select(x => x).ToList(); + Providers.DataBind(); + } + + protected void CodeSubmit_Click(object sender, EventArgs e) + { + bool rememberMe = false; + bool.TryParse(Request.QueryString["RememberMe"], out rememberMe); + + var result = signinManager.TwoFactorSignIn(SelectedProvider.Value, Code.Text, isPersistent: rememberMe, rememberBrowser: RememberBrowser.Checked); + switch (result) + { + case SignInStatus.Success: + IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); + break; + case SignInStatus.LockedOut: + Response.Redirect("/Account/Lockout"); + break; + case SignInStatus.Failure: + default: + FailureText.Text = "Invalid code"; + ErrorMessage.Visible = true; + break; + } + } + + protected void ProviderSubmit_Click(object sender, EventArgs e) + { + if (!signinManager.SendTwoFactorCode(Providers.SelectedValue)) + { + Response.Redirect("/Account/Error"); + } + + var user = manager.FindById(signinManager.GetVerifiedUserId()); + if (user != null) + { + var code = manager.GenerateTwoFactorToken(user.Id, Providers.SelectedValue); + } + + SelectedProvider.Value = Providers.SelectedValue; + sendcode.Visible = false; + verifycode.Visible = true; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.designer.cs new file mode 100644 index 000000000..c0614796d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/TwoFactorAuthenticationSignIn.aspx.designer.cs @@ -0,0 +1,105 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class TwoFactorAuthenticationSignIn { + + /// + /// sendcode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder sendcode; + + /// + /// Providers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList Providers; + + /// + /// ProviderSubmit control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button ProviderSubmit; + + /// + /// verifycode control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder verifycode; + + /// + /// SelectedProvider control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HiddenField SelectedProvider; + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.PlaceHolder ErrorMessage; + + /// + /// FailureText control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal FailureText; + + /// + /// Code control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Code; + + /// + /// RememberBrowser control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.CheckBox RememberBrowser; + + /// + /// CodeSubmit control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button CodeSubmit; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx new file mode 100644 index 000000000..e340b25dd --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx @@ -0,0 +1,28 @@ +<%@ Page Title="Verify Phone Number" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="VerifyPhoneNumber.aspx.cs" Inherits="WingtipToys.Account.VerifyPhoneNumber" %> + + +

<%: Title %>.

+

+ +

+
+

Enter verification code

+
+ + +
+ Code +
+ + +
+
+
+
+ +
+
+
+
diff --git a/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.cs b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.cs new file mode 100644 index 000000000..9fafaa566 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; + +namespace WingtipToys.Account +{ + public partial class VerifyPhoneNumber : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + var manager = Context.GetOwinContext().GetUserManager(); + var phonenumber = Request.QueryString["PhoneNumber"]; + var code = manager.GenerateChangePhoneNumberToken(User.Identity.GetUserId(), phonenumber); + PhoneNumber.Value = phonenumber; + } + + protected void Code_Click(object sender, EventArgs e) + { + if (!ModelState.IsValid) + { + ModelState.AddModelError("", "Invalid code"); + return; + } + + var manager = Context.GetOwinContext().GetUserManager(); + + var result = manager.ChangePhoneNumber(User.Identity.GetUserId(), PhoneNumber.Value, Code.Text); + + if (result.Succeeded) + { + var user = manager.FindById(User.Identity.GetUserId()); + + if (user != null) + { + IdentityHelper.SignIn(manager, user, false); + Response.Redirect("/Account/Manage?m=AddPhoneNumberSuccess"); + } + } + + // If we got this far, something failed, redisplay form + ModelState.AddModelError("", "Failed to verify phone"); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.designer.cs new file mode 100644 index 000000000..a2284e47e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/VerifyPhoneNumber.aspx.designer.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Account { + + + public partial class VerifyPhoneNumber { + + /// + /// ErrorMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Literal ErrorMessage; + + /// + /// PhoneNumber control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.HiddenField PhoneNumber; + + /// + /// Code control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox Code; + } +} diff --git a/samples/WingtipToys/WingtipToys/Account/Web.config b/samples/WingtipToys/WingtipToys/Account/Web.config new file mode 100644 index 000000000..90fe314f6 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Account/Web.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/samples/WingtipToys/WingtipToys/AddToCart.aspx b/samples/WingtipToys/WingtipToys/AddToCart.aspx new file mode 100644 index 000000000..f6f42c08e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/AddToCart.aspx @@ -0,0 +1,16 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddToCart.aspx.cs" Inherits="WingtipToys.AddToCart" %> + + + + + + + + +
+
+ +
+
+ + diff --git a/samples/WingtipToys/WingtipToys/AddToCart.aspx.cs b/samples/WingtipToys/WingtipToys/AddToCart.aspx.cs new file mode 100644 index 000000000..ca169a1be --- /dev/null +++ b/samples/WingtipToys/WingtipToys/AddToCart.aspx.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using System.Diagnostics; +using WingtipToys.Logic; + +namespace WingtipToys +{ + public partial class AddToCart : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + string rawId = Request.QueryString["ProductID"]; + int productId; + if (!String.IsNullOrEmpty(rawId) && int.TryParse(rawId, out productId)) + { + using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions()) + { + usersShoppingCart.AddToCart(Convert.ToInt16(rawId)); + } + + } + else + { + Debug.Fail("ERROR : We should never get to AddToCart.aspx without a ProductId."); + throw new Exception("ERROR : It is illegal to load AddToCart.aspx without setting a ProductId."); + } + Response.Redirect("ShoppingCart.aspx"); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/AddToCart.aspx.designer.cs b/samples/WingtipToys/WingtipToys/AddToCart.aspx.designer.cs new file mode 100644 index 000000000..f8fb862a1 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/AddToCart.aspx.designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys +{ + + + public partial class AddToCart + { + + /// + /// form1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + } +} diff --git a/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx new file mode 100644 index 000000000..36fc07eca --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx @@ -0,0 +1,66 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AdminPage.aspx.cs" Inherits="WingtipToys.Admin.AdminPage" %> + +

Administration

+
+

Add Product:

+ + + + + + + + + + + + + + + + + + + + + +
Category: + + +
Name: + + +
Description: + + +
Price: + + + +
Image File: + + +
+

+

+ + +

+

Remove Product:

+ + + + + +
Product: + +
+

+ + +
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.cs b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.cs new file mode 100644 index 000000000..84cb69e2d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Models; +using WingtipToys.Logic; + +namespace WingtipToys.Admin +{ + public partial class AdminPage : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + string productAction = Request.QueryString["ProductAction"]; + if (productAction == "add") + { + LabelAddStatus.Text = "Product added!"; + } + + if (productAction == "remove") + { + LabelRemoveStatus.Text = "Product removed!"; + } + } + + protected void AddProductButton_Click(object sender, EventArgs e) + { + Boolean fileOK = false; + String path = Server.MapPath("~/Catalog/Images/"); + if (ProductImage.HasFile) + { + String fileExtension = System.IO.Path.GetExtension(ProductImage.FileName).ToLower(); + String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" }; + for (int i = 0; i < allowedExtensions.Length; i++) + { + if (fileExtension == allowedExtensions[i]) + { + fileOK = true; + } + } + } + + if (fileOK) + { + try + { + // Save to Images folder. + ProductImage.PostedFile.SaveAs(path + ProductImage.FileName); + // Save to Images/Thumbs folder. + ProductImage.PostedFile.SaveAs(path + "Thumbs/" + ProductImage.FileName); + } + catch (Exception ex) + { + LabelAddStatus.Text = ex.Message; + } + + // Add product data to DB. + AddProducts products = new AddProducts(); + bool addSuccess = products.AddProduct(AddProductName.Text, AddProductDescription.Text, + AddProductPrice.Text, DropDownAddCategory.SelectedValue, ProductImage.FileName); + if (addSuccess) + { + // Reload the page. + string pageUrl = Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.Count() - Request.Url.Query.Count()); + Response.Redirect(pageUrl + "?ProductAction=add"); + } + else + { + LabelAddStatus.Text = "Unable to add new product to database."; + } + } + else + { + LabelAddStatus.Text = "Unable to accept file type."; + } + } + + public IQueryable GetCategories() + { + var _db = new WingtipToys.Models.ProductContext(); + IQueryable query = _db.Categories; + return query; + } + + public IQueryable GetProducts() + { + var _db = new WingtipToys.Models.ProductContext(); + IQueryable query = _db.Products; + return query; + } + + protected void RemoveProductButton_Click(object sender, EventArgs e) + { + using (var _db = new WingtipToys.Models.ProductContext()) + { + int productId = Convert.ToInt16(DropDownRemoveProduct.SelectedValue); + var myItem = (from c in _db.Products where c.ProductID == productId select c).FirstOrDefault(); + if (myItem != null) + { + _db.Products.Remove(myItem); + _db.SaveChanges(); + + // Reload the page. + string pageUrl = Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.Count() - Request.Url.Query.Count()); + Response.Redirect(pageUrl + "?ProductAction=remove"); + } + else + { + LabelRemoveStatus.Text = "Unable to locate product."; + } + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.designer.cs new file mode 100644 index 000000000..6043c7a09 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Admin/AdminPage.aspx.designer.cs @@ -0,0 +1,204 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Admin { + + + public partial class AdminPage { + + /// + /// LabelAddCategory control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddCategory; + + /// + /// DropDownAddCategory control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList DropDownAddCategory; + + /// + /// LabelAddName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddName; + + /// + /// AddProductName control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox AddProductName; + + /// + /// RequiredFieldValidator1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; + + /// + /// LabelAddDescription control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddDescription; + + /// + /// AddProductDescription control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox AddProductDescription; + + /// + /// RequiredFieldValidator2 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator2; + + /// + /// LabelAddPrice control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddPrice; + + /// + /// AddProductPrice control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox AddProductPrice; + + /// + /// RequiredFieldValidator3 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator3; + + /// + /// RegularExpressionValidator1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1; + + /// + /// LabelAddImageFile control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddImageFile; + + /// + /// ProductImage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.FileUpload ProductImage; + + /// + /// RequiredFieldValidator4 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator4; + + /// + /// AddProductButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button AddProductButton; + + /// + /// LabelAddStatus control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelAddStatus; + + /// + /// LabelRemoveProduct control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelRemoveProduct; + + /// + /// DropDownRemoveProduct control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DropDownList DropDownRemoveProduct; + + /// + /// RemoveProductButton control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button RemoveProductButton; + + /// + /// LabelRemoveStatus control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label LabelRemoveStatus; + } +} diff --git a/samples/WingtipToys/WingtipToys/Admin/Web.config b/samples/WingtipToys/WingtipToys/Admin/Web.config new file mode 100644 index 000000000..b63389b5b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Admin/Web.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/App_Data/ErrorLog.txt b/samples/WingtipToys/WingtipToys/App_Data/ErrorLog.txt new file mode 100644 index 000000000..5e3726474 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Data/ErrorLog.txt @@ -0,0 +1,50 @@ +********** 8/22/2014 3:12:35 PM ********** +Exception Type: System.Web.HttpException +Exception: An HTTP error occurred. Page Not found. Please try again. +Source: customErrors section - Web.config +Stack Trace: +********** 8/22/2014 3:13:19 PM ********** +Exception Type: System.Exception +Exception: The error was unhandled by application code. +Source: customErrors section - Web.config +Stack Trace: +********** 8/22/2014 3:14:34 PM ********** +Inner Exception Type: System.InvalidOperationException +Inner Exception: An InvalidOperationException occurred in the Page_Load handler on the Default.aspx page. +Inner Source: WingtipToys +Inner Stack Trace: + at WingtipToys._Default.Page_Load(Object sender, EventArgs e) in c:\Users\erikre\Documents\Visual Studio 2013\Projects\WingtipToys\WingtipToys\Default.aspx.cs:line 14 + at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) + at System.Web.UI.Control.OnLoad(EventArgs e) + at System.Web.UI.Control.LoadRecursive() + at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +Exception Type: System.Web.HttpUnhandledException +Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown. +Source: Application_Error - Global.asax +Stack Trace: + at System.Web.UI.Page.HandleError(Exception e) + at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + at System.Web.UI.Page.ProcessRequest() + at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) + at System.Web.UI.Page.ProcessRequest(HttpContext context) + at ASP.default_aspx.ProcessRequest(HttpContext context) in c:\Users\erikre\AppData\Local\Temp\Temporary ASP.NET Files\vs\0c5d3a2b\4adeb894\App_Web_gahbfr2b.5.cs:line 0 + at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) + +********** 8/22/2014 3:15:29 PM ********** +Exception Type: System.InvalidOperationException +Exception: An InvalidOperationException occurred in the Page_Load handler on the Default.aspx page. +Source: Page_Error - Default.aspx +Stack Trace: + at WingtipToys._Default.Page_Load(Object sender, EventArgs e) in c:\Users\erikre\Documents\Visual Studio 2013\Projects\WingtipToys\WingtipToys\Default.aspx.cs:line 14 + at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) + at System.Web.UI.Control.OnLoad(EventArgs e) + at System.Web.UI.Control.LoadRecursive() + at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + +********** 8/22/2014 3:22:59 PM ********** +Exception Type: System.Web.HttpException +Exception: An HTTP error occurred. Page Not found. Please try again. +Source: customErrors section - Web.config +Stack Trace: diff --git a/samples/WingtipToys/WingtipToys/App_Readme/Elmah.txt b/samples/WingtipToys/WingtipToys/App_Readme/Elmah.txt new file mode 100644 index 000000000..784b3094e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Readme/Elmah.txt @@ -0,0 +1,15 @@ +A new HTTP handler has been configured in your application for consulting the +error log and its feeds. It is reachable at elmah.axd under your application +root. If, for example, your application is deployed at http://www.example.com, +the URL for ELMAH would be http://www.example.com/elmah.axd. You can, of +course, change this path in your application's configuration file. + +ELMAH is also set up to be secure such that it can only be accessed locally. +You can enable remote access but then it is paramount that you secure access +to authorized users or/and roles only. This can be done using standard +authorization rules and configuration already built into ASP.NET. For more +information, see http://code.google.com/p/elmah/wiki/SecuringErrorLogPages on +the project site. + +Please review the commented out authorization section under + and make the appropriate changes. diff --git a/samples/WingtipToys/WingtipToys/App_Start/BundleConfig.cs b/samples/WingtipToys/WingtipToys/App_Start/BundleConfig.cs new file mode 100644 index 000000000..1aea3c9bd --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Start/BundleConfig.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Optimization; +using System.Web.UI; + +namespace WingtipToys +{ + public class BundleConfig + { + // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkID=303951 + public static void RegisterBundles(BundleCollection bundles) + { + bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include( + "~/Scripts/WebForms/WebForms.js", + "~/Scripts/WebForms/WebUIValidation.js", + "~/Scripts/WebForms/MenuStandards.js", + "~/Scripts/WebForms/Focus.js", + "~/Scripts/WebForms/GridView.js", + "~/Scripts/WebForms/DetailsView.js", + "~/Scripts/WebForms/TreeView.js", + "~/Scripts/WebForms/WebParts.js")); + + // Order is very important for these files to work, they have explicit dependencies + bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include( + "~/Scripts/WebForms/MsAjax/MicrosoftAjax.js", + "~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js", + "~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js", + "~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js")); + + // Use the Development version of Modernizr to develop with and learn from. Then, when you’re + // ready for production, use the build tool at http://modernizr.com to pick only the tests you need + bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( + "~/Scripts/modernizr-*")); + + // Set EnableOptimizations to false for debugging. For more information, + // visit http://go.microsoft.com/fwlink/?LinkId=301862 + BundleTable.EnableOptimizations = true; + + ScriptManager.ScriptResourceMapping.AddDefinition( + "respond", + new ScriptResourceDefinition + { + Path = "~/Scripts/respond.min.js", + DebugPath = "~/Scripts/respond.js", + }); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/App_Start/IdentityConfig.cs b/samples/WingtipToys/WingtipToys/App_Start/IdentityConfig.cs new file mode 100644 index 000000000..11e0de88b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Start/IdentityConfig.cs @@ -0,0 +1,102 @@ +using System; +using System.Security.Claims; +using System.Threading.Tasks; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin; +using Microsoft.Owin.Security; +using WingtipToys.Models; + +namespace WingtipToys +{ + public class EmailService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + // Plug in your email service here to send an email. + return Task.FromResult(0); + } + } + + public class SmsService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + // Plug in your SMS service here to send a text message. + return Task.FromResult(0); + } + } + + // Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application. + public class ApplicationUserManager : UserManager + { + public ApplicationUserManager(IUserStore store) + : base(store) + { + } + + public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) + { + var manager = new ApplicationUserManager(new UserStore(context.Get())); + // Configure validation logic for usernames + manager.UserValidator = new UserValidator(manager) + { + AllowOnlyAlphanumericUserNames = false, + RequireUniqueEmail = true + }; + + // Configure validation logic for passwords + manager.PasswordValidator = new PasswordValidator + { + RequiredLength = 6, + RequireNonLetterOrDigit = true, + RequireDigit = true, + RequireLowercase = true, + RequireUppercase = true, + }; + + // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user + // You can write your own provider and plug it in here. + manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider + { + MessageFormat = "Your security code is {0}" + }); + manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider + { + Subject = "Security Code", + BodyFormat = "Your security code is {0}" + }); + + // Configure user lockout defaults + manager.UserLockoutEnabledByDefault = true; + manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); + manager.MaxFailedAccessAttemptsBeforeLockout = 5; + + manager.EmailService = new EmailService(); + manager.SmsService = new SmsService(); + var dataProtectionProvider = options.DataProtectionProvider; + if (dataProtectionProvider != null) + { + manager.UserTokenProvider = new DataProtectorTokenProvider(dataProtectionProvider.Create("ASP.NET Identity")); + } + return manager; + } + } + + public class ApplicationSignInManager : SignInManager + { + public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) : + base(userManager, authenticationManager) { } + + public override Task CreateUserIdentityAsync(ApplicationUser user) + { + return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); + } + + public static ApplicationSignInManager Create(IdentityFactoryOptions options, IOwinContext context) + { + return new ApplicationSignInManager(context.GetUserManager(), context.Authentication); + } + } +} diff --git a/samples/WingtipToys/WingtipToys/App_Start/RouteConfig.cs b/samples/WingtipToys/WingtipToys/App_Start/RouteConfig.cs new file mode 100644 index 000000000..268f5458e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Start/RouteConfig.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.Routing; +using Microsoft.AspNet.FriendlyUrls; + +namespace WingtipToys +{ + public static class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + var settings = new FriendlyUrlSettings(); + settings.AutoRedirectMode = RedirectMode.Permanent; + routes.EnableFriendlyUrls(settings); + } + } +} diff --git a/samples/WingtipToys/WingtipToys/App_Start/Startup.Auth.cs b/samples/WingtipToys/WingtipToys/App_Start/Startup.Auth.cs new file mode 100644 index 000000000..b0c36f382 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/App_Start/Startup.Auth.cs @@ -0,0 +1,69 @@ +using System; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin; +using Microsoft.Owin.Security.Cookies; +using Microsoft.Owin.Security.DataProtection; +using Microsoft.Owin.Security.Google; +using Owin; +using WingtipToys.Models; + +namespace WingtipToys +{ + public partial class Startup { + + // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301883 + public void ConfigureAuth(IAppBuilder app) + { + // Configure the db context, user manager and signin manager to use a single instance per request + app.CreatePerOwinContext(ApplicationDbContext.Create); + app.CreatePerOwinContext(ApplicationUserManager.Create); + app.CreatePerOwinContext(ApplicationSignInManager.Create); + + // Enable the application to use a cookie to store information for the signed in user + // and to use a cookie to temporarily store information about a user logging in with a third party login provider + // Configure the sign in cookie + app.UseCookieAuthentication(new CookieAuthenticationOptions + { + AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, + LoginPath = new PathString("/Account/Login"), + Provider = new CookieAuthenticationProvider + { + OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( + validateInterval: TimeSpan.FromMinutes(30), + regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) + } + }); + // Use a cookie to temporarily store information about a user logging in with a third party login provider + app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); + + // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. + app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); + + // Enables the application to remember the second login verification factor such as phone or email. + // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. + // This is similar to the RememberMe option when you log in. + app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); + + // Uncomment the following lines to enable logging in with third party login providers + //app.UseMicrosoftAccountAuthentication( + // clientId: "", + // clientSecret: ""); + + //app.UseTwitterAuthentication( + // consumerKey: "", + // consumerSecret: ""); + + //app.UseFacebookAuthentication( + // appId: "", + // appSecret: ""); + + app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() + { + ClientId = "000000000000.apps.googleusercontent.com", + ClientSecret = "00000000000" + }); + } + } +} diff --git a/samples/WingtipToys/WingtipToys/Bundle.config b/samples/WingtipToys/WingtipToys/Bundle.config new file mode 100644 index 000000000..de5e842af --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Bundle.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs.db b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..099bf612633cecb6d785b0a97995b10dcfe004d8 GIT binary patch literal 261120 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%0Agv;{t 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%0D&*BZ7Nt*MvRR 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/Thumbs.db b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..26c5ab9edd40adb8e97241051868142460eecaa7 GIT binary patch literal 141824 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/boatpaper.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/boatpaper.png new file mode 100644 index 0000000000000000000000000000000000000000..68cde434ff9a2b70ccd616bbb81f8d3ac245f4b1 GIT binary patch literal 3525 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 VLa#{p$Hg6Ly_Kl1QFy_I!KLz(iJIElp>H& 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/busred.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/busred.png new file mode 100644 index 0000000000000000000000000000000000000000..1a10be1cf964a2d5c5bee20f8c0fa141c44bb029 GIT binary patch literal 3882 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carconvert.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..82a19dd2146095418a6ced38e8b5a06a46ac763e GIT binary patch literal 5669 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carearly.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carearly.png new file mode 100644 index 0000000000000000000000000000000000000000..ea61bf14236a51c8fe61d7aeb8a2a1406daea5f1 GIT binary patch literal 6634 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 JjiOoDe*gk#vU~sl literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfast.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfast.png new file mode 100644 index 0000000000000000000000000000000000000000..4efb55d0c0462ea4276141aeea00ae13670bfe5e GIT binary patch literal 6753 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfaster.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carfaster.png new file mode 100644 index 0000000000000000000000000000000000000000..261618444b53b7bcd3c1b55af47fb28e402adabc GIT binary patch literal 6664 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carracer.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/carracer.png new file mode 100644 index 0000000000000000000000000000000000000000..dd66f9465d7c0d6529bcb5b8df317c5ad5db7b47 GIT binary patch literal 6844 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 YD{TWHsSiG^@Zk~ySXM=*TFNx!Kk{rKD*ylh literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeace.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeace.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb2a9781b4b54d076cdf7c962455e1cad87dd2d GIT binary patch literal 7329 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 v*i$R=2?mj2Xnd~+KV|#>QvSDZxh710#sRApXI literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeglider.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeglider.png new file mode 100644 index 0000000000000000000000000000000000000000..35d2fef7b0e9a19194b3b8bb4fd6056a47a391e2 GIT binary patch literal 6600 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 DotRL< literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeprop.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/planeprop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4043ca8e769e930a398b47b0e800db26e18fa37 GIT binary patch literal 6537 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/truckearly.png b/samples/WingtipToys/WingtipToys/Catalog/Images/Thumbs/truckearly.png new file mode 100644 index 0000000000000000000000000000000000000000..b325fa1d31e2fdc84faee54fab2b3e902853033e GIT binary patch literal 5897 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/boatpaper.png b/samples/WingtipToys/WingtipToys/Catalog/Images/boatpaper.png new file mode 100644 index 0000000000000000000000000000000000000000..68cde434ff9a2b70ccd616bbb81f8d3ac245f4b1 GIT binary patch literal 3525 zcmeH~={Fl%7si7$hN_0#5@Tbos!9y))tEwploUk~vzQV}iz-!Gv`7aMGeOjp2JNk> zmsZtuiK%8fp>@q;4UMUI)4$>U_`VSN%2sOL#R!VPv~urU~d49NC*xJ;V77;j}MXHeQ!nkCMTUX7LBqEcU{RN2H16o z#~U=Le}obOM%|Ggu0RX(nM;pw2V@wEt87JGt16m4hF6-_@_k&7@GE?CsgywTQk* zUpmsKd((f9pC4%G?!b-x#?1|bYj8n^M=cD+`DVm(yw)mIuVm-!wjN$=3wS=X(nO$>E)^lx_$&JW<(5-a?PV z|E=vto!ar{SW8@~U?XKJ6(Hz|6+@WXTdI#Z*Im*6IfgxyR5|1nDMJg3y;3N-;v^X+e>nsh6~4ut z<0$$Qx;hF^#Gs0^(=$@g+kM&Xy)P{A@9Xg+a?g#=J<^!wta_`-)tZguE`-*W~|^JknnJ#dUsC z$$q#}myYxO1J(9s@iEk8$bA8}HjIgB_bIhLwT%g`9wcry;uq)UjMO~cq@Zn$phf;W z;b{NQZO&(DIhJ4Qvh5-($tl*49qf5QmFJtAcoI<^o5(WDzibN}wMFcex-<=b+_*aL|DYNGuYknkZCUriherRDuj}Z}AjO%^eq!4DI z@w-`y!?yK1kB3(m(cVNxzNn(?8Rgi~^er~hE^3Gi|L#ms zJz&?4lSUJPC@)~zKoOAjUbFrn=(ch#=Dg#HNS znR(h6@!6yCj21u%F(<+CIxoo68%P_k99F-%4P9P>a?W(6Z32PU9l!iYyC^nRH0mw)j^3s zU?ADCUwI(I|Kk(rKN6tF4J=5ork$peSqj!5f?Bc$Zdb&qAc8zxMWa@#L*|*M(n*h3 z4GjK7slT(q;hevCgsLWb9?``>;xUZe^CF?o+=EVAve%EFGiG_XT+Q#<@x7_}qmuXR zJlV2uw)uhnov1M^emhLtC1}N}v<5jMzG_aY)(RaoEl{uR2$7s%*x!~K8#R4Bm^AlK z!k{l7l8Je;9LxTY|K&hIr)6u?+-LA&oex#QYE|+uuQf@bu{#bGKVX`pvVl7&w+|bP zNBF1k^Yx;g(zxqO%o$HI5}+a%)Y4PJ~0Q@4W=$>w=HON~)1H8=3LTf?u$ zN2oBx!uk?*prFQs@us`Rya!SH2z`gW9DT=bof*UBxeEadn_rA9Gzl~E*Q0fBapP}a zA_>3#{#4G%4wdRS7Nk!lW zaq0chnCoZO7Z=F5RNPaSw9MWR1r-Eco{DozzDIg30jHF@$tlg9kZY&>w5kf7wz}S$ zDAAewP_WyzZg4S8C!jGcxMK0-`-TTHj=DB_CUSx7jY6{G%35_MjmaKljV+ktY;V^e zo8=p@CPmM-O1PFy7Di)Lg;T{q)O<8PRv;}=edL?3{?##72Q%N!Kr}6}`j;zIVZf~l z9UUz`7w)|zJTY%)@anG#D|lIQ#FD_KDBLVd%X;(`&cfd}LwqooCa0@ZI>@HO22_T*B%>!n5dmMT8ZKd!lTlX{Hqsj)D`D(IRir7b2{ zZRggREk!iXPQI2d61_03JWi-Vb@ZOes4UA=Zui z?sTRvy}|9exex*3=nO^o$R-qJ|LJYx-mOpeb^U0DOm=>?9ro=*S?Xa=(eVYrT`RZBNt;>11zp*kIaM&H{K)WBshjRl%wQYgEY<`PAO%{ zf6nBlpN7F^!}q>N)C5~I7lX3krak@?mj2p-cIN!a1`=B&*%tQuls2hJXGd)EMz;Hg z&8cy&lRIyR4hW-dkFp4posYL@_P2R2T~Wpt>@*;O(*bZqN169bmsH-kF5UBo)}bMY z8b)u}Aw<|tUCGSN&F@UT<(cGmM7Y>#BBKCK%(#D!?p9mzx<+eJ}V8pa1i zTIUERhC&mmJ|knNbGkcT_>>Q+5c1q94v>xm6P!EeF}?-5IS`JVrSLvPnW%~BL(RF< z6(I{wC;J%KUBXC8m=iy!5+k!MO}(E*SP>Jm@y0&WFx^>tYkKlDNL)|#t_J9L0q5K{ z^X&1@_oOcL3fGYp|Lw1eKg|zpfx+oG*;z`CagXq5eiE!t)K3OIy5)AASfs`u#(f9u z&hk&XKP*wbcGil=p_Lk54c%W{HA&AT{{BaKE9t*g% zp!B@Z!k6Q}KA4dWEx`9t7FL+-4;fA~ymB03lGPye}C8 zKsQY;13hCob}sg8S7w*e{<{h^-2)g;1bnHiiiqR5Eza^u@c{sUvuG63 zo{bE4ya1hIujms<1sgab>@CcICZF(~Y{KPhYGVojP#>K>^5kZ7-cXcF1OUKK|4(rI zONC#WElNh3-;BHw;u9I=8IA+k_+!IEBG?R!@$vD;;^NmYhq2S?qLHQ!_ubcvd9xgy zCA-_EB+mIHc>0%A;Z&^L^2Pbayo5&b?Q1h1I+nh^{?bVVYpqJO(ix`H{m^zIZj~>p zUxOkr6h=vvC$r2>ps&r`$T}E=`hmk$3ARbJGklxF9#o8#A4K1o2^Uge%($6 zaL*H8`M;KA>siu)(Pjz2E&8y|XcmCmtLtHdp_~cf{=8q2|Fs0*rG+lnXM!(G48wE= zbRZ^#|GD%fW4#PU_H?UEPu~~bG6Y=Mh=UIr_d04!o_-zw>KbXyxZ22<>%@n6fvw9w z_xAPe9aovaZEWT68s>Xu3A)5D9npX78ydp9@Ox@D#}EX!N0 zyvLe;ms*>XZC3ZRGmy)Vy3}n5$YsGZ@5001;U*#Y-O#|}r;Y|0q3yCIH>7SA0g00m zM5Pg@)Q1}?5*oM2h;NUqNK!FWdJ=$Jn0i6beEW1bZkZ8VR)2$f_hy6J%Id15x%{5h z_O>YMj0}O5O+gqei&d+w3NVgu!?^oCsSb<0ka)RI0B49c4i?M>6pnweA;i_+Z^@8v zR}$u&wF6%Y1qPQizIM{s-&-4X`C2or*3Do1Bg5%T+*Jbo6K_*WQIUcF4SOZd3v23P z1vNh(UKOSInXiKRpsvTdH6&tmwQx_i5DmAxz=`|W_MTC(fScCKnlu(g(fOO0+l85V z^?_xuRoqf9j+JrSAW<^|xdi1~6yHOM_d7~QUB}m+kc*2IlG2!YbJ)Y4Ui0T~XkMj8V0s1HYQlMoFIH7bpR8$PVK#F~NtgjNw(Q4wvH~keOH2y>Ag! zvPsoVwnM{l^Efb$=Y#k^vq= zSlF5T8vN$PW_uw+DbIs_`zbM(Uj>)zTz>?JiAgXrYqD~?pUb{=rs=`_KfZf%#0^1l z2ArFfsPD}+W9rxM*XMb(2DCd)NNScou`blI-VCa@?@2c`;;!BEq-Nz;w^KtvX=eXUI9 zlEJTa*)E=|7m>uh^WPZS9&tz`^0Vdta0dZnCPYNWLduf@fu zrMjP~Z<_3USdkx9pSBGbM!K7lMBfLMId__A7!a>7#^9I((ZWvsU5JAOYu5I;^Bk9) z=d?mK*^>u3(v)e}Wv+R=`Bzn0fP%_HzWkgP=8DqnKcBr>x$?Y!x8A{~-I0X#iqz}&JH%nj4KD8$N`>gYiq-g0e(xGHTozMiG zFj-S6H&5pD4OSPtlk6Yt3+ zf!OFv^mZh3ad;>EXsB7yxO*&lk51kZwMfrsKkgT9Fivv7x1v?fXG#D+y94-%K4=61 ze+9F=;4sSMHgyL9hr$?hLpeOIi z#CopP%I=}&pp0#XT(cHYPUivU_{=E#DzYxRTZsk+I$Uc{b&TCb(wg7<%}AXMzWofN z7-#0)96e=l<*G27x{`HR|)-X>m(`LkQ5joZv#={o;)BmLUn zrAA-a{RSE`u5_?1Iy^DG8v91)iSOfNiO+DykfY)tJs!~Dol_|+sB@tV3|vduX}{6@gk@m7glR=}jhmQC{5>16kOKi<4I zHXX2Mc+~U#1{~`_@v}!P*j?z$3np9)SW>9#d<_L*iThL6xZK@$!kJhBuSXQ1xN{6Y z_;jYZjg#S-ivgWXKU#NXc``uOzspd*Di;gpM=G|i3MpijI0_@Zb9YPioYbck<72V< zo#Y&fLM%fWlMb|1CSb+>mj2c zQ1Qxzxe8Hz3V$33LK%7rM&d_bnul zzi)b0JwKvcqx+Oz2ow)8k@qmfqy70^Y44h9-efRX2dT9E>z^tmMA)~_#sHTvx z8x6v?=gq~;_BZN<#uM_R$?aL9VP^`0opUrE=-*odLM*Iexli0hP#FtT{#Yh&?&Pg{ zN&TEjPF}9=h*_-=~h?F zA^g__+Ya4aUA~3pyYnMhx}RNZj`KVk;hI+AKBb-(zxd-N6-YFX=-~S&VvMo(dT5UO@4#*y7%T& z_*`04X|^T;9gpuq;(+N=`~1rDe^Y1U%f`W`oYYCM z31RX@FT9v-QS}xqrM%eg$Ls$G{MT#nDW0PN6^MW||EYw?>7lAaZxVXwHS{J;!9o*4Q+f+h6hcQJNThc}LhmmfL`nbw z5rV)A8UaIx(EM`#gL7`qd>4D~SRQUx7->an0XcR|D{If{REgK(6WtbpW6~<<^BW6{WuEqxaAs0H7QApLH!ugpLyc zpm);OQnw6p+R4A=WBHYRxMz8L^HNyZ@*h`#nHhtaG{h&B2)ExATZD+M*`i5{^+#s2 z{ENR~iXPNvVTeR+PevB6w3`xCAl7SCNub`;*Sdtdaqm|Rm))F93$1*4p*F}r3V-{T zUXK#||BxeA$RAErw(M|KvPNJi0BClzwU-J6FYp91fDNd@TrmI;YV8`O_zVE&2t+{! zxa0?>UjslzZ;GAE6o3o~3f>8&H?M)Un05P&{6SC#|0M=PW{NJH9GANZhC?@7`Q8ar zbOaZz%s68d{EM%qD1xG6U>wge0)Xh8^*CD$Llj)rSN4mnE&wPsOj|F@2Z(lCbIWm0 z27p|WIbGZ}06_czUUG)(8ugLrykQ-|kI0CRA9R5q8TbNu$KbUXiP*^ZQ_x)_gxp?V>jq7JAw zpR>yP`eeJdIr(W9buzgje1(;hs;RutgaG(VoFOH^VdH`jV-LHywC?ypOy>K(HAF$? zY`~Rht`1f{8t1=%Po#ss)b;s6SFX+$>kD^J^rH66Oy{q#o;jeDM~L`i^94a!9Js2Q zZo0dx!|gnqvvS{5fsEm}?JIlE;ZAB%qQxK1N&YI~%S=n_7c&rU5ogaFvbiD_|H{0O zsYLdy)2=4e^1pB=egU_%EM94D7#c?3Sr+2q)RV7h|ILuKeZOctZ_d~kd;^8H%X>0P**aLYXk%_^)D14Rgl0)_ znJTgYy+CWLzOlF60$IIEzw%zicN4DIy}oxkZFvtBFdwv?zl5Okcl{MfDE%SZvRLY~ zI}5yNZ}x$Vu6N5z%pJX0#UcawY9F1ehBrNnfz)c(=p1uOrs^cMr$z*mML871ENAa; z+Rm8osFqUkuj%O{*6Rno?ansC?2ad@b!>oqiqWeA5gIm=tuZ=}e56cR$j=fr8HZ~u@IT!ZWNXRhT@}!^!-boNtZ0&gs>An!G zb+~G-&xxN>iDtrf2E8P3odswXNXAQ1$&&@LwJ zqq;)$$ScN&N8%1wkgvP^P*gCm+D5djtE1;#ZH`x-jNI+dH?`V98=bo?EkWgTo?LtP z#;mfalVUB^0&Pmy@KX0&n`Q&DSkKYfdttLu?4`?6ywsbgG%pW^tQen()scKAt92zx^_HcJE+>+oN)euL)pB@{R22OW)sQ<}p zh!V$2=l|aF*sgf3h|TRqlEoe!-%z>wQIin%UM7U=a)(?xyR$sF`|G3~@T zz*{|&BWA(wY|lrCVh#rFtU7~<01%Tzx}L5+#dXuYW6k#X0nr1Ag41T{6q_!wced=L z*zF$wn}AF~K=eJL^&M6TAcJ0~9zXa0&l6D)VA>49!rTHaF*Rhe@bfJ(gbpbi>*>2aS@WHzOzHyt5kY&5ZO*}9)wkw5O>SXB@Aa|uPr$POw38mH zUY{QxzFM$h9GiEcwnxdHMCT4=(>GD)r(EJSpvSBVa@d*%c;hdZN;4zpSZ)e=lq%M9 zlPN@j4Oxv;{1*$2%n4%~MXy07!$Pj+d+MgIKDF%RdbcR0N9VCawS)@3)~jj8rIaMz zH7Q?p%{LjnUwI=HgE2U}$jEA3yOci_tq3<@%K&}6J(T>H3Y`Z--^iEE)J})j*4A1& zor%@jHziru*&0RkkV0<p*rD`u`rFTB0kscKcW7=X zsd|$9f?NLy+nuOBJWEWmuo}Edo-Fr`ZeLpjR@K${f`k|&2MeV!;gfQr7taMIr_CLL z@RpdD-vu(~NkI^;TP<9L0=HXnySS(@1iJADIo^$oi=AcK4Gg1;hV>mSyW&Km9h44u z+V|&MEL_ZSX0ReEqzk{54Ns9PPfx~!h|bRScezyb`0>E;GK@!Pir5a}tXb*b?Uj9; zO2Bfd!05`7+XZ6c@^W23V!G{#u-_Pybh}l)W~g@kdNty3;Zmj&w*~<9fg10W&~IM7 zdT#BVy_T9j#RQ&;Vm6lbSSXGOP{VLscj$Nk+w?eoBbm&#zqLBIN@3#YxY!F>--Iq_ zRTdbRcWH)+O21ny<09Bi>PB1S9}#6(59YT=bqevMW?MOAU!r9y6e;nmRYIvnV&j-- z!pBn$;~N>>rpzz~J>R`pf^M?sD#-ptzZ5)f`t+lNW}5X@tVX~Xa>#;0)JEtc_+Nas z`&uT^a-|l2_6bhI4_X761!U_oj@-JXR<`}VdznUXWW52!&Y$W6*2)&Q9xU`*ucl9u zOA$xSV!v8ZKh&~X&XOMv7r(wwfwRs@RW*CtaSyMuX&=9$G(7Nqz3;>)h-1ycuyGM5 z@`GlK36Fu-<$-bZ`R4wHT;7~md9cZfiBRZUMeiIxBGR41B;^(MEUAHa?cIB$6>ICv znJ4sL)<~T0d4u~wT>)e{D%s1k4zzlh(29AkZ$8-%1 zo(4RDB(hyS=aNelGHdYLciSANpVn6ENM};!!Twg29^ZP^5#)F;y4lNVxFIOejD1+` zEH5kok^pJ2HP7fiC$SM@%l|%Q0ea9{Fqx1)ZydmO&C&AJjVJV6L^>Y zt^+Ot|9~OoqN-}~H%&W`sI<0K+)n)_?;S=A`{1PBrAZzhre$KV`nAf= zh4!Y#(CID%eT0k?IKB2ck-akD1YtoAj}JtUkK<7B!I+cD_TMG%1FctlVz(=$%{4E4X%FU8=8R%S`L%v=WXn_bN zyx2_k|H+|HQp&jx(asbF4>(fZPJTn-DzorX$^YWQ1{J@^KRD?Z4@Oo!C+xI01C>u@ znIru(?q@uEQZym*Gr#bD3tM$V^#0J2D<=)PR>A-0AMAs}7f%|norqtrp>-2yVYG*P zRVPN=R)P{{Xl}LG6q?U+tSdK@Leh09ujjFCs01k3%^Ia*T5}~7ke}K4z62wFATSTh z>{Y+Tmu_up?btE6vUvQ9Yhm&+Xj-r*^F4aY90g|yl>E}50|3?!(bu!yrSSjH;~ZBs zC03z%T||s2d2gv#a*~4*t2opKtlv`xhSnHotQ=*Mkc&vDg;Bo7m%3lslR{C?3kG{% zioQk{7d%J#s<~6X<~52w$bI{uhLY=Q_B3A%Qbv-uN_RFNQgWT`di=tFVFSC7pPHM> VLa#{p$Hg6Ly_Kl1QFy_I!KLz(iJIElp>H& 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/busred.png b/samples/WingtipToys/WingtipToys/Catalog/Images/busred.png new file mode 100644 index 0000000000000000000000000000000000000000..1a10be1cf964a2d5c5bee20f8c0fa141c44bb029 GIT binary patch literal 3882 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/carconvert.png b/samples/WingtipToys/WingtipToys/Catalog/Images/carconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..82a19dd2146095418a6ced38e8b5a06a46ac763e GIT binary patch literal 5669 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/carearly.png b/samples/WingtipToys/WingtipToys/Catalog/Images/carearly.png new file mode 100644 index 0000000000000000000000000000000000000000..ea61bf14236a51c8fe61d7aeb8a2a1406daea5f1 GIT binary patch literal 6634 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 JjiOoDe*gk#vU~sl literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/carfast.png b/samples/WingtipToys/WingtipToys/Catalog/Images/carfast.png new file mode 100644 index 0000000000000000000000000000000000000000..4efb55d0c0462ea4276141aeea00ae13670bfe5e GIT binary patch literal 6753 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/carfaster.png b/samples/WingtipToys/WingtipToys/Catalog/Images/carfaster.png new file mode 100644 index 0000000000000000000000000000000000000000..261618444b53b7bcd3c1b55af47fb28e402adabc GIT binary patch literal 6664 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 literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/carracer.png b/samples/WingtipToys/WingtipToys/Catalog/Images/carracer.png new file mode 100644 index 0000000000000000000000000000000000000000..dd66f9465d7c0d6529bcb5b8df317c5ad5db7b47 GIT binary patch literal 6844 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 YD{TWHsSiG^@Zk~ySXM=*TFNx!Kk{rKD*ylh literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/planeace.png b/samples/WingtipToys/WingtipToys/Catalog/Images/planeace.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb2a9781b4b54d076cdf7c962455e1cad87dd2d GIT binary patch literal 7329 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 v*i$R=2?mj2Xnd~+KV|#>QvSDZxh710#sRApXI literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/planeglider.png b/samples/WingtipToys/WingtipToys/Catalog/Images/planeglider.png new file mode 100644 index 0000000000000000000000000000000000000000..35d2fef7b0e9a19194b3b8bb4fd6056a47a391e2 GIT binary patch literal 6600 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 DotRL< literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/planeprop.png b/samples/WingtipToys/WingtipToys/Catalog/Images/planeprop.png new file mode 100644 index 0000000000000000000000000000000000000000..c4043ca8e769e930a398b47b0e800db26e18fa37 GIT binary patch literal 6537 zcmeI1=QkWq*!PtcmZ%~6TC0R;(OWF5{8&ADm(_c8(Pi}-L|H95Av#O+UZW;@lwc8c z6GRWU=Z|>KxnJBbuDQP7IcKhOop~{5<}?!u8TomdBIp2_Aef0DG7Q3YQ`17@rOMUA?8#C|GpK-bziDYKlL?j!ZjIyPeYXOi#0c- zl8)Gu_^{13uJcw$H~g?@$OrZ3K@9Y3U{#6mRFfmro5+Mg58~~YJ#!#T4w#x8JC7JrkONYYi+A#{5^=$( zgl441-#&=VjWRzD04|4$Jf}%CJ^6!pxpGz$0WJW*M-&fUY_S#qVxx1`(kTFGU|^O5 zv)#)F@yGppI~6jFik$igZSUx4BsC=QVPI|AxC&2paQdW6kQLC+pm0QH}Vs< zYI$oR>K?|SUTThSAakK;UrMSv{9Tqv4%zI?ymO>Qj#{r;b(WHr=7WPegUhnkMEVlw z4V;}Y7piS(;B=9ke-cld`oS~Q?Mb-T?5cl6Yp{hSloqOwy+6~_OyXbM|)2G-EO z{4{1pd!pA@%4xtcUKB0(`0yKu(Kr7Wj4T`Kah$po@~f%U6D_lysh3<`3ityyD-?g% zK~7yE>s~b2ae3UF&`&Q_vOJz8GNu=s(Hhbz)I^A{kBs2&1YKjBhObwLC+dZ1g`0`q z4JCbQRIDsf1M0vVm$a;5zb-)1&LJsEfz!Ou;ZIQ}j1!ei{|XsO@)avRLGjihdt;)F zsu08BDT^_Q7b^9e8L?$uzV3q(yKV)Qu;KrH? z6Z(l<$2+C6iqPc95l#YHl$(NE%J>$!XQG^rUd zRTq%@7gwaOPc4xMQI^fFb{oi2t!963GyJM?cd<2h zI!532sXC)`)Z85A*5wn6HYwHq_+N!?!Auoy|GjW#f0;a$g%imwrNEz|7#}rv79Au& z-1gsh#E8c$F#^fQKEE+n9SjJ<;BTm?IG<@;7%(-HEA3bTB|~JDc=>2X;4VsAxtnO} zzwVQX&p!5Ffd}UqI;lzWV=xvI5BiQ7kLNJeXE&0jL%2|$9By|utxlRy#pMFoGRjlgUYRu` z6`i=APdmn>hMBbG@n=V{q-fD7na8)dMXC<;5$on9#p`09XS}_=RR=1*L+urV6SE}j zP@>g$cah{11cHqxt&iaM&~Aq~|D92RMKK_$w5LI;bP-@wnL+h8y?W_swd+nq393=2 z(WB*lK=S6sR&qI@^(cFFz&RaTeZt(mksVaiLIUB-hE77?zvK}aW07qem?fuo3Hg0` z!GYaZUt?p23~a3_XG|sYuDvU(DQo+&^0^vLt-FPfv)9SrlDfum^ z_fU4ts%Gq-m9%g4{)%bxV$`d8XJn5==D)zHP41n*_X6VGw+`i3wd<~XPpHn~nW})r z2d?);fZnElSyqBbVTeORR9mkvuR>(P@PcxKlUb*1e(+LT`tvyOP|9tO zA0Q#0QtG2K5W*0NeTCGH1XxD-UP|W&|7_lquXEnX%J1~kWsQ1?*!ycOTtZDjR~Pe| zOrG8S7iY}tUb?4Kbk9P*QQY{&4EVX@3p|C4!@F9{omTj^Q4s@CRQA?2JLWW3r|)1KeOTA1mi>jEvEi zLW(3ZIF*T!weUFQRh6KvihjzSwr20cGUOcC$|HGWPkMOr}DQeA*l3N9v zvG4S zjgM`l732j0f82F#O=Uy#>AAv0gZwP2v@!co?!fu;wpX67{%^s>E@E7Oy{I(rK+j`X zax=)`_`q5y1f-+xtX^H01SY~qfk(EK=W-l1xba9o=+hhxUbtZP;?3XR_dx#MIx~(> ztuHU{{`pxT+vQn9^Lkv;UZ;(4<5oDIb|8AJ8D~?skn)%KGQZN@Eadfs?v)g`keAZ+ zUQIi#rjTW~eV3jVy=&~2f*mo02oE4fG;IObkO(<1BBhn5klPBy=^cZMCiFL)c&_rd z*M2Z29iVQtUIVnJLby~u&qexhvL_xfWP>k%6r20D@bV(c9MLj(a4g5xifhGKUwWv^N{ z9WCZ<@PymxlhKww@x8B+9KR(cL+=j#Ky{xb?nqrrEyp+fQwX~3pL=g&*iC;VKlWb^ z#<*NaWK4kGWK1!?p{@4TIk$ZreB}ZI6c(cxSlnb>?ry62#Hg1RNE(v)6R#t9t)t1& z^6$>MX^bg`ydb{>Iy&d1x=zay#4dP0I-x-+ED`JhXp{1+5uNr!wx%(pM{kht&omk+ z1js~;4gJj&&t@%kV0Xk?p;j`+S z?xc1^JbJkY7O|Bgv5vUL2K*?SuOoFzte@AF_x#7g5R3X<3Uq-T<6wJtb z`Z9QlA^{p$LV+dJT6f+df$_oOW|o9P{(}J!W<-S95p#ILHgiMxc7M;=#H@5iN@P1+ z+RW>-FnbVnho_v(!|3AtBDy4|`@1nI#=Prz0Rdq@K9tM93UxchH>dl#)=w!7P7MvQ z8QS}H&Z$i4?gtB9?(tV+W0EH~qK)vFw<_m?E@}S_`KpSL+xL1g8$6FRtLM4TU%yW^ z?>GT6q!qm%bZJyI7_lb~2K#d2DdJko`^J|gHp)K9mt|Y#n0&6#Cb~?dyWJCe+I+~t z&VCl16~6EDyleW-OZHqkn_}1}I(cg*NI(PP3~;+h|#~YSeHh+mylZG#b?%X3U&7KVaRZJ z#fW9O#8xWkS@@RX`n#8nPB*41E2n?_7G?5z5%VQx4`(4hX*Bh2B57kOmA^w8O18Va zud6fPV-mG)QPB=_pkz$FEs*V$^O?j8loCjg%`GS#GSviw`Z3Vdi$nM(dq9JI*UTgWZc3ri|biwG6JqSvGHpjW=$K z_G?cQ|BNZOkJk>AKuicEDZG(*hv$u2brwM&oe9Bc_vIznx<97rZ#fuk1oJgy{6?{i zwtpd1N8km-Q;?T$pRMBnhwW@#T{<2*DvEdM?5z3#wMEv`UZVua25*@nEB<_aJHhZz z^_#vsN}S(FOoSIHr+&vwX#}9{EHo?b(?>QRKt1r8(l4zjn(A`rC?;gvW zh5MU=q1)$Bpi986jgr7l z02Pd?C`llW2u!r)tWr)E(4fEQI{>uED8c zzac!N9c5lMfcgFVB1o&{>JeY3%sCGQhFn(KC76+RJ_?M{NSVhiT)Y5RD%;_h*c{y1 zF*>|v^B()Maem2**)rmrvfj;`FkCnMaCT)%&My?|y^iNBe?1m>A~PAZ%p(aaQba@t zoh)wbbaCiT00a@!oS%F=^WgwSb*QBJwy+>FM}OTlEM48_`(U)O;VkHEl6;B9U& z8mEgYdx!LozJ(EbuB)z$8q=eNq4Io4frfm5Xp^dQqg}SL;--U;1ET6cAnjlomNG_ zS4IEx>@FIOUpyOJ46E`!Np8^mmDRY%9#(1BFlPlI!U_W56&+T_&C!l7-R#6F(MS}`9aI~-DF`lWtSG#ar{|ujG;-1(Xhbu|0;-f${%Juz3kwd7O~EMZ@T?6TXi|J6qIst*ze<9$UXBv(aCqw+TqhWZc&@Z=oWy_ zVmbX>QuQ=*SvO1@(w3Yznc8{whc3-}qxI6yPijTByfnw`SlAZ|mJoLDH}W(HG43;Z z#ss@Yz0cInMd8Cgc?oMDv+V*KejCS#$ZK|aKnZXW)=9!!aQNIK-8e+@y;4k;pMUbr zP?3DI5W-By%FJk$!+SYfugF|yw^tY4VumX%(j=p`=A*Mh(={m?T6iZ*M{4zb$kuZS z!Fl%8V}(VvhN=Rz#GgCeeKn-Yn1?u#%)4Be>NXamZ-7Qd%~F!ROA$hf+0FEn0pA`+T;s786umuhq-9+dRFT_KX8x+NZf| z2t@d^56fnm@HMYpxxJ18vDS9oQ85-%VbYnT5(Ki66H?hHOIN}t*p{z+O|*$KH2ias zFNIe}>ZH{oV8^+6nH75zvWc~5-eU>)%Yx@3l{!UW%*7>PGMW74!$${xKShSkh_um5jUw$sTg|LnN{plo#M_9}J1&rzv~u#CA3EZeSIbVipr5c^dR zA#07MVGS8q7=Kxwa>*M}FF?It3N_@XMzRro9;Khbkqz((_t)BYFU|krB@l}%qWV3^ zu=0bpZEhz8nTkh~*xtsPnLOpUdu;M2CVw}V#~*0qTrEeCvBNNt82eFbFYR8+fh!2n z%gB8RZR+6SZ=I>Yg#DqCqU%RIWcH#XpMot^O4|noIXDV_B&TpRa6$QKjEtB_D%NS3 zU@I?M`&?w66OPH&!~Mx0MZOmt6gw{5+$wCyu{d-V$^Be$Fpk6dJufBJH`_y~Ifq!u z@5ubO-v|re`Q9;b+e|}{6G#%?M-|GYR5QanIU9F#_!_v$)U57kI9Vz z8Omq(s8ONRK|4NPWH;0@@z6$W&$=WY1-inV!)IvtD$60u ztm&Dxa-f}*29W+oW3FJ!{ny_^mB&tpjyZ7tiSjfXCO(qMaJBNRH*4L~2{ieQbXRX- zPfA+!d-LqUO=@v32{z_OmwwOw$SQ$m5^09!hWZ8f39t)=7mwcIDi#z0TeX;K2Q8Wf zx)Yq4E)ej9)G|~2uPjR%(e7DK>4}$0ck5bn`6e5~5NDq0cb2A&!%*>m4LPawk4Pw2 zZ%DsmHzYjElqP8Eee<7P4}M(8EKTE~6j494%0pHeAr(a*KXG2CH{Tg3E_Ea8;`87=|B=SO~~S zTQ}%iV)2KG@3?Y04mZoa0I;3GlAn2QAf3plNZv|~8B}f;rUN=IdSez>hDh6QQv8NukjFn3X4i(pw^ zT~RGmOel^$Wp;K76oO^0x*qBDPx5Paz7qXA7p`s&52z^a77tZ|?;QJ0VcMN}V84eL zD*G!0*1vls&AEfbIg-FxFGj@#YkX84}|y@QO!pX z^T2p};NSUg9w722xw9*`+ye&2)y(!?V!>0T2sLt6!+l`WK=*G=U+*4J^ku(^DKW(Z zOb+`{W`6zvhzD5amvzD(s^R5|95u*3EWWFo&%jfBK+-=;95eqtVCFy3=w@p01GUC^ wrqO=*K%!%0tI(x5l-mE-%K!IW>AA)@7PK>`GVyIXJw9)blw z^WJ;zt@9hshkm-cs{85c-g~dT_UdRY4Mkiq1sDJT;3_N0=^*<-WGlb~A-~Gc3>C-@ z#a%~H22eXrb$}e8zmry%1^^lou^+5}$T60yl94+AfYQYp(x>v@}> zm|?q`?tYY9Hj~glYk6ywZn4;a+uYE@3$g)+SQg0YqH-3(SaStuWbDX9OVlIw<}}K5 zKTq4qgg7Xvu0XnRAOh$zK1++1Xg}$`uQ$IvdJH^1Y%;Fc7xOyvHNZD%zWMIQkh_kl zT;=!tyzYM5vLEpDY0TtEQ8`iv%F6Q!D6T?U8mwdK24;a?9%zAc;HY4N0P#<#;H34k zcXZ)8Gt;b$jJqukGc%rbY|^HE#=*Tu7dj@YXr2_#tkz!p-$^zJE?`ITU-cP9utIZ6 zy*vc^Bndd5=dd+rFcn95{VNW>zV8?Kl((6 zLfbz;Hc0Mrf>a`G&X znVOqFH`TxKZhF^7c3TfmKPEVU3HI%sm+)|c1@&trAHALUg~{51==dw2DTSkiRbn%0 z>|ExTVr1mjOtOz=@nA{szyui4W0-^$A!Rs^ROI=tJi&K{{S@Tnb{Q_bYk$Jm_ZwF{ z+K2&8)pezXui_(x`vrkfx}PF^!-u7>^#tY@HemU#wt(`z9jgQ%92L38Wy({!pfcNP z*``XdfH)ahw9gs41nb0fc!b6fzyJ?OhjV$a zHun{m5`D8-fsZ#7`+2B+!qGKAj(d1{XH9galt^}t@YLUc9`p2XA?^7yC;Qji0OVRzvs5JJ@fqdRm-B_KBvm~!z!_Mh5zdHe$1N%9bd>5 zI`rtk5y4aCNWsHDAr6f4p-^PR)KRYXNOo83ojSzW0zDH5v1Y$vjE-xjp6-@bAUn*v z7~P&U$(|o!fl^u5$xSW+&JH(rSw(?;DKcccL2}A4+6zb9SiK)l8T5 zM;cnrp1rd(+r1_)10$#r<;O!~KYRZknS8t`8WS@!H`ifTEIR?by39dtP5gqGZqI?^ z8eNZR$56m6W~fbZxRsa~!ufNVa?Q+nw#SUDi8{$=j}kgP{Cb}TR?1B_BWRM=}iNz6MEffFY*|p1- z#0Qjs{VBhL{O6}vp^rpj8-nwu)fd_q)6cblHV+C72ax}C;)$2QRJ>I}!14ZYPwt9& zMxB}1uPt|3PuNI)Ve81i^?B|z(`6BMSupBOsIup#5Zyo04YI*zFN>^{7=bjBq`8%u zweiTnys^vN;Q-&UaBV1xo7LsF@+!g=XyV%E7Z|rsi%htr0=cWReJ3Fx5k_;({BPbA z8oL_6LA~-%!A^hZ82D~<6ky8otA%;s1l7X5*;DnUjwVT7S_fSd7X|Zh{USu0?F2li zLz?2}E#H@eW-+1YT*$RB^x z(j-3_l4(k|gumo8v+XzVAS*mtCC*oGm zcN0c*X<dCxA?BN^iBqB_=?Of#~VeQn)fvgkSt_%h;%JYm8Adx!(#BDJS{<9e6IhLSz8#AnEWrAq)fyxIYfXnGCNoQexKfVX{crd>z~`kb!Muj@D^UWpoS!9s z<9}sk-0_|SUSK*d1Z}Vlkj-6VhHQW5* zET|Of(sFz^wBI~gR9f}*MTayE8x)6VA- zAV0uIAjZ0JKVtVr`&E0m1Wh7pAJ6lwl8~CE8onzuraR5=@E?lkR~OQg)h7@x?zOJH zw^D~Ll2gIXmeDMg_FEN=zga-SxdqbZ&Ar%bIu3n53;5-=26dV%5lCpRL9j{am@35V zJ^+9gO61ZU#Z7Gq%VhkyCu1JRS_0IIH_40aGSsz#-LVF^$9)EE!JJc|A^^DYn@14^7$vftkWD^a)cz$tFK{dS z@+sZGGB;{CoO?w-x)V!B{wbBiJox8bXzWd)A}wNTdWqP&qUZ+|a5mO9p&7>KXY{(8 zB`9dbZn@#42?^Wi!LS7GlCJ}S;gK~9Fx)tQv9-tIo9Dz|en$ozR;cto9+}0+fTwb{ zv5N>(D%_5|ndE!^OXgR@CDD2_6Le2Qy?UW7hssK+-k{Cu6w}Ci;oC_gI1JB;zh|{= z2+2)PhbdR}0&}v`WFxQ7il7DArBRLNDVV+q*>fOX`K3%BtDIucj>nj`W2KmKB>r*P z$=QdOS6ElnT2&jrs7;Pgnnw3kU;Ln!`oVJJ_B7}0^`VF)r&)*hT_HN2RX!9rlkAO* zR3gop^PeIET*ktC=NI{s8nJDG#b5pLI9yObG!JDzjSuae3TtwvX($@OMRX+drZ@7H zIqu}Ud!*Wg12QqH>@0N!Q99)OWIyUPdl_=jv&gRkMgDl&%@QHq{J0qvF2|g3T8iJ? zrP8trqZJUCoqn3|)S{(a!WaMNoRIl0hB#P}t@%)#gqH|JutoR&y(QM& z>>qh)YrS;dzZ;?Q5`V$RyWQu4QUlX5R+dmCw;P zjV@vdmk0Xs@X+4szEBPVdXKO4NsY@FH8=u}g zFe}7$ZWtkHfqS4M>XcB@nDJ(Gm-v&&G2XSwg&!LRDSCbF$05Pt(b05GzgGWt(G{a2;t^)44lT;1kFi9?5METR^pSEcMV;a6v?IP^dzhoJ63NXdqLUdScnRzGzDfv8ofl<=)CS1P= zfJ?uiJuk%dUb2YmJV0ow>^B&QFhZD}QY5Ups7`Z%bhuwsfZg2*2d9n*f&u9J=(m43 z$66~$=oE~`r$gUVZcY}6FVdvb{ov5{6=_aRHDMu=*IBlDmxJJKIzi>ycUvheMA2TO z3j`!dH!E|M5H?S>h>tND1e3jGQ3IF2(S7|`%!r6@fgsdlg4yf=-&{J}ve(nX-+qze zXnDUCu1$Z-c5^5|su5BF+wI+-6N83C#Q^;nvKiKSs$WUp!5_pRn0j0wY-@_$FZ+r% zl&v4bLc$g@%mW3y>_&+fcmQb@hV-m#Np#x56*t3+7i9omh2_D%WHzXYOgD%;xU-w+ zM_}!F0irBHWEl$BDxHA6ySa?R;T?uii)LM3dl>%wE)kMPX&n~}Ca@_<3pLh8fbP(W zj5mEiP!Kttx#xv37st`F{o~BkJej)M*Os);=`Rs6JvG=B3=M=&85tI89}${SdeWov ziq@HpO6_+hU;6l~neeVT_3y;Gt=mHUKuZRM6ij(U@cXHj-$d<7D#9>@On-BT&uiDvun= zBM!nSzcx7gB&X1hHcW?sS5teQDiVd;HRK@KgiL;L&h}Sb*zIc8;&p=H1Ndg~eO9Tdx-5OR`w#hz2s< zM@s;(u+e$?B&vUx>o*4&Tc=Gc_9=zjQ}0Qi+IQ@;HjN!{5i4sGw}|>?$h$ zn58{;?B~Lzq@P?NUtlG4)a6 zA0J_68`O(Wapp3}Abd=57TZl1f7hwiJQeWLbnuA6_Ta_Nj0-mcrxtfgUn(LCLDa_) zGIhhoER3xEKl$rX@=*QCG)eep|AS>YpmoVd*G0+=LbW8l;+ zdS^|wC}CA5*tWSLtBYm5U*uI1zmom&p3>u$&@W|qe@J#3Y8^xJfB1RIXPdpyKIj$g z_#;$0)$EZue&c6J%MT4KbS-URpB~~T5TMWpZP*Kjf4DGpj54-=*;moWr;C!}{rTru zlqstRAC{XV=6j+Yof@<6+8Qw_#MhZsHi@t6<2^z~F0B+E`QUskD_<0Z%0v zxLQA290t|CPmb_6O$bQu71@$7(J~09Ya2yz|3xsWf6r8@ucO2s(AO~U{Sj_VnN$A`3SW}%aZ zKJ2P7=8d7A!ilL)tmY%3exai#O}gfT;aRHf?7e-Ia}xfq`=*CAY~@$Xs|iY@Hfs@L zC8ATcYNmm^qS5oJ!P<(w|3MdF_AzH~^-z(nfi?$Il$1%T>)S@)WPcCd*I!0y%qtO%C2ab5A@!lz>s>-+qpP z1%^cBhlh8<DxZ<`EKNif0R5N(U^Pm2_eWP#2B;i9y8nPN3s}CSzmCwLqT6LZRCCmj7&cXZC zDMCFC|4DUwSQ-bNS+VfeLnI#({$*PBfe*)n-S~79P2^~ILt~Mi z9EYXcu$8pVz}0V>N+amZb`Gc3Y>`&qg_CnYosM$*L{ay}M4u0*pY>LXu@VaUbBrn* zWP)w&46&_vt-|0~Vj=CeQ5Z>zolCX=lPUH_7zTt|;RSQFS;v!|VzhF<#CsmK_2MR? z`-o)GDoN-w`gg~T4H8Sxc#${{?`i^Q*f}m%NHO8Y0TDN;>gQ5Z0sCBS`;YMFogXa~ z^{sk32Cf?4T7wxJSg-=IMa^)Kr6-6ca!8LxiO@rK^quQQ;Q%7YAkwzn#t=oCtHl}L_>>R&@PbnVy*?6bx@@FnSX^d(KebO5wPTN#mWEZVvtzYR=hN|+|nGF#D zSm?0LJXHN#BJM3o)q*O3@FPvV#55VfACD^x)M?OQ9ZKZv z*CW^es1u5V;(>%p$tlw+%ijA;Sf~-LTHupl0^9GtYovW};0+fWA--OalF-_9WJ;yA z2td#GzXe^IFL)G!-RkWR!%jx@Vf5#CRa~8Jr!pX=&pEljrsm~@oIA2>zwI$KC?l7Q z@BpK}T+-}M4ewc6NL#ga;9WV4eam)uNx2nOi^jn-d3HA}t7j~z2oF`>NJE8S$+cvB z-KLfA2PnmOBlOJ!B-&x`qA9{L{ZJN?iD8#(hlAynX*0(9lZ&oV}O#QLl`lKqdP@nfPjL8bVw+pQAz~qlm=l^Ln#UA5NVWd zX>bw(ci;cvKKGaV!#U^kKF>MlJ^;8Z`wA1qlfWwT3#{kl6MTOCIPZvDUce zDI+!jFGDqDl8?h|TSNi)6s3bAA;Be3{<9?`%H;0qkGx1oXuAF@fD|DbRuU5WZVfcb z*dMcNMec7hQIBa#?^OVkhNpu;$QM$T}M>SvqLC-g_$erVy2aJUx-k6UOuuV zSJz;UQy|NKRSY}6qYnV2Z-_+-*u##qKEC8*G~yinnH;#Mc#%_oxp!+@?qcV-`gmV@ zr+$iX5fp4HtU(6^hB|XEf-Qjn)Z#e^gj)R#2D-g^1x72;qV9vZ7hb_^r~uz#-`tbG zxL{v_yLhpwQ&N#cU~=<(uLA~Sr_rNF8Q+M&)Ty)giJVj!oCz|={9q!29lp;>hB(V( zI@EwO%L5`%-D?`)C2Dcub_~$5Bf^^{UcVV2fGb)DC|vDCMFjDmt0I{&7!VhewdiCim@UR?oz@T&Q6nCbh( zHzO6qEo-J|Q~0?}gh~-E=G=!6FxDR$5`do|f|-@Fginq>91$%<0n8u~zp=2cF+CKVA!ZaM`Ql z0~!pm}h2TS#9~}&l!{O>o=He>4+=B)|bdWK;QY<8QfUsdNvq;i!(Aa_Vmdl_S_EMMct6O21}AWK<>!ochLR84+L~oSy68*o8#fa^WMr_EuUW5Ta7L)0 z#|E8N0s?mzw$9S`M@wSMC*io0F&B1}p)jShb#MZ*% zeW5tsYIM&;&NAz`I2h*JW)X-Tm)ofKCX5@L6Efra7w`@wS;vkkmHawjM+(weIv^z{ ztb32$`mn<$RH6cLhu6s6U2>9RIqTlqN@8G49ba@9x#wMEl*AQ*E9H1Tfm7jxzTWkH zX!=spcP(T$q=|W*-_VHz4gC|fZ%IGKixO9_fbyiea5ZnoS-v~0A31geBdb|-d zR}3}Am}<71Qxyzb1tuZ)k2T?8`&2IzpgvQjrbc|clyuCQ3F30I^fU&6ui z;!OwLqIfo~A&WZRTh6JGQ!;D&{tZ$W+%}K4rXZcxu09b+z%^;>O_}>kQEeMmt?F}) zm4-849EF$X+|wGPk32=KT80B!aLC%Sf`Xr|)=|xJk9<4ndkqXQnoo5(9fUpJ={j%} z_y{q2&c3+3Wzi;UW@=hMA(_WjS3wBIZ#jx4(j|#k;(8+m{(e$USqi)sznbS(a zFT+&iGThXD&}8;TYvesWG!#3X3`>>7B}TmVPLkWdj%OGN)Jr#XDC)-CjS56kZ|U#> z;VNL+F0rS+!L^|cZkYTl5gqUWFDV00bX$MduOWfox@{eqi@mjE0B1-z`_9-H_v|N+ zbahp54UjaI8w5rHDUt+;w+0HXVMCEnC^wG*0YWev4Xhb}i8&0G$Lk!50)v4c6Nvt# zl?JtVlW4V8kHJI}enbr-B{~i2{}qn_ujf;Y9*D>pL1-B9Qmr8#>gWYlSLZL9gH|+$Jk#zCO@8HpVrd z=6h&jc8R{NBmZ4vE0b=AV9g1R)8ro7v7GEo$F1drQv7EBHET;XUAUIR=(Jjhrs8uJ z_3XDV42_MwBAA~g$oW4uknRX&wKMJJ^R*=v!oTgo?>XqgoWfT46tw6{23HGd4F%wE!(FFpo3F~f)2|}7V`X<4d;$+C zDV`N;i%12L;FaJCu{UX&GIK)q9F$+?+b%IcGXo-eaBDH!}Qqh;BOvV4laAI|{2L z+X_|7F>p}JXSPv7NruxC{Hj)Bvi4PKJ(6Zq0mLQyPV>!^n|oR5>SFX z!+=l(M|iq3y3RGfT@N{+s9I)m_-z`b+9XG`Qg|~fMhNslh&Hz)Gz~M_l|7^2JX6lT z`^4*ys)>{Lci61_7OhU!w^e^rCu$I|7-i!w#x7r%$q;-*W7X`gnr&rfoLH^-7Qs3U ziE-i>Sw~Z;sH*&^Nm>E%vOH0Dq{|Y0+p~JUnEj~k#Y~Bm&$)&70=}<*J3}$}cGa0@ zE7|%zy9Xc|ntZ+x0(YGK4~i$QCJsds=?A#|d0c4f;LBVJJO{ITXLSv1e>==3L`Aj7 zW05E0{NzjaO&Z-oH$|g&Gh|+a3&_Oks-;3a<0$9CsWg<45#yD(9LAKGU7^&=q(r&; zl^prhn#Vk;b73Jr-p1mp+uCV9YicvIdP<+rU8_00kf4uBJMaU?p;oCjSTPDOQE!ju3mYK(vL z_p_$yn+xG0ENCrGAm1zvvr@)4rIWfb5)%`s=5%StDPjL5%Io^yg7<2>?tA`>fry&- z!e^8%G8fFVU%NWqm=CR+mWZ@Cp5Xbm+4|2}+C_X^@?S6cQ9sp5S0ae}pwZHq#;3>d zDP)Mlq*2}C_0{`?Px6zSkT5u(B<)y%-a^s)CrY~MY6O9w<9!%50ydHqlHnnxJym=c z_00L1(|DT3xPnq>gk@P)-@j&;7yI?r-&Nzqq@~C$AyjNeXxsUhUN>E@ZzZFl9Ul#f z8HX*WTGFi49hrW4T_?yfL54O;+Vv>)d(@i$9C_9GO)+#j>p`Iol^P9WnWB0Qxvsg} zjIC^g;|6vdh3+yv-mbF{p!iwccRK#0gn(}|;bteDh;M<_mwc|~@0S?l?6c)Q?rdaR zOx0TL<(Uyolsmb%b2n1e{F~`cEk`-n<@tn;A<6wswdp78T1HzWnW#O-9-95)dw8TH zv?%mU&J}UT@cc%yiMm-&F+0kCyHI}bEdSH4c7R6&+XT zt-HR5K(VQJ56x>`auD}!KVj&)JupK>jQ@;(3w)NY`am<+aP8`cqh{Br4}m+%;AB2x z3QX&N`8eu60HnG{dtR1zzw0iJ9ySNg@~lll=zGzCNMg*}T#QTftQAc=YFU;NJ+V&9 zwcu3pE#0u=GHfh{qHI`TJF)I!9aRBMj5GVE9pg9TY4@)qX>iP>65K&$cAbN9#w^m= zLRFb%gNBl<3`}~t2-4u9I#UHv4sP{4iyxZHVmNMYyAYrJm%yq?H zK*GBzp0Y`DJ>F5LHQ1WsZPdydiEtOyhO)CB7+xTzyOdA=05i>U982^#Oaqad!&6bCN!}Y}k?pUTlO*)w7UX;rKP-I{ug$ggn|yuo;NVHZ+)P^oFtlCK z79$s`jA-OT!fTaC&?^cW-jxxsIn;lTE0L2dnQLuQeq5Em)*?!`j}5a|dRg{Gx>@fg zDtE@tKBd7ESR50bVL zN)=f^GWHzvTD2i({Lf=0o+m+9(+1aWwsUt&P{9$ zGL#>cBz(CvsJe|9J(ip=-n&P=D2(sjOcAS|L%C^3k+iA|G}V?~7Tmd4-s^l7Fvt5#mulLX^n;SXt>@tO5m-i#`MDE4@-{#Uloa_i+S{$eh- z<}dil$7E7c9QJl*e+P4whi~&dh+5DKiz@o!qc9zx_+sitKQMylV_>bZ6`aTBaU{jE z1XA&WYBd9QH!Eb>92e=VDB1K7`Qm7!t#Ebza{F~DGjn?V{@2zk5P^IVU3f%ED85(! zhtr!;Ct&Yx{gYM7RT2(j-XjVS#@5j#0!?m11W=#rE2wE)`rDVJ4$GJ=3w>V+78ies zap$4R3r&ig536@jdKlif7F6qbBgLYoL4sd8n-?khdmCF`y;xkId=qvJ58etIgmv6JteO)jIEzhu4kV2=?EKjg{>jNTvK$dZaW~FsdM3vF zTbPkrMMt15BuObMQxAeJL&uNi$?T*XsX6@_(`(}YNgn?3_k7$`Xw-rmqaySi=-kTFOE0s*6h^gy6isyE?lF zpB2QX-LkvRZ$8(G#=7Q9yP;)`G2u-Vk1b{WG)=Md*?D5&Ae^U78>pXC~#1f_?aTpG1fLo%xdZw za;fHBh>6V;9{8nm95LT9SQi-r&(H$S=lE3a*}AM=%PO=+hG3(=vo1~ literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Catalog/Images/truckearly.png b/samples/WingtipToys/WingtipToys/Catalog/Images/truckearly.png new file mode 100644 index 0000000000000000000000000000000000000000..b325fa1d31e2fdc84faee54fab2b3e902853033e GIT binary patch literal 5897 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 + +

Checkout Cancelled

+

+

Your purchase has been cancelled.

+
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.cs new file mode 100644 index 000000000..b659f6e1f --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys.Checkout +{ + public partial class CheckoutCancel : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.designer.cs new file mode 100644 index 000000000..7274adf3d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutCancel.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Checkout +{ + + + public partial class CheckoutCancel + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx new file mode 100644 index 000000000..52d48e24d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx @@ -0,0 +1,11 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CheckoutComplete.aspx.cs" Inherits="WingtipToys.Checkout.CheckoutComplete" %> + +

Checkout Complete

+

+

Payment Transaction ID:

+

+

Thank You!

+

+
+ +
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.cs new file mode 100644 index 000000000..3e6c7a166 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Models; + +namespace WingtipToys.Checkout +{ + public partial class CheckoutComplete : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + // Verify user has completed the checkout process. + if ((string)Session["userCheckoutCompleted"] != "true") + { + Session["userCheckoutCompleted"] = string.Empty; + Response.Redirect("CheckoutError.aspx?" + "Desc=Unvalidated%20Checkout."); + } + + NVPAPICaller payPalCaller = new NVPAPICaller(); + + string retMsg = ""; + string token = ""; + string finalPaymentAmount = ""; + string PayerID = ""; + NVPCodec decoder = new NVPCodec(); + + token = Session["token"].ToString(); + PayerID = Session["payerId"].ToString(); + finalPaymentAmount = Session["payment_amt"].ToString(); + + bool ret = payPalCaller.DoCheckoutPayment(finalPaymentAmount, token, PayerID, ref decoder, ref retMsg); + if (ret) + { + // Retrieve PayPal confirmation value. + string PaymentConfirmation = decoder["PAYMENTINFO_0_TRANSACTIONID"].ToString(); + TransactionId.Text = PaymentConfirmation; + + + ProductContext _db = new ProductContext(); + // Get the current order id. + int currentOrderId = -1; + if (Session["currentOrderId"] != string.Empty) + { + currentOrderId = Convert.ToInt32(Session["currentOrderID"]); + } + Order myCurrentOrder; + if (currentOrderId >= 0) + { + // Get the order based on order id. + myCurrentOrder = _db.Orders.Single(o => o.OrderId == currentOrderId); + // Update the order to reflect payment has been completed. + myCurrentOrder.PaymentTransactionId = PaymentConfirmation; + // Save to DB. + _db.SaveChanges(); + } + + // Clear shopping cart. + using (WingtipToys.Logic.ShoppingCartActions usersShoppingCart = + new WingtipToys.Logic.ShoppingCartActions()) + { + usersShoppingCart.EmptyCart(); + } + + // Clear order id. + Session["currentOrderId"] = string.Empty; + } + else + { + Response.Redirect("CheckoutError.aspx?" + retMsg); + } + } + } + + protected void Continue_Click(object sender, EventArgs e) + { + Response.Redirect("~/Default.aspx"); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.designer.cs new file mode 100644 index 000000000..edeccf070 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutComplete.aspx.designer.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Checkout { + + + public partial class CheckoutComplete { + + /// + /// TransactionId control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label TransactionId; + + /// + /// Continue control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button Continue; + } +} diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx new file mode 100644 index 000000000..34e5c659e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx @@ -0,0 +1,20 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CheckoutError.aspx.cs" Inherits="WingtipToys.Checkout.CheckoutError" %> + +

Checkout Error

+

+ + + + + + + + + + + + + +
<%=Request.QueryString.Get("ErrorCode")%>
<%=Request.QueryString.Get("Desc")%>
<%=Request.QueryString.Get("Desc2")%>
+

+
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.cs new file mode 100644 index 000000000..bced2d43e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys.Checkout +{ + public partial class CheckoutError : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.designer.cs new file mode 100644 index 000000000..191d8c29a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutError.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Checkout +{ + + + public partial class CheckoutError + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx new file mode 100644 index 000000000..ba3784256 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx @@ -0,0 +1,40 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CheckoutReview.aspx.cs" Inherits="WingtipToys.Checkout.CheckoutReview" %> + +

Order Review

+

+

Products:

+ + + + + + + + + + + + +

Shipping Address:

+
+ + +
+ +
+ + + +

+

Order Total:

+
+ +
+ +
+
+
+

+
+ +
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.cs new file mode 100644 index 000000000..394d56794 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Models; + +namespace WingtipToys.Checkout +{ + public partial class CheckoutReview : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + NVPAPICaller payPalCaller = new NVPAPICaller(); + + string retMsg = ""; + string token = ""; + string PayerID = ""; + NVPCodec decoder = new NVPCodec(); + token = Session["token"].ToString(); + + bool ret = payPalCaller.GetCheckoutDetails(token, ref PayerID, ref decoder, ref retMsg); + if (ret) + { + Session["payerId"] = PayerID; + + var myOrder = new Order(); + myOrder.OrderDate = Convert.ToDateTime(decoder["TIMESTAMP"].ToString()); + myOrder.Username = User.Identity.Name; + myOrder.FirstName = decoder["FIRSTNAME"].ToString(); + myOrder.LastName = decoder["LASTNAME"].ToString(); + myOrder.Address = decoder["SHIPTOSTREET"].ToString(); + myOrder.City = decoder["SHIPTOCITY"].ToString(); + myOrder.State = decoder["SHIPTOSTATE"].ToString(); + myOrder.PostalCode = decoder["SHIPTOZIP"].ToString(); + myOrder.Country = decoder["SHIPTOCOUNTRYCODE"].ToString(); + myOrder.Email = decoder["EMAIL"].ToString(); + myOrder.Total = Convert.ToDecimal(decoder["AMT"].ToString()); + + // Verify total payment amount as set on CheckoutStart.aspx. + try + { + decimal paymentAmountOnCheckout = Convert.ToDecimal(Session["payment_amt"].ToString()); + decimal paymentAmoutFromPayPal = Convert.ToDecimal(decoder["AMT"].ToString()); + if (paymentAmountOnCheckout != paymentAmoutFromPayPal) + { + Response.Redirect("CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch."); + } + } + catch (Exception) + { + Response.Redirect("CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch."); + } + + // Get DB context. + ProductContext _db = new ProductContext(); + + // Add order to DB. + _db.Orders.Add(myOrder); + _db.SaveChanges(); + + // Get the shopping cart items and process them. + using (WingtipToys.Logic.ShoppingCartActions usersShoppingCart = new WingtipToys.Logic.ShoppingCartActions()) + { + List myOrderList = usersShoppingCart.GetCartItems(); + + // Add OrderDetail information to the DB for each product purchased. + for (int i = 0; i < myOrderList.Count; i++) + { + // Create a new OrderDetail object. + var myOrderDetail = new OrderDetail(); + myOrderDetail.OrderId = myOrder.OrderId; + myOrderDetail.Username = User.Identity.Name; + myOrderDetail.ProductId = myOrderList[i].ProductId; + myOrderDetail.Quantity = myOrderList[i].Quantity; + myOrderDetail.UnitPrice = myOrderList[i].Product.UnitPrice; + + // Add OrderDetail to DB. + _db.OrderDetails.Add(myOrderDetail); + _db.SaveChanges(); + } + + // Set OrderId. + Session["currentOrderId"] = myOrder.OrderId; + + // Display Order information. + List orderList = new List(); + orderList.Add(myOrder); + ShipInfo.DataSource = orderList; + ShipInfo.DataBind(); + + // Display OrderDetails. + OrderItemList.DataSource = myOrderList; + OrderItemList.DataBind(); + } + } + else + { + Response.Redirect("CheckoutError.aspx?" + retMsg); + } + } + } + + protected void CheckoutConfirm_Click(object sender, EventArgs e) + { + Session["userCheckoutCompleted"] = "true"; + Response.Redirect("~/Checkout/CheckoutComplete.aspx"); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.designer.cs new file mode 100644 index 000000000..5315fc818 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutReview.aspx.designer.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Checkout { + + + public partial class CheckoutReview { + + /// + /// OrderItemList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView OrderItemList; + + /// + /// ShipInfo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.DetailsView ShipInfo; + + /// + /// CheckoutConfirm control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button CheckoutConfirm; + } +} diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx new file mode 100644 index 000000000..611f55ac4 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx @@ -0,0 +1,3 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="CheckoutStart.aspx.cs" Inherits="WingtipToys.Checkout.CheckoutStart" %> + + diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.cs new file mode 100644 index 000000000..7eba172b2 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys.Checkout +{ + public partial class CheckoutStart : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + NVPAPICaller payPalCaller = new NVPAPICaller(); + string retMsg = ""; + string token = ""; + + if (Session["payment_amt"] != null) + { + string amt = Session["payment_amt"].ToString(); + + bool ret = payPalCaller.ShortcutExpressCheckout(amt, ref token, ref retMsg); + if (ret) + { + Session["token"] = token; + Response.Redirect(retMsg); + } + else + { + Response.Redirect("CheckoutError.aspx?" + retMsg); + } + } + else + { + Response.Redirect("CheckoutError.aspx?ErrorCode=AmtMissing"); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.designer.cs new file mode 100644 index 000000000..8e709ef2a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/CheckoutStart.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys.Checkout +{ + + + public partial class CheckoutStart + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Checkout/Web.config b/samples/WingtipToys/WingtipToys/Checkout/Web.config new file mode 100644 index 000000000..e0150ef8b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Checkout/Web.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Contact.aspx b/samples/WingtipToys/WingtipToys/Contact.aspx new file mode 100644 index 000000000..fcc30de03 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Contact.aspx @@ -0,0 +1,17 @@ +<%@ Page Title="Contact" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Contact.aspx.cs" Inherits="WingtipToys.Contact" %> + + +

<%: Title %>.

+

Your contact page.

+
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ P: + 425.555.0100 +
+ +
+ diff --git a/samples/WingtipToys/WingtipToys/Contact.aspx.cs b/samples/WingtipToys/WingtipToys/Contact.aspx.cs new file mode 100644 index 000000000..6137dacc7 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Contact.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys +{ + public partial class Contact : Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Contact.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Contact.aspx.designer.cs new file mode 100644 index 000000000..1e5d5522b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Contact.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys +{ + + + public partial class Contact + { + } +} diff --git a/samples/WingtipToys/WingtipToys/Content/Site.css b/samples/WingtipToys/WingtipToys/Content/Site.css new file mode 100644 index 000000000..4cf204918 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Content/Site.css @@ -0,0 +1,38 @@ +/* Move down content because we have a fixed navbar that is 50px tall */ +body { + padding-top: 50px; + padding-bottom: 20px; +} + +/* Wrapping element */ +/* Set some basic padding to keep content from hitting the edges */ +.body-content { + padding-left: 15px; + padding-right: 15px; +} + +/* Override the default bootstrap behavior where horizontal description lists + will truncate terms that are too long to fit in the left column +*/ +.dl-horizontal dt { + white-space: normal; +} + +/* Set widths on the form inputs since otherwise they're 100% wide */ +input[type="text"], +input[type="password"], +input[type="email"], +input[type="tel"], +input[type="select"] { + max-width: 280px; +} + +/* Responsive: Portrait tablets and up */ +@media screen and (min-width: 768px) { + .jumbotron { + margin-top: 20px; + } + .body-content { + padding: 0; + } +} diff --git a/samples/WingtipToys/WingtipToys/Content/bootstrap-original.css b/samples/WingtipToys/WingtipToys/Content/bootstrap-original.css new file mode 100644 index 000000000..6d6e68281 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Content/bootstrap-original.css @@ -0,0 +1,6816 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. The notices and licenses below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input, +select[multiple], +textarea { + background-image: none; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-warning { + color: #c09853; +} + +.text-danger { + color: #b94a48; +} + +.text-success { + color: #468847; +} + +.text-info { + color: #3a87ad; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +h1, +.h1 { + font-size: 36px; +} + +h2, +.h2 { + font-size: 30px; +} + +h3, +.h3 { + font-size: 24px; +} + +h4, +.h4 { + font-size: 18px; +} + +h5, +.h5 { + font-size: 14px; +} + +h6, +.h6 { + font-size: 12px; +} + +h1 small, +.h1 small { + font-size: 24px; +} + +h2 small, +.h2 small { + font-size: 18px; +} + +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 0; +} + +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-12 { + width: 100%; +} + +@media (min-width: 768px) { + .container { + max-width: 750px; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 992px) { + .container { + max-width: 970px; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table thead > tr > th, +.table tbody > tr > th, +.table tfoot > tr > th, +.table thead > tr > td, +.table tbody > tr > td, +.table tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.table caption + thead tr:first-child th, +.table colgroup + thead tr:first-child th, +.table thead:first-child tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed thead > tr > th, +.table-condensed tbody > tr > th, +.table-condensed tfoot > tr > th, +.table-condensed thead > tr > td, +.table-condensed tbody > tr > td, +.table-condensed tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; +} + +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} + +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; + border-color: #eed3d7; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} + +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} + +@media (max-width: 768px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > thead > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > thead > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + padding-top: 7px; + margin-bottom: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-briefcase:before { + content: "\1f4bc"; +} + +.glyphicon-calendar:before { + content: "\1f4c5"; +} + +.glyphicon-pushpin:before { + content: "\1f4cc"; +} + +.glyphicon-paperclip:before { + content: "\1f4ce"; +} + +.glyphicon-camera:before { + content: "\1f4f7"; +} + +.glyphicon-lock:before { + content: "\1f512"; +} + +.glyphicon-bell:before { + content: "\1f514"; +} + +.glyphicon-bookmark:before { + content: "\1f516"; +} + +.glyphicon-fire:before { + content: "\1f525"; +} + +.glyphicon-wrench:before { + content: "\1f527"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open > .dropdown-menu { + display: block; +} + +.open > a { + outline: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group > .btn { + float: none; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 45px; + line-height: 45px; +} + +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} + +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav > li { + position: relative; + display: block; +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} + +.nav-tabs.nav-justified > li { + float: none; +} + +.nav-tabs.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 5px; +} + +.nav-pills > li + li { + margin-left: 2px; +} + +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified > li { + float: none; +} + +.nav-justified > li > a { + text-align: center; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + z-index: 1030; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} + +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav { + margin: 7.5px -15px; +} + +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} + +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} + +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} + +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e6e6e6; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; +} + +.breadcrumb > li + li:before { + padding: 0 5px; + color: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination > li { + display: inline; +} + +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} + +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #428bca; +} + +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: bold; +} + +.alert > p, +.alert > ul { + margin-bottom: 0; +} + +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.alert-warning hr { + border-top-color: #f8e5be; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger hr { + border-top-color: #e6c1c7; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table { + margin-bottom: 0; +} + +.panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #fbeed5; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} + +.panel-danger { + border-color: #eed3d7; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 15px; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + right: auto; + left: 50%; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} + +.carousel-control .icon-prev:before { + content: '\2039'; +} + +.carousel-control .icon-next:before { + content: '\203a'; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} + +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.visible-xs { + display: none !important; +} + +tr.visible-xs { + display: none !important; +} + +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm { + display: none !important; +} + +tr.visible-sm { + display: none !important; +} + +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md { + display: none !important; +} + +tr.visible-md { + display: none !important; +} + +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg { + display: none !important; +} + +tr.visible-lg { + display: none !important; +} + +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + tr.hidden-xs { + display: none !important; + } + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm { + display: none !important; + } + tr.hidden-xs.hidden-sm { + display: none !important; + } + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md { + display: none !important; + } + tr.hidden-xs.hidden-md { + display: none !important; + } + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg { + display: none !important; + } + tr.hidden-xs.hidden-lg { + display: none !important; + } + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs { + display: none !important; + } + tr.hidden-sm.hidden-xs { + display: none !important; + } + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + tr.hidden-sm { + display: none !important; + } + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md { + display: none !important; + } + tr.hidden-sm.hidden-md { + display: none !important; + } + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg { + display: none !important; + } + tr.hidden-sm.hidden-lg { + display: none !important; + } + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs { + display: none !important; + } + tr.hidden-md.hidden-xs { + display: none !important; + } + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm { + display: none !important; + } + tr.hidden-md.hidden-sm { + display: none !important; + } + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + tr.hidden-md { + display: none !important; + } + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg { + display: none !important; + } + tr.hidden-md.hidden-lg { + display: none !important; + } + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs { + display: none !important; + } + tr.hidden-lg.hidden-xs { + display: none !important; + } + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm { + display: none !important; + } + tr.hidden-lg.hidden-sm { + display: none !important; + } + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md { + display: none !important; + } + tr.hidden-lg.hidden-md { + display: none !important; + } + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + tr.hidden-lg { + display: none !important; + } + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +tr.visible-print { + display: none !important; +} + +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } + tr.hidden-print { + display: none !important; + } + th.hidden-print, + td.hidden-print { + display: none !important; + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Content/bootstrap-original.min.css b/samples/WingtipToys/WingtipToys/Content/bootstrap-original.min.css new file mode 100644 index 000000000..df89a5030 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Content/bootstrap-original.min.css @@ -0,0 +1,20 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. The notices and licenses below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Content/bootstrap.css b/samples/WingtipToys/WingtipToys/Content/bootstrap.css new file mode 100644 index 000000000..965623589 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Content/bootstrap.css @@ -0,0 +1,6296 @@ +/*! + * bootswatch v3.2.0 + * Homepage: http://bootswatch.com + * Copyright 2012-2014 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*/ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +@media print { + * { + text-shadow: none !important; + color: #000 !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #2fa4e7; + text-decoration: none; +} +a:hover, +a:focus { + color: #157ab5; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + width: 100% \9; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; + color: #317eac; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999999; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #999999; +} +.text-primary { + color: #2fa4e7; +} +a.text-primary:hover { + color: #178acc; +} +.text-success { + color: #468847; +} +a.text-success:hover { + color: #356635; +} +.text-info { + color: #3a87ad; +} +a.text-info:hover { + color: #2d6987; +} +.text-warning { + color: #c09853; +} +a.text-warning:hover { + color: #a47e3c; +} +.text-danger { + color: #b94a48; +} +a.text-danger:hover { + color: #953b39; +} +.bg-primary { + color: #fff; + background-color: #2fa4e7; +} +a.bg-primary:hover { + background-color: #178acc; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #999999; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +blockquote:before, +blockquote:after { + content: ""; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; +} +.row { + margin-left: -15px; + margin-right: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0%; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} +.table .table { + background-color: #ffffff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + -webkit-overflow-scrolling: touch; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #555555; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 9px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; +} +.form-control { + display: block; + width: 100%; + height: 38px; + padding: 8px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #999999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999999; +} +.form-control::-webkit-input-placeholder { + color: #999999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + line-height: 38px; + line-height: 1.42857143 \0; +} +input[type="date"].input-sm, +input[type="time"].input-sm, +input[type="datetime-local"].input-sm, +input[type="month"].input-sm { + line-height: 30px; +} +input[type="date"].input-lg, +input[type="time"].input-lg, +input[type="datetime-local"].input-lg, +input[type="month"].input-lg { + line-height: 54px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + min-height: 20px; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 9px; + padding-bottom: 9px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm, +.form-horizontal .form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.input-lg, +.form-horizontal .form-group-lg .form-control { + height: 54px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg { + height: 54px; + line-height: 54px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 47.5px; +} +.form-control-feedback { + position: absolute; + top: 25px; + right: 0; + z-index: 2; + display: block; + width: 38px; + height: 38px; + line-height: 38px; + text-align: center; +} +.input-lg + .form-control-feedback { + width: 54px; + height: 54px; + line-height: 54px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #468847; +} +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} +.has-success .input-group-addon { + color: #468847; + border-color: #468847; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #468847; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #c09853; +} +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} +.has-warning .input-group-addon { + color: #c09853; + border-color: #c09853; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #c09853; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #b94a48; +} +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} +.has-error .input-group-addon { + color: #b94a48; + border-color: #b94a48; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #b94a48; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #959595; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 9px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 29px; +} +.form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 9px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 19.62px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 8px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus { + color: #555555; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #555555; + background-color: #ffffff; + border-color: rgba(0, 0, 0, 0.1); +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #555555; + background-color: #e6e6e6; + border-color: rgba(0, 0, 0, 0.1); +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: rgba(0, 0, 0, 0.1); +} +.btn-default .badge { + color: #ffffff; + background-color: #555555; +} +.btn-primary { + color: #ffffff; + background-color: #2fa4e7; + border-color: #2fa4e7; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #178acc; + border-color: #1684c2; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #2fa4e7; + border-color: #2fa4e7; +} +.btn-primary .badge { + color: #2fa4e7; + background-color: #ffffff; +} +.btn-success { + color: #ffffff; + background-color: #73a839; + border-color: #73a839; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #59822c; + border-color: #547a29; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #73a839; + border-color: #73a839; +} +.btn-success .badge { + color: #73a839; + background-color: #ffffff; +} +.btn-info { + color: #ffffff; + background-color: #033c73; + border-color: #033c73; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #022241; + border-color: #011d37; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #033c73; + border-color: #033c73; +} +.btn-info .badge { + color: #033c73; + background-color: #ffffff; +} +.btn-warning { + color: #ffffff; + background-color: #dd5600; + border-color: #dd5600; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #aa4200; + border-color: #a03e00; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #dd5600; + border-color: #dd5600; +} +.btn-warning .badge { + color: #dd5600; + background-color: #ffffff; +} +.btn-danger { + color: #ffffff; + background-color: #c71c22; + border-color: #c71c22; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #9a161a; + border-color: #911419; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #c71c22; + border-color: #c71c22; +} +.btn-danger .badge { + color: #c71c22; + background-color: #ffffff; +} +.btn-link { + color: #2fa4e7; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #157ab5; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 14px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #ffffff; + background-color: #2fa4e7; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #2fa4e7; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #999999; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: 0; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 4px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + position: absolute; + z-index: -1; + opacity: 0; + filter: alpha(opacity=0); +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 54px; + padding: 14px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 54px; + line-height: 54px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 8px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 14px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.nav > li.disabled > a { + color: #999999; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #2fa4e7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #2fa4e7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} +.navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 6px; + margin-bottom: 6px; +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-form.navbar-right:last-child { + margin-right: -15px; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 6px; + margin-bottom: 6px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } + .navbar-text.navbar-right:last-child { + margin-right: 0; + } +} +.navbar-default { + background-color: #2fa4e7; + border-color: #1995dc; +} +.navbar-default .navbar-brand { + color: #ffffff; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-default .navbar-text { + color: #dddddd; +} +.navbar-default .navbar-nav > li > a { + color: #ffffff; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #178acc; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #178acc; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #dddddd; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #178acc; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #178acc; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #1995dc; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #178acc; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #178acc; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #178acc; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #dddddd; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #ffffff; +} +.navbar-default .navbar-link:hover { + color: #ffffff; +} +.navbar-default .btn-link { + color: #ffffff; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #ffffff; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #dddddd; +} +.navbar-inverse { + background-color: #033c73; + border-color: #022f5a; +} +.navbar-inverse .navbar-brand { + color: #ffffff; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: none; +} +.navbar-inverse .navbar-text { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a { + color: #ffffff; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: #022f5a; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #022f5a; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #022f5a; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #022f5a; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #022a50; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #022f5a; + color: #ffffff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #022f5a; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #022f5a; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ffffff; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: #022f5a; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #022f5a; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #ffffff; +} +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-inverse .btn-link { + color: #ffffff; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #ffffff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #cccccc; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; +} +.breadcrumb > .active { + color: #999999; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 8px 12px; + line-height: 1.42857143; + text-decoration: none; + color: #2fa4e7; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #157ab5; + background-color: #eeeeee; + border-color: #dddddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #999999; + background-color: #f5f5f5; + border-color: #dddddd; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 14px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 6px; + border-top-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + background-color: #ffffff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #999999; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} +.label-primary { + background-color: #2fa4e7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #178acc; +} +.label-success { + background-color: #73a839; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #59822c; +} +.label-info { + background-color: #033c73; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #022241; +} +.label-warning { + background-color: #dd5600; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #aa4200; +} +.label-danger { + background-color: #c71c22; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #9a161a; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #2fa4e7; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #2fa4e7; + background-color: #ffffff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #2fa4e7; +} +.thumbnail .caption { + padding: 9px; + color: #555555; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #468847; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #356635; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #3a87ad; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #2d6987; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #fbeed5; + color: #c09853; +} +.alert-warning hr { + border-top-color: #f8e5be; +} +.alert-warning .alert-link { + color: #a47e3c; +} +.alert-danger { + background-color: #f2dede; + border-color: #eed3d7; + color: #b94a48; +} +.alert-danger hr { + border-top-color: #e6c1c7; +} +.alert-danger .alert-link { + color: #953b39; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #2fa4e7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar[aria-valuenow="1"], +.progress-bar[aria-valuenow="2"] { + min-width: 30px; +} +.progress-bar[aria-valuenow="0"] { + color: #999999; + min-width: 30px; + background-color: transparent; + background-image: none; + box-shadow: none; +} +.progress-bar-success { + background-color: #73a839; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #033c73; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #dd5600; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #c71c22; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-object { + display: block; +} +.media-heading { + margin: 0 0 5px; +} +.media > .pull-left { + margin-right: 10px; +} +.media > .pull-right { + margin-left: 10px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555555; +} +a.list-group-item .list-group-item-heading { + color: #333333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #eeeeee; + color: #999999; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #999999; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #2fa4e7; + border-color: #2fa4e7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6f4fc; +} +.list-group-item-success { + color: #468847; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #468847; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #468847; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #468847; + border-color: #468847; +} +.list-group-item-info { + color: #3a87ad; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #3a87ad; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #3a87ad; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #3a87ad; + border-color: #3a87ad; +} +.list-group-item-warning { + color: #c09853; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #c09853; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #c09853; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #c09853; + border-color: #c09853; +} +.list-group-item-danger { + color: #b94a48; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #b94a48; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #b94a48; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #b94a48; + border-color: #b94a48; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { + border-top: 1px solid #dddddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: 1px solid #dddddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} +.panel-default { + border-color: #dddddd; +} +.panel-default > .panel-heading { + color: #555555; + background-color: #f5f5f5; + border-color: #dddddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #555555; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-primary { + border-color: #dddddd; +} +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #2fa4e7; + border-color: #dddddd; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-primary > .panel-heading .badge { + color: #2fa4e7; + background-color: #ffffff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-success { + border-color: #dddddd; +} +.panel-success > .panel-heading { + color: #468847; + background-color: #73a839; + border-color: #dddddd; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-success > .panel-heading .badge { + color: #73a839; + background-color: #468847; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-info { + border-color: #dddddd; +} +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #033c73; + border-color: #dddddd; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-info > .panel-heading .badge { + color: #033c73; + background-color: #3a87ad; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-warning { + border-color: #dddddd; +} +.panel-warning > .panel-heading { + color: #c09853; + background-color: #dd5600; + border-color: #dddddd; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-warning > .panel-heading .badge { + color: #dd5600; + background-color: #c09853; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.panel-danger { + border-color: #dddddd; +} +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #c71c22; + border-color: #dddddd; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; +} +.panel-danger > .panel-heading .badge { + color: #c71c22; + background-color: #b94a48; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transform: translate3d(0, -25%, 0); + transform: translate3d(0, -25%, 0); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 20px; +} +.modal-footer { + padding: 20px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + visibility: visible; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.9); + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: rgba(0, 0, 0, 0.9); +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: rgba(0, 0, 0, 0.9); +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: rgba(0, 0, 0, 0.9); +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + content: " "; + display: table; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +.navbar { + background-image: -webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: -o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0); + border-bottom: 1px solid #178acc; + filter: none; + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} +.navbar-default .badge { + background-color: #fff; + color: #2fa4e7; +} +.navbar-inverse { + background-image: -webkit-linear-gradient(#04519b, #044687 60%, #033769); + background-image: -o-linear-gradient(#04519b, #044687 60%, #033769); + background-image: linear-gradient(#04519b, #044687 60%, #033769); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff033769', GradientType=0); + filter: none; + border-bottom: 1px solid #022241; +} +.navbar-inverse .badge { + background-color: #fff; + color: #033c73; +} +.navbar .navbar-nav > li > a, +.navbar-brand { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} +@media (max-width: 767px) { + .navbar .dropdown-header { + color: #fff; + } +} +.btn { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} +.btn .caret { + border-top-color: #fff; +} +.btn-default { + background-image: -webkit-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: -o-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0); + filter: none; + border-bottom: 1px solid #e6e6e6; +} +.btn-default:hover { + color: #555555; +} +.btn-default .caret { + border-top-color: #555555; +} +.btn-default { + background-image: -webkit-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: -o-linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-image: linear-gradient(#ffffff, #ffffff 60%, #f5f5f5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0); + filter: none; + border-bottom: 1px solid #e6e6e6; +} +.btn-primary { + background-image: -webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: -o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-image: linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0); + filter: none; + border-bottom: 1px solid #178acc; +} +.btn-success { + background-image: -webkit-linear-gradient(#88c149, #73a839 60%, #699934); + background-image: -o-linear-gradient(#88c149, #73a839 60%, #699934); + background-image: linear-gradient(#88c149, #73a839 60%, #699934); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff88c149', endColorstr='#ff699934', GradientType=0); + filter: none; + border-bottom: 1px solid #59822c; +} +.btn-info { + background-image: -webkit-linear-gradient(#04519b, #033c73 60%, #02325f); + background-image: -o-linear-gradient(#04519b, #033c73 60%, #02325f); + background-image: linear-gradient(#04519b, #033c73 60%, #02325f); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff02325f', GradientType=0); + filter: none; + border-bottom: 1px solid #022241; +} +.btn-warning { + background-image: -webkit-linear-gradient(#ff6707, #dd5600 60%, #c94e00); + background-image: -o-linear-gradient(#ff6707, #dd5600 60%, #c94e00); + background-image: linear-gradient(#ff6707, #dd5600 60%, #c94e00); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff6707', endColorstr='#ffc94e00', GradientType=0); + filter: none; + border-bottom: 1px solid #aa4200; +} +.btn-danger { + background-image: -webkit-linear-gradient(#e12b31, #c71c22 60%, #b5191f); + background-image: -o-linear-gradient(#e12b31, #c71c22 60%, #b5191f); + background-image: linear-gradient(#e12b31, #c71c22 60%, #b5191f); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe12b31', endColorstr='#ffb5191f', GradientType=0); + filter: none; + border-bottom: 1px solid #9a161a; +} +.panel-primary .panel-heading, +.panel-success .panel-heading, +.panel-warning .panel-heading, +.panel-danger .panel-heading, +.panel-info .panel-heading, +.panel-primary .panel-title, +.panel-success .panel-title, +.panel-warning .panel-title, +.panel-danger .panel-title, +.panel-info .panel-title { + color: #fff; +} diff --git a/samples/WingtipToys/WingtipToys/Content/bootstrap.min.css b/samples/WingtipToys/WingtipToys/Content/bootstrap.min.css new file mode 100644 index 000000000..769c9e9bc --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Content/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * bootswatch v3.2.0 + * Homepage: http://bootswatch.com + * Copyright 2012-2014 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2fa4e7;text-decoration:none}a:hover,a:focus{color:#157ab5;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;width:100% \9;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:#317eac}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2fa4e7}a.text-primary:hover{color:#178acc}.text-success{color:#468847}a.text-success:hover{color:#356635}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover{color:#953b39}.bg-primary{color:#fff;background-color:#2fa4e7}a.bg-primary:hover{background-color:#178acc}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555555;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#555555}.form-control{display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#555555;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eeeeee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:38px;line-height:1.42857143 \0}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg{line-height:54px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:54px;line-height:54px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:47.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center}.input-lg+.form-control-feedback{width:54px;height:54px;line-height:54px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19.62px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#555555;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#555555;background-color:#ffffff;border-color:rgba(0,0,0,0.1)}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#555555;background-color:#e6e6e6;border-color:rgba(0,0,0,0.1)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#ffffff;border-color:rgba(0,0,0,0.1)}.btn-default .badge{color:#ffffff;background-color:#555555}.btn-primary{color:#ffffff;background-color:#2fa4e7;border-color:#2fa4e7}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#178acc;border-color:#1684c2}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2fa4e7;border-color:#2fa4e7}.btn-primary .badge{color:#2fa4e7;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#73a839;border-color:#73a839}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#59822c;border-color:#547a29}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#73a839;border-color:#73a839}.btn-success .badge{color:#73a839;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#033c73;border-color:#033c73}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#022241;border-color:#011d37}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#033c73;border-color:#033c73}.btn-info .badge{color:#033c73;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#dd5600;border-color:#dd5600}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#aa4200;border-color:#a03e00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#dd5600;border-color:#dd5600}.btn-warning .badge{color:#dd5600;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#c71c22;border-color:#c71c22}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#9a161a;border-color:#911419}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#c71c22;border-color:#c71c22}.btn-danger .badge{color:#c71c22;background-color:#ffffff}.btn-link{color:#2fa4e7;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#157ab5;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2fa4e7}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2fa4e7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0;filter:alpha(opacity=0)}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:54px;line-height:54px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#2fa4e7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2fa4e7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:6px;margin-bottom:6px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:6px;margin-bottom:6px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#2fa4e7;border-color:#1995dc}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#dddddd}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#dddddd;background-color:transparent}.navbar-default .navbar-toggle{border-color:#178acc}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#178acc}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#1995dc}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#178acc;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#178acc}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#dddddd;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#dddddd}.navbar-inverse{background-color:#033c73;border-color:#022f5a}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#022f5a}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#022f5a}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#022a50}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#022f5a;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#022f5a}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#2fa4e7;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#157ab5;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#2fa4e7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#178acc}.label-success{background-color:#73a839}.label-success[href]:hover,.label-success[href]:focus{background-color:#59822c}.label-info{background-color:#033c73}.label-info[href]:hover,.label-info[href]:focus{background-color:#022241}.label-warning{background-color:#dd5600}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#aa4200}.label-danger{background-color:#c71c22}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#9a161a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#2fa4e7;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2fa4e7;background-color:#ffffff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2fa4e7}.thumbnail .caption{padding:9px;color:#555555}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#2fa4e7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#999999;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#73a839}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#033c73}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#dd5600}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#c71c22}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555555}a.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2fa4e7;border-color:#2fa4e7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e6f4fc}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#555555;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555555}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#dddddd}.panel-primary>.panel-heading{color:#ffffff;background-color:#2fa4e7;border-color:#dddddd}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-primary>.panel-heading .badge{color:#2fa4e7;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-success{border-color:#dddddd}.panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#dddddd}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-info{border-color:#dddddd}.panel-info>.panel-heading{color:#3a87ad;background-color:#033c73;border-color:#dddddd}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-info>.panel-heading .badge{color:#033c73;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-warning{border-color:#dddddd}.panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#dddddd}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-danger{border-color:#dddddd}.panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#dddddd}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate3d(0, -25%, 0);transform:translate3d(0, -25%, 0);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:rgba(0,0,0,0.9);border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,0.9)}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,0.9)}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{background-image:-webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0);border-bottom:1px solid #178acc;filter:none;-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-default .badge{background-color:#fff;color:#2fa4e7}.navbar-inverse{background-image:-webkit-linear-gradient(#04519b, #044687 60%, #033769);background-image:-o-linear-gradient(#04519b, #044687 60%, #033769);background-image:linear-gradient(#04519b, #044687 60%, #033769);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff033769', GradientType=0);filter:none;border-bottom:1px solid #022241}.navbar-inverse .badge{background-color:#fff;color:#033c73}.navbar .navbar-nav>li>a,.navbar-brand{text-shadow:0 1px 0 rgba(0,0,0,0.1)}@media (max-width:767px){.navbar .dropdown-header{color:#fff}}.btn{text-shadow:0 1px 0 rgba(0,0,0,0.1)}.btn .caret{border-top-color:#fff}.btn-default{background-image:-webkit-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-o-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:linear-gradient(#fff, #fff 60%, #f5f5f5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0);filter:none;border-bottom:1px solid #e6e6e6}.btn-default:hover{color:#555555}.btn-default .caret{border-top-color:#555555}.btn-default{background-image:-webkit-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:-o-linear-gradient(#fff, #fff 60%, #f5f5f5);background-image:linear-gradient(#fff, #fff 60%, #f5f5f5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff5f5f5', GradientType=0);filter:none;border-bottom:1px solid #e6e6e6}.btn-primary{background-image:-webkit-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:-o-linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-image:linear-gradient(#54b4eb, #2fa4e7 60%, #1d9ce5);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff54b4eb', endColorstr='#ff1d9ce5', GradientType=0);filter:none;border-bottom:1px solid #178acc}.btn-success{background-image:-webkit-linear-gradient(#88c149, #73a839 60%, #699934);background-image:-o-linear-gradient(#88c149, #73a839 60%, #699934);background-image:linear-gradient(#88c149, #73a839 60%, #699934);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff88c149', endColorstr='#ff699934', GradientType=0);filter:none;border-bottom:1px solid #59822c}.btn-info{background-image:-webkit-linear-gradient(#04519b, #033c73 60%, #02325f);background-image:-o-linear-gradient(#04519b, #033c73 60%, #02325f);background-image:linear-gradient(#04519b, #033c73 60%, #02325f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff04519b', endColorstr='#ff02325f', GradientType=0);filter:none;border-bottom:1px solid #022241}.btn-warning{background-image:-webkit-linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-image:-o-linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-image:linear-gradient(#ff6707, #dd5600 60%, #c94e00);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff6707', endColorstr='#ffc94e00', GradientType=0);filter:none;border-bottom:1px solid #aa4200}.btn-danger{background-image:-webkit-linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-image:-o-linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-image:linear-gradient(#e12b31, #c71c22 60%, #b5191f);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe12b31', endColorstr='#ffb5191f', GradientType=0);filter:none;border-bottom:1px solid #9a161a}.panel-primary .panel-heading,.panel-success .panel-heading,.panel-warning .panel-heading,.panel-danger .panel-heading,.panel-info .panel-heading,.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Default.aspx b/samples/WingtipToys/WingtipToys/Default.aspx new file mode 100644 index 000000000..9d1bccfaa --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Default.aspx @@ -0,0 +1,9 @@ +<%@ Page Title="Welcome" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WingtipToys._Default" %> + + +

<%: Title %>.

+

Wingtip Toys can help you find the perfect gift.

+

We're all about transportation toys. You can order + any of our toys today. Each toy listing has detailed + information to help you choose the right toy.

+
diff --git a/samples/WingtipToys/WingtipToys/Default.aspx.cs b/samples/WingtipToys/WingtipToys/Default.aspx.cs new file mode 100644 index 000000000..5247b4093 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Default.aspx.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace WingtipToys +{ + public partial class _Default : Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + private void Page_Error(object sender, EventArgs e) + { + // Get last error from the server. + Exception exc = Server.GetLastError(); + + // Handle specific exception. + if (exc is InvalidOperationException) + { + // Pass the error on to the error page. + Server.Transfer("ErrorPage.aspx?handler=Page_Error%20-%20Default.aspx", + true); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Default.aspx.designer.cs b/samples/WingtipToys/WingtipToys/Default.aspx.designer.cs new file mode 100644 index 000000000..7c1d6f57a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Default.aspx.designer.cs @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys +{ + + + public partial class _Default + { + } +} diff --git a/samples/WingtipToys/WingtipToys/ErrorPage.aspx b/samples/WingtipToys/WingtipToys/ErrorPage.aspx new file mode 100644 index 000000000..65215abcf --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ErrorPage.aspx @@ -0,0 +1,27 @@ +<%@ Page Title="" Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.Master" CodeBehind="ErrorPage.aspx.cs" Inherits="WingtipToys.ErrorPage" %> + +

Error:

+

+ + + +

 

+

Detailed Error:

+

+
+

+ +

Error Handler:

+

+
+

+ +

Detailed Error Message:

+

+
+

+

+ +

+
+
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ErrorPage.aspx.cs b/samples/WingtipToys/WingtipToys/ErrorPage.aspx.cs new file mode 100644 index 000000000..9c2d7fb5d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ErrorPage.aspx.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Logic; + +namespace WingtipToys +{ + public partial class ErrorPage : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + // Create safe error messages. + string generalErrorMsg = "A problem has occurred on this web site. Please try again. " + + "If this error continues, please contact support."; + string httpErrorMsg = "An HTTP error occurred. Page Not found. Please try again."; + string unhandledErrorMsg = "The error was unhandled by application code."; + + // Display safe error message. + FriendlyErrorMsg.Text = generalErrorMsg; + + // Determine where error was handled. + string errorHandler = Request.QueryString["handler"]; + if (errorHandler == null) + { + errorHandler = "Error Page"; + } + + // Get the last error from the server. + Exception ex = Server.GetLastError(); + + // Get the error number passed as a querystring value. + string errorMsg = Request.QueryString["msg"]; + if (errorMsg == "404") + { + ex = new HttpException(404, httpErrorMsg, ex); + FriendlyErrorMsg.Text = ex.Message; + } + + // If the exception no longer exists, create a generic exception. + if (ex == null) + { + ex = new Exception(unhandledErrorMsg); + } + + // Show error details to only you (developer). LOCAL ACCESS ONLY. + if (Request.IsLocal) + { + // Detailed Error Message. + ErrorDetailedMsg.Text = ex.Message; + + // Show where the error was handled. + ErrorHandler.Text = errorHandler; + + // Show local access details. + DetailedErrorPanel.Visible = true; + + if (ex.InnerException != null) + { + InnerMessage.Text = ex.GetType().ToString() + "
" + + ex.InnerException.Message; + InnerTrace.Text = ex.InnerException.StackTrace; + } + else + { + InnerMessage.Text = ex.GetType().ToString(); + if (ex.StackTrace != null) + { + InnerTrace.Text = ex.StackTrace.ToString().TrimStart(); + } + } + } + + // Log the exception. + ExceptionUtility.LogException(ex, errorHandler); + + // Clear the error from the server. + Server.ClearError(); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ErrorPage.aspx.designer.cs b/samples/WingtipToys/WingtipToys/ErrorPage.aspx.designer.cs new file mode 100644 index 000000000..f834697c7 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ErrorPage.aspx.designer.cs @@ -0,0 +1,69 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys { + + + public partial class ErrorPage { + + /// + /// FriendlyErrorMsg control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label FriendlyErrorMsg; + + /// + /// DetailedErrorPanel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Panel DetailedErrorPanel; + + /// + /// ErrorDetailedMsg control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label ErrorDetailedMsg; + + /// + /// ErrorHandler control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label ErrorHandler; + + /// + /// InnerMessage control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label InnerMessage; + + /// + /// InnerTrace control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label InnerTrace; + } +} diff --git a/samples/WingtipToys/WingtipToys/Global.asax b/samples/WingtipToys/WingtipToys/Global.asax new file mode 100644 index 000000000..7fa45f993 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="WingtipToys.Global" Language="C#" %> diff --git a/samples/WingtipToys/WingtipToys/Global.asax.cs b/samples/WingtipToys/WingtipToys/Global.asax.cs new file mode 100644 index 000000000..08ff81e06 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Global.asax.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Optimization; +using System.Web.Routing; +using System.Web.Security; +using System.Web.SessionState; +using System.Data.Entity; +using WingtipToys.Models; +using WingtipToys.Logic; + +namespace WingtipToys +{ + public class Global : HttpApplication + { + void Application_Start(object sender, EventArgs e) + { + // Code that runs on application startup + RouteConfig.RegisterRoutes(RouteTable.Routes); + BundleConfig.RegisterBundles(BundleTable.Bundles); + + // Initialize the product database. + Database.SetInitializer(new ProductDatabaseInitializer()); + + // Create the custom role and user. + RoleActions roleActions = new RoleActions(); + roleActions.AddUserAndRole(); + + // Add Routes. + RegisterCustomRoutes(RouteTable.Routes); + } + + void RegisterCustomRoutes(RouteCollection routes) + { + routes.MapPageRoute( + "ProductsByCategoryRoute", + "Category/{categoryName}", + "~/ProductList.aspx" + ); + routes.MapPageRoute( + "ProductByNameRoute", + "Product/{productName}", + "~/ProductDetails.aspx" + ); + } + + void Application_Error(object sender, EventArgs e) + { + // Code that runs when an unhandled error occurs. + + // Get last error from the server + Exception exc = Server.GetLastError(); + + if (exc is HttpUnhandledException) + { + if (exc.InnerException != null) + { + exc = new Exception(exc.InnerException.Message); + Server.Transfer("ErrorPage.aspx?handler=Application_Error%20-%20Global.asax", + true); + } + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Images/logo.jpg b/samples/WingtipToys/WingtipToys/Images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfc79d9f284a747fe0f8301edd2e0f6c072458aa GIT binary patch literal 12245 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 Idb{}F0M4tp!T with your API Username + //Replace with your API Password + //Replace with your Signature + public string APIUsername = ""; + private string APIPassword = ""; + private string APISignature = ""; + private string Subject = ""; + private string BNCode = "PP-ECWizard"; + + + //HttpWebRequest Timeout specified in milliseconds + private const int Timeout = 15000; + private static readonly string[] SECURED_NVPS = new string[] { ACCT, CVV2, SIGNATURE, PWD }; + + public void SetCredentials(string Userid, string Pwd, string Signature) + { + APIUsername = Userid; + APIPassword = Pwd; + APISignature = Signature; + } + + public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg) + { + if (bSandbox) + { + pEndPointURL = pEndPointURL_SB; + host = host_SB; + } + + string returnURL = "https://localhost:44300/Checkout/CheckoutReview.aspx"; + string cancelURL = "https://localhost:44300/Checkout/CheckoutCancel.aspx"; + + NVPCodec encoder = new NVPCodec(); + encoder["METHOD"] = "SetExpressCheckout"; + encoder["RETURNURL"] = returnURL; + encoder["CANCELURL"] = cancelURL; + encoder["BRANDNAME"] = "Wingtip Toys Sample Application"; + encoder["PAYMENTREQUEST_0_AMT"] = amt; + encoder["PAYMENTREQUEST_0_ITEMAMT"] = amt; + encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; + encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD"; + + // Get the Shopping Cart Products + using (WingtipToys.Logic.ShoppingCartActions myCartOrders = new WingtipToys.Logic.ShoppingCartActions()) + { + List myOrderList = myCartOrders.GetCartItems(); + + for (int i = 0; i < myOrderList.Count; i++) + { + encoder["L_PAYMENTREQUEST_0_NAME" + i] = myOrderList[i].Product.ProductName.ToString(); + encoder["L_PAYMENTREQUEST_0_AMT" + i] = myOrderList[i].Product.UnitPrice.ToString(); + encoder["L_PAYMENTREQUEST_0_QTY" + i] = myOrderList[i].Quantity.ToString(); + } + } + + string pStrrequestforNvp = encoder.Encode(); + string pStresponsenvp = HttpCall(pStrrequestforNvp); + + NVPCodec decoder = new NVPCodec(); + decoder.Decode(pStresponsenvp); + + string strAck = decoder["ACK"].ToLower(); + if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) + { + token = decoder["TOKEN"]; + string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&token=" + token; + retMsg = ECURL; + return true; + } + else + { + retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" + + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + + "Desc2=" + decoder["L_LONGMESSAGE0"]; + return false; + } + } + + public bool GetCheckoutDetails(string token, ref string PayerID, ref NVPCodec decoder, ref string retMsg) + { + if (bSandbox) + { + pEndPointURL = pEndPointURL_SB; + } + + NVPCodec encoder = new NVPCodec(); + encoder["METHOD"] = "GetExpressCheckoutDetails"; + encoder["TOKEN"] = token; + + string pStrrequestforNvp = encoder.Encode(); + string pStresponsenvp = HttpCall(pStrrequestforNvp); + + decoder = new NVPCodec(); + decoder.Decode(pStresponsenvp); + + string strAck = decoder["ACK"].ToLower(); + if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) + { + PayerID = decoder["PAYERID"]; + return true; + } + else + { + retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" + + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + + "Desc2=" + decoder["L_LONGMESSAGE0"]; + + return false; + } + } + + public bool DoCheckoutPayment(string finalPaymentAmount, string token, string PayerID, ref NVPCodec decoder, ref string retMsg) + { + if (bSandbox) + { + pEndPointURL = pEndPointURL_SB; + } + + NVPCodec encoder = new NVPCodec(); + encoder["METHOD"] = "DoExpressCheckoutPayment"; + encoder["TOKEN"] = token; + encoder["PAYERID"] = PayerID; + encoder["PAYMENTREQUEST_0_AMT"] = finalPaymentAmount; + encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD"; + encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; + + string pStrrequestforNvp = encoder.Encode(); + string pStresponsenvp = HttpCall(pStrrequestforNvp); + + decoder = new NVPCodec(); + decoder.Decode(pStresponsenvp); + + string strAck = decoder["ACK"].ToLower(); + if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) + { + return true; + } + else + { + retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" + + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + + "Desc2=" + decoder["L_LONGMESSAGE0"]; + + return false; + } + } + + public string HttpCall(string NvpRequest) + { + string url = pEndPointURL; + + string strPost = NvpRequest + "&" + buildCredentialsNVPString(); + strPost = strPost + "&BUTTONSOURCE=" + HttpUtility.UrlEncode(BNCode); + + HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url); + objRequest.Timeout = Timeout; + objRequest.Method = "POST"; + objRequest.ContentLength = strPost.Length; + + try + { + using (StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream())) + { + myWriter.Write(strPost); + } + } + catch (Exception e) + { + // Log the exception. + WingtipToys.Logic.ExceptionUtility.LogException(e, "HttpCall in PayPalFunction.cs"); + } + + //Retrieve the Response returned from the NVP API call to PayPal. + HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse(); + string result; + using (StreamReader sr = new StreamReader(objResponse.GetResponseStream())) + { + result = sr.ReadToEnd(); + } + + return result; + } + + private string buildCredentialsNVPString() + { + NVPCodec codec = new NVPCodec(); + + if (!IsEmpty(APIUsername)) + codec["USER"] = APIUsername; + + if (!IsEmpty(APIPassword)) + codec[PWD] = APIPassword; + + if (!IsEmpty(APISignature)) + codec[SIGNATURE] = APISignature; + + if (!IsEmpty(Subject)) + codec["SUBJECT"] = Subject; + + codec["VERSION"] = "88.0"; + + return codec.Encode(); + } + + public static bool IsEmpty(string s) + { + return s == null || s.Trim() == string.Empty; + } +} + +public sealed class NVPCodec : NameValueCollection +{ + private const string AMPERSAND = "&"; + private const string EQUALS = "="; + private static readonly char[] AMPERSAND_CHAR_ARRAY = AMPERSAND.ToCharArray(); + private static readonly char[] EQUALS_CHAR_ARRAY = EQUALS.ToCharArray(); + + public string Encode() + { + StringBuilder sb = new StringBuilder(); + bool firstPair = true; + foreach (string kv in AllKeys) + { + string name = HttpUtility.UrlEncode(kv); + string value = HttpUtility.UrlEncode(this[kv]); + if (!firstPair) + { + sb.Append(AMPERSAND); + } + sb.Append(name).Append(EQUALS).Append(value); + firstPair = false; + } + return sb.ToString(); + } + + public void Decode(string nvpstring) + { + Clear(); + foreach (string nvp in nvpstring.Split(AMPERSAND_CHAR_ARRAY)) + { + string[] tokens = nvp.Split(EQUALS_CHAR_ARRAY); + if (tokens.Length >= 2) + { + string name = HttpUtility.UrlDecode(tokens[0]); + string value = HttpUtility.UrlDecode(tokens[1]); + Add(name, value); + } + } + } + + public void Add(string name, string value, int index) + { + this.Add(GetArrayName(index, name), value); + } + + public void Remove(string arrayName, int index) + { + this.Remove(GetArrayName(index, arrayName)); + } + + public string this[string name, int index] + { + get + { + return this[GetArrayName(index, name)]; + } + set + { + this[GetArrayName(index, name)] = value; + } + } + + private static string GetArrayName(int index, string name) + { + if (index < 0) + { + throw new ArgumentOutOfRangeException("index", "index cannot be negative : " + index); + } + return name + index; + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Logic/RoleActions.cs b/samples/WingtipToys/WingtipToys/Logic/RoleActions.cs new file mode 100644 index 000000000..1d707a7aa --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Logic/RoleActions.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using WingtipToys.Models; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; + +namespace WingtipToys.Logic +{ + internal class RoleActions + { + internal void AddUserAndRole() + { + // Access the application context and create result variables. + Models.ApplicationDbContext context = new ApplicationDbContext(); + IdentityResult IdRoleResult; + IdentityResult IdUserResult; + + // Create a RoleStore object by using the ApplicationDbContext object. + // The RoleStore is only allowed to contain IdentityRole objects. + var roleStore = new RoleStore(context); + + // Create a RoleManager object that is only allowed to contain IdentityRole objects. + // When creating the RoleManager object, you pass in (as a parameter) a new RoleStore object. + var roleMgr = new RoleManager(roleStore); + + // Then, you create the "canEdit" role if it doesn't already exist. + if (!roleMgr.RoleExists("canEdit")) + { + IdRoleResult = roleMgr.Create(new IdentityRole { Name = "canEdit" }); + } + + // Create a UserManager object based on the UserStore object and the ApplicationDbContext + // object. Note that you can create new objects and use them as parameters in + // a single line of code, rather than using multiple lines of code, as you did + // for the RoleManager object. + var userMgr = new UserManager(new UserStore(context)); + var appUser = new ApplicationUser + { + UserName = "canEditUser@wingtiptoys.com", + Email = "canEditUser@wingtiptoys.com" + }; + IdUserResult = userMgr.Create(appUser, "Pa$$word1"); + + // If the new "canEdit" user was successfully created, + // add the "canEdit" user to the "canEdit" role. + if (!userMgr.IsInRole(userMgr.FindByEmail("canEditUser@wingtiptoys.com").Id, "canEdit")) + { + IdUserResult = userMgr.AddToRole(userMgr.FindByEmail("canEditUser@wingtiptoys.com").Id, "canEdit"); + } + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Logic/ShoppingCartActions.cs b/samples/WingtipToys/WingtipToys/Logic/ShoppingCartActions.cs new file mode 100644 index 000000000..561b62a50 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Logic/ShoppingCartActions.cs @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using WingtipToys.Models; + +namespace WingtipToys.Logic +{ + public class ShoppingCartActions : IDisposable + { + public string ShoppingCartId { get; set; } + + private ProductContext _db = new ProductContext(); + + public const string CartSessionKey = "CartId"; + + public void AddToCart(int id) + { + // Retrieve the product from the database. + ShoppingCartId = GetCartId(); + + var cartItem = _db.ShoppingCartItems.SingleOrDefault( + c => c.CartId == ShoppingCartId + && c.ProductId == id); + if (cartItem == null) + { + // Create a new cart item if no cart item exists. + cartItem = new CartItem + { + ItemId = Guid.NewGuid().ToString(), + ProductId = id, + CartId = ShoppingCartId, + Product = _db.Products.SingleOrDefault( + p => p.ProductID == id), + Quantity = 1, + DateCreated = DateTime.Now + }; + + _db.ShoppingCartItems.Add(cartItem); + } + else + { + // If the item does exist in the cart, + // then add one to the quantity. + cartItem.Quantity++; + } + _db.SaveChanges(); + } + + public void Dispose() + { + if (_db != null) + { + _db.Dispose(); + _db = null; + } + } + + public string GetCartId() + { + if (HttpContext.Current.Session[CartSessionKey] == null) + { + if (!string.IsNullOrWhiteSpace(HttpContext.Current.User.Identity.Name)) + { + HttpContext.Current.Session[CartSessionKey] = HttpContext.Current.User.Identity.Name; + } + else + { + // Generate a new random GUID using System.Guid class. + Guid tempCartId = Guid.NewGuid(); + HttpContext.Current.Session[CartSessionKey] = tempCartId.ToString(); + } + } + return HttpContext.Current.Session[CartSessionKey].ToString(); + } + + public List GetCartItems() + { + ShoppingCartId = GetCartId(); + + return _db.ShoppingCartItems.Where( + c => c.CartId == ShoppingCartId).ToList(); + } + + public decimal GetTotal() + { + ShoppingCartId = GetCartId(); + // Multiply product price by quantity of that product to get + // the current price for each of those products in the cart. + // Sum all product price totals to get the cart total. + decimal? total = decimal.Zero; + total = (decimal?)(from cartItems in _db.ShoppingCartItems + where cartItems.CartId == ShoppingCartId + select (int?)cartItems.Quantity * + cartItems.Product.UnitPrice).Sum(); + return total ?? decimal.Zero; + } + + public ShoppingCartActions GetCart(HttpContext context) + { + using (var cart = new ShoppingCartActions()) + { + cart.ShoppingCartId = cart.GetCartId(); + return cart; + } + } + + public void UpdateShoppingCartDatabase(String cartId, ShoppingCartUpdates[] CartItemUpdates) + { + using (var db = new WingtipToys.Models.ProductContext()) + { + try + { + int CartItemCount = CartItemUpdates.Count(); + List myCart = GetCartItems(); + foreach (var cartItem in myCart) + { + // Iterate through all rows within shopping cart list + for (int i = 0; i < CartItemCount; i++) + { + if (cartItem.Product.ProductID == CartItemUpdates[i].ProductId) + { + if (CartItemUpdates[i].PurchaseQuantity < 1 || CartItemUpdates[i].RemoveItem == true) + { + RemoveItem(cartId, cartItem.ProductId); + } + else + { + UpdateItem(cartId, cartItem.ProductId, CartItemUpdates[i].PurchaseQuantity); + } + } + } + } + } + catch (Exception exp) + { + throw new Exception("ERROR: Unable to Update Cart Database - " + exp.Message.ToString(), exp); + } + } + } + + public void RemoveItem(string removeCartID, int removeProductID) + { + using (var _db = new WingtipToys.Models.ProductContext()) + { + try + { + var myItem = (from c in _db.ShoppingCartItems where c.CartId == removeCartID && c.Product.ProductID == removeProductID select c).FirstOrDefault(); + if (myItem != null) + { + // Remove Item. + _db.ShoppingCartItems.Remove(myItem); + _db.SaveChanges(); + } + } + catch (Exception exp) + { + throw new Exception("ERROR: Unable to Remove Cart Item - " + exp.Message.ToString(), exp); + } + } + } + + public void UpdateItem(string updateCartID, int updateProductID, int quantity) + { + using (var _db = new WingtipToys.Models.ProductContext()) + { + try + { + var myItem = (from c in _db.ShoppingCartItems where c.CartId == updateCartID && c.Product.ProductID == updateProductID select c).FirstOrDefault(); + if (myItem != null) + { + myItem.Quantity = quantity; + _db.SaveChanges(); + } + } + catch (Exception exp) + { + throw new Exception("ERROR: Unable to Update Cart Item - " + exp.Message.ToString(), exp); + } + } + } + + public void EmptyCart() + { + ShoppingCartId = GetCartId(); + var cartItems = _db.ShoppingCartItems.Where( + c => c.CartId == ShoppingCartId); + foreach (var cartItem in cartItems) + { + _db.ShoppingCartItems.Remove(cartItem); + } + // Save changes. + _db.SaveChanges(); + } + + public int GetCount() + { + ShoppingCartId = GetCartId(); + + // Get the count of each item in the cart and sum them up + int? count = (from cartItems in _db.ShoppingCartItems + where cartItems.CartId == ShoppingCartId + select (int?)cartItems.Quantity).Sum(); + // Return 0 if all entries are null + return count ?? 0; + } + + public struct ShoppingCartUpdates + { + public int ProductId; + public int PurchaseQuantity; + public bool RemoveItem; + } + + public void MigrateCart(string cartId, string userName) + { + var shoppingCart = _db.ShoppingCartItems.Where(c => c.CartId == cartId); + foreach (CartItem item in shoppingCart) + { + item.CartId = userName; + } + HttpContext.Current.Session[CartSessionKey] = userName; + _db.SaveChanges(); + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/CartItem.cs b/samples/WingtipToys/WingtipToys/Models/CartItem.cs new file mode 100644 index 000000000..9322f7bce --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/CartItem.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; + +namespace WingtipToys.Models +{ + public class CartItem + { + [Key] + public string ItemId { get; set; } + + public string CartId { get; set; } + + public int Quantity { get; set; } + + public System.DateTime DateCreated { get; set; } + + public int ProductId { get; set; } + + public virtual Product Product { get; set; } + + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/Category.cs b/samples/WingtipToys/WingtipToys/Models/Category.cs new file mode 100644 index 000000000..e7bf8068c --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/Category.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace WingtipToys.Models +{ + public class Category + { + [ScaffoldColumn(false)] + public int CategoryID { get; set; } + + [Required, StringLength(100), Display(Name = "Name")] + public string CategoryName { get; set; } + + [Display(Name = "Product Description")] + public string Description { get; set; } + + public virtual ICollection Products { get; set; } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/IdentityModels.cs b/samples/WingtipToys/WingtipToys/Models/IdentityModels.cs new file mode 100644 index 000000000..ae452c111 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/IdentityModels.cs @@ -0,0 +1,108 @@ +using System; +using System.Security.Claims; +using System.Threading.Tasks; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; +using WingtipToys.Models; + +namespace WingtipToys.Models +{ + // You can add User data for the user by adding more properties to your User class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. + public class ApplicationUser : IdentityUser + { + public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager) + { + // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType + var userIdentity = manager.CreateIdentity(this, DefaultAuthenticationTypes.ApplicationCookie); + // Add custom user claims here + return userIdentity; + } + + public Task GenerateUserIdentityAsync(ApplicationUserManager manager) + { + return Task.FromResult(GenerateUserIdentity(manager)); + } + } + + public class ApplicationDbContext : IdentityDbContext + { + public ApplicationDbContext() + : base("DefaultConnection", throwIfV1Schema: false) + { + } + + public static ApplicationDbContext Create() + { + return new ApplicationDbContext(); + } + } +} + +#region Helpers +namespace WingtipToys +{ + public static class IdentityHelper + { + // Used for XSRF when linking external logins + public const string XsrfKey = "XsrfId"; + + public static void SignIn(ApplicationUserManager manager, ApplicationUser user, bool isPersistent) + { + IAuthenticationManager authenticationManager = HttpContext.Current.GetOwinContext().Authentication; + authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); + var identity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie); + authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); + } + + public const string ProviderNameKey = "providerName"; + public static string GetProviderNameFromRequest(HttpRequest request) + { + return request.QueryString[ProviderNameKey]; + } + + public const string CodeKey = "code"; + public static string GetCodeFromRequest(HttpRequest request) + { + return request.QueryString[CodeKey]; + } + + public const string UserIdKey = "userId"; + public static string GetUserIdFromRequest(HttpRequest request) + { + return HttpUtility.UrlDecode(request.QueryString[UserIdKey]); + } + + public static string GetResetPasswordRedirectUrl(string code, HttpRequest request) + { + var absoluteUri = "/Account/ResetPassword?" + CodeKey + "=" + HttpUtility.UrlEncode(code); + return new Uri(request.Url, absoluteUri).AbsoluteUri.ToString(); + } + + public static string GetUserConfirmationRedirectUrl(string code, string userId, HttpRequest request) + { + var absoluteUri = "/Account/Confirm?" + CodeKey + "=" + HttpUtility.UrlEncode(code) + "&" + UserIdKey + "=" + HttpUtility.UrlEncode(userId); + return new Uri(request.Url, absoluteUri).AbsoluteUri.ToString(); + } + + private static bool IsLocalUrl(string url) + { + return !string.IsNullOrEmpty(url) && ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || (url.Length > 1 && url[0] == '~' && url[1] == '/')); + } + + public static void RedirectToReturnUrl(string returnUrl, HttpResponse response) + { + if (!String.IsNullOrEmpty(returnUrl) && IsLocalUrl(returnUrl)) + { + response.Redirect(returnUrl); + } + else + { + response.Redirect("~/"); + } + } + } +} +#endregion diff --git a/samples/WingtipToys/WingtipToys/Models/Order.cs b/samples/WingtipToys/WingtipToys/Models/Order.cs new file mode 100644 index 000000000..4a06e64e5 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/Order.cs @@ -0,0 +1,67 @@ +using System.ComponentModel.DataAnnotations; +using System.Collections.Generic; +using System.ComponentModel; + +namespace WingtipToys.Models +{ + public class Order + { + public int OrderId { get; set; } + + public System.DateTime OrderDate { get; set; } + + public string Username { get; set; } + + [Required(ErrorMessage = "First Name is required")] + [DisplayName("First Name")] + [StringLength(160)] + public string FirstName { get; set; } + + [Required(ErrorMessage = "Last Name is required")] + [DisplayName("Last Name")] + [StringLength(160)] + public string LastName { get; set; } + + [Required(ErrorMessage = "Address is required")] + [StringLength(70)] + public string Address { get; set; } + + [Required(ErrorMessage = "City is required")] + [StringLength(40)] + public string City { get; set; } + + [Required(ErrorMessage = "State is required")] + [StringLength(40)] + public string State { get; set; } + + [Required(ErrorMessage = "Postal Code is required")] + [DisplayName("Postal Code")] + [StringLength(10)] + public string PostalCode { get; set; } + + [Required(ErrorMessage = "Country is required")] + [StringLength(40)] + public string Country { get; set; } + + [StringLength(24)] + public string Phone { get; set; } + + [Required(ErrorMessage = "Email Address is required")] + [DisplayName("Email Address")] + [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", + ErrorMessage = "Email is is not valid.")] + [DataType(DataType.EmailAddress)] + public string Email { get; set; } + + [ScaffoldColumn(false)] + public decimal Total { get; set; } + + [ScaffoldColumn(false)] + public string PaymentTransactionId { get; set; } + + [ScaffoldColumn(false)] + public bool HasBeenShipped { get; set; } + + public List OrderDetails { get; set; } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/OrderDetail.cs b/samples/WingtipToys/WingtipToys/Models/OrderDetail.cs new file mode 100644 index 000000000..36209973a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/OrderDetail.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; + +namespace WingtipToys.Models +{ + public class OrderDetail + { + public int OrderDetailId { get; set; } + + public int OrderId { get; set; } + + public string Username { get; set; } + + public int ProductId { get; set; } + + public int Quantity { get; set; } + + public double? UnitPrice { get; set; } + + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/Product.cs b/samples/WingtipToys/WingtipToys/Models/Product.cs new file mode 100644 index 000000000..3af54f92c --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/Product.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; + +namespace WingtipToys.Models +{ + public class Product + { + [ScaffoldColumn(false)] + public int ProductID { get; set; } + + [Required, StringLength(100), Display(Name = "Name")] + public string ProductName { get; set; } + + [Required, StringLength(10000), Display(Name = "Product Description"), DataType(DataType.MultilineText)] + public string Description { get; set; } + + public string ImagePath { get; set; } + + [Display(Name = "Price")] + public double? UnitPrice { get; set; } + + public int? CategoryID { get; set; } + + public virtual Category Category { get; set; } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/ProductContext.cs b/samples/WingtipToys/WingtipToys/Models/ProductContext.cs new file mode 100644 index 000000000..5034da0d2 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/ProductContext.cs @@ -0,0 +1,16 @@ +using System.Data.Entity; +namespace WingtipToys.Models +{ + public class ProductContext : DbContext + { + public ProductContext() + : base("WingtipToys") + { + } + public DbSet Categories { get; set; } + public DbSet Products { get; set; } + public DbSet ShoppingCartItems { get; set; } + public DbSet Orders { get; set; } + public DbSet OrderDetails { get; set; } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Models/ProductDatabaseInitializer.cs b/samples/WingtipToys/WingtipToys/Models/ProductDatabaseInitializer.cs new file mode 100644 index 000000000..dd843dd16 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Models/ProductDatabaseInitializer.cs @@ -0,0 +1,203 @@ +using System.Collections.Generic; +using System.Data.Entity; + +namespace WingtipToys.Models +{ + public class ProductDatabaseInitializer : DropCreateDatabaseIfModelChanges + { + protected override void Seed(ProductContext context) + { + GetCategories().ForEach(c => context.Categories.Add(c)); + GetProducts().ForEach(p => context.Products.Add(p)); + } + + private static List GetCategories() + { + var categories = new List { + new Category + { + CategoryID = 1, + CategoryName = "Cars" + }, + new Category + { + CategoryID = 2, + CategoryName = "Planes" + }, + new Category + { + CategoryID = 3, + CategoryName = "Trucks" + }, + new Category + { + CategoryID = 4, + CategoryName = "Boats" + }, + new Category + { + CategoryID = 5, + CategoryName = "Rockets" + }, + }; + + return categories; + } + + private static List GetProducts() + { + var products = new List { + new Product + { + ProductID = 1, + ProductName = "Convertible Car", + Description = "This convertible car is fast! The engine is powered by a neutrino based battery (not included)." + + "Power it up and let it go!", + ImagePath="carconvert.png", + UnitPrice = 22.50, + CategoryID = 1 + }, + new Product + { + ProductID = 2, + ProductName = "Old-time Car", + Description = "There's nothing old about this toy car, except it's looks. Compatible with other old toy cars.", + ImagePath="carearly.png", + UnitPrice = 15.95, + CategoryID = 1 + }, + new Product + { + ProductID = 3, + ProductName = "Fast Car", + Description = "Yes this car is fast, but it also floats in water.", + ImagePath="carfast.png", + UnitPrice = 32.99, + CategoryID = 1 + }, + new Product + { + ProductID = 4, + ProductName = "Super Fast Car", + Description = "Use this super fast car to entertain guests. Lights and doors work!", + ImagePath="carfaster.png", + UnitPrice = 8.95, + CategoryID = 1 + }, + new Product + { + ProductID = 5, + ProductName = "Old Style Racer", + Description = "This old style racer can fly (with user assistance). Gravity controls flight duration." + + "No batteries required.", + ImagePath="carracer.png", + UnitPrice = 34.95, + CategoryID = 1 + }, + new Product + { + ProductID = 6, + ProductName = "Ace Plane", + Description = "Authentic airplane toy. Features realistic color and details.", + ImagePath="planeace.png", + UnitPrice = 95.00, + CategoryID = 2 + }, + new Product + { + ProductID = 7, + ProductName = "Glider", + Description = "This fun glider is made from real balsa wood. Some assembly required.", + ImagePath="planeglider.png", + UnitPrice = 4.95, + CategoryID = 2 + }, + new Product + { + ProductID = 8, + ProductName = "Paper Plane", + Description = "This paper plane is like no other paper plane. Some folding required.", + ImagePath="planepaper.png", + UnitPrice = 2.95, + CategoryID = 2 + }, + new Product + { + ProductID = 9, + ProductName = "Propeller Plane", + Description = "Rubber band powered plane features two wheels.", + ImagePath="planeprop.png", + UnitPrice = 32.95, + CategoryID = 2 + }, + new Product + { + ProductID = 10, + ProductName = "Early Truck", + Description = "This toy truck has a real gas powered engine. Requires regular tune ups.", + ImagePath="truckearly.png", + UnitPrice = 15.00, + CategoryID = 3 + }, + new Product + { + ProductID = 11, + ProductName = "Fire Truck", + Description = "You will have endless fun with this one quarter sized fire truck.", + ImagePath="truckfire.png", + UnitPrice = 26.00, + CategoryID = 3 + }, + new Product + { + ProductID = 12, + ProductName = "Big Truck", + Description = "This fun toy truck can be used to tow other trucks that are not as big.", + ImagePath="truckbig.png", + UnitPrice = 29.00, + CategoryID = 3 + }, + new Product + { + ProductID = 13, + ProductName = "Big Ship", + Description = "Is it a boat or a ship. Let this floating vehicle decide by using its " + + "artifically intelligent computer brain!", + ImagePath="boatbig.png", + UnitPrice = 95.00, + CategoryID = 4 + }, + new Product + { + ProductID = 14, + ProductName = "Paper Boat", + Description = "Floating fun for all! This toy boat can be assembled in seconds. Floats for minutes!" + + "Some folding required.", + ImagePath="boatpaper.png", + UnitPrice = 4.95, + CategoryID = 4 + }, + new Product + { + ProductID = 15, + ProductName = "Sail Boat", + Description = "Put this fun toy sail boat in the water and let it go!", + ImagePath="boatsail.png", + UnitPrice = 42.95, + CategoryID = 4 + }, + new Product + { + ProductID = 16, + ProductName = "Rocket", + Description = "This fun rocket will travel up to a height of 200 feet.", + ImagePath="rocket.png", + UnitPrice = 122.95, + CategoryID = 5 + } + }; + + return products; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ProductDetails.aspx b/samples/WingtipToys/WingtipToys/ProductDetails.aspx new file mode 100644 index 000000000..e22c5748a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductDetails.aspx @@ -0,0 +1,28 @@ +<%@ Page Title="Product Details" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" + CodeBehind="ProductDetails.aspx.cs" Inherits="WingtipToys.ProductDetails" %> + + + +
+

<%#:Item.ProductName %>

+
+
+ + + + + + +
+ <%#:Item.ProductName %> +   + Description:
<%#:Item.Description %> +
+ Price: <%#: String.Format("{0:c}", Item.UnitPrice) %> +
+ Product Number: <%#:Item.ProductID %> +
+
+
+
+
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ProductDetails.aspx.cs b/samples/WingtipToys/WingtipToys/ProductDetails.aspx.cs new file mode 100644 index 000000000..1a9b5a524 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductDetails.aspx.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Models; +using System.Web.ModelBinding; + +namespace WingtipToys +{ + public partial class ProductDetails : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + public IQueryable GetProduct( + [QueryString("ProductID")] int? productId, + [RouteData] string productName) + { + var _db = new WingtipToys.Models.ProductContext(); + IQueryable query = _db.Products; + if (productId.HasValue && productId > 0) + { + query = query.Where(p => p.ProductID == productId); + } + else if (!String.IsNullOrEmpty(productName)) + { + query = query.Where(p => + String.Compare(p.ProductName, productName) == 0); + } + else + { + query = null; + } + return query; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ProductDetails.aspx.designer.cs b/samples/WingtipToys/WingtipToys/ProductDetails.aspx.designer.cs new file mode 100644 index 000000000..a6f07346a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductDetails.aspx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys { + + + public partial class ProductDetails { + + /// + /// productDetail control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.FormView productDetail; + } +} diff --git a/samples/WingtipToys/WingtipToys/ProductList.aspx b/samples/WingtipToys/WingtipToys/ProductList.aspx new file mode 100644 index 000000000..f0e9eaebb --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductList.aspx @@ -0,0 +1,83 @@ + <%@ Page Title="Products" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" + CodeBehind="ProductList.aspx.cs" Inherits="WingtipToys.ProductList" %> + +
+
+
+

<%: Page.Title %>

+
+ + + + + + + +
No data was returned.
+
+ + + + + + + + + + + + + + + + + + + + +
+ "> + + +
+ "> + <%#:Item.ProductName%> + +
+ + Price: <%#:String.Format("{0:c}", Item.UnitPrice)%> + +
+ + + Add To Cart + + +
 
+

+ +
+ + + + + + + + + + + +
+ + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ProductList.aspx.cs b/samples/WingtipToys/WingtipToys/ProductList.aspx.cs new file mode 100644 index 000000000..341af3c07 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductList.aspx.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WingtipToys.Models; +using System.Web.ModelBinding; +using System.Web.Routing; + +namespace WingtipToys +{ + public partial class ProductList : System.Web.UI.Page + { + protected void Page_Load(object sender, EventArgs e) + { + + } + + public IQueryable GetProducts( + [QueryString("id")] int? categoryId, + [RouteData] string categoryName) + { + var _db = new WingtipToys.Models.ProductContext(); + IQueryable query = _db.Products; + + if (categoryId.HasValue && categoryId > 0) + { + query = query.Where(p => p.CategoryID == categoryId); + } + + if (!String.IsNullOrEmpty(categoryName)) + { + query = query.Where(p => + String.Compare(p.Category.CategoryName, + categoryName) == 0); + } + return query; + } + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/ProductList.aspx.designer.cs b/samples/WingtipToys/WingtipToys/ProductList.aspx.designer.cs new file mode 100644 index 000000000..4619e825b --- /dev/null +++ b/samples/WingtipToys/WingtipToys/ProductList.aspx.designer.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WingtipToys { + + + public partial class ProductList { + + /// + /// productList control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.ListView productList; + } +} diff --git a/samples/WingtipToys/WingtipToys/Project_Readme.html b/samples/WingtipToys/WingtipToys/Project_Readme.html new file mode 100644 index 000000000..f0beda3ba --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Project_Readme.html @@ -0,0 +1,150 @@ + + + + + Your ASP.NET application + + + + + + +
+
+

This application consists of:

+
    +
  • Sample pages showing basic nav between Home, About, and Contact.
  • +
  • Theming using Bootstrap
  • +
  • Authentication, if selected, shows how to register and sign in
  • +
  • ASP.NET features managed using NuGet
  • +
+
+ + + + + +
+

Get help

+ +
+
+ + \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Properties/AssemblyInfo.cs b/samples/WingtipToys/WingtipToys/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..8020ddea1 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WingtipToys")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WingtipToys")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("887d6967-94c8-4c36-9969-db2c690f5b3d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/DetailsView.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/DetailsView.js new file mode 100644 index 000000000..cafc0f11f --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/DetailsView.js @@ -0,0 +1,34 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/DetailsView.js +function DetailsView() { + this.pageIndex = null; + this.dataKeys = null; + this.createPropertyString = DetailsView_createPropertyString; + this.setStateField = DetailsView_setStateValue; + this.getHiddenFieldContents = DetailsView_getHiddenFieldContents; + this.stateField = null; + this.panelElement = null; + this.callback = null; +} +function DetailsView_createPropertyString() { + return createPropertyStringFromValues_DetailsView(this.pageIndex, this.dataKeys); +} +function DetailsView_setStateValue() { + this.stateField.value = this.createPropertyString(); +} +function DetailsView_OnCallback (result, context) { + var value = new String(result); + var valsArray = value.split("|"); + var innerHtml = valsArray[2]; + for (var i = 3; i < valsArray.length; i++) { + innerHtml += "|" + valsArray[i]; + } + context.panelElement.innerHTML = innerHtml; + context.stateField.value = createPropertyStringFromValues_DetailsView(valsArray[0], valsArray[1]); +} +function DetailsView_getHiddenFieldContents(arg) { + return arg + "|" + this.stateField.value; +} +function createPropertyStringFromValues_DetailsView(pageIndex, dataKeys) { + var value = new Array(pageIndex, dataKeys); + return value.join("|"); +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/Focus.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/Focus.js new file mode 100644 index 000000000..589116542 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/Focus.js @@ -0,0 +1,93 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js +function WebForm_FindFirstFocusableChild(control) { + if (!control || !(control.tagName)) { + return null; + } + var tagName = control.tagName.toLowerCase(); + if (tagName == "undefined") { + return null; + } + var children = control.childNodes; + if (children) { + for (var i = 0; i < children.length; i++) { + try { + if (WebForm_CanFocus(children[i])) { + return children[i]; + } + else { + var focused = WebForm_FindFirstFocusableChild(children[i]); + if (WebForm_CanFocus(focused)) { + return focused; + } + } + } catch (e) { + } + } + } + return null; +} +function WebForm_AutoFocus(focusId) { + var targetControl; + if (__nonMSDOMBrowser) { + targetControl = document.getElementById(focusId); + } + else { + targetControl = document.all[focusId]; + } + var focused = targetControl; + if (targetControl && (!WebForm_CanFocus(targetControl)) ) { + focused = WebForm_FindFirstFocusableChild(targetControl); + } + if (focused) { + try { + focused.focus(); + if (__nonMSDOMBrowser) { + focused.scrollIntoView(false); + } + if (window.__smartNav) { + window.__smartNav.ae = focused.id; + } + } + catch (e) { + } + } +} +function WebForm_CanFocus(element) { + if (!element || !(element.tagName)) return false; + var tagName = element.tagName.toLowerCase(); + return (!(element.disabled) && + (!(element.type) || element.type.toLowerCase() != "hidden") && + WebForm_IsFocusableTag(tagName) && + WebForm_IsInVisibleContainer(element) + ); +} +function WebForm_IsFocusableTag(tagName) { + return (tagName == "input" || + tagName == "textarea" || + tagName == "select" || + tagName == "button" || + tagName == "a"); +} +function WebForm_IsInVisibleContainer(ctrl) { + var current = ctrl; + while((typeof(current) != "undefined") && (current != null)) { + if (current.disabled || + ( typeof(current.style) != "undefined" && + ( ( typeof(current.style.display) != "undefined" && + current.style.display == "none") || + ( typeof(current.style.visibility) != "undefined" && + current.style.visibility == "hidden") ) ) ) { + return false; + } + if (typeof(current.parentNode) != "undefined" && + current.parentNode != null && + current.parentNode != current && + current.parentNode.tagName.toLowerCase() != "body") { + current = current.parentNode; + } + else { + return true; + } + } + return true; +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/GridView.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/GridView.js new file mode 100644 index 000000000..98078978d --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/GridView.js @@ -0,0 +1,36 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/GridView.js +function GridView() { + this.pageIndex = null; + this.sortExpression = null; + this.sortDirection = null; + this.dataKeys = null; + this.createPropertyString = GridView_createPropertyString; + this.setStateField = GridView_setStateValue; + this.getHiddenFieldContents = GridView_getHiddenFieldContents; + this.stateField = null; + this.panelElement = null; + this.callback = null; +} +function GridView_createPropertyString() { + return createPropertyStringFromValues_GridView(this.pageIndex, this.sortDirection, this.sortExpression, this.dataKeys); +} +function GridView_setStateValue() { + this.stateField.value = this.createPropertyString(); +} +function GridView_OnCallback (result, context) { + var value = new String(result); + var valsArray = value.split("|"); + var innerHtml = valsArray[4]; + for (var i = 5; i < valsArray.length; i++) { + innerHtml += "|" + valsArray[i]; + } + context.panelElement.innerHTML = innerHtml; + context.stateField.value = createPropertyStringFromValues_GridView(valsArray[0], valsArray[1], valsArray[2], valsArray[3]); +} +function GridView_getHiddenFieldContents(arg) { + return arg + "|" + this.stateField.value; +} +function createPropertyStringFromValues_GridView(pageIndex, sortDirection, sortExpression, dataKeys) { + var value = new Array(pageIndex, sortDirection, sortExpression, dataKeys); + return value.join("|"); +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjax.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjax.js new file mode 100644 index 000000000..2ac4f655e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjax.js @@ -0,0 +1,6 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftAjax.js +Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c=d)break;a=Function._validateParameter(g[b],f,h);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(j,d,i){var a,c,b=d.length,e=j.length;if(eb){c=true;for(a=0;a0&&(d=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};Sys._indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+=" ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.CollectionChange=function(e,a,c,b,d){this.action=e;if(a)if(!(a instanceof Array))a=[a];this.newItems=a||null;if(typeof c!=="number")c=-1;this.newStartingIndex=c;if(b)if(!(b instanceof Array))b=[b];this.oldItems=b||null;if(typeof d!=="number")d=-1;this.oldStartingIndex=d};Sys.CollectionChange.registerClass("Sys.CollectionChange");Sys.NotifyCollectionChangedAction=function(){throw Error.notImplemented()};Sys.NotifyCollectionChangedAction.prototype={add:0,remove:1,reset:2};Sys.NotifyCollectionChangedAction.registerEnum("Sys.NotifyCollectionChangedAction");Sys.NotifyCollectionChangedEventArgs=function(a){this._changes=a;Sys.NotifyCollectionChangedEventArgs.initializeBase(this)};Sys.NotifyCollectionChangedEventArgs.prototype={get_changes:function(){return this._changes||[]}};Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs",Sys.EventArgs);Sys.Observer=function(){};Sys.Observer.registerClass("Sys.Observer");Sys.Observer.makeObservable=function(a){var c=a instanceof Array,b=Sys.Observer;if(a.setValue===b._observeMethods.setValue)return a;b._addMethods(a,b._observeMethods);if(c)b._addMethods(a,b._arrayMethods);return a};Sys.Observer._addMethods=function(c,b){for(var a in b)c[a]=b[a]};Sys.Observer._addEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._addHandler(a,b)};Sys.Observer.addEventHandler=function(c,a,b){Sys.Observer._addEventHandler(c,a,b)};Sys.Observer._removeEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._removeHandler(a,b)};Sys.Observer.removeEventHandler=function(c,a,b){Sys.Observer._removeEventHandler(c,a,b)};Sys.Observer.raiseEvent=function(b,e,d){var c=Sys.Observer._getContext(b);if(!c)return;var a=c.events.getHandler(e);if(a)a(b,d)};Sys.Observer.addPropertyChanged=function(b,a){Sys.Observer._addEventHandler(b,"propertyChanged",a)};Sys.Observer.removePropertyChanged=function(b,a){Sys.Observer._removeEventHandler(b,"propertyChanged",a)};Sys.Observer.beginUpdate=function(a){Sys.Observer._getContext(a,true).updating=true};Sys.Observer.endUpdate=function(b){var a=Sys.Observer._getContext(b);if(!a||!a.updating)return;a.updating=false;var d=a.dirty;a.dirty=false;if(d){if(b instanceof Array){var c=a.changes;a.changes=null;Sys.Observer.raiseCollectionChanged(b,c)}Sys.Observer.raisePropertyChanged(b,"")}};Sys.Observer.isUpdating=function(b){var a=Sys.Observer._getContext(b);return a?a.updating:false};Sys.Observer._setValue=function(a,j,g){var b,f,k=a,d=j.split(".");for(var i=0,m=d.length-1;i-1&&ac.Calendar.TwoDigitYearMax)a-=100}return a};Date._getEra=function(e,c){if(!c)return 0;var b,d=e.getTime();for(var a=0,f=c.length;a=b)return a}return 0};Date._getEraYear=function(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":case "gg":case "g":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break;case "/":a.append("(\\"+b.DateSeparator+")")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(h,d,i){var a,c,b,f,e,g=false;for(a=1,c=i.length;a31)return null;break;case "MMMM":c=k._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=k._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":e=Date._expandYear(g,parseInt(a,10));if(e<0||e>9999)return null;break;case "yyyy":e=parseInt(a,10);if(e<0||e>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":p=parseInt(a,10);if(p<0||p>59)return null;break;case "s":case "ss":q=parseInt(a,10);if(q<0||q>59)return null;break;case "tt":case "t":var z=a.toUpperCase();v=z===g.PMDesignator.toUpperCase();if(!v&&z!==g.AMDesignator.toUpperCase())return null;break;case "f":f=parseInt(a,10)*100;if(f<0||f>999)return null;break;case "ff":f=parseInt(a,10)*10;if(f<0||f>999)return null;break;case "fff":f=parseInt(a,10);if(f<0||f>999)return null;break;case "dddd":i=k._getDayIndex(a);if(i<0||i>6)return null;break;case "ddd":i=k._getAbbrDayIndex(a);if(i<0||i>6)return null;break;case "zzz":var u=a.split(/:/);if(u.length!==2)return null;h=parseInt(u[0],10);if(h<-12||h>13)return null;var m=parseInt(u[1],10);if(m<0||m>59)return null;l=h*60+(a.startsWith("-")?-m:m);break;case "z":case "zz":h=parseInt(a,10);if(h<-12||h>13)return null;l=h*60;break;case "g":case "gg":var o=a;if(!o||!g.eras)return null;o=o.toLowerCase().trim();for(var r=0,F=g.eras.length;r0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k1)b=parseInt(e.slice(1),10);var c;switch(e.charAt(0)){case "d":case "D":c="n";if(b!==-1)d=g(""+d,b,true);if(this<0)d=-d;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;d=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;d=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;d=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=d;break;case "$":f+=a.CurrencySymbol;break;case "-":if(/[1-9]/.test(d))f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getIndex:function(c,d,e){var b=this._toUpper(c),a=Array.indexOf(d,b);if(a===-1)a=Array.indexOf(e,b);return a},_getMonthIndex:function(a){if(!this._upperMonths){this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);this._upperMonthsGenitive=this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames)}return this._getIndex(a,this._upperMonths,this._upperMonthsGenitive)},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths){this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);this._upperAbbrMonthsGenitive=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames)}return this._getIndex(a,this._upperAbbrMonths,this._upperAbbrMonthsGenitive)},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c=0;c--){var f=d[c];if(!g||f.autoRemove)$removeHandler(a,b,f.handler)}}a._events=null}};Sys.UI.DomEvent._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,true);var b=this._chainDispose,a=typeof b;if(a!=="undefined"){this.dispose=b;this._chainDispose=null;if(a==="function")this.dispose()}};var $removeHandler=Sys.UI.DomEvent.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};Sys.UI.DomEvent._removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b=3){d+=parseInt(b.borderLeftWidth);e+=parseInt(b.borderTopWidth)}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(a=c.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)){d-=a.scrollLeft||0;e-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(d,e)};else Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,a,i=null,g=null,b=null;for(a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)};Sys.UI.DomElement.isDomElement=function(a){return Sys._isDomElement(a)};Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.resolveElement=function(b,c){var a=b;if(!a)return null;if(typeof a==="string")a=Sys.UI.DomElement.getElementById(a,c);return a};Sys.UI.DomElement.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){Sys.UI.DomElement._raiseBubbleEventFromControl(a,c,d);return}b=b.parentNode}};Sys.UI.DomElement._raiseBubbleEventFromControl=function(a,b,c){if(!a.onBubbleEvent(b,c))a._raiseBubbleEvent(b,c)};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);this._domReady()};Sys._Application.prototype={_creatingComponents:false,_disposing:false,_deleteCount:0,get_isCreatingComponents:function(){return this._creatingComponents},get_isDisposing:function(){return this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,f=b.length;a=0;b--){var d=i[b],f=d.dispose;if(f&&typeof f==="function")d.dispose();else{var e=d.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=d._behaviors;if(a)this._disposeComponents(a);a=d._components;if(a){this._disposeComponents(a);d._components=null}}if(!j){var f=c.dispose;if(f&&typeof f==="function")c.dispose();else{var e=c.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=c._behaviors;if(a)this._disposeComponents(a);a=c._components;if(a){this._disposeComponents(a);c._components=null}}}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a1000){var c=[];for(var d=0,f=b.length;d=0;b--){var c=a[b];if(typeof c.dispose==="function")c.dispose()}},_domReady:function(){var a,g,f=this;function b(){f.initialize()}var c=function(){Sys.UI.DomEvent.removeHandler(window,"load",c);b()};Sys.UI.DomEvent.addHandler(window,"load",c);if(document.addEventListener)try{document.addEventListener("DOMContentLoaded",a=function(){document.removeEventListener("DOMContentLoaded",a,false);b()},false)}catch(h){}else if(document.attachEvent)if(window==window.top&&document.documentElement.doScroll){var e,d=document.createElement("div");a=function(){try{d.doScroll("left")}catch(c){e=window.setTimeout(a,0);return}d=null;b()};a()}else document.attachEvent("onreadystatechange",a=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",a);b()}})},_raiseInit:function(){var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!==-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");var a=this._element;if(a){var c=this.get_name();if(c)a[c]=null;var b=a._behaviors;Array.remove(b,this);if(b.length===0)a._behaviors=null;delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b0&&a.charAt(0)==="#")a=a.substring(1);return a};Sys._Application.prototype.get_enableHistory=function(){return this._enableHistory};Sys._Application.prototype.set_enableHistory=function(a){this._enableHistory=a};Sys._Application.prototype.add_navigate=function(a){this.get_events().addHandler("navigate",a)};Sys._Application.prototype.remove_navigate=function(a){this.get_events().removeHandler("navigate",a)};Sys._Application.prototype.addHistoryPoint=function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()};Sys._Application.prototype.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};Sys._Application.prototype.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};Sys._Application.prototype._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+27){var e=document.title;document.title=c;this._setState(a);document.title=e}else this._setState(a);this._raiseNavigate()}else{this._setState(a);this._raiseNavigate()}}};Sys._Application.prototype._raiseNavigate=function(){var d=this._historyPointIsNew,c=this.get_events().getHandler("navigate"),b={};for(var a in this._state)if(a!=="__s")b[a]=this._state[a];var e=new Sys.HistoryEventArgs(b);if(c)c(this,e);if(!d){var f;try{if(Sys.Browser.agent===Sys.Browser.Firefox&&window.location.hash&&(!window.frameElement||window.top.location.hash))Sys.Browser.version<3.5?window.history.go(0):(location.hash=this.get_stateString())}catch(g){}}};Sys._Application.prototype._serializeState=function(d){var b=[];for(var a in d){var e=d[a];if(a==="__s")var c=e;else b[b.length]=a+"="+encodeURIComponent(e)}return b.join("&")+(c?"&&"+c:"")};Sys._Application.prototype._setState=function(a,b){if(this._enableHistory){a=a||"";if(a!==this._currentEntry){if(window.theForm){var d=window.theForm.action,e=d.indexOf("#");window.theForm.action=(e!==-1?d.substring(0,e):d)+"#"+a}if(this._historyFrame&&this._historyPointIsNew){var f=document.createElement("div");f.appendChild(document.createTextNode(b||document.title));var g=f.innerHTML;this._ignoreIFrame=true;var c=this._historyFrame.contentWindow.document;c.open("javascript:''");c.write(""+g+"parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(a)+");");c.close()}this._ignoreTimer=false;this._currentEntry=a;if(this._historyFrame||this._historyPointIsNew){var h=this.get_stateString();if(a!==h){window.location.hash=a;this._currentEntry=this.get_stateString();if(typeof b!=="undefined"&&b!==null)document.title=b}}this._historyPointIsNew=false}}};Sys._Application.prototype._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}};if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1&&typeof a.setProperty!="undefined")a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var d=document.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>0)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c!==-1)a=a.substr(0,c);c=a.indexOf("#");if(c!==-1)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(c,b,f){b=b||encodeURIComponent;var h=0,e,g,d,a=new Sys.StringBuilder;if(c)for(d in c){e=c[d];if(typeof e==="function")continue;g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(h++)a.append("&");a.append(d);a.append("=");a.append(b(g))}if(f){if(h)a.append("&");a.append(f)}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b,c){if(!b&&!c)return a;var d=Sys.Net.WebRequest._createQueryString(b,null,c);return d.length?a+(a&&a.indexOf("?")>=0?"&":"?")+d:a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoaderTask._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){if(this._ensureReadyStateLoaded())this._executeInternal()},_executeInternal:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_ensureReadyStateLoaded:function(){if(this._useReadyState()&&this._scriptElement.readyState!=="loaded"&&this._scriptElement.readyState!=="complete"){this._scriptDownloadDelegate=Function.createDelegate(this,this._executeInternal);$addHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);return false}return true},_addScriptElementHandlers:function(){if(this._scriptDownloadDelegate){$removeHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);this._scriptDownloadDelegate=null}this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(this._useReadyState())$addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);else $addHandler(this._scriptElement,"load",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(this._scriptDownloadDelegate){$removeHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);this._scriptDownloadDelegate=null}if(this._useReadyState()&&this._scriptLoadDelegate)$removeHandler(a,"readystatechange",this._scriptLoadDelegate);else $removeHandler(a,"load",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(this._useReadyState()&&a.readyState!=="complete")return;this._completedCallback(a,true)},_useReadyState:function(){return Sys.Browser.agent===Sys.Browser.InternetExplorer&&(Sys.Browser.version<9||(document.documentMode||0)<9)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys._ScriptLoaderTask._clearScript=function(a){if(!Sys.Debug.isDebug&&a.parentNode)a.parentNode.removeChild(a)};Type.registerNamespace("Sys.Net");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext==="undefined"?null:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||null},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||null},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return !!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||null},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||"callback"},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(d,e,g,f,c,b,a){c=c||this.get_defaultSucceededCallback();b=b||this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout(),this.get_enableJsonp(),this.get_jsonpCallbackParameter())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(q,a,m,l,j,b,g,e,w,p){var i=w!==false?Sys.Net.WebServiceProxy._xdomain.exec(q):null,c,n=i&&i.length===3&&(i[1]!==location.protocol||i[2]!==location.host);m=n||m;if(n){p=p||"callback";c="_jsonp"+Sys._jsonp++}if(!l)l={};var r=l;if(!m||!r)r={};var s,h,f=null,k,o=null,u=Sys.Net.WebRequest._createUrl(a?q+"/"+encodeURIComponent(a):q,r,n?p+"=Sys."+c:null);if(n){s=document.createElement("script");s.src=u;k=new Sys._ScriptLoaderTask(s,function(d,b){if(!b||c)t({Message:String.format(Sys.Res.webServiceFailedNoMsg,a)},-1)});function v(){if(f===null)return;f=null;h=new Sys.Net.WebServiceError(true,String.format(Sys.Res.webServiceTimedOut,a));k.dispose();delete Sys[c];if(b)b(h,g,a)}function t(d,e){if(f!==null){window.clearTimeout(f);f=null}k.dispose();delete Sys[c];c=null;if(typeof e!=="undefined"&&e!==200){if(b){h=new Sys.Net.WebServiceError(false,d.Message||String.format(Sys.Res.webServiceFailedNoMsg,a),d.StackTrace||null,d.ExceptionType||null,d);h._statusCode=e;b(h,g,a)}}else if(j)j(d,g,a)}Sys[c]=t;e=e||Sys.Net.WebRequestManager.get_defaultTimeout();if(e>0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError"); \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxApplicationServices.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxApplicationServices.js new file mode 100644 index 000000000..79e54a753 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxApplicationServices.js @@ -0,0 +1,6 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxApplicationServices.js +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftAjaxApplicationServices.js +Type._registerScript("MicrosoftAjaxApplicationServices.js",["MicrosoftAjaxWebServices.js"]);Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(c,d,e,f){var b,a;if(!c){a="GetAllPropertiesForCurrentUser";b={authenticatedUserOnly:false}}else{a="GetPropertiesForCurrentUser";b={properties:this._clonePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_path(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e){var a=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUserOnly:false},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b=0;c--){var f=d[c];if(!g||f.autoRemove)$removeHandler(a,b,f.handler)}}a._events=null}};Sys.UI.DomEvent._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,true);var b=this._chainDispose,a=typeof b;if(a!=="undefined"){this.dispose=b;this._chainDispose=null;if(a==="function")this.dispose()}};var $removeHandler=Sys.UI.DomEvent.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};Sys.UI.DomEvent._removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b=3){d+=parseInt(b.borderLeftWidth);e+=parseInt(b.borderTopWidth)}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(a=c.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)){d-=a.scrollLeft||0;e-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(d,e)};else Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,a,i=null,g=null,b=null;for(a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)};Sys.UI.DomElement.isDomElement=function(a){return Sys._isDomElement(a)};Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.resolveElement=function(b,c){var a=b;if(!a)return null;if(typeof a==="string")a=Sys.UI.DomElement.getElementById(a,c);return a};Sys.UI.DomElement.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){Sys.UI.DomElement._raiseBubbleEventFromControl(a,c,d);return}b=b.parentNode}};Sys.UI.DomElement._raiseBubbleEventFromControl=function(a,b,c){if(!a.onBubbleEvent(b,c))a._raiseBubbleEvent(b,c)};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);this._domReady()};Sys._Application.prototype={_creatingComponents:false,_disposing:false,_deleteCount:0,get_isCreatingComponents:function(){return this._creatingComponents},get_isDisposing:function(){return this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,f=b.length;a=0;b--){var d=i[b],f=d.dispose;if(f&&typeof f==="function")d.dispose();else{var e=d.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=d._behaviors;if(a)this._disposeComponents(a);a=d._components;if(a){this._disposeComponents(a);d._components=null}}if(!j){var f=c.dispose;if(f&&typeof f==="function")c.dispose();else{var e=c.control;if(e&&typeof e.dispose==="function")e.dispose()}var a=c._behaviors;if(a)this._disposeComponents(a);a=c._components;if(a){this._disposeComponents(a);c._components=null}}}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a1000){var c=[];for(var d=0,f=b.length;d=0;b--){var c=a[b];if(typeof c.dispose==="function")c.dispose()}},_domReady:function(){var a,g,f=this;function b(){f.initialize()}var c=function(){Sys.UI.DomEvent.removeHandler(window,"load",c);b()};Sys.UI.DomEvent.addHandler(window,"load",c);if(document.addEventListener)try{document.addEventListener("DOMContentLoaded",a=function(){document.removeEventListener("DOMContentLoaded",a,false);b()},false)}catch(h){}else if(document.attachEvent)if(window==window.top&&document.documentElement.doScroll){var e,d=document.createElement("div");a=function(){try{d.doScroll("left")}catch(c){e=window.setTimeout(a,0);return}d=null;b()};a()}else document.attachEvent("onreadystatechange",a=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",a);b()}})},_raiseInit:function(){var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!==-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");var a=this._element;if(a){var c=this.get_name();if(c)a[c]=null;var b=a._behaviors;Array.remove(b,this);if(b.length===0)a._behaviors=null;delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b0){var d=[];for(var c=0;c=d)break;a=Function._validateParameter(g[b],f,h);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(j,d,i){var a,c,b=d.length,e=j.length;if(eb){c=true;for(a=0;a0&&(d=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};Sys._indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={_addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},addHandler:function(b,a){this._addHandler(b,a)},_removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},removeHandler:function(b,a){this._removeHandler(b,a)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.CollectionChange=function(e,a,c,b,d){this.action=e;if(a)if(!(a instanceof Array))a=[a];this.newItems=a||null;if(typeof c!=="number")c=-1;this.newStartingIndex=c;if(b)if(!(b instanceof Array))b=[b];this.oldItems=b||null;if(typeof d!=="number")d=-1;this.oldStartingIndex=d};Sys.CollectionChange.registerClass("Sys.CollectionChange");Sys.NotifyCollectionChangedAction=function(){throw Error.notImplemented()};Sys.NotifyCollectionChangedAction.prototype={add:0,remove:1,reset:2};Sys.NotifyCollectionChangedAction.registerEnum("Sys.NotifyCollectionChangedAction");Sys.NotifyCollectionChangedEventArgs=function(a){this._changes=a;Sys.NotifyCollectionChangedEventArgs.initializeBase(this)};Sys.NotifyCollectionChangedEventArgs.prototype={get_changes:function(){return this._changes||[]}};Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.Observer=function(){};Sys.Observer.registerClass("Sys.Observer");Sys.Observer.makeObservable=function(a){var c=a instanceof Array,b=Sys.Observer;if(a.setValue===b._observeMethods.setValue)return a;b._addMethods(a,b._observeMethods);if(c)b._addMethods(a,b._arrayMethods);return a};Sys.Observer._addMethods=function(c,b){for(var a in b)c[a]=b[a]};Sys.Observer._addEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._addHandler(a,b)};Sys.Observer.addEventHandler=function(c,a,b){Sys.Observer._addEventHandler(c,a,b)};Sys.Observer._removeEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._removeHandler(a,b)};Sys.Observer.removeEventHandler=function(c,a,b){Sys.Observer._removeEventHandler(c,a,b)};Sys.Observer.raiseEvent=function(b,e,d){var c=Sys.Observer._getContext(b);if(!c)return;var a=c.events.getHandler(e);if(a)a(b,d)};Sys.Observer.addPropertyChanged=function(b,a){Sys.Observer._addEventHandler(b,"propertyChanged",a)};Sys.Observer.removePropertyChanged=function(b,a){Sys.Observer._removeEventHandler(b,"propertyChanged",a)};Sys.Observer.beginUpdate=function(a){Sys.Observer._getContext(a,true).updating=true};Sys.Observer.endUpdate=function(b){var a=Sys.Observer._getContext(b);if(!a||!a.updating)return;a.updating=false;var d=a.dirty;a.dirty=false;if(d){if(b instanceof Array){var c=a.changes;a.changes=null;Sys.Observer.raiseCollectionChanged(b,c)}Sys.Observer.raisePropertyChanged(b,"")}};Sys.Observer.isUpdating=function(b){var a=Sys.Observer._getContext(b);return a?a.updating:false};Sys.Observer._setValue=function(a,j,g){var b,f,k=a,d=j.split(".");for(var i=0,m=d.length-1;i-1&&ac.Calendar.TwoDigitYearMax)a-=100}return a};Date._getEra=function(e,c){if(!c)return 0;var b,d=e.getTime();for(var a=0,f=c.length;a=b)return a}return 0};Date._getEraYear=function(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":case "gg":case "g":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break;case "/":a.append("(\\"+b.DateSeparator+")")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(h,d,i){var a,c,b,f,e,g=false;for(a=1,c=i.length;a31)return null;break;case "MMMM":c=k._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=k._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":e=Date._expandYear(g,parseInt(a,10));if(e<0||e>9999)return null;break;case "yyyy":e=parseInt(a,10);if(e<0||e>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":p=parseInt(a,10);if(p<0||p>59)return null;break;case "s":case "ss":q=parseInt(a,10);if(q<0||q>59)return null;break;case "tt":case "t":var z=a.toUpperCase();v=z===g.PMDesignator.toUpperCase();if(!v&&z!==g.AMDesignator.toUpperCase())return null;break;case "f":f=parseInt(a,10)*100;if(f<0||f>999)return null;break;case "ff":f=parseInt(a,10)*10;if(f<0||f>999)return null;break;case "fff":f=parseInt(a,10);if(f<0||f>999)return null;break;case "dddd":i=k._getDayIndex(a);if(i<0||i>6)return null;break;case "ddd":i=k._getAbbrDayIndex(a);if(i<0||i>6)return null;break;case "zzz":var u=a.split(/:/);if(u.length!==2)return null;h=parseInt(u[0],10);if(h<-12||h>13)return null;var m=parseInt(u[1],10);if(m<0||m>59)return null;l=h*60+(a.startsWith("-")?-m:m);break;case "z":case "zz":h=parseInt(a,10);if(h<-12||h>13)return null;l=h*60;break;case "g":case "gg":var o=a;if(!o||!g.eras)return null;o=o.toLowerCase().trim();for(var r=0,F=g.eras.length;r0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k1)b=parseInt(e.slice(1),10);var c;switch(e.charAt(0)){case "d":case "D":c="n";if(b!==-1)d=g(""+d,b,true);if(this<0)d=-d;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;d=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;d=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;d=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=d;break;case "$":f+=a.CurrencySymbol;break;case "-":if(/[1-9]/.test(d))f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getIndex:function(c,d,e){var b=this._toUpper(c),a=Array.indexOf(d,b);if(a===-1)a=Array.indexOf(e,b);return a},_getMonthIndex:function(a){if(!this._upperMonths){this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);this._upperMonthsGenitive=this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames)}return this._getIndex(a,this._upperMonths,this._upperMonthsGenitive)},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths){this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);this._upperAbbrMonthsGenitive=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames)}return this._getIndex(a,this._upperAbbrMonths,this._upperAbbrMonthsGenitive)},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a0&&a.charAt(0)==="#")a=a.substring(1);return a};Sys._Application.prototype.get_enableHistory=function(){return this._enableHistory};Sys._Application.prototype.set_enableHistory=function(a){this._enableHistory=a};Sys._Application.prototype.add_navigate=function(a){this.get_events().addHandler("navigate",a)};Sys._Application.prototype.remove_navigate=function(a){this.get_events().removeHandler("navigate",a)};Sys._Application.prototype.addHistoryPoint=function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()};Sys._Application.prototype.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};Sys._Application.prototype.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};Sys._Application.prototype._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+27){var e=document.title;document.title=c;this._setState(a);document.title=e}else this._setState(a);this._raiseNavigate()}else{this._setState(a);this._raiseNavigate()}}};Sys._Application.prototype._raiseNavigate=function(){var d=this._historyPointIsNew,c=this.get_events().getHandler("navigate"),b={};for(var a in this._state)if(a!=="__s")b[a]=this._state[a];var e=new Sys.HistoryEventArgs(b);if(c)c(this,e);if(!d){var f;try{if(Sys.Browser.agent===Sys.Browser.Firefox&&window.location.hash&&(!window.frameElement||window.top.location.hash))Sys.Browser.version<3.5?window.history.go(0):(location.hash=this.get_stateString())}catch(g){}}};Sys._Application.prototype._serializeState=function(d){var b=[];for(var a in d){var e=d[a];if(a==="__s")var c=e;else b[b.length]=a+"="+encodeURIComponent(e)}return b.join("&")+(c?"&&"+c:"")};Sys._Application.prototype._setState=function(a,b){if(this._enableHistory){a=a||"";if(a!==this._currentEntry){if(window.theForm){var d=window.theForm.action,e=d.indexOf("#");window.theForm.action=(e!==-1?d.substring(0,e):d)+"#"+a}if(this._historyFrame&&this._historyPointIsNew){var f=document.createElement("div");f.appendChild(document.createTextNode(b||document.title));var g=f.innerHTML;this._ignoreIFrame=true;var c=this._historyFrame.contentWindow.document;c.open("javascript:''");c.write(""+g+"parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(a)+");");c.close()}this._ignoreTimer=false;this._currentEntry=a;if(this._historyFrame||this._historyPointIsNew){var h=this.get_stateString();if(a!==h){window.location.hash=a;this._currentEntry=this.get_stateString();if(typeof b!=="undefined"&&b!==null)document.title=b}}this._historyPointIsNew=false}}};Sys._Application.prototype._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}}; \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxNetwork.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxNetwork.js new file mode 100644 index 000000000..c40412d5f --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxNetwork.js @@ -0,0 +1,6 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxNetwork.js +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftAjaxNetwork.js +Type._registerScript("MicrosoftAjaxNetwork.js",["MicrosoftAjaxSerialization.js"]);if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1&&typeof a.setProperty!="undefined")a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var d=document.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>0)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c!==-1)a=a.substr(0,c);c=a.indexOf("#");if(c!==-1)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(c,b,f){b=b||encodeURIComponent;var h=0,e,g,d,a=new Sys.StringBuilder;if(c)for(d in c){e=c[d];if(typeof e==="function")continue;g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(h++)a.append("&");a.append(d);a.append("=");a.append(b(g))}if(f){if(h)a.append("&");a.append(f)}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b,c){if(!b&&!c)return a;var d=Sys.Net.WebRequest._createQueryString(b,null,c);return d.length?a+(a&&a.indexOf("?")>=0?"&":"?")+d:a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoaderTask._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){if(this._ensureReadyStateLoaded())this._executeInternal()},_executeInternal:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_ensureReadyStateLoaded:function(){if(this._useReadyState()&&this._scriptElement.readyState!=="loaded"&&this._scriptElement.readyState!=="complete"){this._scriptDownloadDelegate=Function.createDelegate(this,this._executeInternal);$addHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);return false}return true},_addScriptElementHandlers:function(){if(this._scriptDownloadDelegate){$removeHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);this._scriptDownloadDelegate=null}this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(this._useReadyState())$addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);else $addHandler(this._scriptElement,"load",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(this._scriptDownloadDelegate){$removeHandler(this._scriptElement,"readystatechange",this._scriptDownloadDelegate);this._scriptDownloadDelegate=null}if(this._useReadyState()&&this._scriptLoadDelegate)$removeHandler(a,"readystatechange",this._scriptLoadDelegate);else $removeHandler(a,"load",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(this._useReadyState()&&a.readyState!=="complete")return;this._completedCallback(a,true)},_useReadyState:function(){return Sys.Browser.agent===Sys.Browser.InternetExplorer&&(Sys.Browser.version<9||(document.documentMode||0)<9)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys._ScriptLoaderTask._clearScript=function(a){if(!Sys.Debug.isDebug&&a.parentNode)a.parentNode.removeChild(a)}; \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxSerialization.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxSerialization.js new file mode 100644 index 000000000..ead100f4f --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MSAjax/MicrosoftAjaxSerialization.js @@ -0,0 +1,6 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjaxSerialization.js +//---------------------------------------------------------- +// Copyright (C) Microsoft Corporation. All rights reserved. +//---------------------------------------------------------- +// MicrosoftAjaxSerialization.js +Type._registerScript("MicrosoftAjaxSerialization.js",["MicrosoftAjaxCore.js"]);Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs=[];Sys.Serialization.JavaScriptSerializer._charsToEscape=[];Sys.Serialization.JavaScriptSerializer._dateRegEx=new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars={};Sys.Serialization.JavaScriptSerializer._escapeRegEx=new RegExp('["\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal=new RegExp('["\\\\\\x00-\\x1F]',"g");Sys.Serialization.JavaScriptSerializer._jsonRegEx=new RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=new RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer._serverTypeFieldName="__type";Sys.Serialization.JavaScriptSerializer._init=function(){var c=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000b","\\f","\\r","\\u000e","\\u000f","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001a","\\u001b","\\u001c","\\u001d","\\u001e","\\u001f"];Sys.Serialization.JavaScriptSerializer._charsToEscape[0]="\\";Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs["\\"]=new RegExp("\\\\","g");Sys.Serialization.JavaScriptSerializer._escapeChars["\\"]="\\\\";Sys.Serialization.JavaScriptSerializer._charsToEscape[1]='"';Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"']=new RegExp('"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars['"']='\\"';for(var a=0;a<32;a++){var b=String.fromCharCode(a);Sys.Serialization.JavaScriptSerializer._charsToEscape[a+2]=b;Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b]=new RegExp(b,"g");Sys.Serialization.JavaScriptSerializer._escapeChars[b]=c[a]}};Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder=function(a,b){if(isFinite(a))b.append(String(a));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder=function(a,c){c.append('"');if(Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(a)){if(Sys.Serialization.JavaScriptSerializer._charsToEscape.length===0)Sys.Serialization.JavaScriptSerializer._init();if(a.length<128)a=a.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal,function(a){return Sys.Serialization.JavaScriptSerializer._escapeChars[a]});else for(var d=0;d<34;d++){var b=Sys.Serialization.JavaScriptSerializer._charsToEscape[d];if(a.indexOf(b)!==-1)if(Sys.Browser.agent===Sys.Browser.Opera||Sys.Browser.agent===Sys.Browser.FireFox)a=a.split(b).join(Sys.Serialization.JavaScriptSerializer._escapeChars[b]);else a=a.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b],Sys.Serialization.JavaScriptSerializer._escapeChars[b])}}c.append(a);c.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,i,g){var c;switch(typeof b){case "object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);else if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);else if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c0){var b=Array.dequeue(c.scriptsToLoad),f=this._scriptLoadedDelegate;if(b.fallback){var g=b.fallback;delete b.fallback;var d=this;f=function(b,a){a||function(){var a=d._createScriptElement({src:g});d._currentTask=new Sys._ScriptLoaderTask(a,d._scriptLoadedDelegate);d._currentTask.execute()}()}}var a=this._createScriptElement(b);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof b.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,f);this._currentTask.execute()}else{document.getElementsByTagName("head")[0].appendChild(a);Sys._ScriptLoaderTask._clearScript(a);this._loadScriptsInternal()}}else{this._stopSession();var e=c.allScriptsLoadedCallback;if(e)e(this);this._nextSession()}},_nextSession:function(){if(this._sessions.length===0){this._loading=false;this._currentSession=null;return}this._loading=true;var a=Array.dequeue(this._sessions);this._currentSession=a;if(a.scriptTimeout>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a.scriptTimeout*1000);this._loadScriptsInternal()},_raiseError:function(){var b=this._currentSession.scriptLoadFailedCallback,a=this._currentTask.get_scriptElement();this._stopSession();if(b){b(this,a);this._nextSession()}else{this._loading=false;throw Sys._ScriptLoader._errorScriptLoadFailed(a.src)}},_scriptLoadedHandler:function(a,b){if(b){Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError()},_scriptLoadTimeoutHandler:function(){var a=this._currentSession.scriptLoadTimeoutCallback;this._stopSession();if(a)a(this);this._nextSession()},_stopSession:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var c=Sys._ScriptLoader._referencedScripts=[],d=document.getElementsByTagName("script");for(var b=d.length-1;b>=0;b--){var e=d[b],a=e.src;if(a.length)if(!Array.contains(c,a))Array.add(c,a)}}};Sys._ScriptLoader._errorScriptLoadFailed=function(b){var a;a=Sys.Res.scriptLoadFailed;var d="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(d,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys.WebForms.PageRequestManager=function(){this._form=null;this._activeDefaultButton=null;this._activeDefaultButtonClicked=false;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._originalDoPostBackWithOptions=null;this._originalFireDefaultButton=null;this._originalDoCallback=null;this._isCrossPost=false;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._processingRequest=false;this._scriptDisposes={};this._transientFields=["__VIEWSTATEENCRYPTED","__VIEWSTATEFIELDCOUNT"];this._textTypes=/^(text|password|hidden|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},beginAsyncPostBack:function(c,a,f,d,e){if(d&&typeof Page_ClientValidate==="function"&&!Page_ClientValidate(e||null))return;this._postBackSettings=this._createPostBackSettings(true,c,a);var b=this._form;b.__EVENTTARGET.value=a||"";b.__EVENTARGUMENT.value=f||"";this._isCrossPost=false;this._additionalInput=null;this._onFormSubmit()},_cancelPendingCallbacks:function(){for(var a=0,e=window.__pendingCallbacks.length;a0)theForm.action=a.actionUrl;if(a.trackFocus){var c=theForm.elements["__LASTFOCUS"];if(typeof c!="undefined"&&c!=null)if(typeof document.activeElement=="undefined")c.value=a.eventTarget;else{var b=document.activeElement;if(typeof b!="undefined"&&b!=null)if(typeof b.id!="undefined"&&b.id!=null&&b.id.length>0)c.value=b.id;else if(typeof b.name!="undefined")c.value=b.name}}}if(a.clientSubmit)this._doPostBack(a.eventTarget,a.eventArgument)},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,d,f){if(this._request===d.get_webRequest()){this._processingRequest=false;this._additionalInput=null;this._request=null}var e=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(e){var c=new Sys.WebForms.EndRequestEventArgs(a,f?f.dataItems:{},d);e(this,c);b=c.get_errorHandled()}if(a&&!b)throw a},_ensureUniqueIds:function(a){if(!a)return a;a=a instanceof Array?a:[a];var c=[];for(var b=0,f=a.length;b-1?this._updatePanelIDs[d]:e)}return c},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_fireDefaultButton:function(a,d){if(a.keyCode===13){var c=a.srcElement||a.target;if(!c||c.tagName.toLowerCase()!=="textarea"){var b=document.getElementById(d);if(b&&typeof b.click!=="undefined"){this._activeDefaultButton=b;this._activeDefaultButtonClicked=false;try{b.click()}finally{this._activeDefaultButton=null}a.cancelBubble=true;if(typeof a.stopPropagation==="function")a.stopPropagation();return false}}}return true},_getPageLoadedEventArgs:function(n,c){var m=[],l=[],k=c?c.version4:false,d=c?c.updatePanelData:null,e,g,h,b;if(!d){e=this._updatePanelIDs;g=this._updatePanelClientIDs;h=null;b=null}else{e=d.updatePanelIDs;g=d.updatePanelClientIDs;h=d.childUpdatePanelIDs;b=d.panelsToRefreshIDs}var a,f,j,i;if(b)for(a=0,f=b.length;a-1))Array.add(i,document.getElementById(l[a]))}return new Sys.WebForms.PageLoadingEventArgs(j,i,f.dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,null,c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,[this._updatePanelIDs[e]],c,d);else return this._createPostBackSettings(true,null,c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,null,c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false)}a=a.parentNode}if(!b)return this._createPostBackSettings(false);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(f,g,a,b,e,c,d){if(this._prmInitialized)throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);this._prmInitialized=true;this._masterPageUniqueID=d;this._scriptManagerID=f;this._form=Sys.UI.DomElement.resolveElement(g);this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._originalDoPostBackWithOptions=window.WebForm_DoPostBackWithOptions;if(this._originalDoPostBackWithOptions)window.WebForm_DoPostBackWithOptions=Function.createDelegate(this,this._doPostBackWithOptions);this._originalFireDefaultButton=window.WebForm_FireDefaultButton;if(this._originalFireDefaultButton)window.WebForm_FireDefaultButton=Function.createDelegate(this,this._fireDefaultButton);this._originalDoCallback=window.WebForm_DoCallback;if(this._originalDoCallback)window.WebForm_DoCallback=Function.createDelegate(this,this._doCallback);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler);if(a)this._updateControls(a,b,e,c,true)},_matchesParentIDInList:function(c,b){for(var a=0,d=b.length;a=c.length){e=this._findText(c,c.length);break}D=c.substr(b,i);b+=i;if(c.charAt(b)!=="|"){e=this._findText(c,b);break}b++;Array.add(k,{type:E,id:F,content:D})}if(e){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,e)),h,null);return null}var x=[],w=[],q=[],j=[],t=[],C=[],A=[],z=[],v=[],s=[],m,p,u,n,o,r,y,g;for(var l=0,G=k.length;l=4)a.content=unescape(a.content);if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var f=document.createElement("a");f.style.display="none";f.attachEvent("onclick",B);f.href=a.content;this._form.parentNode.insertBefore(f,this._form);f.click();f.detachEvent("onclick",B);this._form.parentNode.removeChild(f);function B(a){a.cancelBubble=true}}else window.location.href=a.content;return null;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(a.id),a.content),h,null);return null;case "pageTitle":document.title=a.content;break;case "focus":this._controlIDToFocus=a.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,a.type)),h,null);return null}}return {version4:g?parseFloat(g.content)>=4:false,executor:h,updatePanelNodes:x,hiddenFieldNodes:w,arrayDeclarationNodes:q,scriptBlockNodes:j,scriptStartupNodes:t,expandoNodes:C,onSubmitNodes:A,dataItemNodes:z,dataItemJsonNodes:v,scriptDisposeNodes:s,asyncPostBackControlIDsNode:m,postBackControlIDsNode:p,updatePanelIDsNode:u,asyncPostBackTimeoutNode:n,childUpdatePanelIDsNode:o,panelsToRefreshNode:r,formActionNode:y}},_processUpdatePanelArrays:function(e,q,r,f){var d,c,b;if(e){var i=e.length,j=f?2:1;d=new Array(i/j);c=new Array(i/j);b=new Array(i/j);for(var g=0,h=0;g0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError"); \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/Menu.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/Menu.js new file mode 100644 index 000000000..ff1f7e442 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/Menu.js @@ -0,0 +1,898 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/Menu.js +var __rootMenuItem; +var __menuInterval; +var __scrollPanel; +var __disappearAfter = 500; +function Menu_ClearInterval() { + if (__menuInterval) { + window.clearInterval(__menuInterval); + } +} +function Menu_Collapse(item) { + Menu_SetRoot(item); + if (__rootMenuItem) { + Menu_ClearInterval(); + if (__disappearAfter >= 0) { + __menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter); + } + } +} +function Menu_Expand(item, horizontalOffset, verticalOffset, hideScrollers) { + Menu_ClearInterval(); + var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; + var horizontal = true; + if (!tr.id) { + horizontal = false; + tr = tr.parentNode; + } + var child = Menu_FindSubMenu(item); + if (child) { + var data = Menu_GetData(item); + if (!data) { + return null; + } + child.rel = tr.id; + child.x = horizontalOffset; + child.y = verticalOffset; + if (horizontal) child.pos = "bottom"; + PopOut_Show(child.id, hideScrollers, data); + } + Menu_SetRoot(item); + if (child) { + if (!document.body.__oldOnClick && document.body.onclick) { + document.body.__oldOnClick = document.body.onclick; + } + if (__rootMenuItem) { + document.body.onclick = Menu_HideItems; + } + } + Menu_ResetSiblings(tr); + return child; +} +function Menu_FindMenu(item) { + if (item && item.menu) return item.menu; + var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; + if (!tr.id) { + tr = tr.parentNode; + } + for (var i = tr.id.length - 1; i >= 0; i--) { + if (tr.id.charAt(i) < '0' || tr.id.charAt(i) > '9') { + var menu = WebForm_GetElementById(tr.id.substr(0, i)); + if (menu) { + item.menu = menu; + return menu; + } + } + } + return null; +} +function Menu_FindNext(item) { + var a = WebForm_GetElementByTagName(item, "A"); + var parent = Menu_FindParentContainer(item); + var first = null; + if (parent) { + var links = WebForm_GetElementsByTagName(parent, "A"); + var match = false; + for (var i = 0; i < links.length; i++) { + var link = links[i]; + if (Menu_IsSelectable(link)) { + if (Menu_FindParentContainer(link) == parent) { + if (match) { + return link; + } + else if (!first) { + first = link; + } + } + if (!match && link == a) { + match = true; + } + } + } + } + return first; +} +function Menu_FindParentContainer(item) { + if (item.menu_ParentContainerCache) return item.menu_ParentContainerCache; + var a = (item.tagName.toLowerCase() == "a") ? item : WebForm_GetElementByTagName(item, "A"); + var menu = Menu_FindMenu(a); + if (menu) { + var parent = item; + while (parent && parent.tagName && + parent.id != menu.id && + parent.tagName.toLowerCase() != "div") { + parent = parent.parentNode; + } + item.menu_ParentContainerCache = parent; + return parent; + } +} +function Menu_FindParentItem(item) { + var parentContainer = Menu_FindParentContainer(item); + var parentContainerID = parentContainer.id; + var len = parentContainerID.length; + if (parentContainerID && parentContainerID.substr(len - 5) == "Items") { + var parentItemID = parentContainerID.substr(0, len - 5); + return WebForm_GetElementById(parentItemID); + } + return null; +} +function Menu_FindPrevious(item) { + var a = WebForm_GetElementByTagName(item, "A"); + var parent = Menu_FindParentContainer(item); + var last = null; + if (parent) { + var links = WebForm_GetElementsByTagName(parent, "A"); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + if (Menu_IsSelectable(link)) { + if (link == a && last) { + return last; + } + if (Menu_FindParentContainer(link) == parent) { + last = link; + } + } + } + } + return last; +} +function Menu_FindSubMenu(item) { + var tr = item.parentNode.parentNode.parentNode.parentNode.parentNode; + if (!tr.id) { + tr=tr.parentNode; + } + return WebForm_GetElementById(tr.id + "Items"); +} +function Menu_Focus(item) { + if (item && item.focus) { + var pos = WebForm_GetElementPosition(item); + var parentContainer = Menu_FindParentContainer(item); + if (!parentContainer.offset) { + parentContainer.offset = 0; + } + var posParent = WebForm_GetElementPosition(parentContainer); + var delta; + if (pos.y + pos.height > posParent.y + parentContainer.offset + parentContainer.clippedHeight) { + delta = pos.y + pos.height - posParent.y - parentContainer.offset - parentContainer.clippedHeight; + PopOut_Scroll(parentContainer, delta); + } + else if (pos.y < posParent.y + parentContainer.offset) { + delta = posParent.y + parentContainer.offset - pos.y; + PopOut_Scroll(parentContainer, -delta); + } + PopOut_HideScrollers(parentContainer); + item.focus(); + } +} +function Menu_GetData(item) { + if (!item.data) { + var a = (item.tagName.toLowerCase() == "a" ? item : WebForm_GetElementByTagName(item, "a")); + var menu = Menu_FindMenu(a); + try { + item.data = eval(menu.id + "_Data"); + } + catch(e) {} + } + return item.data; +} +function Menu_HideItems(items) { + if (document.body.__oldOnClick) { + document.body.onclick = document.body.__oldOnClick; + document.body.__oldOnClick = null; + } + Menu_ClearInterval(); + if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) { + items = __rootMenuItem; + } + var table = items; + if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) { + table = WebForm_GetElementByTagName(table, "TABLE"); + } + if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) { + return; + } + var rows = table.rows ? table.rows : table.firstChild.rows; + var isVertical = false; + for (var r = 0; r < rows.length; r++) { + if (rows[r].id) { + isVertical = true; + break; + } + } + var i, child, nextLevel; + if (isVertical) { + for(i = 0; i < rows.length; i++) { + if (rows[i].id) { + child = WebForm_GetElementById(rows[i].id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + else if (rows[i].cells[0]) { + nextLevel = WebForm_GetElementByTagName(rows[i].cells[0], "TABLE"); + if (nextLevel) { + Menu_HideItems(nextLevel); + } + } + } + } + else if (rows[0]) { + for(i = 0; i < rows[0].cells.length; i++) { + if (rows[0].cells[i].id) { + child = WebForm_GetElementById(rows[0].cells[i].id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + else { + nextLevel = WebForm_GetElementByTagName(rows[0].cells[i], "TABLE"); + if (nextLevel) { + Menu_HideItems(rows[0].cells[i].firstChild); + } + } + } + } + if (items && items.id) { + PopOut_Hide(items.id); + } +} +function Menu_HoverDisabled(item) { + var node = (item.tagName.toLowerCase() == "td") ? + item: + item.cells[0]; + var data = Menu_GetData(item); + if (!data) return; + node = WebForm_GetElementByTagName(node, "table").rows[0].cells[0].childNodes[0]; + if (data.disappearAfter >= 200) { + __disappearAfter = data.disappearAfter; + } + Menu_Expand(node, data.horizontalOffset, data.verticalOffset); +} +function Menu_HoverDynamic(item) { + var node = (item.tagName.toLowerCase() == "td") ? + item: + item.cells[0]; + var data = Menu_GetData(item); + if (!data) return; + var nodeTable = WebForm_GetElementByTagName(node, "table"); + if (data.hoverClass) { + nodeTable.hoverClass = data.hoverClass; + WebForm_AppendToClassName(nodeTable, data.hoverClass); + } + node = nodeTable.rows[0].cells[0].childNodes[0]; + if (data.hoverHyperLinkClass) { + node.hoverHyperLinkClass = data.hoverHyperLinkClass; + WebForm_AppendToClassName(node, data.hoverHyperLinkClass); + } + if (data.disappearAfter >= 200) { + __disappearAfter = data.disappearAfter; + } + Menu_Expand(node, data.horizontalOffset, data.verticalOffset); +} +function Menu_HoverRoot(item) { + var node = (item.tagName.toLowerCase() == "td") ? + item: + item.cells[0]; + var data = Menu_GetData(item); + if (!data) { + return null; + } + var nodeTable = WebForm_GetElementByTagName(node, "table"); + if (data.staticHoverClass) { + nodeTable.hoverClass = data.staticHoverClass; + WebForm_AppendToClassName(nodeTable, data.staticHoverClass); + } + node = nodeTable.rows[0].cells[0].childNodes[0]; + if (data.staticHoverHyperLinkClass) { + node.hoverHyperLinkClass = data.staticHoverHyperLinkClass; + WebForm_AppendToClassName(node, data.staticHoverHyperLinkClass); + } + return node; +} +function Menu_HoverStatic(item) { + var node = Menu_HoverRoot(item); + var data = Menu_GetData(item); + if (!data) return; + __disappearAfter = data.disappearAfter; + Menu_Expand(node, data.horizontalOffset, data.verticalOffset); +} +function Menu_IsHorizontal(item) { + if (item) { + var a = ((item.tagName && (item.tagName.toLowerCase == "a")) ? item : WebForm_GetElementByTagName(item, "A")); + if (!a) { + return false; + } + var td = a.parentNode.parentNode.parentNode.parentNode.parentNode; + if (td.id) { + return true; + } + } + return false; +} +function Menu_IsSelectable(link) { + return (link && link.href) +} +function Menu_Key(item) { + var event; + if (item.currentTarget) { + event = item; + item = event.currentTarget; + } + else { + event = window.event; + } + var key = (event ? event.keyCode : -1); + var data = Menu_GetData(item); + if (!data) return; + var horizontal = Menu_IsHorizontal(item); + var a = WebForm_GetElementByTagName(item, "A"); + var nextItem, parentItem, previousItem; + if ((!horizontal && key == 38) || (horizontal && key == 37)) { + previousItem = Menu_FindPrevious(item); + while (previousItem && previousItem.disabled) { + previousItem = Menu_FindPrevious(previousItem); + } + if (previousItem) { + Menu_Focus(previousItem); + Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + if ((!horizontal && key == 40) || (horizontal && key == 39)) { + if (horizontal) { + var subMenu = Menu_FindSubMenu(a); + if (subMenu && subMenu.style && subMenu.style.visibility && + subMenu.style.visibility.toLowerCase() == "hidden") { + Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + nextItem = Menu_FindNext(item); + while (nextItem && nextItem.disabled) { + nextItem = Menu_FindNext(nextItem); + } + if (nextItem) { + Menu_Focus(nextItem); + Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + if ((!horizontal && key == 39) || (horizontal && key == 40)) { + var children = Menu_Expand(a, data.horizontalOffset, data.verticalOffset, true); + if (children) { + var firstChild; + children = WebForm_GetElementsByTagName(children, "A"); + for (var i = 0; i < children.length; i++) { + if (!children[i].disabled && Menu_IsSelectable(children[i])) { + firstChild = children[i]; + break; + } + } + if (firstChild) { + Menu_Focus(firstChild); + Menu_Expand(firstChild, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + else { + parentItem = Menu_FindParentItem(item); + while (parentItem && !Menu_IsHorizontal(parentItem)) { + parentItem = Menu_FindParentItem(parentItem); + } + if (parentItem) { + nextItem = Menu_FindNext(parentItem); + while (nextItem && nextItem.disabled) { + nextItem = Menu_FindNext(nextItem); + } + if (nextItem) { + Menu_Focus(nextItem); + Menu_Expand(nextItem, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + } + } + if ((!horizontal && key == 37) || (horizontal && key == 38)) { + parentItem = Menu_FindParentItem(item); + if (parentItem) { + if (Menu_IsHorizontal(parentItem)) { + previousItem = Menu_FindPrevious(parentItem); + while (previousItem && previousItem.disabled) { + previousItem = Menu_FindPrevious(previousItem); + } + if (previousItem) { + Menu_Focus(previousItem); + Menu_Expand(previousItem, data.horizontalOffset, data.verticalOffset, true); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + var parentA = WebForm_GetElementByTagName(parentItem, "A"); + if (parentA) { + Menu_Focus(parentA); + } + Menu_ResetSiblings(parentItem); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } + } + if (key == 27) { + Menu_HideItems(); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return; + } +} +function Menu_ResetSiblings(item) { + var table = (item.tagName.toLowerCase() == "td") ? + item.parentNode.parentNode.parentNode : + item.parentNode.parentNode; + var isVertical = false; + for (var r = 0; r < table.rows.length; r++) { + if (table.rows[r].id) { + isVertical = true; + break; + } + } + var i, child, childNode; + if (isVertical) { + for(i = 0; i < table.rows.length; i++) { + childNode = table.rows[i]; + if (childNode != item) { + child = WebForm_GetElementById(childNode.id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + } + } + else { + for(i = 0; i < table.rows[0].cells.length; i++) { + childNode = table.rows[0].cells[i]; + if (childNode != item) { + child = WebForm_GetElementById(childNode.id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + } + } + Menu_ResetTopMenus(table, table, 0, true); +} +function Menu_ResetTopMenus(table, doNotReset, level, up) { + var i, child, childNode; + if (up && table.id == "") { + var parentTable = table.parentNode.parentNode.parentNode.parentNode; + if (parentTable.tagName.toLowerCase() == "table") { + Menu_ResetTopMenus(parentTable, doNotReset, level + 1, true); + } + } + else { + if (level == 0 && table != doNotReset) { + if (table.rows[0].id) { + for(i = 0; i < table.rows.length; i++) { + childNode = table.rows[i]; + child = WebForm_GetElementById(childNode.id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + } + else { + for(i = 0; i < table.rows[0].cells.length; i++) { + childNode = table.rows[0].cells[i]; + child = WebForm_GetElementById(childNode.id + "Items"); + if (child) { + Menu_HideItems(child); + } + } + } + } + else if (level > 0) { + for (i = 0; i < table.rows.length; i++) { + for (var j = 0; j < table.rows[i].cells.length; j++) { + var subTable = table.rows[i].cells[j].firstChild; + if (subTable && subTable.tagName.toLowerCase() == "table") { + Menu_ResetTopMenus(subTable, doNotReset, level - 1, false); + } + } + } + } + } +} +function Menu_RestoreInterval() { + if (__menuInterval && __rootMenuItem) { + Menu_ClearInterval(); + __menuInterval = window.setInterval("Menu_HideItems()", __disappearAfter); + } +} +function Menu_SetRoot(item) { + var newRoot = Menu_FindMenu(item); + if (newRoot) { + if (__rootMenuItem && __rootMenuItem != newRoot) { + Menu_HideItems(); + } + __rootMenuItem = newRoot; + } +} +function Menu_Unhover(item) { + var node = (item.tagName.toLowerCase() == "td") ? + item: + item.cells[0]; + var nodeTable = WebForm_GetElementByTagName(node, "table"); + if (nodeTable.hoverClass) { + WebForm_RemoveClassName(nodeTable, nodeTable.hoverClass); + } + node = nodeTable.rows[0].cells[0].childNodes[0]; + if (node.hoverHyperLinkClass) { + WebForm_RemoveClassName(node, node.hoverHyperLinkClass); + } + Menu_Collapse(node); +} +function PopOut_Clip(element, y, height) { + if (element && element.style) { + element.style.clip = "rect(" + y + "px auto " + (y + height) + "px auto)"; + element.style.overflow = "hidden"; + } +} +function PopOut_Down(scroller) { + Menu_ClearInterval(); + var panel; + if (scroller) { + panel = scroller.parentNode + } + else { + panel = __scrollPanel; + } + if (panel && ((panel.offset + panel.clippedHeight) < panel.physicalHeight)) { + PopOut_Scroll(panel, 2) + __scrollPanel = panel; + PopOut_ShowScrollers(panel); + PopOut_Stop(); + __scrollPanel.interval = window.setInterval("PopOut_Down()", 8); + } + else { + PopOut_ShowScrollers(panel); + } +} +function PopOut_Hide(panelId) { + var panel = WebForm_GetElementById(panelId); + if (panel && panel.tagName.toLowerCase() == "div") { + panel.style.visibility = "hidden"; + panel.style.display = "none"; + panel.offset = 0; + panel.scrollTop = 0; + var table = WebForm_GetElementByTagName(panel, "TABLE"); + if (table) { + WebForm_SetElementY(table, 0); + } + if (window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && + !window.opera) { + var childFrameId = panel.id + "_MenuIFrame"; + var childFrame = WebForm_GetElementById(childFrameId); + if (childFrame) { + childFrame.style.display = "none"; + } + } + } +} +function PopOut_HideScrollers(panel) { + if (panel && panel.style) { + var up = WebForm_GetElementById(panel.id + "Up"); + var dn = WebForm_GetElementById(panel.id + "Dn"); + if (up) { + up.style.visibility = "hidden"; + up.style.display = "none"; + } + if (dn) { + dn.style.visibility = "hidden"; + dn.style.display = "none"; + } + } +} +function PopOut_Position(panel, hideScrollers) { + if (window.opera) { + panel.parentNode.removeChild(panel); + document.forms[0].appendChild(panel); + } + var rel = WebForm_GetElementById(panel.rel); + var relTable = WebForm_GetElementByTagName(rel, "TABLE"); + var relCoordinates = WebForm_GetElementPosition(relTable ? relTable : rel); + var panelCoordinates = WebForm_GetElementPosition(panel); + var panelHeight = ((typeof(panel.physicalHeight) != "undefined") && (panel.physicalHeight != null)) ? + panel.physicalHeight : + panelCoordinates.height; + panel.physicalHeight = panelHeight; + var panelParentCoordinates; + if (panel.offsetParent) { + panelParentCoordinates = WebForm_GetElementPosition(panel.offsetParent); + } + else { + panelParentCoordinates = new Object(); + panelParentCoordinates.x = 0; + panelParentCoordinates.y = 0; + } + var overflowElement = WebForm_GetElementById("__overFlowElement"); + if (!overflowElement) { + overflowElement = document.createElement("img"); + overflowElement.id="__overFlowElement"; + WebForm_SetElementWidth(overflowElement, 1); + document.body.appendChild(overflowElement); + } + WebForm_SetElementHeight(overflowElement, panelHeight + relCoordinates.y + parseInt(panel.y ? panel.y : 0)); + overflowElement.style.visibility = "visible"; + overflowElement.style.display = "inline"; + var clientHeight = 0; + var clientWidth = 0; + if (window.innerHeight) { + clientHeight = window.innerHeight; + clientWidth = window.innerWidth; + } + else if (document.documentElement && document.documentElement.clientHeight) { + clientHeight = document.documentElement.clientHeight; + clientWidth = document.documentElement.clientWidth; + } + else if (document.body && document.body.clientHeight) { + clientHeight = document.body.clientHeight; + clientWidth = document.body.clientWidth; + } + var scrollTop = 0; + var scrollLeft = 0; + if (typeof(window.pageYOffset) != "undefined") { + scrollTop = window.pageYOffset; + scrollLeft = window.pageXOffset; + } + else if (document.documentElement && (typeof(document.documentElement.scrollTop) != "undefined")) { + scrollTop = document.documentElement.scrollTop; + scrollLeft = document.documentElement.scrollLeft; + } + else if (document.body && (typeof(document.body.scrollTop) != "undefined")) { + scrollTop = document.body.scrollTop; + scrollLeft = document.body.scrollLeft; + } + overflowElement.style.visibility = "hidden"; + overflowElement.style.display = "none"; + var bottomWindowBorder = clientHeight + scrollTop; + var rightWindowBorder = clientWidth + scrollLeft; + var position = panel.pos; + if ((typeof(position) == "undefined") || (position == null) || (position == "")) { + position = (WebForm_GetElementDir(rel) == "rtl" ? "middleleft" : "middleright"); + } + position = position.toLowerCase(); + var y = relCoordinates.y + parseInt(panel.y ? panel.y : 0) - panelParentCoordinates.y; + var borderParent = (rel && rel.parentNode && rel.parentNode.parentNode && rel.parentNode.parentNode.parentNode + && rel.parentNode.parentNode.parentNode.tagName.toLowerCase() == "div") ? + rel.parentNode.parentNode.parentNode : null; + WebForm_SetElementY(panel, y); + PopOut_SetPanelHeight(panel, panelHeight, true); + var clip = false; + var overflow; + if (position.indexOf("top") != -1) { + y -= panelHeight; + WebForm_SetElementY(panel, y); + if (y < -panelParentCoordinates.y) { + y = -panelParentCoordinates.y; + WebForm_SetElementY(panel, y); + if (panelHeight > clientHeight - 2) { + clip = true; + PopOut_SetPanelHeight(panel, clientHeight - 2); + } + } + } + else { + if (position.indexOf("bottom") != -1) { + y += relCoordinates.height; + WebForm_SetElementY(panel, y); + } + overflow = y + panelParentCoordinates.y + panelHeight - bottomWindowBorder; + if (overflow > 0) { + y -= overflow; + WebForm_SetElementY(panel, y); + if (y < -panelParentCoordinates.y) { + y = 2 - panelParentCoordinates.y + scrollTop; + WebForm_SetElementY(panel, y); + clip = true; + PopOut_SetPanelHeight(panel, clientHeight - 2); + } + } + } + if (!clip) { + PopOut_SetPanelHeight(panel, panel.clippedHeight, true); + } + var panelParentOffsetY = 0; + if (panel.offsetParent) { + panelParentOffsetY = WebForm_GetElementPosition(panel.offsetParent).y; + } + var panelY = ((typeof(panel.originY) != "undefined") && (panel.originY != null)) ? + panel.originY : + y - panelParentOffsetY; + panel.originY = panelY; + if (!hideScrollers) { + PopOut_ShowScrollers(panel); + } + else { + PopOut_HideScrollers(panel); + } + var x = relCoordinates.x + parseInt(panel.x ? panel.x : 0) - panelParentCoordinates.x; + if (borderParent && borderParent.clientLeft) { + x += 2 * borderParent.clientLeft; + } + WebForm_SetElementX(panel, x); + if (position.indexOf("left") != -1) { + x -= panelCoordinates.width; + WebForm_SetElementX(panel, x); + if (x < -panelParentCoordinates.x) { + WebForm_SetElementX(panel, -panelParentCoordinates.x); + } + } + else { + if (position.indexOf("right") != -1) { + x += relCoordinates.width; + WebForm_SetElementX(panel, x); + } + overflow = x + panelParentCoordinates.x + panelCoordinates.width - rightWindowBorder; + if (overflow > 0) { + if (position.indexOf("bottom") == -1 && relCoordinates.x > panelCoordinates.width) { + x -= relCoordinates.width + panelCoordinates.width; + } + else { + x -= overflow; + } + WebForm_SetElementX(panel, x); + if (x < -panelParentCoordinates.x) { + WebForm_SetElementX(panel, -panelParentCoordinates.x); + } + } + } +} +function PopOut_Scroll(panel, offsetDelta) { + var table = WebForm_GetElementByTagName(panel, "TABLE"); + if (!table) return; + table.style.position = "relative"; + var tableY = (table.style.top ? parseInt(table.style.top) : 0); + panel.offset += offsetDelta; + WebForm_SetElementY(table, tableY - offsetDelta); +} +function PopOut_SetPanelHeight(element, height, doNotClip) { + if (element && element.style) { + var size = WebForm_GetElementPosition(element); + element.physicalWidth = size.width; + element.clippedHeight = height; + WebForm_SetElementHeight(element, height - (element.clientTop ? (2 * element.clientTop) : 0)); + if (doNotClip && element.style) { + element.style.clip = "rect(auto auto auto auto)"; + } + else { + PopOut_Clip(element, 0, height); + } + } +} +function PopOut_Show(panelId, hideScrollers, data) { + var panel = WebForm_GetElementById(panelId); + if (panel && panel.tagName.toLowerCase() == "div") { + panel.style.visibility = "visible"; + panel.style.display = "inline"; + if (!panel.offset || hideScrollers) { + panel.scrollTop = 0; + panel.offset = 0; + var table = WebForm_GetElementByTagName(panel, "TABLE"); + if (table) { + WebForm_SetElementY(table, 0); + } + } + PopOut_Position(panel, hideScrollers); + var z = 1; + var isIE = window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera; + if (isIE && data) { + var childFrameId = panel.id + "_MenuIFrame"; + var childFrame = WebForm_GetElementById(childFrameId); + var parent = panel.offsetParent; + if (!childFrame) { + childFrame = document.createElement("iframe"); + childFrame.id = childFrameId; + childFrame.src = (data.iframeUrl ? data.iframeUrl : "about:blank"); + childFrame.style.position = "absolute"; + childFrame.style.display = "none"; + childFrame.scrolling = "no"; + childFrame.frameBorder = "0"; + if (parent.tagName.toLowerCase() == "html") { + document.body.appendChild(childFrame); + } + else { + parent.appendChild(childFrame); + } + } + var pos = WebForm_GetElementPosition(panel); + var parentPos = WebForm_GetElementPosition(parent); + WebForm_SetElementX(childFrame, pos.x - parentPos.x); + WebForm_SetElementY(childFrame, pos.y - parentPos.y); + WebForm_SetElementWidth(childFrame, pos.width); + WebForm_SetElementHeight(childFrame, pos.height); + childFrame.style.display = "block"; + if (panel.currentStyle && panel.currentStyle.zIndex && panel.currentStyle.zIndex != "auto") { + z = panel.currentStyle.zIndex; + } + else if (panel.style.zIndex) { + z = panel.style.zIndex; + } + } + panel.style.zIndex = z; + } +} +function PopOut_ShowScrollers(panel) { + if (panel && panel.style) { + var up = WebForm_GetElementById(panel.id + "Up"); + var dn = WebForm_GetElementById(panel.id + "Dn"); + var cnt = 0; + if (up && dn) { + if (panel.offset && panel.offset > 0) { + up.style.visibility = "visible"; + up.style.display = "inline"; + cnt++; + if (panel.clientWidth) { + WebForm_SetElementWidth(up, panel.clientWidth + - (up.clientLeft ? (2 * up.clientLeft) : 0)); + } + WebForm_SetElementY(up, 0); + } + else { + up.style.visibility = "hidden"; + up.style.display = "none"; + } + if (panel.offset + panel.clippedHeight + 2 <= panel.physicalHeight) { + dn.style.visibility = "visible"; + dn.style.display = "inline"; + cnt++; + if (panel.clientWidth) { + WebForm_SetElementWidth(dn, panel.clientWidth + - (dn.clientLeft ? (2 * dn.clientLeft) : 0)); + } + WebForm_SetElementY(dn, panel.clippedHeight - WebForm_GetElementPosition(dn).height + - (panel.clientTop ? (2 * panel.clientTop) : 0)); + } + else { + dn.style.visibility = "hidden"; + dn.style.display = "none"; + } + if (cnt == 0) { + panel.style.clip = "rect(auto auto auto auto)"; + } + } + } +} +function PopOut_Stop() { + if (__scrollPanel && __scrollPanel.interval) { + window.clearInterval(__scrollPanel.interval); + } + Menu_RestoreInterval(); +} +function PopOut_Up(scroller) { + Menu_ClearInterval(); + var panel; + if (scroller) { + panel = scroller.parentNode + } + else { + panel = __scrollPanel; + } + if (panel && panel.offset && panel.offset > 0) { + PopOut_Scroll(panel, -2); + __scrollPanel = panel; + PopOut_ShowScrollers(panel); + PopOut_Stop(); + __scrollPanel.interval = window.setInterval("PopOut_Up()", 8); + } +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/MenuStandards.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MenuStandards.js new file mode 100644 index 000000000..bd4c9242a --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/MenuStandards.js @@ -0,0 +1,697 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/MenuStandards.js +if (!window.Sys) { window.Sys = {}; } +if (!Sys.WebForms) { Sys.WebForms = {}; } +Sys.WebForms.Menu = function(options) { + this.items = []; + this.depth = options.depth || 1; + this.parentMenuItem = options.parentMenuItem; + this.element = Sys.WebForms.Menu._domHelper.getElement(options.element); + if (this.element.tagName === 'DIV') { + var containerElement = this.element; + this.element = Sys.WebForms.Menu._domHelper.firstChild(containerElement); + this.element.tabIndex = options.tabIndex || 0; + options.element = containerElement; + options.menu = this; + this.container = new Sys.WebForms._MenuContainer(options); + Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left"); + } + else { + this.container = options.container; + this.keyMap = options.keyMap; + } + Sys.WebForms.Menu._elementObjectMapper.map(this.element, this); + if (this.parentMenuItem && this.parentMenuItem.parentMenu) { + this.parentMenu = this.parentMenuItem.parentMenu; + this.rootMenu = this.parentMenu.rootMenu; + if (!this.element.id) { + this.element.id = (this.container.element.id || 'menu') + ':submenu:' + Sys.WebForms.Menu._elementObjectMapper._computedId; + } + if (this.depth > this.container.staticDisplayLevels) { + this.displayMode = "dynamic"; + this.element.style.display = "none"; + this.element.style.position = "absolute"; + if (this.rootMenu && this.container.orientation === 'horizontal' && this.parentMenu.isStatic()) { + this.element.style.top = "100%"; + if (this.container.rightToLeft) { + this.element.style.right = "0px"; + } + else { + this.element.style.left = "0px"; + } + } + else { + this.element.style.top = "0px"; + if (this.container.rightToLeft) { + this.element.style.right = "100%"; + } + else { + this.element.style.left = "100%"; + } + } + if (this.container.rightToLeft) { + this.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl; + } + else { + this.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical; + } + } + else { + this.displayMode = "static"; + this.element.style.display = "block"; + if (this.container.orientation === 'horizontal') { + Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left"); + } + } + } + Sys.WebForms.Menu._domHelper.appendCssClass(this.element, this.displayMode); + var children = this.element.childNodes; + var count = children.length; + for (var i = 0; i < count; i++) { + var node = children[i]; + if (node.nodeType !== 1) { + continue; + } + var topLevelMenuItem = null; + if (this.parentMenuItem) { + topLevelMenuItem = this.parentMenuItem.topLevelMenuItem; + } + var menuItem = new Sys.WebForms.MenuItem(this, node, topLevelMenuItem); + var previousMenuItem = this.items[this.items.length - 1]; + if (previousMenuItem) { + menuItem.previousSibling = previousMenuItem; + previousMenuItem.nextSibling = menuItem; + } + this.items[this.items.length] = menuItem; + } +}; +Sys.WebForms.Menu.prototype = { + blur: function() { if (this.container) this.container.blur(); }, + collapse: function() { + this.each(function(menuItem) { + menuItem.hover(false); + menuItem.blur(); + var childMenu = menuItem.childMenu; + if (childMenu) { + childMenu.collapse(); + } + }); + this.hide(); + }, + doDispose: function() { this.each(function(item) { item.doDispose(); }); }, + each: function(fn) { + var count = this.items.length; + for (var i = 0; i < count; i++) { + fn(this.items[i]); + } + }, + firstChild: function() { return this.items[0]; }, + focus: function() { if (this.container) this.container.focus(); }, + get_displayed: function() { return this.element.style.display !== 'none'; }, + get_focused: function() { + if (this.container) { + return this.container.focused; + } + return false; + }, + handleKeyPress: function(keyCode) { + if (this.keyMap.contains(keyCode)) { + if (this.container.focusedMenuItem) { + this.container.focusedMenuItem.navigate(keyCode); + return; + } + var firstChild = this.firstChild(); + if (firstChild) { + this.container.navigateTo(firstChild); + } + } + }, + hide: function() { + if (!this.get_displayed()) { + return; + } + this.each(function(item) { + if (item.childMenu) { + item.childMenu.hide(); + } + }); + if (!this.isRoot()) { + if (this.get_focused()) { + this.container.navigateTo(this.parentMenuItem); + } + this.element.style.display = 'none'; + } + }, + isRoot: function() { return this.rootMenu === this; }, + isStatic: function() { return this.displayMode === 'static'; }, + lastChild: function() { return this.items[this.items.length - 1]; }, + show: function() { this.element.style.display = 'block'; } +}; +if (Sys.WebForms.Menu.registerClass) { + Sys.WebForms.Menu.registerClass('Sys.WebForms.Menu'); +} +Sys.WebForms.MenuItem = function(parentMenu, listElement, topLevelMenuItem) { + this.keyMap = parentMenu.keyMap; + this.parentMenu = parentMenu; + this.container = parentMenu.container; + this.element = listElement; + this.topLevelMenuItem = topLevelMenuItem || this; + this._anchor = Sys.WebForms.Menu._domHelper.firstChild(listElement); + while (this._anchor && this._anchor.tagName !== 'A') { + this._anchor = Sys.WebForms.Menu._domHelper.nextSibling(this._anchor); + } + if (this._anchor) { + this._anchor.tabIndex = -1; + var subMenu = this._anchor; + while (subMenu && subMenu.tagName !== 'UL') { + subMenu = Sys.WebForms.Menu._domHelper.nextSibling(subMenu); + } + if (subMenu) { + this.childMenu = new Sys.WebForms.Menu({ element: subMenu, parentMenuItem: this, depth: parentMenu.depth + 1, container: this.container, keyMap: this.keyMap }); + if (!this.childMenu.isStatic()) { + Sys.WebForms.Menu._domHelper.appendCssClass(this.element, 'has-popup'); + Sys.WebForms.Menu._domHelper.appendAttributeValue(this.element, 'aria-haspopup', this.childMenu.element.id); + } + } + } + Sys.WebForms.Menu._elementObjectMapper.map(listElement, this); + Sys.WebForms.Menu._domHelper.appendAttributeValue(listElement, 'role', 'menuitem'); + Sys.WebForms.Menu._domHelper.appendCssClass(listElement, parentMenu.displayMode); + if (this._anchor) { + Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, parentMenu.displayMode); + } + this.element.style.position = "relative"; + if (this.parentMenu.depth == 1 && this.container.orientation == 'horizontal') { + Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left"); + } + if (!this.container.disabled) { + Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover); + Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout); + } +}; +Sys.WebForms.MenuItem.prototype = { + applyUp: function(fn, condition) { + condition = condition || function(menuItem) { return menuItem; }; + var menuItem = this; + var lastMenuItem = null; + while (condition(menuItem)) { + fn(menuItem); + lastMenuItem = menuItem; + menuItem = menuItem.parentMenu.parentMenuItem; + } + return lastMenuItem; + }, + blur: function() { this.setTabIndex(-1); }, + doDispose: function() { + Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover); + Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout); + if (this.childMenu) { + this.childMenu.doDispose(); + } + }, + focus: function() { + if (!this.parentMenu.get_displayed()) { + this.parentMenu.show(); + } + this.setTabIndex(0); + this.container.focused = true; + this._anchor.focus(); + }, + get_highlighted: function() { return /(^|\s)highlighted(\s|$)/.test(this._anchor.className); }, + getTabIndex: function() { return this._anchor.tabIndex; }, + highlight: function(highlighting) { + if (highlighting) { + this.applyUp(function(menuItem) { + menuItem.parentMenu.parentMenuItem.highlight(true); + }, + function(menuItem) { + return !menuItem.parentMenu.isStatic() && menuItem.parentMenu.parentMenuItem; + } + ); + Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, 'highlighted'); + } + else { + Sys.WebForms.Menu._domHelper.removeCssClass(this._anchor, 'highlighted'); + this.setTabIndex(-1); + } + }, + hover: function(hovering) { + if (hovering) { + var currentHoveredItem = this.container.hoveredMenuItem; + if (currentHoveredItem) { + currentHoveredItem.hover(false); + } + var currentFocusedItem = this.container.focusedMenuItem; + if (currentFocusedItem && currentFocusedItem !== this) { + currentFocusedItem.hover(false); + } + this.applyUp(function(menuItem) { + if (menuItem.childMenu && !menuItem.childMenu.get_displayed()) { + menuItem.childMenu.show(); + } + }); + this.container.hoveredMenuItem = this; + this.highlight(true); + } + else { + var menuItem = this; + while (menuItem) { + menuItem.highlight(false); + if (menuItem.childMenu) { + if (!menuItem.childMenu.isStatic()) { + menuItem.childMenu.hide(); + } + } + menuItem = menuItem.parentMenu.parentMenuItem; + } + } + }, + isSiblingOf: function(menuItem) { return menuItem.parentMenu === this.parentMenu; }, + mouseout: function() { + var menuItem = this, + id = this.container.pendingMouseoutId, + disappearAfter = this.container.disappearAfter; + if (id) { + window.clearTimeout(id); + } + if (disappearAfter > -1) { + this.container.pendingMouseoutId = + window.setTimeout(function() { menuItem.hover(false); }, disappearAfter); + } + }, + mouseover: function() { + var id = this.container.pendingMouseoutId; + if (id) { + window.clearTimeout(id); + this.container.pendingMouseoutId = null; + } + this.hover(true); + if (this.container.menu.get_focused()) { + this.container.navigateTo(this); + } + }, + navigate: function(keyCode) { + switch (this.keyMap[keyCode]) { + case this.keyMap.next: + this.navigateNext(); + break; + case this.keyMap.previous: + this.navigatePrevious(); + break; + case this.keyMap.child: + this.navigateChild(); + break; + case this.keyMap.parent: + this.navigateParent(); + break; + case this.keyMap.tab: + this.navigateOut(); + break; + } + }, + navigateChild: function() { + var subMenu = this.childMenu; + if (subMenu) { + var firstChild = subMenu.firstChild(); + if (firstChild) { + this.container.navigateTo(firstChild); + } + } + else { + if (this.container.orientation === 'horizontal') { + var nextItem = this.topLevelMenuItem.nextSibling || this.topLevelMenuItem.parentMenu.firstChild(); + if (nextItem == this.topLevelMenuItem) { + return; + } + this.topLevelMenuItem.childMenu.hide(); + this.container.navigateTo(nextItem); + if (nextItem.childMenu) { + this.container.navigateTo(nextItem.childMenu.firstChild()); + } + } + } + }, + navigateNext: function() { + if (this.childMenu) { + this.childMenu.hide(); + } + var nextMenuItem = this.nextSibling; + if (!nextMenuItem && this.parentMenu.isRoot()) { + nextMenuItem = this.parentMenu.parentMenuItem; + if (nextMenuItem) { + nextMenuItem = nextMenuItem.nextSibling; + } + } + if (!nextMenuItem) { + nextMenuItem = this.parentMenu.firstChild(); + } + if (nextMenuItem) { + this.container.navigateTo(nextMenuItem); + } + }, + navigateOut: function() { + this.parentMenu.blur(); + }, + navigateParent: function() { + var parentMenu = this.parentMenu, + horizontal = this.container.orientation === 'horizontal'; + if (!parentMenu) return; + if (horizontal && this.childMenu && parentMenu.isRoot()) { + this.navigateChild(); + return; + } + if (parentMenu.parentMenuItem && !parentMenu.isRoot()) { + if (horizontal && this.parentMenu.depth === 2) { + var previousItem = this.parentMenu.parentMenuItem.previousSibling; + if (!previousItem) { + previousItem = this.parentMenu.rootMenu.lastChild(); + } + this.topLevelMenuItem.childMenu.hide(); + this.container.navigateTo(previousItem); + if (previousItem.childMenu) { + this.container.navigateTo(previousItem.childMenu.firstChild()); + } + } + else { + this.parentMenu.hide(); + } + } + }, + navigatePrevious: function() { + if (this.childMenu) { + this.childMenu.hide(); + } + var previousMenuItem = this.previousSibling; + if (previousMenuItem) { + var childMenu = previousMenuItem.childMenu; + if (childMenu && childMenu.isRoot()) { + previousMenuItem = childMenu.lastChild(); + } + } + if (!previousMenuItem && this.parentMenu.isRoot()) { + previousMenuItem = this.parentMenu.parentMenuItem; + } + if (!previousMenuItem) { + previousMenuItem = this.parentMenu.lastChild(); + } + if (previousMenuItem) { + this.container.navigateTo(previousMenuItem); + } + }, + setTabIndex: function(index) { if (this._anchor) this._anchor.tabIndex = index; } +}; +Sys.WebForms.MenuItem._onmouseout = function(e) { + var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this); + if (!menuItem) { + return; + } + menuItem.mouseout(); + Sys.WebForms.Menu._domHelper.cancelEvent(e); +}; +Sys.WebForms.MenuItem._onmouseover = function(e) { + var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this); + if (!menuItem) { + return; + } + menuItem.mouseover(); + Sys.WebForms.Menu._domHelper.cancelEvent(e); +}; +Sys.WebForms.Menu._domHelper = { + addEvent: function(element, eventName, fn, useCapture) { + if (element.addEventListener) { + element.addEventListener(eventName, fn, !!useCapture); + } + else { + element['on' + eventName] = fn; + } + }, + appendAttributeValue: function(element, name, value) { + this.updateAttributeValue('append', element, name, value); + }, + appendCssClass: function(element, value) { + this.updateClassName('append', element, name, value); + }, + appendString: function(getString, setString, value) { + var currentValue = getString(); + if (!currentValue) { + setString(value); + return; + } + var regex = this._regexes.getRegex('(^| )' + value + '($| )'); + if (regex.test(currentValue)) { + return; + } + setString(currentValue + ' ' + value); + }, + cancelEvent: function(e) { + var event = e || window.event; + if (event) { + event.cancelBubble = true; + if (event.stopPropagation) { + event.stopPropagation(); + } + } + }, + contains: function(ancestor, descendant) { + for (; descendant && (descendant !== ancestor); descendant = descendant.parentNode) { } + return !!descendant; + }, + firstChild: function(element) { + var child = element.firstChild; + if (child && child.nodeType !== 1) { + child = this.nextSibling(child); + } + return child; + }, + getElement: function(elementOrId) { return typeof elementOrId === 'string' ? document.getElementById(elementOrId) : elementOrId; }, + getElementDirection: function(element) { + if (element) { + if (element.dir) { + return element.dir; + } + return this.getElementDirection(element.parentNode); + } + return "ltr"; + }, + getKeyCode: function(event) { return event.keyCode || event.charCode || 0; }, + insertAfter: function(element, elementToInsert) { + var next = element.nextSibling; + if (next) { + element.parentNode.insertBefore(elementToInsert, next); + } + else if (element.parentNode) { + element.parentNode.appendChild(elementToInsert); + } + }, + nextSibling: function(element) { + var sibling = element.nextSibling; + while (sibling) { + if (sibling.nodeType === 1) { + return sibling; + } + sibling = sibling.nextSibling; + } + }, + removeAttributeValue: function(element, name, value) { + this.updateAttributeValue('remove', element, name, value); + }, + removeCssClass: function(element, value) { + this.updateClassName('remove', element, name, value); + }, + removeEvent: function(element, eventName, fn, useCapture) { + if (element.removeEventListener) { + element.removeEventListener(eventName, fn, !!useCapture); + } + else if (element.detachEvent) { + element.detachEvent('on' + eventName, fn) + } + element['on' + eventName] = null; + }, + removeString: function(getString, setString, valueToRemove) { + var currentValue = getString(); + if (currentValue) { + var regex = this._regexes.getRegex('(\\s|\\b)' + valueToRemove + '$|\\b' + valueToRemove + '\\s+'); + setString(currentValue.replace(regex, '')); + } + }, + setFloat: function(element, direction) { + element.style.styleFloat = direction; + element.style.cssFloat = direction; + }, + updateAttributeValue: function(operation, element, name, value) { + this[operation + 'String']( + function() { + return element.getAttribute(name); + }, + function(newValue) { + element.setAttribute(name, newValue); + }, + value + ); + }, + updateClassName: function(operation, element, name, value) { + this[operation + 'String']( + function() { + return element.className; + }, + function(newValue) { + element.className = newValue; + }, + value + ); + }, + _regexes: { + getRegex: function(pattern) { + var regex = this[pattern]; + if (!regex) { + this[pattern] = regex = new RegExp(pattern); + } + return regex; + } + } +}; +Sys.WebForms.Menu._elementObjectMapper = { + _computedId: 0, + _mappings: {}, + _mappingIdName: 'Sys.WebForms.Menu.Mapping', + getMappedObject: function(element) { + var id = element[this._mappingIdName]; + if (id) { + return this._mappings[this._mappingIdName + ':' + id]; + } + }, + map: function(element, theObject) { + var mappedObject = element[this._mappingIdName]; + if (mappedObject === theObject) { + return; + } + var objectId = element[this._mappingIdName] || element.id || '%' + (++this._computedId); + element[this._mappingIdName] = objectId; + this._mappings[this._mappingIdName + ':' + objectId] = theObject; + theObject.mappingId = objectId; + } +}; +Sys.WebForms.Menu._keyboardMapping = new (function() { + var LEFT_ARROW = 37; + var UP_ARROW = 38; + var RIGHT_ARROW = 39; + var DOWN_ARROW = 40; + var TAB = 9; + var ESCAPE = 27; + this.vertical = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 }; + this.vertical[DOWN_ARROW] = this.vertical.next; + this.vertical[UP_ARROW] = this.vertical.previous; + this.vertical[RIGHT_ARROW] = this.vertical.child; + this.vertical[LEFT_ARROW] = this.vertical.parent; + this.vertical[TAB] = this.vertical[ESCAPE] = this.vertical.tab; + this.verticalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 }; + this.verticalRtl[DOWN_ARROW] = this.verticalRtl.next; + this.verticalRtl[UP_ARROW] = this.verticalRtl.previous; + this.verticalRtl[LEFT_ARROW] = this.verticalRtl.child; + this.verticalRtl[RIGHT_ARROW] = this.verticalRtl.parent; + this.verticalRtl[TAB] = this.verticalRtl[ESCAPE] = this.verticalRtl.tab; + this.horizontal = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 }; + this.horizontal[RIGHT_ARROW] = this.horizontal.next; + this.horizontal[LEFT_ARROW] = this.horizontal.previous; + this.horizontal[DOWN_ARROW] = this.horizontal.child; + this.horizontal[UP_ARROW] = this.horizontal.parent; + this.horizontal[TAB] = this.horizontal[ESCAPE] = this.horizontal.tab; + this.horizontalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 }; + this.horizontalRtl[RIGHT_ARROW] = this.horizontalRtl.previous; + this.horizontalRtl[LEFT_ARROW] = this.horizontalRtl.next; + this.horizontalRtl[DOWN_ARROW] = this.horizontalRtl.child; + this.horizontalRtl[UP_ARROW] = this.horizontalRtl.parent; + this.horizontalRtl[TAB] = this.horizontalRtl[ESCAPE] = this.horizontalRtl.tab; + this.horizontal.contains = this.horizontalRtl.contains = this.vertical.contains = this.verticalRtl.contains = function(keycode) { + return this[keycode] != null; + }; +})(); +Sys.WebForms._MenuContainer = function(options) { + this.focused = false; + this.disabled = options.disabled; + this.staticDisplayLevels = options.staticDisplayLevels || 1; + this.element = options.element; + this.orientation = options.orientation || 'vertical'; + this.disappearAfter = options.disappearAfter; + this.rightToLeft = Sys.WebForms.Menu._domHelper.getElementDirection(this.element) === 'rtl'; + Sys.WebForms.Menu._elementObjectMapper.map(this.element, this); + this.menu = options.menu; + this.menu.rootMenu = this.menu; + this.menu.displayMode = 'static'; + this.menu.element.style.position = 'relative'; + this.menu.element.style.width = 'auto'; + if (this.orientation === 'vertical') { + Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menu'); + if (this.rightToLeft) { + this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl; + } + else { + this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical; + } + } + else { + Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menubar'); + if (this.rightToLeft) { + this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontalRtl; + } + else { + this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontal; + } + } + var floatBreak = document.createElement('div'); + floatBreak.style.clear = this.rightToLeft ? "right" : "left"; + this.element.appendChild(floatBreak); + Sys.WebForms.Menu._domHelper.setFloat(this.element, this.rightToLeft ? "right" : "left"); + Sys.WebForms.Menu._domHelper.insertAfter(this.element, floatBreak); + if (!this.disabled) { + Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'focus', this._onfocus, true); + Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'keydown', this._onkeydown); + var menuContainer = this; + this.element.dispose = function() { + if (menuContainer.element.dispose) { + menuContainer.element.dispose = null; + Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'focus', menuContainer._onfocus, true); + Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'keydown', menuContainer._onkeydown); + menuContainer.menu.doDispose(); + } + }; + Sys.WebForms.Menu._domHelper.addEvent(window, 'unload', function() { + if (menuContainer.element.dispose) { + menuContainer.element.dispose(); + } + }); + } +}; +Sys.WebForms._MenuContainer.prototype = { + blur: function() { + this.focused = false; + this.isBlurring = false; + this.menu.collapse(); + this.focusedMenuItem = null; + }, + focus: function(e) { this.focused = true; }, + navigateTo: function(menuItem) { + if (this.focusedMenuItem && this.focusedMenuItem !== this) { + this.focusedMenuItem.highlight(false); + } + menuItem.highlight(true); + menuItem.focus(); + this.focusedMenuItem = menuItem; + }, + _onfocus: function(e) { + var event = e || window.event; + if (event.srcElement && this) { + if (Sys.WebForms.Menu._domHelper.contains(this.element, event.srcElement)) { + if (!this.focused) { + this.focus(); + } + } + } + }, + _onkeydown: function(e) { + var thisMenu = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this); + var keyCode = Sys.WebForms.Menu._domHelper.getKeyCode(e || window.event); + if (thisMenu) { + thisMenu.handleKeyPress(keyCode); + } + } +}; diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/SmartNav.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/SmartNav.js new file mode 100644 index 000000000..23b6487d2 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/SmartNav.js @@ -0,0 +1,280 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/SmartNav.js +var snSrc; +if ((typeof(window.__smartNav) == "undefined") || (window.__smartNav == null)) +{ + window.__smartNav = new Object(); + window.__smartNav.update = function() + { + var sn = window.__smartNav; + var fd; + document.detachEvent("onstop", sn.stopHif); + sn.inPost = false; + try { fd = frames["__hifSmartNav"].document; } catch (e) {return;} + var fdr = fd.getElementsByTagName("asp_smartnav_rdir"); + if (fdr.length > 0) + { + if ((typeof(sn.sHif) == "undefined") || (sn.sHif == null)) + { + sn.sHif = document.createElement("IFRAME"); + sn.sHif.name = "__hifSmartNav"; + sn.sHif.style.display = "none"; + sn.sHif.src = snSrc; + } + try {window.location = fdr[0].url;} catch (e) {}; + return; + } + var fdurl = fd.location.href; + var index = fdurl.indexOf(snSrc); + if ((index != -1 && index == fdurl.length-snSrc.length) + || fdurl == "about:blank") + return; + var fdurlb = fdurl.split("?")[0]; + if (document.location.href.indexOf(fdurlb) < 0) + { + document.location.href=fdurl; + return; + } + sn._savedOnLoad = window.onload; + window.onload = null; + window.__smartNav.updateHelper(); + } + window.__smartNav.updateHelper = function() + { + if (document.readyState != "complete") + { + window.setTimeout(window.__smartNav.updateHelper, 25); + return; + } + window.__smartNav.loadNewContent(); + } + window.__smartNav.loadNewContent = function() + { + var sn = window.__smartNav; + var fd; + try { fd = frames["__hifSmartNav"].document; } catch (e) {return;} + if ((typeof(sn.sHif) != "undefined") && (sn.sHif != null)) + { + sn.sHif.removeNode(true); + sn.sHif = null; + } + var hdm = document.getElementsByTagName("head")[0]; + var hk = hdm.childNodes; + var tt = null; + var i; + for (i = hk.length - 1; i>= 0; i--) + { + if (hk[i].tagName == "TITLE") + { + tt = hk[i].outerHTML; + continue; + } + if (hk[i].tagName != "BASEFONT" || hk[i].innerHTML.length == 0) + hdm.removeChild(hdm.childNodes[i]); + } + var kids = fd.getElementsByTagName("head")[0].childNodes; + for (i = 0; i < kids.length; i++) + { + var tn = kids[i].tagName; + var k = document.createElement(tn); + k.id = kids[i].id; + k.mergeAttributes(kids[i]); + switch(tn) + { + case "TITLE": + if (tt == kids[i].outerHTML) + continue; + k.innerText = kids[i].text; + hdm.insertAdjacentElement("afterbegin", k); + continue; + case "BASEFONT" : + if (kids[i].innerHTML.length > 0) + continue; + break; + default: + var o = document.createElement("BODY"); + o.innerHTML = "" + kids[i].outerHTML + ""; + k = o.firstChild; + break; + } + if((typeof(k) != "undefined") && (k != null)) + hdm.appendChild(k); + } + document.body.clearAttributes(); + document.body.id = fd.body.id; + document.body.mergeAttributes(fd.body); + var newBodyLoad = fd.body.onload; + if ((typeof(newBodyLoad) != "undefined") && (newBodyLoad != null)) + document.body.onload = newBodyLoad; + else + document.body.onload = sn._savedOnLoad; + var s = "" + fd.body.innerHTML + ""; + if ((typeof(sn.hif) != "undefined") && (sn.hif != null)) + { + var hifP = sn.hif.parentElement; + if ((typeof(hifP) != "undefined") && (hifP != null)) + sn.sHif=hifP.removeChild(sn.hif); + } + document.body.innerHTML = s; + var sc = document.scripts; + for (i = 0; i < sc.length; i++) + { + sc[i].text = sc[i].text; + } + sn.hif = document.all("__hifSmartNav"); + if ((typeof(sn.hif) != "undefined") && (sn.hif != null)) + { + var hif = sn.hif; + sn.hifName = "__hifSmartNav" + (new Date()).getTime(); + frames["__hifSmartNav"].name = sn.hifName; + sn.hifDoc = hif.contentWindow.document; + if (sn.ie5) + hif.parentElement.removeChild(hif); + window.setTimeout(sn.restoreFocus,0); + } + if (typeof(window.onload) == "string") + { + try { eval(window.onload) } catch (e) {}; + } + else if ((typeof(window.onload) != "undefined") && (window.onload != null)) + { + try { window.onload() } catch (e) {}; + } + sn._savedOnLoad = null; + sn.attachForm(); + }; + window.__smartNav.restoreFocus = function() + { + if (window.__smartNav.inPost == true) return; + var curAe = document.activeElement; + var sAeId = window.__smartNav.ae; + if (((typeof(sAeId) == "undefined") || (sAeId == null)) || + (typeof(curAe) != "undefined") && (curAe != null) && (curAe.id == sAeId || curAe.name == sAeId)) + return; + var ae = document.all(sAeId); + if ((typeof(ae) == "undefined") || (ae == null)) return; + try { ae.focus(); } catch(e){}; + } + window.__smartNav.saveHistory = function() + { + if ((typeof(window.__smartNav.hif) != "undefined") && (window.__smartNav.hif != null)) + window.__smartNav.hif.removeNode(); + if ((typeof(window.__smartNav.sHif) != "undefined") && (window.__smartNav.sHif != null) + && (typeof(document.all[window.__smartNav.siHif]) != "undefined") + && (document.all[window.__smartNav.siHif] != null)) { + document.all[window.__smartNav.siHif].insertAdjacentElement( + "BeforeBegin", window.__smartNav.sHif); + } + } + window.__smartNav.stopHif = function() + { + document.detachEvent("onstop", window.__smartNav.stopHif); + var sn = window.__smartNav; + if (((typeof(sn.hifDoc) == "undefined") || (sn.hifDoc == null)) && + (typeof(sn.hif) != "undefined") && (sn.hif != null)) + { + try {sn.hifDoc = sn.hif.contentWindow.document;} + catch(e){sn.hifDoc=null} + } + if (sn.hifDoc != null) + { + try {sn.hifDoc.execCommand("stop");} catch (e){} + } + } + window.__smartNav.init = function() + { + var sn = window.__smartNav; + window.__smartNav.form.__smartNavPostBack.value = 'true'; + document.detachEvent("onstop", sn.stopHif); + document.attachEvent("onstop", sn.stopHif); + try { if (window.event.returnValue == false) return; } catch(e) {} + sn.inPost = true; + if ((typeof(document.activeElement) != "undefined") && (document.activeElement != null)) + { + var ae = document.activeElement.id; + if (ae.length == 0) + ae = document.activeElement.name; + sn.ae = ae; + } + else + sn.ae = null; + try {document.selection.empty();} catch (e) {} + if ((typeof(sn.hif) == "undefined") || (sn.hif == null)) + { + sn.hif = document.all("__hifSmartNav"); + sn.hifDoc = sn.hif.contentWindow.document; + } + if ((typeof(sn.hifDoc) != "undefined") && (sn.hifDoc != null)) + try {sn.hifDoc.designMode = "On";} catch(e){}; + if ((typeof(sn.hif.parentElement) == "undefined") || (sn.hif.parentElement == null)) + document.body.appendChild(sn.hif); + var hif = sn.hif; + hif.detachEvent("onload", sn.update); + hif.attachEvent("onload", sn.update); + window.__smartNav.fInit = true; + }; + window.__smartNav.submit = function() + { + window.__smartNav.fInit = false; + try { window.__smartNav.init(); } catch(e) {} + if (window.__smartNav.fInit) { + window.__smartNav.form._submit(); + } + }; + window.__smartNav.attachForm = function() + { + var cf = document.forms; + for (var i=0; i"); + break; + } + } + var snfm = window.__smartNav.form; + if ((typeof(snfm) == "undefined") || (snfm == null)) return false; + var sft = snfm.target; + if (sft.length != 0 && sft.indexOf("__hifSmartNav") != 0) return false; + var sfc = snfm.action.split("?")[0]; + var url = window.location.href.split("?")[0]; + if (url.charAt(url.length-1) != '/' && url.lastIndexOf(sfc) + sfc.length != url.length) return false; + if (snfm.__formAttached == true) return true; + snfm.__formAttached = true; + snfm.attachEvent("onsubmit", window.__smartNav.init); + snfm._submit = snfm.submit; + snfm.submit = window.__smartNav.submit; + snfm.target = window.__smartNav.hifName; + return true; + }; + window.__smartNav.hifName = "__hifSmartNav" + (new Date()).getTime(); + window.__smartNav.ie5 = navigator.appVersion.indexOf("MSIE 5") > 0; + var rc = window.__smartNav.attachForm(); + var hif = document.all("__hifSmartNav"); + if ((typeof(snSrc) == "undefined") || (snSrc == null)) { + if (typeof(window.dialogHeight) != "undefined") { + snSrc = "IEsmartnav1"; + hif.src = snSrc; + } else { + snSrc = hif.src; + } + } + if (rc) + { + var fsn = frames["__hifSmartNav"]; + fsn.name = window.__smartNav.hifName; + window.__smartNav.siHif = hif.sourceIndex; + try { + if (fsn.document.location != snSrc) + { + fsn.document.designMode = "On"; + hif.attachEvent("onload",window.__smartNav.update); + window.__smartNav.hif = hif; + } + } + catch (e) { window.__smartNav.hif = hif; } + window.attachEvent("onbeforeunload", window.__smartNav.saveHistory); + } + else + window.__smartNav = null; +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/TreeView.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/TreeView.js new file mode 100644 index 000000000..2db5ab93e --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/TreeView.js @@ -0,0 +1,220 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/TreeView.js +function TreeView_HoverNode(data, node) { + if (!data) { + return; + } + node.hoverClass = data.hoverClass; + WebForm_AppendToClassName(node, data.hoverClass); + if (__nonMSDOMBrowser) { + node = node.childNodes[node.childNodes.length - 1]; + } + else { + node = node.children[node.children.length - 1]; + } + node.hoverHyperLinkClass = data.hoverHyperLinkClass; + WebForm_AppendToClassName(node, data.hoverHyperLinkClass); +} +function TreeView_GetNodeText(node) { + var trNode = WebForm_GetParentByTagName(node, "TR"); + var outerNodes; + if (trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName) { + outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("A"); + if (!outerNodes || outerNodes.length == 0) { + outerNodes = trNode.childNodes[trNode.childNodes.length - 1].getElementsByTagName("SPAN"); + } + } + var textNode = (outerNodes && outerNodes.length > 0) ? + outerNodes[0].childNodes[0] : + trNode.childNodes[trNode.childNodes.length - 1].childNodes[0]; + return (textNode && textNode.nodeValue) ? textNode.nodeValue : ""; +} +function TreeView_PopulateNode(data, index, node, selectNode, selectImageNode, lineType, text, path, databound, datapath, parentIsLast) { + if (!data) { + return; + } + var context = new Object(); + context.data = data; + context.node = node; + context.selectNode = selectNode; + context.selectImageNode = selectImageNode; + context.lineType = lineType; + context.index = index; + context.isChecked = "f"; + var tr = WebForm_GetParentByTagName(node, "TR"); + if (tr) { + var checkbox = tr.getElementsByTagName("INPUT"); + if (checkbox && (checkbox.length > 0)) { + for (var i = 0; i < checkbox.length; i++) { + if (checkbox[i].type.toLowerCase() == "checkbox") { + if (checkbox[i].checked) { + context.isChecked = "t"; + } + break; + } + } + } + } + var param = index + "|" + data.lastIndex + "|" + databound + context.isChecked + parentIsLast + "|" + + text.length + "|" + text + datapath.length + "|" + datapath + path; + TreeView_PopulateNodeDoCallBack(context, param); +} +function TreeView_ProcessNodeData(result, context) { + var treeNode = context.node; + if (result.length > 0) { + var ci = result.indexOf("|", 0); + context.data.lastIndex = result.substring(0, ci); + ci = result.indexOf("|", ci + 1); + var newExpandState = result.substring(context.data.lastIndex.length + 1, ci); + context.data.expandState.value += newExpandState; + var chunk = result.substr(ci + 1); + var newChildren, table; + if (__nonMSDOMBrowser) { + var newDiv = document.createElement("div"); + newDiv.innerHTML = chunk; + table = WebForm_GetParentByTagName(treeNode, "TABLE"); + newChildren = null; + if ((typeof(table.nextSibling) == "undefined") || (table.nextSibling == null)) { + table.parentNode.insertBefore(newDiv.firstChild, table.nextSibling); + newChildren = table.previousSibling; + } + else { + table = table.nextSibling; + table.parentNode.insertBefore(newDiv.firstChild, table); + newChildren = table.previousSibling; + } + newChildren = document.getElementById(treeNode.id + "Nodes"); + } + else { + table = WebForm_GetParentByTagName(treeNode, "TABLE"); + table.insertAdjacentHTML("afterEnd", chunk); + newChildren = document.all[treeNode.id + "Nodes"]; + } + if ((typeof(newChildren) != "undefined") && (newChildren != null)) { + TreeView_ToggleNode(context.data, context.index, treeNode, context.lineType, newChildren); + treeNode.href = document.getElementById ? + "javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + ",document.getElementById('" + treeNode.id + "'),'" + context.lineType + "',document.getElementById('" + newChildren.id + "'))" : + "javascript:TreeView_ToggleNode(" + context.data.name + "," + context.index + "," + treeNode.id + ",'" + context.lineType + "'," + newChildren.id + ")"; + if ((typeof(context.selectNode) != "undefined") && (context.selectNode != null) && context.selectNode.href && + (context.selectNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) { + context.selectNode.href = treeNode.href; + } + if ((typeof(context.selectImageNode) != "undefined") && (context.selectImageNode != null) && context.selectNode.href && + (context.selectImageNode.href.indexOf("javascript:TreeView_PopulateNode", 0) == 0)) { + context.selectImageNode.href = treeNode.href; + } + } + context.data.populateLog.value += context.index + ","; + } + else { + var img = treeNode.childNodes ? treeNode.childNodes[0] : treeNode.children[0]; + if ((typeof(img) != "undefined") && (img != null)) { + var lineType = context.lineType; + if (lineType == "l") { + img.src = context.data.images[13]; + } + else if (lineType == "t") { + img.src = context.data.images[10]; + } + else if (lineType == "-") { + img.src = context.data.images[16]; + } + else { + img.src = context.data.images[3]; + } + var pe; + if (__nonMSDOMBrowser) { + pe = treeNode.parentNode; + pe.insertBefore(img, treeNode); + pe.removeChild(treeNode); + } + else { + pe = treeNode.parentElement; + treeNode.style.visibility="hidden"; + treeNode.style.display="none"; + pe.insertAdjacentElement("afterBegin", img); + } + } + } +} +function TreeView_SelectNode(data, node, nodeId) { + if (!data) { + return; + } + if ((typeof(data.selectedClass) != "undefined") && (data.selectedClass != null)) { + var id = data.selectedNodeID.value; + if (id.length > 0) { + var selectedNode = document.getElementById(id); + if ((typeof(selectedNode) != "undefined") && (selectedNode != null)) { + WebForm_RemoveClassName(selectedNode, data.selectedHyperLinkClass); + selectedNode = WebForm_GetParentByTagName(selectedNode, "TD"); + WebForm_RemoveClassName(selectedNode, data.selectedClass); + } + } + WebForm_AppendToClassName(node, data.selectedHyperLinkClass); + node = WebForm_GetParentByTagName(node, "TD"); + WebForm_AppendToClassName(node, data.selectedClass) + } + data.selectedNodeID.value = nodeId; +} +function TreeView_ToggleNode(data, index, node, lineType, children) { + if (!data) { + return; + } + var img = node.childNodes[0]; + var newExpandState; + try { + if (children.style.display == "none") { + children.style.display = "block"; + newExpandState = "e"; + if ((typeof(img) != "undefined") && (img != null)) { + if (lineType == "l") { + img.src = data.images[15]; + } + else if (lineType == "t") { + img.src = data.images[12]; + } + else if (lineType == "-") { + img.src = data.images[18]; + } + else { + img.src = data.images[5]; + } + img.alt = data.collapseToolTip.replace(/\{0\}/, TreeView_GetNodeText(node)); + } + } + else { + children.style.display = "none"; + newExpandState = "c"; + if ((typeof(img) != "undefined") && (img != null)) { + if (lineType == "l") { + img.src = data.images[14]; + } + else if (lineType == "t") { + img.src = data.images[11]; + } + else if (lineType == "-") { + img.src = data.images[17]; + } + else { + img.src = data.images[4]; + } + img.alt = data.expandToolTip.replace(/\{0\}/, TreeView_GetNodeText(node)); + } + } + } + catch(e) {} + data.expandState.value = data.expandState.value.substring(0, index) + newExpandState + data.expandState.value.slice(index + 1); +} +function TreeView_UnhoverNode(node) { + if (!node.hoverClass) { + return; + } + WebForm_RemoveClassName(node, node.hoverClass); + if (__nonMSDOMBrowser) { + node = node.childNodes[node.childNodes.length - 1]; + } + else { + node = node.children[node.children.length - 1]; + } + WebForm_RemoveClassName(node, node.hoverHyperLinkClass); +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebForms.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebForms.js new file mode 100644 index 000000000..d754c7899 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebForms.js @@ -0,0 +1,567 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebForms.js +function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit) { + this.eventTarget = eventTarget; + this.eventArgument = eventArgument; + this.validation = validation; + this.validationGroup = validationGroup; + this.actionUrl = actionUrl; + this.trackFocus = trackFocus; + this.clientSubmit = clientSubmit; +} +function WebForm_DoPostBackWithOptions(options) { + var validationResult = true; + if (options.validation) { + if (typeof(Page_ClientValidate) == 'function') { + validationResult = Page_ClientValidate(options.validationGroup); + } + } + if (validationResult) { + if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) { + theForm.action = options.actionUrl; + } + if (options.trackFocus) { + var lastFocus = theForm.elements["__LASTFOCUS"]; + if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) { + if (typeof(document.activeElement) == "undefined") { + lastFocus.value = options.eventTarget; + } + else { + var active = document.activeElement; + if ((typeof(active) != "undefined") && (active != null)) { + if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) { + lastFocus.value = active.id; + } + else if (typeof(active.name) != "undefined") { + lastFocus.value = active.name; + } + } + } + } + } + } + if (options.clientSubmit) { + __doPostBack(options.eventTarget, options.eventArgument); + } +} +var __pendingCallbacks = new Array(); +var __synchronousCallBackIndex = -1; +function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) { + var postData = __theFormPostData + + "__CALLBACKID=" + WebForm_EncodeCallback(eventTarget) + + "&__CALLBACKPARAM=" + WebForm_EncodeCallback(eventArgument); + if (theForm["__EVENTVALIDATION"]) { + postData += "&__EVENTVALIDATION=" + WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value); + } + var xmlRequest,e; + try { + xmlRequest = new XMLHttpRequest(); + } + catch(e) { + try { + xmlRequest = new ActiveXObject("Microsoft.XMLHTTP"); + } + catch(e) { + } + } + var setRequestHeaderMethodExists = true; + try { + setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader); + } + catch(e) {} + var callback = new Object(); + callback.eventCallback = eventCallback; + callback.context = context; + callback.errorCallback = errorCallback; + callback.async = useAsync; + var callbackIndex = WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback); + if (!useAsync) { + if (__synchronousCallBackIndex != -1) { + __pendingCallbacks[__synchronousCallBackIndex] = null; + } + __synchronousCallBackIndex = callbackIndex; + } + if (setRequestHeaderMethodExists) { + xmlRequest.onreadystatechange = WebForm_CallbackComplete; + callback.xmlRequest = xmlRequest; + // e.g. http: + var action = theForm.action || document.location.pathname, fragmentIndex = action.indexOf('#'); + if (fragmentIndex !== -1) { + action = action.substr(0, fragmentIndex); + } + if (!__nonMSDOMBrowser) { + var queryIndex = action.indexOf('?'); + if (queryIndex !== -1) { + var path = action.substr(0, queryIndex); + if (path.indexOf("%") === -1) { + action = encodeURI(path) + action.substr(queryIndex); + } + } + else if (action.indexOf("%") === -1) { + action = encodeURI(action); + } + } + xmlRequest.open("POST", action, true); + xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); + xmlRequest.send(postData); + return; + } + callback.xmlRequest = new Object(); + var callbackFrameID = "__CALLBACKFRAME" + callbackIndex; + var xmlRequestFrame = document.frames[callbackFrameID]; + if (!xmlRequestFrame) { + xmlRequestFrame = document.createElement("IFRAME"); + xmlRequestFrame.width = "1"; + xmlRequestFrame.height = "1"; + xmlRequestFrame.frameBorder = "0"; + xmlRequestFrame.id = callbackFrameID; + xmlRequestFrame.name = callbackFrameID; + xmlRequestFrame.style.position = "absolute"; + xmlRequestFrame.style.top = "-100px" + xmlRequestFrame.style.left = "-100px"; + try { + if (callBackFrameUrl) { + xmlRequestFrame.src = callBackFrameUrl; + } + } + catch(e) {} + document.body.appendChild(xmlRequestFrame); + } + var interval = window.setInterval(function() { + xmlRequestFrame = document.frames[callbackFrameID]; + if (xmlRequestFrame && xmlRequestFrame.document) { + window.clearInterval(interval); + xmlRequestFrame.document.write(""); + xmlRequestFrame.document.close(); + xmlRequestFrame.document.write('
'); + xmlRequestFrame.document.close(); + xmlRequestFrame.document.forms[0].action = theForm.action; + var count = __theFormPostCollection.length; + var element; + for (var i = 0; i < count; i++) { + element = __theFormPostCollection[i]; + if (element) { + var fieldElement = xmlRequestFrame.document.createElement("INPUT"); + fieldElement.type = "hidden"; + fieldElement.name = element.name; + fieldElement.value = element.value; + xmlRequestFrame.document.forms[0].appendChild(fieldElement); + } + } + var callbackIdFieldElement = xmlRequestFrame.document.createElement("INPUT"); + callbackIdFieldElement.type = "hidden"; + callbackIdFieldElement.name = "__CALLBACKID"; + callbackIdFieldElement.value = eventTarget; + xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement); + var callbackParamFieldElement = xmlRequestFrame.document.createElement("INPUT"); + callbackParamFieldElement.type = "hidden"; + callbackParamFieldElement.name = "__CALLBACKPARAM"; + callbackParamFieldElement.value = eventArgument; + xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement); + if (theForm["__EVENTVALIDATION"]) { + var callbackValidationFieldElement = xmlRequestFrame.document.createElement("INPUT"); + callbackValidationFieldElement.type = "hidden"; + callbackValidationFieldElement.name = "__EVENTVALIDATION"; + callbackValidationFieldElement.value = theForm["__EVENTVALIDATION"].value; + xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElement); + } + var callbackIndexFieldElement = xmlRequestFrame.document.createElement("INPUT"); + callbackIndexFieldElement.type = "hidden"; + callbackIndexFieldElement.name = "__CALLBACKINDEX"; + callbackIndexFieldElement.value = callbackIndex; + xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement); + xmlRequestFrame.document.forms[0].submit(); + } + }, 10); +} +function WebForm_CallbackComplete() { + for (var i = 0; i < __pendingCallbacks.length; i++) { + callbackObject = __pendingCallbacks[i]; + if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) { + if (!__pendingCallbacks[i].async) { + __synchronousCallBackIndex = -1; + } + __pendingCallbacks[i] = null; + var callbackFrameID = "__CALLBACKFRAME" + i; + var xmlRequestFrame = document.getElementById(callbackFrameID); + if (xmlRequestFrame) { + xmlRequestFrame.parentNode.removeChild(xmlRequestFrame); + } + WebForm_ExecuteCallback(callbackObject); + } + } +} +function WebForm_ExecuteCallback(callbackObject) { + var response = callbackObject.xmlRequest.responseText; + if (response.charAt(0) == "s") { + if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) { + callbackObject.eventCallback(response.substring(1), callbackObject.context); + } + } + else if (response.charAt(0) == "e") { + if ((typeof(callbackObject.errorCallback) != "undefined") && (callbackObject.errorCallback != null)) { + callbackObject.errorCallback(response.substring(1), callbackObject.context); + } + } + else { + var separatorIndex = response.indexOf("|"); + if (separatorIndex != -1) { + var validationFieldLength = parseInt(response.substring(0, separatorIndex)); + if (!isNaN(validationFieldLength)) { + var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1); + if (validationField != "") { + var validationFieldElement = theForm["__EVENTVALIDATION"]; + if (!validationFieldElement) { + validationFieldElement = document.createElement("INPUT"); + validationFieldElement.type = "hidden"; + validationFieldElement.name = "__EVENTVALIDATION"; + theForm.appendChild(validationFieldElement); + } + validationFieldElement.value = validationField; + } + if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) { + callbackObject.eventCallback(response.substring(separatorIndex + validationFieldLength + 1), callbackObject.context); + } + } + } + } +} +function WebForm_FillFirstAvailableSlot(array, element) { + var i; + for (i = 0; i < array.length; i++) { + if (!array[i]) break; + } + array[i] = element; + return i; +} +var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1); +var __theFormPostData = ""; +var __theFormPostCollection = new Array(); +var __callbackTextTypes = /^(text|password|hidden|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i; +function WebForm_InitCallback() { + var formElements = theForm.elements, + count = formElements.length, + element; + for (var i = 0; i < count; i++) { + element = formElements[i]; + var tagName = element.tagName.toLowerCase(); + if (tagName == "input") { + var type = element.type; + if ((__callbackTextTypes.test(type) || ((type == "checkbox" || type == "radio") && element.checked)) + && (element.id != "__EVENTVALIDATION")) { + WebForm_InitCallbackAddField(element.name, element.value); + } + } + else if (tagName == "select") { + var selectCount = element.options.length; + for (var j = 0; j < selectCount; j++) { + var selectChild = element.options[j]; + if (selectChild.selected == true) { + WebForm_InitCallbackAddField(element.name, element.value); + } + } + } + else if (tagName == "textarea") { + WebForm_InitCallbackAddField(element.name, element.value); + } + } +} +function WebForm_InitCallbackAddField(name, value) { + var nameValue = new Object(); + nameValue.name = name; + nameValue.value = value; + __theFormPostCollection[__theFormPostCollection.length] = nameValue; + __theFormPostData += WebForm_EncodeCallback(name) + "=" + WebForm_EncodeCallback(value) + "&"; +} +function WebForm_EncodeCallback(parameter) { + if (encodeURIComponent) { + return encodeURIComponent(parameter); + } + else { + return escape(parameter); + } +} +var __disabledControlArray = new Array(); +function WebForm_ReEnableControls() { + if (typeof(__enabledControlArray) == 'undefined') { + return false; + } + var disabledIndex = 0; + for (var i = 0; i < __enabledControlArray.length; i++) { + var c; + if (__nonMSDOMBrowser) { + c = document.getElementById(__enabledControlArray[i]); + } + else { + c = document.all[__enabledControlArray[i]]; + } + if ((typeof(c) != "undefined") && (c != null) && (c.disabled == true)) { + c.disabled = false; + __disabledControlArray[disabledIndex++] = c; + } + } + setTimeout("WebForm_ReDisableControls()", 0); + return true; +} +function WebForm_ReDisableControls() { + for (var i = 0; i < __disabledControlArray.length; i++) { + __disabledControlArray[i].disabled = true; + } +} +function WebForm_SimulateClick(element, event) { + var clickEvent; + if (element) { + if (element.click) { + element.click(); + } else { + clickEvent = document.createEvent("MouseEvents"); + clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + if (!element.dispatchEvent(clickEvent)) { + return true; + } + } + event.cancelBubble = true; + if (event.stopPropagation) { + event.stopPropagation(); + } + return false; + } + return true; +} +function WebForm_FireDefaultButton(event, target) { + if (event.keyCode == 13) { + var src = event.srcElement || event.target; + if (src && + ((src.tagName.toLowerCase() == "input") && + (src.type.toLowerCase() == "submit" || src.type.toLowerCase() == "button")) || + ((src.tagName.toLowerCase() == "a") && + (src.href != null) && (src.href != "")) || + (src.tagName.toLowerCase() == "textarea")) { + return true; + } + var defaultButton; + if (__nonMSDOMBrowser) { + defaultButton = document.getElementById(target); + } + else { + defaultButton = document.all[target]; + } + if (defaultButton) { + return WebForm_SimulateClick(defaultButton, event); + } + } + return true; +} +function WebForm_GetScrollX() { + if (__nonMSDOMBrowser) { + return window.pageXOffset; + } + else { + if (document.documentElement && document.documentElement.scrollLeft) { + return document.documentElement.scrollLeft; + } + else if (document.body) { + return document.body.scrollLeft; + } + } + return 0; +} +function WebForm_GetScrollY() { + if (__nonMSDOMBrowser) { + return window.pageYOffset; + } + else { + if (document.documentElement && document.documentElement.scrollTop) { + return document.documentElement.scrollTop; + } + else if (document.body) { + return document.body.scrollTop; + } + } + return 0; +} +function WebForm_SaveScrollPositionSubmit() { + if (__nonMSDOMBrowser) { + theForm.elements['__SCROLLPOSITIONY'].value = window.pageYOffset; + theForm.elements['__SCROLLPOSITIONX'].value = window.pageXOffset; + } + else { + theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX(); + theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY(); + } + if ((typeof(this.oldSubmit) != "undefined") && (this.oldSubmit != null)) { + return this.oldSubmit(); + } + return true; +} +function WebForm_SaveScrollPositionOnSubmit() { + theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX(); + theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY(); + if ((typeof(this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) { + return this.oldOnSubmit(); + } + return true; +} +function WebForm_RestoreScrollPosition() { + if (__nonMSDOMBrowser) { + window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value); + } + else { + window.scrollTo(theForm.__SCROLLPOSITIONX.value, theForm.__SCROLLPOSITIONY.value); + } + if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) { + return theForm.oldOnLoad(); + } + return true; +} +function WebForm_TextBoxKeyHandler(event) { + if (event.keyCode == 13) { + var target; + if (__nonMSDOMBrowser) { + target = event.target; + } + else { + target = event.srcElement; + } + if ((typeof(target) != "undefined") && (target != null)) { + if (typeof(target.onchange) != "undefined") { + target.onchange(); + event.cancelBubble = true; + if (event.stopPropagation) event.stopPropagation(); + return false; + } + } + } + return true; +} +function WebForm_TrimString(value) { + return value.replace(/^\s+|\s+$/g, '') +} +function WebForm_AppendToClassName(element, className) { + var currentClassName = ' ' + WebForm_TrimString(element.className) + ' '; + className = WebForm_TrimString(className); + var index = currentClassName.indexOf(' ' + className + ' '); + if (index === -1) { + element.className = (element.className === '') ? className : element.className + ' ' + className; + } +} +function WebForm_RemoveClassName(element, className) { + var currentClassName = ' ' + WebForm_TrimString(element.className) + ' '; + className = WebForm_TrimString(className); + var index = currentClassName.indexOf(' ' + className + ' '); + if (index >= 0) { + element.className = WebForm_TrimString(currentClassName.substring(0, index) + ' ' + + currentClassName.substring(index + className.length + 1, currentClassName.length)); + } +} +function WebForm_GetElementById(elementId) { + if (document.getElementById) { + return document.getElementById(elementId); + } + else if (document.all) { + return document.all[elementId]; + } + else return null; +} +function WebForm_GetElementByTagName(element, tagName) { + var elements = WebForm_GetElementsByTagName(element, tagName); + if (elements && elements.length > 0) { + return elements[0]; + } + else return null; +} +function WebForm_GetElementsByTagName(element, tagName) { + if (element && tagName) { + if (element.getElementsByTagName) { + return element.getElementsByTagName(tagName); + } + if (element.all && element.all.tags) { + return element.all.tags(tagName); + } + } + return null; +} +function WebForm_GetElementDir(element) { + if (element) { + if (element.dir) { + return element.dir; + } + return WebForm_GetElementDir(element.parentNode); + } + return "ltr"; +} +function WebForm_GetElementPosition(element) { + var result = new Object(); + result.x = 0; + result.y = 0; + result.width = 0; + result.height = 0; + if (element.offsetParent) { + result.x = element.offsetLeft; + result.y = element.offsetTop; + var parent = element.offsetParent; + while (parent) { + result.x += parent.offsetLeft; + result.y += parent.offsetTop; + var parentTagName = parent.tagName.toLowerCase(); + if (parentTagName != "table" && + parentTagName != "body" && + parentTagName != "html" && + parentTagName != "div" && + parent.clientTop && + parent.clientLeft) { + result.x += parent.clientLeft; + result.y += parent.clientTop; + } + parent = parent.offsetParent; + } + } + else if (element.left && element.top) { + result.x = element.left; + result.y = element.top; + } + else { + if (element.x) { + result.x = element.x; + } + if (element.y) { + result.y = element.y; + } + } + if (element.offsetWidth && element.offsetHeight) { + result.width = element.offsetWidth; + result.height = element.offsetHeight; + } + else if (element.style && element.style.pixelWidth && element.style.pixelHeight) { + result.width = element.style.pixelWidth; + result.height = element.style.pixelHeight; + } + return result; +} +function WebForm_GetParentByTagName(element, tagName) { + var parent = element.parentNode; + var upperTagName = tagName.toUpperCase(); + while (parent && (parent.tagName.toUpperCase() != upperTagName)) { + parent = parent.parentNode ? parent.parentNode : parent.parentElement; + } + return parent; +} +function WebForm_SetElementHeight(element, height) { + if (element && element.style) { + element.style.height = height + "px"; + } +} +function WebForm_SetElementWidth(element, width) { + if (element && element.style) { + element.style.width = width + "px"; + } +} +function WebForm_SetElementX(element, x) { + if (element && element.style) { + element.style.left = x + "px"; + } +} +function WebForm_SetElementY(element, y) { + if (element && element.style) { + element.style.top = y + "px"; + } +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebParts.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebParts.js new file mode 100644 index 000000000..e4bbbd131 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebParts.js @@ -0,0 +1,647 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebParts.js +var __wpm = null; +function Point(x, y) { + this.x = x; + this.y = y; +} +function __wpTranslateOffset(x, y, offsetElement, relativeToElement, includeScroll) { + while ((typeof(offsetElement) != "undefined") && (offsetElement != null) && (offsetElement != relativeToElement)) { + x += offsetElement.offsetLeft; + y += offsetElement.offsetTop; + var tagName = offsetElement.tagName; + if ((tagName != "TABLE") && (tagName != "BODY")) { + x += offsetElement.clientLeft; + y += offsetElement.clientTop; + } + if (includeScroll && (tagName != "BODY")) { + x -= offsetElement.scrollLeft; + y -= offsetElement.scrollTop; + } + offsetElement = offsetElement.offsetParent; + } + return new Point(x, y); +} +function __wpGetPageEventLocation(event, includeScroll) { + if ((typeof(event) == "undefined") || (event == null)) { + event = window.event; + } + return __wpTranslateOffset(event.offsetX, event.offsetY, event.srcElement, null, includeScroll); +} +function __wpClearSelection() { + document.selection.empty(); +} +function WebPart(webPartElement, webPartTitleElement, zone, zoneIndex, allowZoneChange) { + this.webPartElement = webPartElement; + this.allowZoneChange = allowZoneChange; + this.zone = zone; + this.zoneIndex = zoneIndex; + this.title = ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) ? + webPartTitleElement.innerText : ""; + webPartElement.__webPart = this; + if ((typeof(webPartTitleElement) != "undefined") && (webPartTitleElement != null)) { + webPartTitleElement.style.cursor = "move"; + webPartTitleElement.attachEvent("onmousedown", WebPart_OnMouseDown); + webPartElement.attachEvent("ondragstart", WebPart_OnDragStart); + webPartElement.attachEvent("ondrag", WebPart_OnDrag); + webPartElement.attachEvent("ondragend", WebPart_OnDragEnd); + } + this.UpdatePosition = WebPart_UpdatePosition; + this.Dispose = WebPart_Dispose; +} +function WebPart_Dispose() { + this.webPartElement.__webPart = null +} +function WebPart_OnMouseDown() { + var currentEvent = window.event; + var draggedWebPart = WebPart_GetParentWebPartElement(currentEvent.srcElement); + if ((typeof(draggedWebPart) == "undefined") || (draggedWebPart == null)) { + return; + } + document.selection.empty(); + try { + __wpm.draggedWebPart = draggedWebPart; + __wpm.DragDrop(); + } + catch (e) { + __wpm.draggedWebPart = draggedWebPart; + window.setTimeout("__wpm.DragDrop()", 0); + } + currentEvent.returnValue = false; + currentEvent.cancelBubble = true; +} +function WebPart_OnDragStart() { + var currentEvent = window.event; + var webPartElement = currentEvent.srcElement; + if ((typeof(webPartElement.__webPart) == "undefined") || (webPartElement.__webPart == null)) { + currentEvent.returnValue = false; + currentEvent.cancelBubble = true; + return; + } + var dataObject = currentEvent.dataTransfer; + dataObject.effectAllowed = __wpm.InitiateWebPartDragDrop(webPartElement); +} +function WebPart_OnDrag() { + __wpm.ContinueWebPartDragDrop(); +} +function WebPart_OnDragEnd() { + __wpm.CompleteWebPartDragDrop(); +} +function WebPart_GetParentWebPartElement(containedElement) { + var elem = containedElement; + while ((typeof(elem.__webPart) == "undefined") || (elem.__webPart == null)) { + elem = elem.parentElement; + if ((typeof(elem) == "undefined") || (elem == null)) { + break; + } + } + return elem; +} +function WebPart_UpdatePosition() { + var location = __wpTranslateOffset(0, 0, this.webPartElement, null, false); + this.middleX = location.x + this.webPartElement.offsetWidth / 2; + this.middleY = location.y + this.webPartElement.offsetHeight / 2; +} +function Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor) { + var webPartTable = null; + if (zoneElement.rows.length == 1) { + webPartTableContainer = zoneElement.rows[0].cells[0]; + } + else { + webPartTableContainer = zoneElement.rows[1].cells[0]; + } + var i; + for (i = 0; i < webPartTableContainer.childNodes.length; i++) { + var node = webPartTableContainer.childNodes[i]; + if (node.tagName == "TABLE") { + webPartTable = node; + break; + } + } + this.zoneElement = zoneElement; + this.zoneIndex = zoneIndex; + this.webParts = new Array(); + this.uniqueID = uniqueID; + this.isVertical = isVertical; + this.allowLayoutChange = allowLayoutChange; + this.allowDrop = false; + this.webPartTable = webPartTable; + this.highlightColor = highlightColor; + this.savedBorderColor = (webPartTable != null) ? webPartTable.style.borderColor : null; + this.dropCueElements = new Array(); + if (webPartTable != null) { + if (isVertical) { + for (i = 0; i < webPartTable.rows.length; i += 2) { + this.dropCueElements[i / 2] = webPartTable.rows[i].cells[0].childNodes[0]; + } + } + else { + for (i = 0; i < webPartTable.rows[0].cells.length; i += 2) { + this.dropCueElements[i / 2] = webPartTable.rows[0].cells[i].childNodes[0]; + } + } + } + this.AddWebPart = Zone_AddWebPart; + this.GetWebPartIndex = Zone_GetWebPartIndex; + this.ToggleDropCues = Zone_ToggleDropCues; + this.UpdatePosition = Zone_UpdatePosition; + this.Dispose = Zone_Dispose; + webPartTable.__zone = this; + webPartTable.attachEvent("ondragenter", Zone_OnDragEnter); + webPartTable.attachEvent("ondrop", Zone_OnDrop); +} +function Zone_Dispose() { + for (var i = 0; i < this.webParts.length; i++) { + this.webParts[i].Dispose(); + } + this.webPartTable.__zone = null; +} +function Zone_OnDragEnter() { + var handled = __wpm.ProcessWebPartDragEnter(); + var currentEvent = window.event; + if (handled) { + currentEvent.returnValue = false; + currentEvent.cancelBubble = true; + } +} +function Zone_OnDragOver() { + var handled = __wpm.ProcessWebPartDragOver(); + var currentEvent = window.event; + if (handled) { + currentEvent.returnValue = false; + currentEvent.cancelBubble = true; + } +} +function Zone_OnDrop() { + var handled = __wpm.ProcessWebPartDrop(); + var currentEvent = window.event; + if (handled) { + currentEvent.returnValue = false; + currentEvent.cancelBubble = true; + } +} +function Zone_GetParentZoneElement(containedElement) { + var elem = containedElement; + while ((typeof(elem.__zone) == "undefined") || (elem.__zone == null)) { + elem = elem.parentElement; + if ((typeof(elem) == "undefined") || (elem == null)) { + break; + } + } + return elem; +} +function Zone_AddWebPart(webPartElement, webPartTitleElement, allowZoneChange) { + var webPart = null; + var zoneIndex = this.webParts.length; + if (this.allowLayoutChange && __wpm.IsDragDropEnabled()) { + webPart = new WebPart(webPartElement, webPartTitleElement, this, zoneIndex, allowZoneChange); + } + else { + webPart = new WebPart(webPartElement, null, this, zoneIndex, allowZoneChange); + } + this.webParts[zoneIndex] = webPart; + return webPart; +} +function Zone_ToggleDropCues(show, index, ignoreOutline) { + if (ignoreOutline == false) { + this.webPartTable.style.borderColor = (show ? this.highlightColor : this.savedBorderColor); + } + if (index == -1) { + return; + } + var dropCue = this.dropCueElements[index]; + if (dropCue && dropCue.style) { + if (dropCue.style.height == "100%" && !dropCue.webPartZoneHorizontalCueResized) { + var oldParentHeight = dropCue.parentElement.clientHeight; + var realHeight = oldParentHeight - 10; + dropCue.style.height = realHeight + "px"; + var dropCueVerticalBar = dropCue.getElementsByTagName("DIV")[0]; + if (dropCueVerticalBar && dropCueVerticalBar.style) { + dropCueVerticalBar.style.height = dropCue.style.height; + var heightDiff = (dropCue.parentElement.clientHeight - oldParentHeight); + if (heightDiff) { + dropCue.style.height = (realHeight - heightDiff) + "px"; + dropCueVerticalBar.style.height = dropCue.style.height; + } + } + dropCue.webPartZoneHorizontalCueResized = true; + } + dropCue.style.visibility = (show ? "visible" : "hidden"); + } +} +function Zone_GetWebPartIndex(location) { + var x = location.x; + var y = location.y; + if ((x < this.webPartTableLeft) || (x > this.webPartTableRight) || + (y < this.webPartTableTop) || (y > this.webPartTableBottom)) { + return -1; + } + var vertical = this.isVertical; + var webParts = this.webParts; + var webPartsCount = webParts.length; + for (var i = 0; i < webPartsCount; i++) { + var webPart = webParts[i]; + if (vertical) { + if (y < webPart.middleY) { + return i; + } + } + else { + if (x < webPart.middleX) { + return i; + } + } + } + return webPartsCount; +} +function Zone_UpdatePosition() { + var topLeft = __wpTranslateOffset(0, 0, this.webPartTable, null, false); + this.webPartTableLeft = topLeft.x; + this.webPartTableTop = topLeft.y; + this.webPartTableRight = (this.webPartTable != null) ? topLeft.x + this.webPartTable.offsetWidth : topLeft.x; + this.webPartTableBottom = (this.webPartTable != null) ? topLeft.y + this.webPartTable.offsetHeight : topLeft.y; + for (var i = 0; i < this.webParts.length; i++) { + this.webParts[i].UpdatePosition(); + } +} +function WebPartDragState(webPartElement, effect) { + this.webPartElement = webPartElement; + this.dropZoneElement = null; + this.dropIndex = -1; + this.effect = effect; + this.dropped = false; +} +function WebPartMenu(menuLabelElement, menuDropDownElement, menuElement) { + this.menuLabelElement = menuLabelElement; + this.menuDropDownElement = menuDropDownElement; + this.menuElement = menuElement; + this.menuLabelElement.__menu = this; + this.menuLabelElement.attachEvent('onclick', WebPartMenu_OnClick); + this.menuLabelElement.attachEvent('onkeypress', WebPartMenu_OnKeyPress); + this.menuLabelElement.attachEvent('onmouseenter', WebPartMenu_OnMouseEnter); + this.menuLabelElement.attachEvent('onmouseleave', WebPartMenu_OnMouseLeave); + if ((typeof(this.menuDropDownElement) != "undefined") && (this.menuDropDownElement != null)) { + this.menuDropDownElement.__menu = this; + } + this.menuItemStyle = ""; + this.menuItemHoverStyle = ""; + this.popup = null; + this.hoverClassName = ""; + this.hoverColor = ""; + this.oldColor = this.menuLabelElement.style.color; + this.oldTextDecoration = this.menuLabelElement.style.textDecoration; + this.oldClassName = this.menuLabelElement.className; + this.Show = WebPartMenu_Show; + this.Hide = WebPartMenu_Hide; + this.Hover = WebPartMenu_Hover; + this.Unhover = WebPartMenu_Unhover; + this.Dispose = WebPartMenu_Dispose; + var menu = this; + this.disposeDelegate = function() { menu.Dispose(); }; + window.attachEvent('onunload', this.disposeDelegate); +} +function WebPartMenu_Dispose() { + this.menuLabelElement.__menu = null; + this.menuDropDownElement.__menu = null; + window.detachEvent('onunload', this.disposeDelegate); +} +function WebPartMenu_Show() { + if ((typeof(__wpm.menu) != "undefined") && (__wpm.menu != null)) { + __wpm.menu.Hide(); + } + var menuHTML = + "" + + this.menuElement.innerHTML + + ""; + var width = 16; + var height = 16; + this.popup = window.createPopup(); + __wpm.menu = this; + var popupDocument = this.popup.document; + popupDocument.write(menuHTML); + this.popup.show(0, 0, width, height); + var popupBody = popupDocument.body; + width = popupBody.scrollWidth; + height = popupBody.scrollHeight; + if (width < this.menuLabelElement.offsetWidth) { + width = this.menuLabelElement.offsetWidth + 16; + } + if (this.menuElement.innerHTML.indexOf("progid:DXImageTransform.Microsoft.Shadow") != -1) { + popupBody.style.paddingRight = "4px"; + } + popupBody.__wpm = __wpm; + popupBody.__wpmDeleteWarning = __wpmDeleteWarning; + popupBody.__wpmCloseProviderWarning = __wpmCloseProviderWarning; + popupBody.popup = this.popup; + this.popup.hide(); + this.popup.show(0, this.menuLabelElement.offsetHeight, width, height, this.menuLabelElement); +} +function WebPartMenu_Hide() { + if (__wpm.menu == this) { + __wpm.menu = null; + if ((typeof(this.popup) != "undefined") && (this.popup != null)) { + this.popup.hide(); + this.popup = null; + } + } +} +function WebPartMenu_Hover() { + if (this.labelHoverClassName != "") { + this.menuLabelElement.className = this.menuLabelElement.className + " " + this.labelHoverClassName; + } + if (this.labelHoverColor != "") { + this.menuLabelElement.style.color = this.labelHoverColor; + } +} +function WebPartMenu_Unhover() { + if (this.labelHoverClassName != "") { + this.menuLabelElement.style.textDecoration = this.oldTextDecoration; + this.menuLabelElement.className = this.oldClassName; + } + if (this.labelHoverColor != "") { + this.menuLabelElement.style.color = this.oldColor; + } +} +function WebPartMenu_OnClick() { + var menu = window.event.srcElement.__menu; + if ((typeof(menu) != "undefined") && (menu != null)) { + window.event.returnValue = false; + window.event.cancelBubble = true; + menu.Show(); + } +} +function WebPartMenu_OnKeyPress() { + if (window.event.keyCode == 13) { + var menu = window.event.srcElement.__menu; + if ((typeof(menu) != "undefined") && (menu != null)) { + window.event.returnValue = false; + window.event.cancelBubble = true; + menu.Show(); + } + } +} +function WebPartMenu_OnMouseEnter() { + var menu = window.event.srcElement.__menu; + if ((typeof(menu) != "undefined") && (menu != null)) { + menu.Hover(); + } +} +function WebPartMenu_OnMouseLeave() { + var menu = window.event.srcElement.__menu; + if ((typeof(menu) != "undefined") && (menu != null)) { + menu.Unhover(); + } +} +function WebPartManager() { + this.overlayContainerElement = null; + this.zones = new Array(); + this.dragState = null; + this.menu = null; + this.draggedWebPart = null; + this.AddZone = WebPartManager_AddZone; + this.IsDragDropEnabled = WebPartManager_IsDragDropEnabled; + this.DragDrop = WebPartManager_DragDrop; + this.InitiateWebPartDragDrop = WebPartManager_InitiateWebPartDragDrop; + this.CompleteWebPartDragDrop = WebPartManager_CompleteWebPartDragDrop; + this.ContinueWebPartDragDrop = WebPartManager_ContinueWebPartDragDrop; + this.ProcessWebPartDragEnter = WebPartManager_ProcessWebPartDragEnter; + this.ProcessWebPartDragOver = WebPartManager_ProcessWebPartDragOver; + this.ProcessWebPartDrop = WebPartManager_ProcessWebPartDrop; + this.ShowHelp = WebPartManager_ShowHelp; + this.ExportWebPart = WebPartManager_ExportWebPart; + this.Execute = WebPartManager_Execute; + this.SubmitPage = WebPartManager_SubmitPage; + this.UpdatePositions = WebPartManager_UpdatePositions; + window.attachEvent("onunload", WebPartManager_Dispose); +} +function WebPartManager_Dispose() { + for (var i = 0; i < __wpm.zones.length; i++) { + __wpm.zones[i].Dispose(); + } + window.detachEvent("onunload", WebPartManager_Dispose); +} +function WebPartManager_AddZone(zoneElement, uniqueID, isVertical, allowLayoutChange, highlightColor) { + var zoneIndex = this.zones.length; + var zone = new Zone(zoneElement, zoneIndex, uniqueID, isVertical, allowLayoutChange, highlightColor); + this.zones[zoneIndex] = zone; + return zone; +} +function WebPartManager_IsDragDropEnabled() { + return ((typeof(this.overlayContainerElement) != "undefined") && (this.overlayContainerElement != null)); +} +function WebPartManager_DragDrop() { + if ((typeof(this.draggedWebPart) != "undefined") && (this.draggedWebPart != null)) { + var tempWebPart = this.draggedWebPart; + this.draggedWebPart = null; + tempWebPart.dragDrop(); + window.setTimeout("__wpClearSelection()", 0); + } +} +function WebPartManager_InitiateWebPartDragDrop(webPartElement) { + var webPart = webPartElement.__webPart; + this.UpdatePositions(); + this.dragState = new WebPartDragState(webPartElement, "move"); + var location = __wpGetPageEventLocation(window.event, true); + var overlayContainerElement = this.overlayContainerElement; + overlayContainerElement.style.left = location.x - webPartElement.offsetWidth / 2; + overlayContainerElement.style.top = location.y + 4 + (webPartElement.clientTop ? webPartElement.clientTop : 0); + overlayContainerElement.style.display = "block"; + overlayContainerElement.style.width = webPartElement.offsetWidth; + overlayContainerElement.style.height = webPartElement.offsetHeight; + overlayContainerElement.appendChild(webPartElement.cloneNode(true)); + if (webPart.allowZoneChange == false) { + webPart.zone.allowDrop = true; + } + else { + for (var i = 0; i < __wpm.zones.length; i++) { + var zone = __wpm.zones[i]; + if (zone.allowLayoutChange) { + zone.allowDrop = true; + } + } + } + document.body.attachEvent("ondragover", Zone_OnDragOver); + return "move"; +} +function WebPartManager_CompleteWebPartDragDrop() { + var dragState = this.dragState; + this.dragState = null; + if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) { + dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false); + } + document.body.detachEvent("ondragover", Zone_OnDragOver); + for (var i = 0; i < __wpm.zones.length; i++) { + __wpm.zones[i].allowDrop = false; + } + this.overlayContainerElement.removeChild(this.overlayContainerElement.firstChild); + this.overlayContainerElement.style.display = "none"; + if ((typeof(dragState) != "undefined") && (dragState != null) && (dragState.dropped == true)) { + var currentZone = dragState.webPartElement.__webPart.zone; + var currentZoneIndex = dragState.webPartElement.__webPart.zoneIndex; + if ((currentZone != dragState.dropZoneElement.__zone) || + ((currentZoneIndex != dragState.dropIndex) && + (currentZoneIndex != (dragState.dropIndex - 1)))) { + var eventTarget = dragState.dropZoneElement.__zone.uniqueID; + var eventArgument = "Drag:" + dragState.webPartElement.id + ":" + dragState.dropIndex; + this.SubmitPage(eventTarget, eventArgument); + } + } +} +function WebPartManager_ContinueWebPartDragDrop() { + var dragState = this.dragState; + if ((typeof(dragState) != "undefined") && (dragState != null)) { + var style = this.overlayContainerElement.style; + var location = __wpGetPageEventLocation(window.event, true); + style.left = location.x - dragState.webPartElement.offsetWidth / 2; + style.top = location.y + 4 + (dragState.webPartElement.clientTop ? dragState.webPartElement.clientTop : 0); + } +} +function WebPartManager_Execute(script) { + if (this.menu) { + this.menu.Hide(); + } + var scriptReference = new Function(script); + return (scriptReference() != false); +} +function WebPartManager_ProcessWebPartDragEnter() { + var dragState = __wpm.dragState; + if ((typeof(dragState) != "undefined") && (dragState != null)) { + var currentEvent = window.event; + var newDropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement); + if ((typeof(newDropZoneElement.__zone) == "undefined") || (newDropZoneElement.__zone == null) || + (newDropZoneElement.__zone.allowDrop == false)) { + newDropZoneElement = null; + } + var newDropIndex = -1; + if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) { + newDropIndex = newDropZoneElement.__zone.GetWebPartIndex(__wpGetPageEventLocation(currentEvent, false)); + if (newDropIndex == -1) { + newDropZoneElement = null; + } + } + if (dragState.dropZoneElement != newDropZoneElement) { + if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) { + dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false); + } + dragState.dropZoneElement = newDropZoneElement; + dragState.dropIndex = newDropIndex; + if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) { + newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false); + } + } + else if (dragState.dropIndex != newDropIndex) { + if (dragState.dropIndex != -1) { + dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, false); + } + dragState.dropIndex = newDropIndex; + if ((typeof(newDropZoneElement) != "undefined") && (newDropZoneElement != null)) { + newDropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false); + } + } + if ((typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) { + currentEvent.dataTransfer.effectAllowed = dragState.effect; + } + return true; + } + return false; +} +function WebPartManager_ProcessWebPartDragOver() { + var dragState = __wpm.dragState; + var currentEvent = window.event; + var handled = false; + if ((typeof(dragState) != "undefined") && (dragState != null) && + (typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) { + var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement); + if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) { + dropZoneElement = null; + } + if (((typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) && + (typeof(dragState.dropZoneElement) != "undefined") && (dragState.dropZoneElement != null)) { + dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false); + dragState.dropZoneElement = null; + dragState.dropIndex = -1; + } + else if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) { + var location = __wpGetPageEventLocation(currentEvent, false); + var newDropIndex = dropZoneElement.__zone.GetWebPartIndex(location); + if (newDropIndex == -1) { + dropZoneElement = null; + } + if (dragState.dropZoneElement != dropZoneElement) { + if ((dragState.dropIndex != -1) || (typeof(dropZoneElement) == "undefined") || (dropZoneElement == null)) { + dragState.dropZoneElement.__zone.ToggleDropCues(false, __wpm.dragState.dropIndex, false); + } + dragState.dropZoneElement = dropZoneElement; + } + else { + dragState.dropZoneElement.__zone.ToggleDropCues(false, dragState.dropIndex, true); + } + dragState.dropIndex = newDropIndex; + if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null)) { + dropZoneElement.__zone.ToggleDropCues(true, newDropIndex, false); + } + } + handled = true; + } + if ((typeof(dragState) == "undefined") || (dragState == null) || + (typeof(dragState.dropZoneElement) == "undefined") || (dragState.dropZoneElement == null)) { + currentEvent.dataTransfer.effectAllowed = "none"; + } + return handled; +} +function WebPartManager_ProcessWebPartDrop() { + var dragState = this.dragState; + if ((typeof(dragState) != "undefined") && (dragState != null)) { + var currentEvent = window.event; + var dropZoneElement = Zone_GetParentZoneElement(currentEvent.srcElement); + if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dropZoneElement.__zone.allowDrop == false)) { + dropZoneElement = null; + } + if ((typeof(dropZoneElement) != "undefined") && (dropZoneElement != null) && (dragState.dropZoneElement == dropZoneElement)) { + dragState.dropped = true; + } + return true; + } + return false; +} +function WebPartManager_ShowHelp(helpUrl, helpMode) { + if ((typeof(this.menu) != "undefined") && (this.menu != null)) { + this.menu.Hide(); + } + if (helpMode == 0 || helpMode == 1) { + if (helpMode == 0) { + var dialogInfo = "edge: Sunken; center: yes; help: no; resizable: yes; status: no"; + window.showModalDialog(helpUrl, null, dialogInfo); + } + else { + window.open(helpUrl, null, "scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no"); + } + } + else if (helpMode == 2) { + window.location = helpUrl; + } +} +function WebPartManager_ExportWebPart(exportUrl, warn, confirmOnly) { + if (warn == true && __wpmExportWarning.length > 0 && this.personalizationScopeShared != true) { + if (confirm(__wpmExportWarning) == false) { + return false; + } + } + if (confirmOnly == false) { + window.location = exportUrl; + } + return true; +} +function WebPartManager_UpdatePositions() { + for (var i = 0; i < this.zones.length; i++) { + this.zones[i].UpdatePosition(); + } +} +function WebPartManager_SubmitPage(eventTarget, eventArgument) { + if ((typeof(this.menu) != "undefined") && (this.menu != null)) { + this.menu.Hide(); + } + __doPostBack(eventTarget, eventArgument); +} diff --git a/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebUIValidation.js b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebUIValidation.js new file mode 100644 index 000000000..3b612ff01 --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/WebForms/WebUIValidation.js @@ -0,0 +1,684 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5.1/1/WebUIValidation.js +var Page_ValidationVer = "125"; +var Page_IsValid = true; +var Page_BlockSubmit = false; +var Page_InvalidControlToBeFocused = null; +var Page_TextTypes = /^(text|password|file|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i; +function ValidatorUpdateDisplay(val) { + if (typeof(val.display) == "string") { + if (val.display == "None") { + return; + } + if (val.display == "Dynamic") { + val.style.display = val.isvalid ? "none" : "inline"; + return; + } + } + if ((navigator.userAgent.indexOf("Mac") > -1) && + (navigator.userAgent.indexOf("MSIE") > -1)) { + val.style.display = "inline"; + } + val.style.visibility = val.isvalid ? "hidden" : "visible"; +} +function ValidatorUpdateIsValid() { + Page_IsValid = AllValidatorsValid(Page_Validators); +} +function AllValidatorsValid(validators) { + if ((typeof(validators) != "undefined") && (validators != null)) { + var i; + for (i = 0; i < validators.length; i++) { + if (!validators[i].isvalid) { + return false; + } + } + } + return true; +} +function ValidatorHookupControlID(controlID, val) { + if (typeof(controlID) != "string") { + return; + } + var ctrl = document.getElementById(controlID); + if ((typeof(ctrl) != "undefined") && (ctrl != null)) { + ValidatorHookupControl(ctrl, val); + } + else { + val.isvalid = true; + val.enabled = false; + } +} +function ValidatorHookupControl(control, val) { + if (typeof(control.tagName) != "string") { + return; + } + if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") { + var i; + for (i = 0; i < control.childNodes.length; i++) { + ValidatorHookupControl(control.childNodes[i], val); + } + return; + } + else { + if (typeof(control.Validators) == "undefined") { + control.Validators = new Array; + var eventType; + if (control.type == "radio") { + eventType = "onclick"; + } else { + eventType = "onchange"; + if (typeof(val.focusOnError) == "string" && val.focusOnError == "t") { + ValidatorHookupEvent(control, "onblur", "ValidatedControlOnBlur(event); "); + } + } + ValidatorHookupEvent(control, eventType, "ValidatorOnChange(event); "); + if (Page_TextTypes.test(control.type)) { + ValidatorHookupEvent(control, "onkeypress", + "event = event || window.event; if (!ValidatedTextBoxOnKeyPress(event)) { event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } "); + } + } + control.Validators[control.Validators.length] = val; + } +} +function ValidatorHookupEvent(control, eventType, functionPrefix) { + var ev = control[eventType]; + if (typeof(ev) == "function") { + ev = ev.toString(); + ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}")); + } + else { + ev = ""; + } + control[eventType] = new Function("event", functionPrefix + " " + ev); +} +function ValidatorGetValue(id) { + var control; + control = document.getElementById(id); + if (typeof(control.value) == "string") { + return control.value; + } + return ValidatorGetValueRecursive(control); +} +function ValidatorGetValueRecursive(control) +{ + if (typeof(control.value) == "string" && (control.type != "radio" || control.checked == true)) { + return control.value; + } + var i, val; + for (i = 0; i twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year)); + } + var num, cleanInput, m, exp; + if (dataType == "Integer") { + exp = /^\s*[-\+]?\d+\s*$/; + if (op.match(exp) == null) + return null; + num = parseInt(op, 10); + return (isNaN(num) ? null : num); + } + else if(dataType == "Double") { + exp = new RegExp("^\\s*([-\\+])?(\\d*)\\" + val.decimalchar + "?(\\d*)\\s*$"); + m = op.match(exp); + if (m == null) + return null; + if (m[2].length == 0 && m[3].length == 0) + return null; + cleanInput = (m[1] != null ? m[1] : "") + (m[2].length>0 ? m[2] : "0") + (m[3].length>0 ? "." + m[3] : ""); + num = parseFloat(cleanInput); + return (isNaN(num) ? null : num); + } + else if (dataType == "Currency") { + var hasDigits = (val.digits > 0); + var beginGroupSize, subsequentGroupSize; + var groupSizeNum = parseInt(val.groupsize, 10); + if (!isNaN(groupSizeNum) && groupSizeNum > 0) { + beginGroupSize = "{1," + groupSizeNum + "}"; + subsequentGroupSize = "{" + groupSizeNum + "}"; + } + else { + beginGroupSize = subsequentGroupSize = "+"; + } + exp = new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + "(\\" + val.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)" + + (hasDigits ? "\\" + val.decimalchar + "?(\\d{0," + val.digits + "})" : "") + + "\\s*$"); + m = op.match(exp); + if (m == null) + return null; + if (m[2].length == 0 && hasDigits && m[5].length == 0) + return null; + cleanInput = (m[1] != null ? m[1] : "") + m[2].replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((hasDigits && m[5].length > 0) ? "." + m[5] : ""); + num = parseFloat(cleanInput); + return (isNaN(num) ? null : num); + } + else if (dataType == "Date") { + var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$"); + m = op.match(yearFirstExp); + var day, month, year; + if (m != null && (((typeof(m[2]) != "undefined") && (m[2].length == 4)) || val.dateorder == "ymd")) { + day = m[6]; + month = m[5]; + year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10)); + } + else { + if (val.dateorder == "ymd"){ + return null; + } + var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.|\\.)?\\s*$"); + m = op.match(yearLastExp); + if (m == null) { + return null; + } + if (val.dateorder == "mdy") { + day = m[3]; + month = m[1]; + } + else { + day = m[1]; + month = m[3]; + } + year = ((typeof(m[5]) != "undefined") && (m[5].length == 4)) ? m[5] : GetFullYear(parseInt(m[6], 10)); + } + month -= 1; + var date = new Date(year, month, day); + if (year < 100) { + date.setFullYear(year); + } + return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null; + } + else { + return op.toString(); + } +} +function ValidatorCompare(operand1, operand2, operator, val) { + var dataType = val.type; + var op1, op2; + if ((op1 = ValidatorConvert(operand1, dataType, val)) == null) + return false; + if (operator == "DataTypeCheck") + return true; + if ((op2 = ValidatorConvert(operand2, dataType, val)) == null) + return true; + switch (operator) { + case "NotEqual": + return (op1 != op2); + case "GreaterThan": + return (op1 > op2); + case "GreaterThanEqual": + return (op1 >= op2); + case "LessThan": + return (op1 < op2); + case "LessThanEqual": + return (op1 <= op2); + default: + return (op1 == op2); + } +} +function CompareValidatorEvaluateIsValid(val) { + var value = ValidatorGetValue(val.controltovalidate); + if (ValidatorTrim(value).length == 0) + return true; + var compareTo = ""; + if ((typeof(val.controltocompare) != "string") || + (typeof(document.getElementById(val.controltocompare)) == "undefined") || + (null == document.getElementById(val.controltocompare))) { + if (typeof(val.valuetocompare) == "string") { + compareTo = val.valuetocompare; + } + } + else { + compareTo = ValidatorGetValue(val.controltocompare); + } + var operator = "Equal"; + if (typeof(val.operator) == "string") { + operator = val.operator; + } + return ValidatorCompare(value, compareTo, operator, val); +} +function CustomValidatorEvaluateIsValid(val) { + var value = ""; + if (typeof(val.controltovalidate) == "string") { + value = ValidatorGetValue(val.controltovalidate); + if ((ValidatorTrim(value).length == 0) && + ((typeof(val.validateemptytext) != "string") || (val.validateemptytext != "true"))) { + return true; + } + } + var args = { Value:value, IsValid:true }; + if (typeof(val.clientvalidationfunction) == "string") { + eval(val.clientvalidationfunction + "(val, args) ;"); + } + return args.IsValid; +} +function RegularExpressionValidatorEvaluateIsValid(val) { + var value = ValidatorGetValue(val.controltovalidate); + if (ValidatorTrim(value).length == 0) + return true; + var rx = new RegExp(val.validationexpression); + var matches = rx.exec(value); + return (matches != null && value == matches[0]); +} +function ValidatorTrim(s) { + var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); + return (m == null) ? "" : m[1]; +} +function RequiredFieldValidatorEvaluateIsValid(val) { + return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue)) +} +function RangeValidatorEvaluateIsValid(val) { + var value = ValidatorGetValue(val.controltovalidate); + if (ValidatorTrim(value).length == 0) + return true; + return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) && + ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val)); +} +function ValidationSummaryOnSubmit(validationGroup) { + if (typeof(Page_ValidationSummaries) == "undefined") + return; + var summary, sums, s; + var headerSep, first, pre, post, end; + for (sums = 0; sums < Page_ValidationSummaries.length; sums++) { + summary = Page_ValidationSummaries[sums]; + if (!summary) continue; + summary.style.display = "none"; + if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) { + var i; + if (summary.showsummary != "False") { + summary.style.display = ""; + if (typeof(summary.displaymode) != "string") { + summary.displaymode = "BulletList"; + } + switch (summary.displaymode) { + case "List": + headerSep = "
"; + first = ""; + pre = ""; + post = "
"; + end = ""; + break; + case "BulletList": + default: + headerSep = ""; + first = "
    "; + pre = "
  • "; + post = "
  • "; + end = "
"; + break; + case "SingleParagraph": + headerSep = " "; + first = ""; + pre = ""; + post = " "; + end = "
"; + break; + } + s = ""; + if (typeof(summary.headertext) == "string") { + s += summary.headertext + headerSep; + } + s += first; + for (i=0; i= 0) { + Page_Validators.splice(index, 1); + } + } + function addNormalizedAttribute(name, normalizedName) { + normalizedAttributes[name.toLowerCase()] = normalizedName; + } + function parseSpecificAttribute(selector, attribute, validatorsArray) { + return $(selector).find("[" + attribute + "='true']").each(function (index, element) { + addValidationExpando(element); + element.dispose = function () { dispose(element); element.dispose = null; }; + if ($.inArray(element, validatorsArray) === -1) { + validatorsArray.push(element); + } + }).length; + } + function parse(selector) { + var length = parseSpecificAttribute(selector, dataValidationAttribute, Page_Validators); + length += parseSpecificAttribute(selector, dataValidationSummaryAttribute, Page_ValidationSummaries); + return length; + } + function loadValidators() { + if (typeof (ValidatorOnLoad) === "function") { + ValidatorOnLoad(); + } + if (typeof (ValidatorOnSubmit) === "undefined") { + window.ValidatorOnSubmit = function () { + return Page_ValidationActive ? ValidatorCommonOnSubmit() : true; + }; + } + } + function registerUpdatePanel() { + if (window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) { + var prm = Sys.WebForms.PageRequestManager.getInstance(), + postBackElement, endRequestHandler; + if (prm.get_isInAsyncPostBack()) { + endRequestHandler = function (sender, args) { + if (parse(document)) { + loadValidators(); + } + prm.remove_endRequest(endRequestHandler); + endRequestHandler = null; + }; + prm.add_endRequest(endRequestHandler); + } + prm.add_beginRequest(function (sender, args) { + postBackElement = args.get_postBackElement(); + }); + prm.add_pageLoaded(function (sender, args) { + var i, panels, valFound = 0; + if (typeof (postBackElement) === "undefined") { + return; + } + panels = args.get_panelsUpdated(); + for (i = 0; i < panels.length; i++) { + valFound += parse(panels[i]); + } + panels = args.get_panelsCreated(); + for (i = 0; i < panels.length; i++) { + valFound += parse(panels[i]); + } + if (valFound) { + loadValidators(); + } + }); + } + } + $(function () { + if (typeof (Page_Validators) === "undefined") { + window.Page_Validators = []; + } + if (typeof (Page_ValidationSummaries) === "undefined") { + window.Page_ValidationSummaries = []; + } + if (typeof (Page_ValidationActive) === "undefined") { + window.Page_ValidationActive = false; + } + $.WebFormValidator = { + addNormalizedAttribute: addNormalizedAttribute, + parse: parse + }; + if (parse(document)) { + loadValidators(); + } + registerUpdatePanel(); + }); + } (jQuery)); +} \ No newline at end of file diff --git a/samples/WingtipToys/WingtipToys/Scripts/_references.js b/samples/WingtipToys/WingtipToys/Scripts/_references.js new file mode 100644 index 0000000000000000000000000000000000000000..e560695ae3209ab1726537093dc6682b4f0d7b0b GIT binary patch literal 396 zcmbu5F%H5o3`O6J#2qU30%c$V?vj!qsGxzQ3~+eh$E-|LQDQr`pT7NmEhwjAgX7LX zB=ewWufHJcXgSOCY?&#aR2Ae^>e?}7V*Ou2Qs$srY#{_yT}2o;T6ZgYRFsY5l$+Bj t`j6IeGc8GaYZ|c{mU>sCs23^pHbc*er)H^*xE@U|TgjR^YB&Ce#t&!WK12Wj literal 0 HcmV?d00001 diff --git a/samples/WingtipToys/WingtipToys/Scripts/bootstrap.js b/samples/WingtipToys/WingtipToys/Scripts/bootstrap.js new file mode 100644 index 000000000..5aa9982ed --- /dev/null +++ b/samples/WingtipToys/WingtipToys/Scripts/bootstrap.js @@ -0,0 +1,2014 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ + +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if (!jQuery) { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + .prop('checked', !this.$element.hasClass('active')) + .trigger('change') + if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + } + + this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#carousel + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#dropdowns + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('
+ Support: Support@example.com
+ Marketing: Marketing@example.com +